【问题标题】:Is there a naming convention for locale-specific static files?特定于语言环境的静态文件是否有命名约定?
【发布时间】:2009-05-07 20:53:50
【问题描述】:

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

【问题讨论】:

    标签: internationalization locale


    【解决方案1】:

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

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

    例如:

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

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

    【讨论】:

      【解决方案2】:

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

      • foo.enUS.ext
      • foo.ext_zhUS
      • enUS.foo.ext
      • foo/enUS.ext
      • enUS/foo.ext
      • ……令人作呕

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

      【讨论】:

        【解决方案3】:

        您应该始终使用“事实上的”标准,即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 是你想要的)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-22
          • 2012-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多