При загрузке файла в проект все новые ресурсы извлекаются из этого файла и хранятся в проекте. Формат загруженного файла не обязательно должен соответствовать начальному формату, установленному для проекта. Если предоставлены теги для группировки ресурсов, новые ключи будут иметь эти теги.
Некоторые форматы, такие как Gettext, предоставляют дополнительную ценную метаинформацию, такую как комментарии, описания или информация о множественных формах. Эта информация извлекается, когда и где это возможно, и хранится вместе с назначенными ресурсами, позволяя сохранить всю ценную информацию, предоставленную в файлах локализации, для дальнейшего использования.
Существует несколько методов загрузки файлов:
-
В приложении, при создании нового проекта или выбрав Загрузить файл на странице проекта
-
через API
-
через CLI
-
По умолчанию извлекается только новый контент, и любые существующие ключи в проекте локализации не удаляются и не обновляются; данные не могут быть потеряны при загрузке файлов. Если требуется перезаписать существующие данные, замените ресурсы проекта контентом из файла локализации, выбрав опцию . Существующие переводы будут перезаписаны содержимым загруженного файла локализации.
Эта опция также доступна в API.
Примечание
Чтобы предотвратить потерю данных, убедитесь, что последние изменения загружены из Phrase в файл локализации перед его изменением и повторной загрузкой с опцией .
-
Введите уникальный идентификатор (например, путь к файлу), который будет добавлен к загружаемым именам ключей перевода. Используйте значимый префикс, связанный с проектом или файлом, чтобы организовать имена ключей.
Например, импортированный ключ
hello_worldс префиксомproject_приведет к ключуproject_hello_world.Префикс ключа перевода гарантирует, что ключи сопоставляются с существующими, чтобы избежать конфликтов между различными проектами или файлами.
Эта опция также доступна в интерфейсе API и CLI.
-
Добавьте новые ключи и перезапишите существующие с содержимым загруженного файла.
-
Обновите целевые переводы только в том случае, если существующий текст источника на языке по умолчанию проекта совпадает с текстом источника в загруженном многоязычном файле.
-
Выберите эту опцию, если требуется обновить все описания ключей из загруженного файла. Пустые описания перезапишут существующие. Описания могут содержать любую дополнительную информацию для переводчиков и помочь идентифицировать отдельные ключи в редакторе.
-
Чтобы организовать переводы, добавьте несколько тегов к ключам с осмысленными метками. Выберите эту опцию, чтобы предотвратить автоматическую маркировку новых ключей тегом загрузки.
-
Выберите эту опцию, чтобы автоматически пометить новые ключи и ключи с обновленными переводами при загрузке. Это поможет различать новые, обновленные и старые строки перевода, гарантируя, что только соответствующие ключи будут обработаны дальше.
Эта опция также доступна в API.
-
Укажите кодировку (например, UTF-8) файла или выберите ее автоматически (автоматически выбранная кодировка может привести к неправильной кодировке и может быть отменена с помощью функции отмены загрузки).
-
-
предотвращает необходимость повторной проверки переводов на неосновной язык при обновлении переводов.
-
рассматривает все загруженные переводы как проверенные. Эта опция доступна, когда расширенный рабочий процесс проверки был активирован. Это указывает на то, что ключи готовы к отправке в производство.
-
рассматривает все загруженные переводы как подтвержденные.
-
Чтобы загрузить файлы в Strings, выполните следующие шаги:
-
Перед загрузкой убедитесь, что файл правильно отформатирован в соответствии с типом.
-
Из проекта выберите Загрузить файл в меню .
Открывается страница .
-
Нажмите Выбрать файл, выберите файл из каталога.
Выбранный файл добавляется в поле .
-
Выберите для файла.
Предлагаемые форматы представлены в первую очередь в зависимости от типа файла.
-
Выберите язык для содержимого файла из выпадающего списка.
Если этой информации нет в самом файле, создайте новый язык для содержимого или используйте существующий.
-
При желании укажите теги, которые будут присвоены новым ключам и любым другим опциям.
-
Нажмите Сохранить.
Контент импортируется и преобразуется в ключи.
-
Неудачная загрузка
Если файл не может быть обработан должным образом, предоставляются детали ошибки, чтобы помочь смягчить ошибку.
-
Успешная загрузка
После успешной обработки файла перевода отображается страница сводки, дающая обзор загрузки с кнопками, ссылающимися на следующие шаги. Нажмите на тег загрузки, чтобы открыть файл в редакторе.
-
Удаление ключей
Чтобы предотвратить случайное удаление ключей при удалении ключей из файла локализации и повторной загрузке, эти ключи не удаляются автоматически.
Чтобы удалить эти ключи, выполните следующие шаги:
Неупомянутые ключи — это ключи, которые не включены в текущую загрузку, но все еще существуют в проекте. Удалив их, все ключи и связанные переводы, которые не были включены в загруженный файл, удаляются из проекта.
-
Отменить загрузку
Каждая загрузка вызывает множество действий и может изменить много данных в проектах, и невозможно отменить загрузку.
Чтобы удалить ключи, которые были (неправильно) введены загруженным файлом, выполните следующие шаги:
Все ключи и связанные переводы, созданные этой загрузкой, удаляются. Переводы для ключей, существовавших до загрузки, не будут удалены. Чтобы удалить отдельные переводы, используйте историю версий для каждого перевода.
С любой страницы проекта выберите в меню , чтобы получить доступ к архиву загрузок.
Архив загрузок содержит все исторические загрузки во всех возможных статусах. Нажмите на выпадающее меню , чтобы отфильтровать загрузки по статусу (, и/или ). Чтобы найти конкретную загрузку, используйте поле поиска вверху, чтобы искать по имени.
Получите доступ к подробным сводкам загрузок затронутых ресурсов, нажав на указанную загрузку. Все успешные загрузки также представлены в ленте активности проекта.
Файлы языков могут быть экспортированы из проекта в любой момент и в любой поддерживаемый формат файла.
Файлы могут быть экспортированы из приложения, через API или CLI.
Файлы можно скачать на вкладке любого проекта, выбрав их и нажав Скачать (несколько файлов) или кнопку Дополнительные параметры /Скачать языка.
Опции скачивания представлены при скачивании файла в окне с вкладками для , и .
Выбор различных предоставляет различные опции. Для получения дополнительной информации обратитесь к соответствующей статье о конкретном формате файла.
При желании используйте поле на вкладке , чтобы указать пользовательское имя экспортируемого файла, или оставьте его пустым, чтобы сгенерировать имя, определенное системой.
-
Если префикс ключа перевода был добавлен при загрузке файла, выберите эту опцию на вкладке , чтобы удалить префикс из имен экспортируемых ключей перевода:
-
Введите префикс для скачивания всех ключей и удалите указанный префикс, где это возможно.
Важно
Это может создать дублирующие имена ключей, если другие ключи имеют то же имя после удаления префикса.
-
При необходимости выберите , чтобы скачать только ключи перевода, содержащие указанный префикс, и удалите префикс из загруженного файла.
Эта опция также доступна в 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.