我有一些将被本地化的静态资源(图像和 HTML 文件)。我见过的一种软件是 Apache,它将语言环境附加到名称中;例如,test_en_US.html
或test_de_CH.html
。我想知道这个命名方案是否被认为是标准的,或者每个项目是否都有不同的做法。
3 回答
虽然没有用于命名本地化文件的记录标准,但我建议使用格式filename[_language[ _country]]其中
例如:
- myFile.txt(非本地化文件)
- myFile_en.txt(本地化为全球英语)
- myFile_en_US.txt(本地化为美国英语)
- myFile_en_GB.txt(本地化为英国英语)
为什么?这是操作系统、全球化工具(例如 Trados 和 WorldServer)和编程语言使用的最典型的格式。因此,除非您特别喜欢不同的格式,否则我认为没有理由偏离大多数其他人正在做的事情。它可能会为您节省一些集成方面的麻烦。
虽然似乎没有关于文件名中放置它们的标准约定,但语言(例如“en”)和区域(例如“en-US”)的国际代码都非常常见且非常简单。我见过的变体,不包括“enUS”、“en_US”和“en-US”:
- foo.enUS.ext
- foo.ext_enUS
- enUS.foo.ext
- foo/enUS.ext
- enUS/foo.ext
- …令人作呕
我个人喜欢第一个和最后一个变体。前者用于按名称/资源对文件进行分组(适用于需要本地化的文件数量有限的情况),后者用于按区域设置对文件进行分组(更适合具有大量本地化文件的情况)。
您应该始终使用“事实上的”标准,即 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 是你想要的)