是否存在特定于语言环境的静态文件的命名约定?

时间:2009-05-07 20:53:51

标签: internationalization locale

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

3 个答案:

答案 0 :(得分:10)

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

  • 语言是ISO-639 2个字母的语言代码
  • 地区是ISO-3166 2个字母的国家/地区代码

例如:

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

为什么呢?这是操作系统,全球化工具(如Trados和WorldServer)和编程语言使用的最典型格式。因此,除非你特别喜欢不同的格式,否则我认为没有理由偏离其他大多数人所做的事情。它可以为您节省一些整合难题。

答案 1 :(得分:1)

虽然文件名中没有关于 where 的标准惯例,但语言的国际代码(例如“en”)和地区(例如“en-US”) “)非常普遍且非常简单。我见过的变化,不包括“enus”与“en_US”与“en-US”:

  • foo.enUS.ext
  • foo.ext_enUS
  • enUS.foo.ext
  • 富/ enUS.ext
  • 美式英语版本/ foo.ext
  • ... ad nauseum

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

答案 2 :(得分:0)

您应始终使用“事实上”标准,即gettext的unix / posix方式。你应该使用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就是你想要的)