如何不被本地化和国际化所耻辱

关于本文的主题,最近的一个故事给了我提示。 我转到了名为“超级站点”的产品页面,该公司名为We Will Not Poke Fingers LLC(但来自域名行业的人会认识到)。 我从拉脱维亚舒适的办公室出发,很惊讶地发现以下图片:


而且,温和地说,我对表示服务成本的货币感到困惑。 确实,在院子里,2018年下半年,拉脱维亚拉特于2014年1月正式不复存在,并由欧元取代。 四年来,上述未提及的公司一直没有对使用的语言环境进行审核。

削减后,我将告诉您在对产品进行国际化和本地化时要记住什么,以及在何处获取定期修订的数据。

定义


从一开始就了解什么是什么,并就我们将来所说的达成一致是合乎逻辑的。 所以...

  • 国际化(internationalization,i18n) -准备一种软件产品以使用各种语言和本地差异,而无需在实现过程中完成文件的定稿。 许多信件,因此我将举例说明。 绘制您的网站,以便在不需要布局文件额外干预的情况下,它可以从左到右和从右到左进行拼写-国际化。 用语言变量替换文本的整个硬编码-相同。 教产品格式化日期的方法再次相同。 顺便说一下,i18n中的数字18仅表示国际化单词中第一个和最后一个之间的字母数。 我很懒,为方便起见,我将继续使用i18n。
  • 本地化(localization,L10n) -使国际化软件适应特定区域(区域设置)的标准。 即 当您提供要翻译成布什曼英语的语言变量列表并指定印第安人的数字格式时,这是L10n。
  • 语言环境是一组参数,这些参数定义了语言和特定用户界面设置,这些设置和特定用户界面设置与特定区域中用户的习惯相对应。

你为什么需要这个?


好问题。 许多现代编程语言都包含用于基本本地化的内置算法(格式化日期,数字,货币)。 而且,如果您不在乎,您将完全可以信任您所选择的技术,并且不在乎用户,您对i18n的看法不会超出您的预期,唯一的原因可能是好奇心和总体发展。

但是,细节在于魔鬼。 这些小事情有时会不引起注意,这会使用户非常烦恼。 如果您已经对i18n具有扎实的经验,那么很可能在本文中您会发现很少(也许是生活中的一些例子)。 在这种情况下,如果您能根据自己的经验添加评论(如果我在某些方面做错了,请纠正我),我将不胜感激。 我希望其余的人会有所收获。

语言环境包括哪些方面?


通常将语言环境指定为语言和国家/地区的组合。 这些参数足以设置语言细微差别和该地区使用的其他参数的组合。 对于某些特定任务,可能需要更复杂的划分(例如,某些国家的税收管辖区)。 在这种情况下,仍将设置第三个参数-变体(例如,针对特定区域,操作系统等)。 此外,很大程度上取决于您希望与用户保持多近的距离(例如,菲律宾有12种土著语言,使用的语言超过100万,他们会感到满意)。

那么语言环境包括什么呢?

受欢迎且明显


格式化该组中的大多数参数可能会提供大多数现代编程语言。 尽管最好还是稍微照顾一下以防万一。 或至少及时更新相应库的版本。

  • 翻译 -这里的一切都很清楚,没有任何编程语言会为您做到这一点。 在准备翻译产品时,请记住一个简单的规则:语言变量所需的最小单位是一个句子(尽可能)。 整体上来说是一个更好的短语。 如果系统架构师只知道一种语言或两种语法上接近的语言,这可能并不明显(我不得不处理这种个人经验,结果,开发人员不得不在其代码中重做并重写大量文本消息)。 但是广义上的语言反映了某些人的生活方式和文化特征。

    例如,您中的所有人(或许多人)都知道英语中的词类严格按照顺序排列。 据我所知,顺便说一下中文。 但是在俄语中,“命令”一词可能根本没有任何意义,也可能会改变意思(“您很聪明”听起来像是赞美,“您很聪明”就像是威胁)。 在阿拉伯语中,社交阶层之间在日语中男女之间的交流存在差异。 根据这一听众或那个听众对您的重要性,您应该与讲母语的人一起仔细研究这些细微之处,或者忽略它。
  • 在大多数情况下, 日期和时间在日期格式方面完全不同。 时间格式的差异主要是12或24小时格式。 但是随着日期的选择更多。 日期格式通常被假定为多个。 日和月; 数字格式的日,月,年; 扩展格式的日,月,年。 然后,选择的数量迅速增长。 在某个地方,分隔符是一个点,在某个地方-一个斜杠,在一个缩写格式的地方,第一个是日期,在一个月的地方。 扩展格式更有趣。 以我的出生日期为例(是,我很谦虚)。 因此,在1986年9月5日,一个男人出生了,因为这个作品而肮脏。 让我们去的位置。 首先有两个英语国家。
    • 美国 -1986年9月5日。
    • 英国 -1986年9月5日。

    这仅仅是开始。 没有英语的案例,但是即使在旅途的开始,en_US和en_UK也有所不同。 仔细看看这些国家的语言?
    • 俄罗斯 -1986年9月5日。因此案件出现了。 在这里,惊喜可以开始,因为 您的编程语言中的标准日期格式工具可能不知道主格和格格情况。
    • 拉脱维亚 -您只想说出日期还是说那天发生了什么? 在俄语(今天)9月5日(出生)9月5日(俄语)中,所有内容都是合格的。 但在拉脱维亚,日期的简单名称是1986 gada 5.septembris。 如果“我出生了”-1986年gada5.septembrī。 年份是第一年,数字是本地情况(粗略的翻译是“ 9月5日”)。 在拉脱维亚的所有序数之后,加一个句号。

    瞄准全世界? 考虑使用哪种日期格式。 也许最好不要与高级功能混为一谈,内置的格式化功能不太可能考虑到上述所有细微之处。 我只参加了195个国家中的4个国家-联合国的成员和观察员。
  • 数字格式还包含很多混乱之处。 我只知道整数部分和小数部分的分隔符(通常是点或逗号),而整数部分内的分隔符(我刚刚遇到了选项“无分隔符”,逗号,空格,我也允许使用句点和撇号)。 分隔符的放置位置也起到了作用。 假设我们(不仅是)习惯于每3个位置(千,百万等)设置分隔线。 但是在这里,上述印度和邻国的居民过着自己的生活。 整数部分中的第一个分隔符(从小数开始计数)位于3个位置(千位)之后,然后是每两个位置:十万(十万),千万(一千万)等等。 因此,我们在印度记录系统中的42,000,000看起来将是4,20,00,000 。 而且他们经常以那里的十万卢比来衡量年薪。 但是,在高度可靠地格式化数字的问题上,您可以依靠编程语言。
  • 货币格式本质上是带格式的数字,带有货币符号或代码的前缀或后缀。 就像本文开头一样,这里的主要目的是确保没有冒险。 目前,尤其适用于欧盟国家 有些人可能会加入欧元交易区。
  • 实际上,写作的方向不仅仅是在某些语言中以其他方式书写整个文本。 这是布局设计师或UI设计师的工作。 本地化为“从左到右”语言创建的界面时,通常会“从右到左”语言完全镜像(例如,带有站点菜单的徽标和侧栏将在右侧)。

不太明显


与i18n相关的某些数据经常使用,但有时会略有遗漏。 在这里,编程语言对您无济于事,您必须使用笔。

  • 邮递区号 猜猜有多少国家根本不使用邮政编码? 根据有关“伟大而全知”文章 ,66! 公平地说,我注意到其中3个使用类似于邮政编码的系统,该系统允许您对街道/房屋组/房屋进行编码。 但是还剩下63个,其中要么根本不使用邮政编码,要么已经实现或计划实现。 这几乎是世界上三分之一的国家。 现在,记住您遇到了多少个站点,邮政编码是必填字段在哪里? 而且对此无能为力。 尽管正确的方法是仅将其强制用于仅存在该标准的那些国家。 此外,如果需要,您可以检查输入的内容是否符合用户选择的国家/地区。 幸运的是,此信息可用(包括上面的链接)。
  • 地区 作为选择-州,地区...他们希望强制执行的另一个领域,而不考虑该国邮政地址的实际情况。 是的,即使在最小的国家中也存在某种行政区划( 同一wiki上有详细信息 ),但这并不总是使该领域成为强制性的做法。
  • 电话号码 它由国家代码和国家标识符组成。 如果获取国家/地区代码列表不是问题,则在验证国家/地区标识符时可能会产生细微差别。 例如,验证中缝制的最小号码长度是多少? 但是实际的最小数字长度是4位数字。 是的,这仅适用于两个微型领土,其中一个在人口方面居第五位,另一个也在某个地方附近。 但是在这里,我想更加关注有效性,而不是希望获得约1600至1700名纽埃居民之一的用户。 通过参考,您可以了解按国家/地区划分的国家标识符的长度。
  • 名称和申诉(标题)。 在这里,许多通常的平均就足够了。 姓和名的字段以及受人尊重的待遇。 与本节中的其他要点一样,这完全取决于您要成为的“您的”程度。 如果总的来说,名称和姓氏是强制性的(尽管在极少数情况下法律可能只规定其中之一)。 为了方便起见,您可以设置要流通的字段,其他名称和后缀(所有这些都是“小”,“第三”)。 如果要特别讲,写作规则可能会因文化而异,因语言而异。
    • 俄罗斯 -众所周知,全名由姓,名和父名组成。 在语言上,就像在国家本身一样,顺序是非常有条件的,因此在地址中姓氏可能在首位或最后一位,中间名可能会省略。 先生/太太(先生/太太)可以在上诉开始时添加可选内容。
    • 美国 -全名通常由名称本身(名字,“名字”),一个或多个中间名(中间名)或姓氏和名字组成。 它是按此顺序标准编写的,中间名称可以省略。 (可选)可以添加上诉(最受欢迎:Mr,Ms,Mrs,Dr)。
    • 拉脱维亚 -全名由名字和姓氏组成,始终按此顺序排列。 如此,只有在出生证明中才存在光顾者,其他文件中没有使用。 有一种礼貌的对待kungs / kundze(俄罗斯绅士/情妇的类似物)的形式,该姓氏放在姓之后(即,像以前的版本一样,结尾而不是开头)。 然后将姓氏记录在生殖付款中。
    • 中国 -在原始中国记录中,姓氏始终排在第一位,然后是名字。 姓氏有一种礼貌的表达方式(与之合并,而不是一个字)。 我在中文唱片中的姓Vasiliskov看起来像瓦西里斯科夫。 与中国同行“蛇怪先生”是瓦西里斯科夫先生。
      宠爱中文
      与本文的主题无关,但可以带来很多麻烦。 如果您将单词翻译成中文,然后将Google翻译器翻译成中文,然后将结果分成1-2个象形文字,然后再翻译回去,那么您会花费很长时间。 说,瓦西里他译为“罗勒”,斯科夫译为“海湾”,科夫译为“克拉科夫”。 但是古代知识的秘密含义可以用普通的语言来揭示。 说电话转换为电话。 在这种情况下,电-“电”,话-“字”。 用电换句话说:电池-电池(池-池),电脑-计算机(脑-脑),电影-电影(影-阴影)。 在这一部分中,我没有检查过中文,但是用这种方式可以花费很多时间。 通常,一种有趣的语言。 拉脱维亚和波兰之后,将不得不做...
    • 菲律宾 -在这里,美国和西班牙的名称拼写系统历来混杂。 从西班牙殖民时代开始,母亲和父亲的名字拼写就与美国人混为一谈,以起中间名字的作用。 在当前版本中,出生时给出的名字记录在“名称”列中,孩子的名字成为父亲的姓,中间名是母亲的娘家姓。

    如您所见,使系统适应所有可能的录制选项可能会使它过于复杂。 但是,如果您产品的重要市场之一位于某个国家/地区,则您必须尝试一下。

更多难得的选择


你们中的大多数人不太可能需要此类的i18n方面。 但是记住它们可能仍然有用。

  • 单位制。 您的用户习惯了米,千克,升和摄氏度吗? 还是英尺,磅,加仑和开氏度? 我本人还没有去过美国,但是去过那里的人告诉我,到达那里后,您会发现自己身处纳尼亚,那是个“非系统的”部队奇妙世界。 在这里呆了一段时间后,您开始忘记系统的了。
  • 纸张尺寸。 它与上一个部分相关,如果您生成一些发票,纸质表格和其他可能会被打印并放入文件夹进行记录或提供给他人的发票,则该功能非常有用。 大多数国家/地区习惯于A4格式。 但是,例如,美国广泛使用Letter(8 1⁄2 x 11英寸,216 x 279毫米)和Legal(8 1⁄2 x 14英寸,216 x 356毫米)格式。
  • 组合的字符串规则。 实际上经常有用且难以实现的方面之一。 按照组合字符串的规则,我指的是需要形成一段文本而不仅仅是产生一个语言变量的情况。 示例包括但不限于:
    • 与数字相关的词尾变化(您的购物篮中有3个产品/ 5个产品);
    • 由以上示例形成的全名;
    • 在存在的语言中正确使用语法性别(亲爱的伊凡诺夫先生/亲爱的伊凡诺娃女士),等等。

    该怎么办? 如果您以有限的区域为目标或逐渐扩展,则可以考虑此类湿滑点的体系结构。 但是,最好是谨慎而中立地规避它们。

在哪里获取信息?


在本文中,我提供了到Wikipedia的链接,但我们都知道,最好不要将其用作重要的知识来源。 幸运的是,有一个由Unicode Consortium支持的Common Locale Data Repository项目。 它不仅包含数量众多的语言环境方面和参数,并且由社区定期进行更新,而且数据可以XML格式免费下载,从而可以通过正确的体系结构轻松地定期更新常规标准。

我认为仅涉及基本方面。 如果您认为我错过了什么,请在评论中写上,我会补充。 同时分享您对本地化产品的体验。

感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们, 为我们为您发明的入门级服务器的独特模拟,为Habr用户提供30%的折扣: 关于VPS(KVM)E5-2650 v4(6核)的全部真相10GB DDR4 240GB SSD 1Gbps从$ 20还是如何划分服务器? (RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

VPS(KVM)E5-2650 v4(6核)10GB DDR4 240GB SSD 1Gbps至12月免费,在六个月内付款时,您可以在此处订购。

戴尔R730xd便宜2倍?在荷兰和美国,我们有2台Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100电视(249美元起) 阅读有关如何构建基础架构大厦的信息。 使用价格为9000欧元的Dell R730xd E5-2650 v4服务器的上等课程?

Source: https://habr.com/ru/post/zh-CN427641/


All Articles