Переводчик для android studio

Локализация. חתול מדען (хатуль мадан) — кот учёный

В статье, посвященной ресурсам, мы уже затрагивали эту тему с теоретической точки зрения. Разберем теперь практическую часть. Мы уже умеем пользоваться строковыми ресурсами и меняли строчки, например, Hello, World на Здравствуй, Мир! Но на самом деле это не совсем правильный подход. Для профессионально написанного приложения лучше использовать другой подход. А именно, локализацию.

Что это значит? Мы не будем менять строчку Hello, World, которая будет считаться строкой по умолчанию, а создадим новый локализованный ресурс. Это даст нам дополнительное преимущество, если пользователь запустит приложение на телефоне с английской локалью, то он увидит текст на знакомом ему языке. Если приложение запустит русский пользователь, то он увидит текст на русском языке. Согласитесь — очень удобно.

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

Чтобы не усложнять материал, воспользуемся стандартным приложением, который мы изучали в самом начале. Создадим новый проект «LocaleApp», но на этот раз мы не будем трогать файл strings.xml в каталоге res/values.

Для русской локализации необходимо создать новый подкаталог values-ru в том же каталоге res. Если вы планируете создавать локализацию только для русского языка, то название каталога не трудно запомнить и вы можете создать папку вручную через res | New | Directory. Но вряд ли вы запомните названия других папок. Поэтому покажу способ создания с помощью мастера студии.

Щёлкаем правой кнопкой мыши на папке res и выбираем New | Android resource directory. В диалоговом окне в левой части Available qualifiers: выбираем пункт Locale и переносим его в правую часть Chosen qualifiers: с помощью кнопки с двумя стрелками вправо. В появившейся третьей колонке выбираем нужные языки, например, русский. Вы увидите, что в поле Directory name автоматически появится нужное название папки. Дополнительно вы можете указать и регион в колонке Specific Region Only

В режиме Android вы можете не увидеть созданную папку, поэтому временно переключитесь в режим Project. Скопируйте файл res/values/strings.xml и вставьте его в новую папку. Можете вернуться в прежний режим. Если папка не пуста, то она уже видна.

Изменим его содержание.

В английской версии им соответствуют ресурсы

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

Как перейти на американскую локаль? Идём в Настройки→Язык и клавиатура→Выбрать язык. Выбираем английский язык English (United States). Снова запускаем приложение в эмуляторе или на телефоне. Теперь наше приложение будет выглядеть так:

Ресурсы из каталога res/values считаются ресурсами по умолчанию. Они отображаются в том случае, когда система не найдёт ресурсы для текущей локали устройства. В нашем случае, при выборе любого языка, кроме русского будет использоваться res/values. Если мы захотим разделить англичан и американцев, тогда придётся создавать два каталога: res/values-en-rUK и res/values-en-rUS. Обратите внимание, что перед кодом второй части ставится буква ‘r’. Иными словами, мы определяем не только язык, но и регион.

Проведем несколько экспериментов. Удалим из файла res/values-ru/strings.xml строковый ресурс hello_world с текстом Здравствуй, Мир!. Сохраним изменения и запустим проект на устройстве с русским языком. Платформа заменила отсутствующий в локализации ресурс дефолтным английским.

Продолжим опыты и поступим наоборот — удалим теперь ресурс из файла res/values/strings.xml. На устройстве выберем какой-нибудь другой язык, например, итальянский. В этом случае вы увидите что-то непонятное, скорее всего вы получите сообщение об ошибке.

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

На самом деле локализовать можно не только строковые ресурсы. В разных странах принято рисовать какой-нибудь объект в соответствии со своими традициями, например, изображение почтового ящика. В этом случае вы можете создать каталог /res/drawable-de, в котором будут находиться изображения, предназначенные для немцев.

В коде вы обращаетесь к нужным ресурсам следующим образом:

Система сама подставит нужную строку. Явно указать, что хочется использовать ресурс на конкретном языке, у вас не получится.

Спустя продолжительное время один из читателей подсказал, как всё-таки задействовать локальный ресурс. Объяснять код не буду, сами поймёте, когда наберётесь опыта.

Просмотр и создание локализованных строк в режиме дизайна

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

Читайте также:  Android лаунчер по умолчанию

Можно сразу создать локализованный файл через удобный мастер. Там же в меню есть пункт Edit Translations. , который выводит диалоговое окно со списком уже имеющихся строковых ресурсов из вашей программы (раньше). Вам нужно выбрать язык для перевода, а затем заполнить в таблице нужную колонку.

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

Сейчас в студии вместо диалогового окна выводится окно редактора, в котором можно редактировать текст.

Непереводимая игра слов с использованием местных идиоматических выражений

Если вы решили использовать локализацию на разных языках, то можете встретиться с одной проблемой. Предположим, вы перевели только несколько строковых ресурсов и в один прекрасный день решили выложить программу в магазин приложений. Android Studio при сборке подписанного приложения может заругаться, что вы перевели не все строки. Есть два способа обхода проблемы. Вы можете использовать атрибут translatable=»false», чтобы указать среде разработке, что данная строка не требует перевода:

В окне редактора это сделать проще через флажки в столбце Untranslatable.

Второй вариант — явно указать, что все строки в файле не нужно переводить с помощью tools:ignore=»MissingTranslation».

Есть ещё один вариант, когда непереводимые строки размещаются не в ресурсе strings.xml, а в другом файле под именем donottranslate.xml.

Когда вы исправите строковые ресурсы, то избавьтесь от ошибок через Project | Clean. и попытайтесь собрать приложение заново.

Поддержка письма справа налево

Арабы и некоторые другие народы используют непривычную для европейцев схему написания текстов справа налево. В Android 4.2 появилась поддержка данного режима. В блоге (англ.) Native RTL support in Android 4.2 рассказано о некоторых вещах по этой теме.

Теперь вы можете писать приложение для израильских военкоматов. Русские призывники в интервью офицерам душевного здоровья часто используют сочетание хатуль мадан (חתול מדען). Теперь вы знаете, как локализовать строки пушкинского стихотворения про кота учёного.

Несколько локалей

В Android 7.0 (API 24) пользователь может установить несколько локалей. В этом случае, если не будут найдены ресурсы для первой локали, то будут искаться ресурсы для второй локали. Таким образом, если француз знает два языка, например, французский и испанский, а в приложение не поддерживает французского, но поддерживает испанский, то пользователь увидит текст на испанском, а не на английском.

Источник

Памятка начинающим переводчикам приложений под Android или как начать переводить приложения

Доброго времени суток, Geektimes.

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

Заинтересовавшихся прошу под кат.

Вступление

Безусловно, самым главным является знание языка, с которого Вы собираетесь переводить. От знаний языка зависит будете ли Вы переводить «быстро» или «хорошо», или же сразу два в одном. Зачастую бывает так, что знаний в какой-то нужной сфере у Вас нет, тогда тут определённо нужно читать литературу по этой области. Например, если Вы хотите перевести приложение, которое занимается модифицированием системы, то следует изучать литературу именно об этом, т.к. технический английский бывает не таким уж и однозначным и зачастую отличается по значению от терминов в нетехнической сфере, а некоторые конструкции можно переводить по-разному, и корректный перевод Вы сможете сделать только, если Вы понимаете о чём идёт речь. Из этого вытекает уже второй критерий: понять, что на это реально требуется время и упорство, если Вы хотите делать всё качественно, а не через Google Translate.
Я не буду вдаваться в технические подробности операций непосредственно с самим .apk-файлом по вытаскиванию из него локализации, а так же внедрения в него Вашего перевода — Вы сами без труда сможете это найти на просторах, т.к. мануалов огромное количество, я же просто собрал информацию о возможных инструментах. Например, статья из песочницы Хабра, где примерно написан процесс декомпиляции приложения; статья на Хакере о том же самом + модификации; ещё статья, первая в гугле. Более подробно можно посмотреть, конечно же, мануалы самого гугла.

Первым делом

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

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

Ресурс для перевода всем миром по нитке хорош скоростью перевода, однако, опасен тем, что зачастую не всегда его переводят те, кто может перевести корректно. Обзор таких ресурсов на Хабре. Например, Вы знаете, что такой-то пункт в меню приложения отвечает за определённую функцию, и пишете перевод в соответствующую ячейку на этом ресурсе. А потом какой-то умелец берёт и исправляет на неправильный, на, скажем, дословный перевод, который не является корректным. Вы снова исправляете на нужный, но кто-то упорный снова переименовывает. Есть ресурсы, где за каждый предлагаемый перевод можно голосовать, например, если кто-то предложил вариант «А», а Вы — «Б», то другие пользователи могут голосовать либо за «А», либо за «Б», и чей перевод наберёт больше голосов, тот и будет правильным. Хотя я не раз видел, что голосуют за откровенно некорректный вариант. Ну и, безусловно, надо понимать, что считать перевод только своим Вы не сможете, если Вам важно авторство перевода.
Если разработчик прислал Вам файлы локализации, то тут всё гораздо проще — берём свой инструмент для перевода и вперёд, а с разработчиком можно даже договориться о том, чтобы указал Вас в качестве переводчика — Вам приятно, а разработчик получает ещё одну локализацию.
Если же разработчик говорит, что локализация есть и качественная, а Вы явно видите там ошибку, да и не одну, и на ресурсе для перевода всем миром перевода нет, то остаётся только делать свои моды, если же, конечно, разработчик отказывается брать Вашу локализацию. Такая же ситуация, если разработчик Вам не ответил.
Лично я советую всегда попробовать сначала связаться с разработчиком, т.к. это может Вам упростить жизнь, а дальше уже выбирайте — будете ли Вы переводить на сайте, или будете делать свой перевод.

Читайте также:  Получение рут прав андроид через компьютер

Инструменты для работы с .apk

По сути, инструмента-то два, один основан на декомпиляции самого пакета, а другой — на работе непосредственно с самой ресурсной таблицей пакета.

Apktool и его модификации:
Что такое apktool, можно узнать на просторах, это прекрасно гуглится и объясняется везде, где только можно. Собственно, все инструменты ниже основаны на нём, все я не перечислю, но постараюсь добавить самые основные.

  • Apktool — «оригинальный» вариант, консольный;
  • APK Studio — мощный инструмент для работы с пакетом, мало подходит начинающим;
  • APKToolGUI — очень удобный инструмент с оконным GUI, но, к сожалению, больше не поддерживается автором, код лежит на GitHub (на него и ведёт ссылка);
  • Batch Apktool — по-моему, самый удобный и исправно функционирующий инструмент, который обладает каким-никаким GUI, имеет поддержку плагинов, активно развивается и это самый настоящий комбайн для модификации что прошивок, что отдельных приложений;
  • jBART — зарекомендовавший себя отличный инструмент для перевода прошивок, но умеет работать и с одиночными пакетами, по сути, это надстройка над apktool, позволяющая пакетно переводить .apk-файлы и патчить код;
  • MultiApkTool — неплохой комбайн, похожий на BatchApkTool;
  • множество других.

B.A.R.S.:
B.A.R.S. — принципиально другой инструмент перевода, он не перекомпилирует пакеты, а патчит ресурсную таблицу с заменой или добавлением строк, что позволяет снизить вероятность ошибок рекомпиляции практически на 99%.

Итог:
Если Вы хотите производить модификацию .apk-пакета в более полном понимании процесса (например, элементарное вырезание лишних языков, замена иконок и прочее) + перевод, то Вам нужны инструменты, основанные на apktool — все инструкции по использованию и прочим хитростям можно найти на просторах, у меня не стоит цели описывать всё тут. Вся беда apktool в том, что он перепаковывает приложение, что может создать дополнительные трудности.
Если Вы хотите только локализовывать, тогда можно обойтись B.A.R.S., однако, требуется настроить репозиторий с переводом. Впрочем, возня на час-другой сможет Вас избавить от головняка по сборке, которая может случиться с apktool.

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

Инструменты для работы с файлами локализации

Допустим, Вы получили файлы локализации так или иначе (или Вам прислал их разработчик, или Вы разобрали приложение), следующий шаг — перевод этих файлов. Для автоматизации перевода существует огромное количество инструментов, где используется «translation memory» («память переводов») — база, которая будет сопоставлять строки и выводить наиболее подходящий вариант перевода. Подробнее об этом можно почитать, опять же, на просторах.

  • Вручную — самый дедовский способ: открываем в текстовом редакторе (Notepad++ или любом другом, кроме нативного «Блокнота» в Windows!) и переводим. Медленно и архаично. В общем — хватит только на первые сотни три строк, далее лень и жалость к потерянному времени возьмёт своё.
  • TM-database — отличная легковесная программа, которая умеет работать со множеством форматов, поддерживает базу данных и активно поддерживается. Отличный выбор как для начинающих, так и для более прошаренных. Работает как на Windows, так и прекрасно запускается из-под Linux (Wine).
  • TranslatorApk — комбайн, который умеет и декомпилировать приложения, и относительно удобно работать с текстом. Вариант для тех, кто хочет иметь всё в одном.
  • Déjà Vu, OmegaT, Trados, SDL Passolo и пр. инструменты.
Читайте также:  Андроид студио мессенджер исходники

Наиболее подходящие для перевода файлов локализации (.xml) — именно первые две программы, лично я сам пользуюсь TM-database. Например, у меня OmegaT начисто отказывался работать с .xml, приходилось копипастить в документ другого формата, удалять лишнее… В общем, напряжно. При использовании «памяти переводов» можно пользоваться что своей базой, что стандартной. Своя база хороша тем, что Вы добавляете в базу исключительно свой перевод, и при автоматическом переводе многое может перевестись корректно. При использовании «стандартной» базы или «общей», в которую все кладут по копеечке, вероятнее всего будет куда больше перевода, но опять же — он может быть неправильным или может отличаться от Вашего мышления. Тут уже Ваш выбор. Так же есть функции онлайн-перевода — можно прогнать через онлайн-переводчик и затем редактировать, но об этом ниже.

Итог: создание собственной базы сможет упростить Вашу жизнь больше, чем общая база, но только в том случае, если в Вашей базе содержится действительно множество строк. Возможно, потребуется несколько лет на создание оной, но оно того стоит. В остальных случаях хватит и общей базы. Лично моя рекомендация — создавайте свою базу с нуля, либо берите «стандартную» базу и набивайте в неё свой перевод — стандартный перевод на то и стандартный, а к нему будут добавляться лично Ваши строки. Но не стоит думать, что база решит все Ваши проблемы, всегда придётся забивать вручную какую-то часть и править перевод из базы. Всегда после прогонки через базу смотрите на результат.

Словари и онлайн-сервисы

Безусловно, чтобы что-то вбивать в базу данных, надо знать как это переводится. Зачастую многие специальные термины переводятся совершенно различно от дословного перевода, а все их запомнить нереально. И вот тут приходится обращаться к словарям и переводчикам.

  • Мультитран — потрясающая платформа, где можно реально найти огромное количество терминов, причём, добавить туда можно тоже. Можно переводить что через сайт, что скачать себе базу и переводить через клиент.
  • ABBY Lingvo — клиент на ПК умеет даже разговаривать, огромная база переводов. Да и вообще компания известная, одна из лучших. Специальных терминов меньше, чем в Мультитране, но определённо может помочь, или уж, по меньшей мере, подкинуть вариант перевода.
  • PROMPT — известный переводчик, конкурент Google Translate, иногда выдаёт варианты, которых в Google Translate нет; приходится додумывать, но если есть подсказка — уже хорошо.
  • MyMemory — отличный ресурс, аналог Мультитрана, есть множество терминов и различных вариантов перевода.
  • QTranslate — отличный клиент для сервисов перевода, в котором можно сразу пробивать по каждому сервису, в т.ч. и по китайским.
  • Google Translate — в комментариях не нуждается. Может подсказать или даже перевести нормально. Довольно неплохо переводить с китайского.
  • Microsoft Language Portal — тут можно найти «память перевода» для продукции Microsoft (спасибо за подсказку virtualtomato).
  • Verifika — потрясающий сервис для нахождения обидных ошибок в переводе (двойные пробелы, целостность переменных, тегов и пр.). Невероятно полезный сервис, который плагин в Notepad++ не заменит (спасибо за подсказку virtualtomato).
  • Множество информации о переводах, ссылок на ресурсы для специализированного перевода и пр.

Использование сервисов типа Мультитрана так же значительно может облегчить Вам жизнь. Но если нет какого-то специального термина, то следует пробивать по трём ресурсам нужные слова и пытаться уловить смысл словосочетания — да такое тоже случается. Очень хорошую подсказку зачастую даёт строка с переводом, сам ключ, из него можно вытащить 95% информации за что отвечает эта строка. Ни в коем случае не увлекайтесь голым онлайн-переводом, практической пользы от такого перевода нет вообще, проще уже оставить на нативном языке, если это хотя бы английский. Но если уж такое произошло, что очень хочется перевести, а навыков и знаний особых нет — то следует прогнать через онлайн переводчик, смотреть на ключ строки и облагораживать. В процессе такого обучения с каждым разом Ваши знания будут увеличиваться, а перевод — шлифоваться. Самое главное — никогда не оставлять голый машинный перевод, если Вы прогоняете онлайн.

Заключение

Ну вот вроде бы и всё. Как видно — это не так уж и сложно, более того, заставляет мозги работать, да и знания никогда не бывают лишними. Общие рекомендации, если подводить итог, не отличаются от тех, что в статье — делать самостоятельно, небездумно копировать и переводить через переводчики без последующей обработки. Например, если переводить через переводчик с китайского на английский, а потом на русский — получится такой ужас, что лучше бы остался китайский. Самое главное тут — уважение к чужому труду (разработчику), к пользователям, которые будут смотреть на Ваш перевод (а стыдобище-то будет, если переводить абы как), и к себе лично. К счастью, с каждым годом инструменты и сервисы пилятся всё активнее, становится куда более удобно заниматься переводами. К слову, если разработчик адекватный, то за свою работу Вы сможете получить или какой-нибудь VIP-аккаунт, или маленький подарочек (мне как-то выслали футболку прикольную с прикольным монстриком — логотипом программы) — мелочь, а всё равно приятно. Уважайте друг друга и делайте работу качественно, если уж взялись.

Источник

Оцените статью