Поддерживаемые типы файлов (Strings)

.PO - файлы gettext (Strings)

Контент автоматически переведен с английского языка с помощью Phrase Language AI.

Расширения файлов 

.po

Расширение API 

gettext

Импорт 

Да

Экспорт 

Да

Поддержка форм множественного числа 

Да

Поддержка описания 

Да

Варианты формата

Эти параметры можно указать при загрузке и/или Скачать файла. В зависимости от метода загрузить/Скачать (интерфейс приложений API, CLI, синхронизация репозитория и т. д.), их можно указать в параметрах запрос загрузить, Скачать или в файле конфигурации phrase.yml.

  • msgid_as_default

  • is_bilingual_file

.PO (Portable Object) — это стандартный формат для локализации с помощью GNU gettext, библиотеки GNU с открытым исходным кодом, предназначенной для упрощения процесса локализации. С помощью GNU gettext локализуемые Strings извлекаются из оригинал кода в файл заказ на покупку (PO) для перевода. Файл .PO представляет собой серию пар ключ-значение. Ключ msgid — это место, куда помещается оригинал строка, а значение msgstr — это место, куда помещается перевод.

gettext извлекает Strings из оригинал кода в .POT (шаблон переносимого объекта). На основе заданных языковых стандартов gettext затем преобразует файл .POT в файлы .PO для конкретного языкового стандарта для загрузки в CAT-инструмент для перевода. После перевода gettext преобразует переведенные файлы .PO в файлы .MO (машинно-объектные файлы), которые в конечном итоге используются для локализации.

Файлы .PO идентичны файлам .POT, за исключением того, что файлы .POT обычно используются gettext для создания файлов .PO для конкретного языкового стандарта. Прямой перевод файла .POT и его переименование в соответствии с предполагаемым в дальнейшем языковым стандартом не создает проблем. Phrase поддерживает перевод:

  • файлов .PO

  • Двуязычных файлов .PO

  • файлов .POT 

  • Машиночитаемых файлов .MO

msgctxt будет использоваться в качестве префикса ключа в сочетании с msgid и разделяться ||

Параметры формата

Идентификатор

msgid_as_default

Тип

Булевский тип данных

Загрузить

true

Скачать

false

По умолчанию

false

Описание

Берет контент перевода из значения msgid, а не из msgstr

Идентификатор

is_bilingual_file

Тип

Булевский тип данных

Загрузить

true

Скачать

false

По умолчанию

false

Описание

И оригинал, и перевод будут импортированы из загруженного файла: оригинал контента будет взят из значения msgid, перевод — из значения msgstr

Образец кода

msgid ""
msgstr ""
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: PhraseApp (phraseapp.com)\n"

msgid "boolean_key"
msgstr "--- true\n"

msgid "empty_string_translation"
msgstr ""

# Это потрясающее описание для этого ключа!
msgid "key_with_description"
msgstr "Зацените! This key has a description! (At least in some formats)"

msgid "key_with_line-break"
msgstr "Этот перевод содержит\nразрыв строки."

msgid "nested.deeply.key"
msgstr "Ого, этот ключ вложен еще глубже."

msgid "nested.key"
msgstr "Этот ключ вложен внутрь пространства имен."

msgid "null_translation"
msgstr ""

msgid "pluralized_key"
msgid_plural ""
msgstr[0] "Найдена только одна форма множественного числа."
msgstr[1] "Ого, у вас %s форм множественного числа!"

msgid "sample_collection"
msgstr "---\n- первый пункт\n- второй пункт\n- третий пункт\n"

msgid "simple_key"
msgstr "простой ключ, простое сообщение, так просто.2"

#, неточный
msgid "unverified_key"
msgstr \"Мне нужна проверка, пожалуйста, подтвердите меня!\" (In some formats we also export this status)"

Типичная запись gettext: 

# описание (необязательно)
msgid "key-name"
msgstr \"Мой перевод\"

Заголовок gettext

Заголовок файла gettext может содержать имя языкового стандарта и данные для форм множественного числа, которые извлекаются во время импорта:

msgid ""
msgstr ""
\"Language: en\\n\"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: PhraseApp (phraseapp.com)\n"

Описания

Комментарии в файле gettext добавляются как описания ключей во время импорта:

# Это мое описание
msgid "app_title"
msgstr \"Мой программный проект\"

Контекст

gettext использует нотацию msgctxt для различения разных контекстов для одного и того же msgid. Каждое имя ключа должно быть уникальным, поэтому msgctxt добавляется как первая часть имени ключа, отделенная двумя символами вертикальной черты ||:

msgctxt "menu"
msgid \"Open\"
msgstr \"Я перевод\"

msgctxt "forum"
msgid \"Open\"
msgstr \"Я другой перевод\"

Чтобы добавить msgctxt к новому ключу, добавьте его перед именем ключа:

my_context||my_key_name

Полученный результат gettext:

...
msgctxt "my_context"
msgid "my_key_name"
...

Формы множественного числа

gettext поддерживает формы множественного числа для перевода:

msgid "new_messages"
msgid_plural ""
msgstr[0] \"У вас новое сообщение\"
msgstr[1] \"У вас %{count} новых сообщений\"

Неточный

Ключевое слово неточный используется для проверки перевода. Неточный автоматически запускает процесс снятия подтверждения в Phrase.

#, неточный
msgid "app_title"
msgstr \"Мой программный проект\"
Была ли эта статья полезной?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.