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