При загрузке файла в проект все новые ресурсы извлекаются из этого файла и хранятся в проекте. Формат загруженного файла не обязательно должен соответствовать начальному формату, установленному для проекта. Если предоставлены теги для группировки ресурсов, новые ключи будут иметь эти теги.
Некоторые форматы, такие как 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, включая заполнитель тега в пути к файлу:
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.