5

我有一些将被本地化的静态资源(图像和 HTML 文件)。我见过的一种软件是 Apache,它将语言环境附加到名称中;例如,test_en_US.htmltest_de_CH.html。我想知道这个命名方案是否被认为是标准的,或者每个项目是否都有不同的做法。

4

3 回答 3

12

虽然没有用于命名本地化文件的记录标准,但我建议使用格式filename[_language[ _country]]其中

  • 语言是ISO-639 2 字母语言代码
  • 领土是ISO-3166 2 字母国家代码

例如:

  • myFile.txt(非本地化文件)
  • myFile_en.txt(本地化为全球英语)
  • myFile_en_US.txt(本地化为美国英语)
  • myFile_en_GB.txt(本地化为英国英语)

为什么?这是操作系统、全球化工具(例如 Trados 和 WorldServer)和编程语言使用的最典型的格式。因此,除非您特别喜欢不同的格式,否则我认为没有理由偏离大多数其他人正在做的事情。它可能会为您节省一些集成方面的麻烦。

于 2009-05-08T01:49:34.190 回答
1

虽然似乎没有关于文件名中放置它们的标准约定但语言(例如“en”)和区域(例如“en-US”)的国际代码都非常常见且非常简单。我见过的变体,不包括“enUS”、“en_US”和“en-US”:

  • foo.enUS.ext
  • foo.ext_enUS
  • enUS.foo.ext
  • foo/enUS.ext
  • enUS/foo.ext
  • …令​​人作呕

我个人喜欢第一个和最后一个变体。前者用于按名称/资源对文件进行分组(适用于需要本地化的文件数量有限的情况),后者用于按区域设置对文件进行分组(更适合具有大量本地化文件的情况)。

于 2009-05-07T21:06:31.080 回答
0

您应该始终使用“事实上的”标准,即 unix/posix 方式与gettext. 你应该用gettext它来做你的本地化!

因此,一种也是唯一正确的方法是使用这样的本地化命名:

en
en_US
en_UK

某些应用程序,尤其是 Java 开发人员有时会使用en-US(连字符而不是下划线),这是完全错误的!!!

gettext 标准是这个,只有这个:

locale
 |_en_US
    |_LC_MESSAGES
      |_appname.mo

在哪里:

locale- 目录的名称,可能会有所不同,但强烈建议使用“locale”-name

en_US- 任何标准语言环境,如 *es_ES*、*es_PT*、...

LC_MESSAGES- 强制性的,不能更改!

appname.mo - msgfmt 编译的 appname.po 文件(appname 是你想要的)

于 2013-10-07T14:57:39.623 回答