Локализация пользовательского интерфейса с помощью редактора переводов

Редактор переводов обеспечивает объединенное и редактируемое представление всех ваших стандартных и переведенных строковых ресурсов .

Дополнительные сведения о переводе вашего приложения на разные языки см. в разделе «Поддержка разных языков и культур» .

Рис. 1. Редактор переводов, показывающий текст приложения перед переводом.

Строковые ресурсы

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

После завершения создания файла strings.xml по умолчанию вы можете добавить переводы самостоятельно или оплатить профессиональные услуги по выполнению переводов. В любом случае вам следует воспользоваться возможностями Android Studio, которые помогут вам управлять и тестировать локализуемый текст . Информацию об услугах профессионального перевода см. в разделе Заказ услуг перевода .

Откройте редактор переводов

Вы можете получить доступ к редактору переводов из следующих мест в Android Studio.

Открыть из представления Android

  1. На панели «Проект» > Android слева выберите ModuleName > «Res» > «Значения» .
  2. Щелкните правой кнопкой мыши файл strings.xml и выберите «Открыть редактор переводов» .

    Редактор переводов отображает пары ключ-значение из файла strings.xml .

    Примечание. Если вы перевели файлы strings.xml , в вашем проекте будет несколько соответствующих папок значений с суффиксами, обозначающими язык, например значения-es для испанского языка. Файл strings.xml по умолчанию всегда находится в папке значений (без суффикса).

На рис. 1 показан текст приложения по умолчанию (в данном случае английский) в редакторе переводов для простого приложения до завершения работы по переводу. Содержимое переведенных файлов strings.xml появится справа от столбца «Непереводимое» , по одному столбцу для каждого языка, как показано на рисунке 2.

Открыть изнутри strings.xml

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

  1. На панели «Проект» > Android слева выберите ModuleName > «Res» > «Значения» .
  2. Дважды щелкните файл strings.xml , чтобы открыть его для редактирования.
  3. В файле strings.xml щелкните ссылку Открыть редактор в правом верхнем углу.

Примечание. Если щелкнуть ссылку «Скрыть уведомление» , ссылка «Открыть редактор» исчезнет. Чтобы вернуть его, закройте и снова откройте проект.

Открыть из редактора дизайна

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

  1. На панели «Проект» > Android слева выберите ModuleName > «Res» > «Layout» .
  2. Дважды щелкните файл content_main.xml , чтобы открыть его для редактирования.
  3. Нажмите вкладку «Дизайн» в левом нижнем углу, чтобы открыть редактор дизайна .
  4. В редакторе дизайна выберите язык. раскрывающийся список.
  5. Выберите «Редактировать переводы». .

Настройка непереводимых строк

В Редакторе переводов вы можете выбрать «Непереводимый» , чтобы указать, что вы не хотите переводить текст в этой строке. Текст, который вы не хотите переводить, может представлять собой текст, относящийся к конкретному продукту, например торговые наименования и товарные знаки, или технические термины, для которых нет перевода.

Когда вы устанавливаете флажок Untranslatable , соответствующая строка в файле strings.xml по умолчанию добавляется translatable="false" . В следующем примере EasyApp в верхней строке не переводится, поскольку это название продукта.

<resources>
    <string name="app_name" translatable="false">EasyApp</string>
    <string name="action_settings">Settings</string>
    <string name="easy_app">I am a Simple App!</string>
    <string name="next_page">Next Page</string>
    <string name="second_page_message">I am the Second Page!</string>
    <string name="title_activity_second">SecondActivity</string>
</resources>

Добавлять и удалять языки

Редактор переводов поддерживает BCP 47 и объединяет коды локали и региона (страны) в единый выбор для целевой локализации. Локаль определяет больше, чем просто язык. Языковой стандарт включает в себя зависящее от страны форматирование таких вещей, как дата и время, валюты и десятичные дроби.

Чтобы добавить язык, сделайте следующее:

  1. В Редакторе переводов щелкните значок глобуса. .
  2. В раскрывающемся списке выберите язык, который хотите добавить.

    Новый язык появится в Редакторе переводов , а в проект добавится папка Values-* с файлом strings.xml . Например, значения-es для испанского языка.

Чтобы удалить язык, выполните следующие действия:

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

  1. На панели «Проект» > Android слева выберите ModuleName > «res» .
  2. Щелкните правой кнопкой мыши папку значений-* для языка, который вы хотите удалить. Например, значения-привет для хинди.
  3. В раскрывающемся списке выберите «Удалить» , чтобы удалить папку и ее файл strings.xml .

Редактировать, добавлять и удалять текст

Работать с настройками текста можно непосредственно в файле strings.xml или через Редактор переводов . В этом разделе описывается подход к работе с Редактором переводов . В Редакторе переводов вы можете редактировать, добавлять или удалять текст с помощью списка или поля «Перевод» в нижней части Редактора переводов .

Рис. 2. Представление списка вверху и поле перевода внизу.

Просмотр списка

Чтобы отредактировать или добавить текст, выполните следующие действия:

  1. Дважды щелкните ячейку, в которой вы хотите изменить или добавить текст.
  2. Выполните копирование и вставку с клавиатуры или, если у вас клавиатура поддерживает диакритические знаки, введите текст непосредственно в представление списка.
  3. Нажмите Tab или переместите курсор за пределы поля.

Чтобы удалить текст, сделайте следующее:

  1. Дважды щелкните ячейку, которую хотите удалить.
  2. В виде списка выделите текст и нажмите «Удалить» .
  3. Нажмите Tab или переместите курсор за пределы поля.

Поле перевода

Чтобы отредактировать или добавить текст, выполните следующие действия:

  1. В представлении списка щелкните один раз ячейку, в которой вы хотите изменить или добавить текст.
  2. В поле «Перевод» выполните копирование и вставку с клавиатуры или, если у вас клавиатура поддерживает диакритические знаки, введите текст непосредственно в поле «Перевод» .
  3. Нажмите Tab или переместите курсор за пределы поля.

Чтобы удалить текст, сделайте следующее:

  1. Щелкните один раз ячейку, которую хотите удалить.
  2. В поле «Перевод» выделите текст и нажмите «Удалить» .

Добавлять и удалять ключи

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

Чтобы добавить ключ, сделайте следующее:

  1. В редакторе переводов нажмите «Добавить ключ» . .
  2. В диалоговом окне введите имя ключа, значение по умолчанию и расположение файла strings.xml по умолчанию.

    Рисунок 3. Добавление ключа

Чтобы удалить ключ, сделайте следующее:

  1. В Редакторе переводов выберите ключ, который хотите удалить.
  2. Нажмите «Удалить ключи». .
  3. В диалоговом окне «Удалить» решите, хотите ли вы безопасное удаление и хотите ли вы выполнять поиск в комментариях и строках, и нажмите «ОК» .

    Рисунок 4. Диалоговое окно удаления

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

    Рисунок 5. Диалоговое окно удаления

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

    Рисунок 6. Небезопасное использование

  5. Щелкните правой кнопкой мыши использование, чтобы отобразить контекстное меню, и выберите « Перейти к исходному коду» , чтобы внести необходимые изменения.
  6. На панели «Найти конфликты безопасного удаления» выберите «Повторить безопасное удаление» , чтобы убедиться, что нет других случаев использования, требующих внимания.
  7. Когда использование будет очищено, нажмите «Выполнить рефакторинг» , чтобы удалить ключ.

Исправить ошибки

На рис. 7 показан редактор переводов , отображающий содержимое файлов strings.xml на английском, испанском и французском языках. Красный текст указывает на строки, содержащие ошибки.

Рисунок 7. Красный текст указывает на состояние ошибки, которое необходимо исправить.

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

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

Примеры исправлений редактора переводов :

  • На рис. 7 показано, что в строке app_name установлен флажок «Непереводимо» , но имеется перевод на испанский язык. Удалите испанский перевод, чтобы исправить ошибку.
  • На рис. 7 показано, что в строке next_page отсутствует перевод на французский язык. С помощью клавиатуры скопируйте страницу Suivante в ячейку, чтобы исправить ошибку. Операция копирования и вставки с клавиатуры копирует текст с диакритическими знаками в ячейку.

Отображение переведенного текста в редакторе дизайна

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

  1. На панели «Проект» > Android слева выберите ModuleName > «Res» > «Layout» .
  2. Дважды щелкните файл content_main.xml , чтобы открыть его для редактирования.
  3. Нажмите вкладку «Дизайн» в левом нижнем углу, чтобы открыть редактор дизайна .
  4. В редакторе дизайна выберите язык. раскрывающийся список.
  5. Выберите «Редактировать переводы». .
  6. Выберите язык, который вы хотите использовать для просмотра вашего приложения.

    Рисунок 8. Раскрывающийся список языков с выбранным испанским языком.

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

Рис. 9. Редактор дизайна, отображающий переведенный текст на испанском языке.

Установите для редактора дизайна язык по умолчанию.

Чтобы вернуть язык к значению по умолчанию, выберите es > Язык. .

Рисунок 10. Установка языка по умолчанию

Управляйте и тестируйте локализуемый текст

Платформа Android и Android Studio предоставляют несколько функций, которые помогут вам управлять и тестировать локализуемый текст приложения. Эти функции позволяют решать проблемы с написанием справа налево (RTL), например арабским или ивритом. Тестирование локализуемого текста позволяет вам внести изменения в текст пользовательского интерфейса и его макет, прежде чем вы сохраните свои сообщения в исходном репозитории для последующей отправки на перевод.

Рефакторинг вашего проекта для поддержки RTL

В Android Studio есть команда рефакторинга, которая обеспечивает поддержку двунаправленного текста в элементах TextView , ConstraintLayout и LinearLayout , чтобы ваши приложения могли отображать и разрешать пользователям редактировать текст как слева направо (LTR), так и справа налево (RTL). сценарии. Команда также обеспечивает автоматическое зеркалирование макетов пользовательского интерфейса приложения и всех виджетов представления. Чтобы увидеть изменение направления текста и зеркальное отображение макета, необходимо также установить свойства направления текста и макета в редакторе макетов .

Следующая процедура показывает, как выполнить рефакторинг проекта для поддержки RTL:

  1. Выберите «Рефакторинг» > «Добавить поддержку RTL, где это возможно», чтобы отобразить диалоговое окно, показанное на рисунке 11.

    Рисунок 11. Добавление поддержки RTL

    • Если элемент <application> в файле AndroidManifest.xml не имеет атрибута android:supportsRTL="true" , установите флажок Обновить AndroidManifest.xml .
    • Если targetSdkVersion вашего приложения имеет номер 17 или выше, выберите «Заменить свойства левого/правого экрана на свойства начала/конца» . В этом случае ваши свойства должны использовать «начало» и «конец» вместо «слева» и «справа». Например, android:paddingLeft становится android:paddingStart .
    • Если targetSdkVersion вашего приложения равен 16 или меньше, выберите «Создать версии -v17». В этом случае ваш XML должен использовать оба набора свойств. Например, ваш XML должен использовать как android:paddingLeft , так и android:paddingStart .
  2. Чтобы отобразить окно «Найти предварительный просмотр рефакторинга» , нажмите « Выполнить» .

    Рисунок 12. Проверка предварительного просмотра

  3. Нажмите «Выполнить рефакторинг» .

Дополнительные сведения о рефакторинге проекта для поддержки RTL см. в разделе Собственная поддержка RTL в Android 4.2 .

Свойства направления текста и макета

Окно «Свойства» справа предоставляет свойство textDirection для использования с текстовыми виджетами и свойство LayoutDirection для использования с виджетами макета для изменения направления текста и компонентов макета. Свойства направления перечислены в окне «Свойства» справа и работают с уровнем API 17 или выше.

Чтобы увидеть изменение направления текста и зеркальное отображение макета, необходимо также выполнить рефакторинг проекта для поддержки RTL. В английском языке при изменении направления текста перемещаются только знаки препинания с правой стороны текста на левую; например, «Привет, мир!» становится «!Hello World». Чтобы увидеть переключение текста LTR на RTL, вам необходимо использовать язык RTL в своем приложении. Если вы хотите использовать английский язык и видеть переключение текста на RTL в целях тестирования, используйте псевдолокали . Псевдолокации не зависят от команды рефакторинга и свойств направления.

Чтобы получить доступ к свойствам направления и использовать их, выполните следующие действия:

  1. В редакторе макетов выберите текстовый виджет.
  2. Откройте окно «Свойства» и найдите свойство RTL, которое вы хотите использовать.

    Чтобы установить значение свойства, выберите один из следующих вариантов:

    • firstStrong: значение по умолчанию для корневого представления. Первый символ строгого направления определяет направление абзаца. Если нет строгого направленного символа, направление абзаца является разрешенным направлением макета представления.
    • AnyRtl: направление абзаца — RTL, если оно содержит какой-либо сильный символ RTL; в противном случае это LTR, если оно содержит какие-либо строгие символы LTR. Если ни того, ни другого нет, направление абзаца является разрешенным направлением макета представления.
    • ltr: направление абзаца — LTR.
    • rtl: направление абзаца — RTL.
    • локаль: направление абзаца зависит от локали системы.
    • наследовать: по умолчанию. Используйте направление, заданное в родительском элементе.
  3. Чтобы просмотреть перевернутый текст и макет, запустите приложение.

Псевдокалес

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

Сведения о том, как использовать псевдолокали, см. в разделе Тестирование приложения с помощью псевдолокалей .