Internationalization 特定于语言环境的静态文件是否有命名约定?
我有一些将被本地化的静态资源(图像和HTML文件)。我见过的一个软件是Apache,它在名称后面附加了区域设置;例如,Internationalization 特定于语言环境的静态文件是否有命名约定?,internationalization,locale,Internationalization,Locale,我有一些将被本地化的静态资源(图像和HTML文件)。我见过的一个软件是Apache,它在名称后面附加了区域设置;例如,test_en_US.html或test_de_CH.html。我想知道这个命名方案是否被认为是标准的,或者是否每个项目都有不同的做法。虽然在文件名的位置上似乎没有一个标准的约定,但是语言(例如“en”)和区域(例如“en-US”)的国际代码都是非常常见和简单的。我见过的变体,不包括“enUS”与“en_US”与“en US”: foo.enUS.ext foo.ext_enU
test_en_US.html
或test_de_CH.html
。我想知道这个命名方案是否被认为是标准的,或者是否每个项目都有不同的做法。虽然在文件名的位置上似乎没有一个标准的约定,但是语言(例如“en”)和区域(例如“en-US”)的国际代码都是非常常见和简单的。我见过的变体,不包括“enUS”与“en_US”与“en US”:
- foo.enUS.ext
- foo.ext_enUS
- enUS.foo.ext
- foo/enUS.ext
- enUS/foo.ext
- …疯狂的
我个人喜欢第一个和最后一个变体。前者用于按名称/资源对文件进行分组(适用于有限数量的文件需要本地化的情况),后者用于按区域设置对文件进行分组(更适用于大量本地化文件的情况)。虽然没有文档化的标准来命名本地化文件,但我建议使用文件名格式[\u语言[\u国家]]在哪里
- 语言是两个字母的语言代码
- territory是两个字母的国家代码
- myFile.txt(非本地化文件)
- myFile_en.txt(全球英语本地化)
- myFile_en_US.txt(美国英语本地化)
- myFile_en_GB.txt(英国英语本地化)
gettext
的结合方式。您应该使用gettext
进行本地化
因此,唯一正确的方法是使用本地化命名,如下所示:
en
en_US
en_UK
一些应用程序,尤其是Java开发人员,有时会使用en-US
(用连字符代替下划线),这完全是错误的
gettext标准是这样的,而且只有这样:
locale
|_en_US
|_LC_MESSAGES
|_appname.mo
其中:
locale
-目录的名称可能有所不同,但强烈建议使用“locale”-名称
en_US
-任何标准语言环境,如*es_es*,*es_PT*
LC\u消息
-必填,不能更改
appname.mo-msgfmt编译的appname.po文件(appname是您想要的)