代码人生

关于本地化,每个开发人员都应该知道的5件事

代码人生 http://www.she9.com 2018-09-08 09:14 出处:网络 编辑:@技术狂热粉
作为一名开发人员,你知道要想成长,你需要不断地学习,无论是通过书本、参加会议,还是阅读像这样的文章。在新的基本技能中,您现在应该掌握的是构建支持本地化的软件的能力。

作为一名开发人员,你知道要想成长,你需要不断地学习,无论是通过书本、参加会议,还是阅读像这样的文章。在新的基本技能中,您现在应该掌握的是构建支持本地化的软件的能力。


本地化基本上就是使软件易于在不同的语言和地区中使用。世界各地的任何人,说任何语言都可以开始使用你的应用程序,从你的网站上订购,或者玩你用他们的母语开发的游戏。想象一下你的软件还会有多少客户。为你的产品拓展目标市场是件大事,如果你能做到这一点,你作为一个开发者就会更有价值。


在本文中,我将告诉您关于开发能够支持不需要翻译的多种语言和语言环境的软件(除非您希望这样做),您应该知道什么。在与Crowdin的开发伙伴讨论了一些事情之后,我希望有人能早点告诉他们关于本地化的事情,所以我提出了关于本地化的5个技巧,你也应该知道。如果你想用一种你现在就能学会的新技能来扩展你的简历,那就继续阅读吧——建立一个适合本地化的软件。


1、从一开始就添加对本地化的基本支持


在某种程度上,只支持一种语言是不够的。所以你最好为即将到来的事情做好准备。特别是如果已经有了将产品带到全球的计划——在开始编写代码之前,一定要与项目经理或客户直接讨论这个问题。如果您没有从一开始就做好准备,那么您将不得不花费额外的时间重构所有代码,使其稍后支持本地化。所以最好现在就做本地化的准备工作。


当然,以英语为母语的人有3.6亿,是把英语作为第二语言的5亿人之一。但是那些不会说英语的人呢?根据Babble-on的数据,中国有近12亿母语为汉语的人,大约4亿讲西班牙语的人,还有更多的人说其他世界语言。因此,支持多种语言不再是额外的事情,而是人们对您的产品的期望。


2、外部化所有本地化资源


您不会希望查找文本字符串并从代码中手动检索它们,以便将它们传递给翻译人员。相反,考虑一些更快更简单的解决方案,比如本地化文本包装器或使用键作为硬编码文本的替代方案。


例如,在Android开发中,您可以使用资源::getString并按照以下方式格式化字符串:


<string name="string.hello">Hello %s</string>

res/values/strings.xml


<string name="string.hello">%s привіт</string>

res/values-ua/strings.xml


在这种情况下:

String username = "Jane";
String result = getString(R.string.hello, username);
// EN result "Hello Jane"
// UK result  "Jane привіт"

这里建议的解决方案是使用唯一的字符串键并将实际的文本字符串存储在每种语言的单独文件中。为您的产品将要支持的每个区域设置创建一个单独的文件或目录。对于每个本地化的文件,将翻译后的版本放在与根目录完全相同的路径上,并提供与原始文件相同的名称和地区标识符。


例如,Android使用带有"的文件。xml”文件扩展名,用于保存和获取应用程序中用于每种支持语言的所有字符串。代码中的一个简单方法调用将根据设备上使用的当前语言查找并返回请求的字符串。


您必须将所有文本放在您正在使用的默认语言中,让我们假设它是英语、intores/values-en/strings.xml。


然后您就可以用不同的限定符指定几个res/<限定符>/目录。每一个对应的语言和地区。通过这种方式,你的应用程序可以在res/values-fr/strings中找到文件的法文版本。对于西班牙语版本的文件,它将使用res/values-es/strings.xml。

3所示。添加本地化的评论


翻译人员稍后将不得不处理您提供的字符串文件,他们通常不会得到关于该文件的更多上下文。所以在某些情况下添加描述性注释可能会对他们有很大帮助。


考虑在以下情况下添加评论:


字符串可能会出现歧义。例如,“书签”可能既是名词又是动词,没有上下文很难猜出它的意思。在这种情况下,描述性字符串键也有帮助,例如:


<字符串名称=“创造”>创建字符串< / >


用起来更好


<字符串名称= " actionbutton.create " >创建字符串< / >


如果字符串包含一个变量——添加一个示例或一个简短的解释。


您还应该考虑到每个平台都有一个已建立的本地化注释格式,所以一定要进行研究并遵循它。由于有许多自动化工具,如Crowdin,这些工具可能稍后会解析这些注释,以便译者更容易访问和使用。


4、使用本地化库来简化过程


每种语言都有自己的文本布局、格式等细节。这是您不需要手动完成的工作,因为它很容易自动化。强烈建议使用本地化库(例如,您可以使用Unicode (ICU)的国际组件),这将帮助您处理以下方面:


支持相同字符串中的从右到左(RTL)和从左到右(LTR)脚本


应用数字、货币、日期和时间格式字符串。例如,日期格式会根据语言而改变,英语是7/23/2018 (en-US),法语是23/07/2018 (fr-FR)


使用复数。例子:



{ count, plural,

   =0 {No candy left}

   one {Got # candy left}

other {Got # candies left}


{

gender, select,
   female {{
      count, plural,
         =0 {Ela não capturou nenhum}
         one {Ela tem capturado um só}
         other {Ela tem capturado #}
     }}
   other {{
      count, plural,
         =0 {Ele não capturou nenhum}
         one {Ele tem capturado um só}
         other {Ele tem capturado #}
     }}
}


5、与本地化管理平台建立集成


一旦您的客户准备好本地化您构建的软件,您就需要将所有可本地化的文本导出为某种通用文件格式,并将其传递给翻译团队。一些公司仍然使用Excel文件进行本地化。我就讲到这里,不要在Excel中做本地化。这是一个很棒的工具,但对于其他伟大的事情来说。想象一下,确保.xls或.xlsx文件中的所有字符串都是最新的,并且所有的翻译都与您的代码同步,这会是什么样子。如果你的产品每月/每周/每天更新怎么办?相信我,你不会喜欢手动处理的。


这就是为什么大多数公司使用集成或内部工具自动化所有这些普通的文本字符串交换。例如,您可以使用本地化管理平台设置API或Git集成。一旦您设置了集成,我们的工具将从您的repo中获取本地化文件并将其上载到编辑器中,在编辑器中,字符串与您提供的注释看起来将是友好的。翻译完成后,系统将它们合并到一个文件中,并将它们作为合并请求或可以添加到特定区域设置目录的文件与您的代码同步。


结论


软件本地化是扩展产品目标市场的好方法,因为人们更有可能使用他们的母语软件。本地化也不是一朝一夕就能完成的事情,所以希望您现在准备好了,因为您已经了解了基础知识。


请关注公众号:程序你好
0

精彩评论

暂无评论...
验证码 换一张
取 消