Существует ли соглашение об именах статических файлов для конкретных локалей? - PullRequest
3 голосов
/ 08 мая 2009

У меня есть некоторые статические ресурсы (изображения и файлы HTML), которые будут локализованы. Одна из программ, которые я видел, это Apache, который добавляет локаль к имени; например, test_en_US.html или test_de_CH.html. Мне интересно, считается ли эта схема именования стандартной или каждый проект делает это по-своему.

Ответы [ 3 ]

10 голосов
/ 08 мая 2009

Хотя документированных стандартов для именования локализованных файлов не существует, я бы рекомендовал использовать формат имя файла [_language [_country]] , где

  • языком является ISO-639 2-буквенный код языка
  • Территория ISO-3166 2-буквенный код страны

Например:

  • myFile.txt (нелокализованный файл)
  • myFile_en.txt (локализовано для глобального английского)
  • myFile_en_US.txt (локализовано для английского языка США)
  • myFile_en_GB.txt (локализовано для английского языка в Великобритании)

Почему? Это наиболее типичный формат, используемый операционными системами, инструментами глобализации (такими как Trados и WorldServer) и языками программирования. Поэтому, если у вас нет особой привязанности к другому формату, я не вижу причин отклоняться от того, что делает большинство других людей. Это может избавить вас от проблем с интеграцией в будущем.

1 голос
/ 08 мая 2009

Хотя в стандартных соглашениях не указано , где в имени файла для их размещения, международные коды для языка (например, "en") и региона (например, "en-US" ) оба очень распространены и очень просты. Вариации, которые я видел, исключая "enUS" против "en_US" против "en-US":

  • foo.enUS.ext
  • foo.ext_enUS
  • enUS.foo.ext
  • Foo / enUS.ext
  • Enus / foo.ext
  • … до тошноты

Я лично предпочитаю первый и последний варианты. Первый для группировки файлов по имени / ресурсу (подходит для ситуаций, когда требуется локализовать ограниченное количество файлов), а второй - для группировки файлов по локали (лучше для ситуаций с большим количеством локализованных файлов).

0 голосов
/ 07 октября 2013

Вы всегда должны использовать стандарт "де-факто", который является способом 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 - это то, что вам нужно)

...