编写国际消费软件的最佳实践(i18n)

时间:2010-01-15 15:06:29

标签: localization internationalization

我正在寻找有国际消费软件的专家的意见。我想了解人们在每个逻辑软件层(数据(rdbms),业务(中间件),用户界面)所采用的最佳实践。

感谢您提供任何帮助。

6 个答案:

答案 0 :(得分:9)

数据

  • 当您使用UTF-8时,请准备好每个字符最多占用3个字节(在中文的情况下),这意味着VARCHAR(20)现在需要是VARCHAR(60)。
  • 除非你真的有充分的理由去做,否则为了爱上帝,不要将你的UI翻译存储在数据库中。

商业

  • 在需求上花了很多时间。作为起点,截取您应用中每个屏幕的屏幕截图,将其放入文档中,然后围绕需要i18​​n支持的内容开始绘制框。然后将每个框映射到需要更改的代码区域。

UI

<强>不

string foo = "Page " + currentPage + " of " + totalPages;

<强>不要

string foo = string.Format("Page {0} of {1}", currentPage, totalPages);

<强>为什么呢?字顺序事项。

<value>Page {0} of {1}</value>
 <value>{1}ページ中の第{0}ページ</value>

UI 中没有什么是神圣的 即使是显示绿色表示正数而红色表示负数的基本因素是fair game

答案 1 :(得分:5)

确保UI控件中有足够的空余空间。从英语翻译成法语或德语时,文本会变得更长。

虽然它在某些方面集中在i18n的Windows方面,但要注意Michael Kaplan's blog。他非常精通这个领域,并发布了许多博客文章,其中包含有用的一般内容。

答案 2 :(得分:4)

你可以写一本关于这个主题的书。

在所有层面,不要做出以下假设:

  • 文字宽度
  • 文字方向性
  • 自然语言的标记化
  • 货币(格式,小数精度,税收等)
  • 语法和拼写
  • 字母
  • 数字系统和格式
  • 排序顺序
  • 日期,时间,时区和日历
  • 社会习俗或文化参考(图标,旗帜等)
  • 搜索
  • 大写
  • 地址
  • 专有名称(名字/姓氏等)
  • 电话号码
  • 法律/监管要求
  • 使用社会安全号码或其他当地惯例

我确信我只是在表面上看。

答案 3 :(得分:2)

Unicode(或wchar,或其中的等价物&lt;选择语言&gt;)到处都是。不要在数据库中存储标签。准备好让文本和控件“走错路”,即从右到左。

答案 4 :(得分:2)

对于本地化,请勿对UI字符串进行硬编码。使用像gettext这样的东西。

答案 5 :(得分:0)

如果您使用.Net,资源文件(.resx)系统非常灵活。

查找ResourceManager.GetString(“string name”,CultureInfo)的用法。

我们使用这个系统非常成功地翻译英语,德语,法语,西班牙语,俄语和阿拉伯语。

另外,在考虑在国外语言环境中使用时,请花一些时间查看输入和输出; Turkish problem是不同输入如何导致问题的一个很好的例子。