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

Using Localization Files (Strings)

Контент автоматически переведен с английского языка с помощью 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.

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

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

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

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

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

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

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

      ВАЖНО:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ВАЖНО:

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

Установка переменной окружения PHRASE_ACCESS_TOKEN более безопасна.

Параметр теги также может использоваться в разделе 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.