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

x45*_*erx 11 localization internationalization

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

谢谢你提供的所有帮助.

Mik*_*ler 9

数据

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

商业

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

UI

string foo = "Page " + currentPage + " of " + totalPages;
Run Code Online (Sandbox Code Playgroud)

string foo = string.Format("Page {0} of {1}", currentPage, totalPages);
Run Code Online (Sandbox Code Playgroud)

为什么?字顺序事项.

<value>Page {0} of {1}</value>
 <value>{1}??????{0}???</value>
Run Code Online (Sandbox Code Playgroud)

用户界面中没有任何东西是神圣的 甚至像正面数字显示绿色而负数字显示红色这样的基础是公平的游戏.

  • VARCHAR的东西取决于数据库.例如,MySQL计算字符而不是字节.此外,字序列位为+1. (2认同)

Mic*_*sen 5

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

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


Ign*_*ams 2

Unicode(或 wchar,或 <选择的语言> 中的任何等效项)无处不在。不要将标签存储在数据库中。准备好让文本和控件走“错误的方向”,即从右到左。