国际化网络应用似乎总是一件苦差事.无论您为可插拔语言提前做多少计划,编码都会出现问题,不适合您模板的时髦措辞以及其他问题.
我认为,在决定将他们的网络应用程序国际化时,获得SO社区对程序员应该注意的一系列内容的输入会很有用.
国际化很难,这里有一些我从使用20种不同语言的网站中学到的东西:
到处使用UTF-8.没有例外.HTML,服务器端语言(特别注意PHP),数据库等.
除非您需要大量工作,否则图像中没有文字.如有必要,使用CSS将文本放在图像上.
将配置与本地化分开.这样本地化程序可以翻译文本,您可以处理每个区域设置的不同配置(功能,布局等).您不希望本地化程序能够弄乱您的应用程序.
确保您的布局可以处理比英语长2-3倍的文本.而且比英语少50%(日语和中文通常更短).
有些语言需要更大的字体(日文,中文)
颜色也是特定于语言环境的.红色和绿色并不意味着到处都是一样的东西!
将作为区域设置名称的类名添加到文档的body标记中.这样,您可以轻松地在CSS文件中指定特定区域设置的布局.
注意变量替换.不要拆分你的字符串.把它们全部保留为:"你有X个新消息"并用#替换'X'.
不同的语言有不同的复数.0,1,2-4,5-7,7-infinity.难以对付.
语境很难.有时本地化者需要知道字符串的使用位置和方式,以确保正确翻译.
资源:
http://interglacial.com/~sburke/tpj/as_html/tpj13.html
http://www.ryandoherty.net/2008/05/26/quick-tips-for-localizing-web-apps/
http://ed.agadak.net/2007/12/one-potato-two-potato-three-potato-four
在我公司,我们所有的字符串都存储在*.properties文件中.我们的构建工具构建了属性文件的"测试语言"副本,它替换了这样的字符串:
Click here
用这样的东西:
[~~ Ç?ï?? ???? ~~ ?? ~~]
现在,当我们在配置文件中将语言设置为"test"时,将使用这些属性文件.(当然,我们不提供测试语言文件).
这允许我们:
确保正确显示Unicode字符,包括日语/中文/韩语.
确保布局适用于具有较长单词的语言(德语平均比英语长的单词).
发现任何硬编码的字符串(因为它们将以普通英语显示).
至于实际翻译,这是由专业翻译人员而不是开发人员完成的.