多字节语言的网站本地化

时间:2011-05-13 01:24:08

标签: unicode localization internationalization string-externalization

我已经开始为具有大量硬编码文本的中型网站编写多语言功能。由于该网站应该被翻译成日文和韩文(多字节字符集),我正在考虑以下内容:

  • 如果我使用字符串外部化,日语或韩语的字符串是否需要在语言环境文件中以unicode形式(即台北而不是台北作为字符串值)?
  • 将本地化存储在数据库(即MySQL)中并通过PHP中的本地化函数检索各自的值会更有意义吗?

非常感谢您的思想投入。

祝你好运

3 个答案:

答案 0 :(得分:2)

来自对i18n有一定经验的人的0.02美元......

  1. 将您的翻译保持在人类可读的形式,因为它可能是翻译人员,而不是管理这些资源的编码人员。
  2. 如果此文本(硬编码,您说)不经常更改,那么您可能希望将这些资源存储为您在运行时读取的文件。
  3. 如果此文本经常更改,那么您可能希望探索存储资源的其他选择,例如数据库或内存中的键值存储。
  4. 根据您的要求,您可能需要考虑上述情况的混合。

    但我强烈建议您避免将代码(HTML字符实体)与您的翻译资源混合在一起。大多数译者都不会理解他们的意思,并且在翻译时可能会破坏他们。另一方面,程序员可能无法理解如何正确地将代码或格式插入到翻译资源中,除非他们真正理解该语言。

    tl;dr 
      - use UTF-8
      - don't mix any code/formatting into the translations themselves
      - how you store the translations depends upon your requirements
    

答案 1 :(得分:1)

  • 想要将所有文本存储为HTML实体。它会让你发疯。执行此操作的唯一原因是,如果您需要以ASCII编码提供文档,并且无法直接嵌入字符。但在这个时代,没有理由这样做;将您的文档作为UTF-8提供,并以UTF-8编写和存储您的内容并完成它。
  • 是否在数据库中存储翻译取决于许多因素,包括性能,缓存,是否需要能够搜索文本,文本是否应由非程序员编辑等。通常.mo /除非另有证明,否则带有gettext的.po翻译文件是一种很好的方式。

答案 2 :(得分:1)