Управление переводами

Использование файлов локализации (строки)

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

Загрузка файлов локализации

При загрузке файла в проект все новые ресурсы извлекаются из этого файла и хранятся в проекте. Формат загруженного файла не обязательно должен соответствовать начальному формату, установленному для проекта. Если предоставлены теги для группировки ресурсов, новые ключи будут иметь эти теги.

Некоторые форматы, такие как Gettext, предоставляют дополнительную ценную метаинформацию, такую как комментарии, описания или информация о множественных формах. Эта информация извлекается, когда и где это возможно, и хранится вместе с назначенными ресурсами, позволяя сохранить всю ценную информацию, предоставленную в файлах локализации, для дальнейшего использования.

Существует несколько методов загрузки файлов:

  • В приложении, при создании нового проекта или выбрав Загрузить файл на странице проекта

  • через API

  • через CLI

Опции загрузки

  • Обновить переводы

    По умолчанию извлекается только новый контент, и любые существующие ключи в проекте локализации не удаляются и не обновляются; данные не могут быть потеряны при загрузке файлов. Если требуется перезаписать существующие данные, замените ресурсы проекта контентом из файла локализации, выбрав опцию Обновить переводы. Существующие переводы будут перезаписаны содержимым загруженного файла локализации.

    Эта опция также доступна в API.

    Примечание

    Чтобы предотвратить потерю данных, убедитесь, что последние изменения загружены из Phrase в файл локализации перед его изменением и повторной загрузкой с опцией Обновить переводы.

  • Использовать префикс ключа перевода

    Введите уникальный идентификатор (например, путь к файлу), который будет добавлен к загружаемым именам ключей перевода. Используйте значимый префикс, связанный с проектом или файлом, чтобы организовать имена ключей.

    Например, импортированный ключ hello_world с префиксом project_ приведет к ключу project_hello_world.

    Префикс ключа перевода гарантирует, что ключи сопоставляются с существующими, чтобы избежать конфликтов между различными проектами или файлами.

    Эта опция также доступна в интерфейсе API и CLI.

  • Создать и обновить ключи перевода

    Добавьте новые ключи и перезапишите существующие с содержимым загруженного файла.

  • Обновить перевод при совпадении источника

    Обновите целевые переводы только в том случае, если существующий текст источника на языке по умолчанию проекта совпадает с текстом источника в загруженном многоязычном файле.

  • Обновить описания

    Выберите эту опцию, если требуется обновить все описания ключей из загруженного файла. Пустые описания перезапишут существующие. Описания могут содержать любую дополнительную информацию для переводчиков и помочь идентифицировать отдельные ключи в редакторе.

  • Пропустить загрузку тегов

    Чтобы организовать переводы, добавьте несколько тегов к ключам с осмысленными метками. Выберите эту опцию, чтобы предотвратить автоматическую маркировку новых ключей тегом загрузки.

  • Пометить ключи новых и обновленных переводов

    Выберите эту опцию, чтобы автоматически пометить новые ключи и ключи с обновленными переводами при загрузке. Это поможет различать новые, обновленные и старые строки перевода, гарантируя, что только соответствующие ключи будут обработаны дальше.

    Эта опция также доступна в API.

  • Кодировка

    Укажите кодировку (например, UTF-8) файла или выберите ее автоматически (автоматически выбранная кодировка может привести к неправильной кодировке и может быть отменена с помощью функции отмены загрузки).

  • Корректура

    • Пропустить непроверенные предотвращает необходимость повторной проверки переводов на неосновной язык при обновлении переводов.

    • Отметить как проверенное рассматривает все загруженные переводы как проверенные. Эта опция доступна, когда расширенный рабочий процесс проверки был активирован. Это указывает на то, что ключи готовы к отправке в производство.

    • Подтвердить упомянутые переводы рассматривает все загруженные переводы как подтвержденные.

Загрузить файлы через пользовательский интерфейс

Чтобы загрузить файлы в Strings, выполните следующие шаги:

  1. Перед загрузкой убедитесь, что файл правильно отформатирован в соответствии с типом.

  2. Из проекта выберите Загрузить файл в меню Дополнительно.

    Открывается страница Загрузить файл.

  3. Нажмите Выбрать файл, выберите файл из каталога.

    Выбранный файл добавляется в поле Файл.

  4. Выберите Формат для файла.

    Предлагаемые форматы представлены в первую очередь в зависимости от типа файла.

  5. Выберите язык для содержимого файла из выпадающего списка.

    Если этой информации нет в самом файле, создайте новый язык для содержимого или используйте существующий.

  6. При желании укажите теги, которые будут присвоены новым ключам и любым другим опциям.

  7. Нажмите Сохранить.

    Контент импортируется и преобразуется в ключи.

Загрузить сводку

  • Неудачная загрузка

    Если файл не может быть обработан должным образом, предоставляются детали ошибки, чтобы помочь смягчить ошибку.

  • Успешная загрузка

    После успешной обработки файла перевода отображается страница сводки, дающая обзор загрузки с кнопками, ссылающимися на следующие шаги. Нажмите на тег загрузки, чтобы открыть файл в редакторе.

  • Удаление ключей

    Чтобы предотвратить случайное удаление ключей при удалении ключей из файла локализации и повторной загрузке, эти ключи не удаляются автоматически.

    Чтобы удалить эти ключи, выполните следующие шаги:

    1. Загрузите файл.

    2. Нажмите Удалить и выберите Удалить неупомянутые ключи.

    3. Подтвердите выбор.

    Неупомянутые ключи — это ключи, которые не включены в текущую загрузку, но все еще существуют в проекте. Удалив их, все ключи и связанные переводы, которые не были включены в загруженный файл, удаляются из проекта.

  • Отменить загрузку

    Каждая загрузка вызывает множество действий и может изменить много данных в проектах, и невозможно отменить загрузку.

    Чтобы удалить ключи, которые были (неправильно) введены загруженным файлом, выполните следующие шаги:

    1. Из сводки загрузки затронутой загрузки нажмите Удалить и выберите Удалить созданные ключи.

    2. Подтвердите выбор.

    Все ключи и связанные переводы, созданные этой загрузкой, удаляются. Переводы для ключей, существовавших до загрузки, не будут удалены. Чтобы удалить отдельные переводы, используйте историю версий для каждого перевода.

Загрузить архив

С любой страницы проекта выберите Загрузки в меню Еще, чтобы получить доступ к архиву загрузок.

Архив загрузок содержит все исторические загрузки во всех возможных статусах. Нажмите на выпадающее меню Все статусы, чтобы отфильтровать загрузки по статусу (Успех, Неудача и/или В процессе). Чтобы найти конкретную загрузку, используйте поле поиска вверху, чтобы искать по имени.

Получите доступ к подробным сводкам загрузок затронутых ресурсов, нажав на указанную загрузку. Все успешные загрузки также представлены в ленте активности проекта.

Скачивание файлов локализации

Файлы языков могут быть экспортированы из проекта в любой момент и в любой поддерживаемый формат файла.

Файлы могут быть экспортированы из приложения, через API или CLI.

Файлы можно скачать на вкладке Языки любого проекта, выбрав их и нажав Скачать (несколько файлов) или кнопку Дополнительные параметры Open More Menu/Скачать языка.

Опции скачивания

Опции скачивания представлены при скачивании файла в окне Скачать с вкладками для Общие, Расширенные и Кодировка.

Выбор различных форматов файла предоставляет различные опции. Для получения дополнительной информации обратитесь к соответствующей статье о конкретном формате файла.

При желании используйте поле Имя файла на вкладке Общие, чтобы указать пользовательское имя экспортируемого файла, или оставьте его пустым, чтобы сгенерировать имя, определенное системой.

  • Удалить префикс ключа перевода

    Если префикс ключа перевода был добавлен при загрузке файла, выберите эту опцию на вкладке Расширенные, чтобы удалить префикс из имен экспортируемых ключей перевода:

    1. Введите префикс для скачивания всех ключей и удалите указанный префикс, где это возможно.

      Важно

      Это может создать дублирующие имена ключей, если другие ключи имеют то же имя после удаления префикса.

    2. При необходимости выберите Использовать префикс ключа перевода в качестве фильтра, чтобы скачать только ключи перевода, содержащие указанный префикс, и удалите префикс из загруженного файла.

    Эта опция также доступна в API и интерфейсе CLI.

Варианты использования

Поддержание структуры файлов

По умолчанию переводимые ресурсы хранятся в виде ключей и значений, а не в оригинальной структуре файлов. Это позволяет использовать взаимозаменяемые форматы файлов без привязки к одному формату, а также гибкую группировку с использованием тегов.

Некоторые фреймворки или настройки требуют нескольких исходных файлов, что также требует дополнительной конфигурации.

Хранение отдельных файлов

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

Если файлы локализации необходимо поддерживать в отдельных файлах, можно использовать файловый рабочий процесс, помечая ключи при загрузке и используя теги в качестве ссылки при загрузке переведенных ключей обратно в оригинальные файлы. Ключи могут иметь несколько тегов и включаться в несколько файлов, обеспечивая повторное использование и согласованность. Рабочий процесс на основе тегов гибок и позволяет реорганизовывать ресурсы перевода без необходимости загружать их в проекты.

Дайте ключам уникальные имена во всех файлах, чтобы обеспечить плавный рабочий процесс. В подходе на основе ключ-значение ключ должен иметь одни и те же значения, назначенные ему в каждом контексте. Некоторые фреймворки позволяют использовать неуникальные ключи в нескольких файлах. Некоторые форматы, такие как Symfony, поддерживают домены сообщений. Эти домены определяются по имени файла. Ключи не автоматически ограничиваются доменами на основе имени файла, но это можно решить, используя уникальный префикс домена для ключей в файле.

Пример конфигурации CLI

Если работать с CLI или подключать проект к хранилищу (например, GitHub, GitLab или Bitbucket), настройте файл конфигурации для управления загрузками и скачиваниями.

В примере проект имеет несколько семантически названных файлов перевода для исходного языкового стандарта. Например: accounts.en.yml, emails.en.yml и т.д. Эти семантические имена управляются через теги.

Настройте .phrase.yml, чтобы отразить организацию файлов в проекте локализации и связать их с тегами в проекте Strings, включая заполнитель тега в пути к файлу:

фраза:
  access_token: "3d7e6598d955bfcab104c45c40af1b9459df5692ac4c28a17793"
  project_id: "23485c9c5dfb15d85b32d9c5f3d2hl54"
  file_format: yml
  push:
    sources:
      - файл: ./path/to/locales/<tag>.en.yml
        параметры:
          locale_id: "abcd1234cdef1234abcd1234cdef1234"
  pull:
    targets:
      # аккаунты
      - файл: ./path/to/locales/accounts.<locale_name>.yml
        параметры:
          теги: аккаунты
      # электронные почты
      - файл: ./path/to/locales/emails.<locale_name>.yml
        параметры:
          теги: электронные почты

Важно

Хотя это поддерживается, по соображениям безопасности не рекомендуется хранить токены доступа в файле.

Установка переменной окружения ФРАЗА_ТОКЕН_ДОСТУПА более безопасна.

Параметр теги также может использоваться в разделе push вместо использования заполнителя <tag>.

Конфигурация создает ключи с тегами на основе файла, из которого они пришли, при выполнении push или инициировании синхронизации из хранилища. При выполнении pull или инициировании экспорта в хранилище ключи группируются в файлы на основе их тегов.

Локализация проекта для различных регионов, клиентов или аудиторий

Продукт, веб-сайт или приложение переводится на несколько различных языков, но в некоторых случаях локализация - это не только выбранный язык, но и различные версии внутри одного языка.

Требуется дальнейшее различие, если:

  • У продукта есть другой брендинг в регионах, где говорят на одном и том же языке.

  • Продукт используется различными клиентами, которые хотят использовать решение с белой этикеткой.

  • Требуются языковые варианты, такие как простой, формальный или неформальный.

Локализация статического продукта

Если продукт полностью разработан и редко обновляется, отдельная версия продукта может существовать в рамках проекта.

  • Если один результат или краткосрочный проект:

    Создайте ветвь, работайте исключительно над этой ветвью в течение проекта и удалите ветвь по завершении.

  • Если долгосрочный проект:

    Сохраните дубликат существующего проекта. Это позволяет приглашать и работать с клиентами в одной организации, предоставляя доступ только к их проектам, оставляя другие проекты скрытыми от них.

Локализация проекта с постоянными обновлениями

Если продукт постоянно обновляется новым контентом (ключами), применение этих обновлений к нескольким проектам и поддержание их синхронизированными является сложной задачей. Используйте специализированные языки в рамках проекта для их поддержки.

Коды языков, соответствующие стандарту ISO (например, en-US), не обязательно должны быть уникальными, поэтому можно создавать несколько версий одного и того же языка в рамках проекта. Различайте регионы, клиентов или аудитории, используя уникальное название языка.

При настройке любой вновь введенный ключ в стандартном языке будет отображаться как не переведенный на других языках и будет локализован соответственно. Если вы работаете с клиентом и его собственными переводчиками, назначьте их так, чтобы они могли редактировать только свои языковые версии, обновив доступ к языку в их профиле пользователя или в управлении пользователями проекта.

Настройте параллельные процессы локализации с задачами и рабочими процессами проверки в рамках одного проекта. Эта гибкость также распространяется на загрузку и скачивание языковых файлов или автоматизированные процессы через API.

Была ли эта статья полезной?

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.