Предисловие
В современном мире спрос на мобильные приложения, которыми пользуются люди из разных стран и регионов, значительно увеличился. Для разработчиков важно сделать свои приложения доступными на нескольких языках. Локализация приложения может предложить много преимуществ:
Расширение аудитории: Локализация вашего приложения вы можете охватить пользователей, которые не могут говорить на языке вашего приложения по умолчанию. Это может помочь вам подключиться на новые рынки и увеличить вашу пользовательскую базу.
Улучшение пользовательского опыта: Пользователи с большей вероятностью будут использовать и наслаждаться приложением, которое доступно на их родном языке. Локализация вашего приложения может помочь вам обеспечить лучший пользовательский опыт, что может привести к лучшим обзорам, рейтингам и показателям удержания. Локализация вашего приложения может дать вам конкурентное преимущество в регионах, где ваши конкуренты, возможно, не локализовали свои приложения.
Увеличение доходов: Локализация вашего приложения может привести к увеличению доходов, поскольку пользователи с большей вероятностью будут делать покупки в приложении или оплатить подписки, если приложение доступно на их родном языке.
Но есть также несколько проблем и потенциальных проблем, с которыми могут столкнуться разработчики. Локализация может занять много времени и ресурсов, особенно, для приложений с большим количеством контента и длинным списком поддерживаемых языков.
Но мы бы не были разработчиками, если бы пытались всегда все автоматизировать. Автоматизированная локализация может быстро и эффективно переводить контент, снизить затраты, связанные с ручным переводом, например, наем профессиональных переводчиков или выделение внутренних ресурсов для этой задачи. Это особенно эффективно, если приложение создается одним разработчиком.
Подготовьте свой проект
Я не буду вдаваться в подробности о том, как локализация строк работает в xcode проектах, по этому вопросу уже есть много других учебных пособий. Я только выделю несколько ключевых шагов:
-
Создайте файл Localizable.strings и заполните его строками, которые вы хотите локализовать.
/* optional description */ "[key]" = "[string]"; /* Example: */ "welcome text" = "Welcome to XCodelocalize";
Перейдите в настройки файла проекта, добавьте желаемые языки. Apple рекомендует EFIGS (английский французский итальянский немецкий испанский) + китайский язык в качестве основы.
Создайте файлы Localizable.strings для всех выбранных языков. Скорее всего, вы так же захотите локализовать файлы plist, storyboard и intentdefinition.
Установка XCodeLocalize
Неожиданно, инструмент для iOS разработки оказался написанным на питоне, так что убедитесь, что у вас есть python 3.9+
После этого вы можете установить xcodelocalize с помощью pip:
pip3 install xcodelocalize
Также доступна установка из .whl файла на странице релизов или с помощью poetry из исходников.
Запустите автоматическую локализацию
cd
к корневой папке проекта и запустите
xcodelocalize [OPTIONS]
или
python3 -m xcodelocalize [OPTIONS]
Параметры
--base-language
: код языка, с которого будут переведены все строки. [по умолчанию: 'en']--override / --no-override
: булево значение; указывает, будут ли переведены строки, которые уже существуют в файле. Перевести, еслиoverride
; пропустить, еслиno-override
. [по умолчанию: no-override]--format-base / --no-format-base
: сортировать строки base файла по ключу. [по умолчанию: no-format-base]-
--file
: Имена .strings файлов для перевода. Можно указать несколько файлов. Если не указано, все файлы будут переведены. [по умолчанию: None]
Пример:xcodelocalize --file InfoPlist xcodelocalize --file InfoPlist --file MainStoryboard --file Localizable
--key
: Ключи, которые должны быть переведены. Можно указать несколько ключей. Если не указано, все будут переведены. [по умолчанию: None]--language
: Код языков, которые будут переведены. Допускается множество значений. Если не указано, все файлы будут переведены. [по умолчанию: None]--log-level
: Один из [progress|errors|group|string]. [по умолчанию: group]--help
: Информация о параметрах
Автоматизация
Вы можете перейти в Target -> Build Phases -> New Run Script Phase
в вашем проекте Xcode и ввести xcodelocalize
. Это будет переводить необходимые строки во время сборки и ваши файлы всегда будут локализованы.
Заключение
Теперь вы знаете, как быстро локализовать свои iOS приложения. Поставьте звезду репозиторию, если вам понравилось.
Комментарии (9)
plFlok
00.00.0000 00:00+2Улучшение пользовательского опыта: Пользователи с большей вероятностью будут использовать и наслаждаться приложением, которое доступно на их родном языке.
Ух, спорное утверждение, что автоматический перевод улудшает UX.
У меня наоборот появляется дискомфорт, когда я вижу в интерфейсе слово "продолджать" вместо "продолжить" (от continue), "следующий" вместо "далее" (от next). Автоматика совсем ничего не знает об устоявшемся в интерфейсе применении слов.
Или как в одном приоложении todo-list, который ещё и денег за "про-версию" требовал, было написано: "В день ещё нет задач. Добавить новый?". Прямо чувствуется стиль переводов али-экспресса.
Захотелось снести и поставить низкую оценку в сторе за наглость.
Помогло ли это авторам увеличить доходы? Сомнительно.
mironoffsky
00.00.0000 00:00+1Разделяю вашу боль, но вроде в начале статьи говорится о локализации в целом.
Да и не надо быть таким категоричным к машинному переводу, он хоть и не может с достаточной точностью перевести те или иные обороты речи, но позволяет хотя-бы из контекста понять, что к чему.
Что касается предмета статьи, то лично я бы рассматривал этот инструмент как возможность создать "предварительный" перевод, к которому можно привлекать переводчиков и команду тестирования, "вычитывать" его. Что-то мне подсказывает, что большая часть односложных конструкций будет переведена верно, и ресурсы переводчика будут брошены на действительно важные моменты.
Ну и даже автоматизированный перевод поможет получить прирост аудитории на языках, отличных от стандартного языка приложения, они тогда помогут поправить перевод на свой язык (в коммерческой компании за плюшки, в опенсорсе за идею).
lymes
00.00.0000 00:00+1Apple рекомендует EFIGS (английский французский итальянский немецкий испанский) + китайский язык в качестве основы.
Не скажу о качестве автоматического перевода на китайский и немецкий, не силён, но переводы на французский, испанский и итальянский получаются очень даже неплохо.
varton86
00.00.0000 00:00Локализовать приложение не проблема, проблема перевести портянки текста ключей Localizable.strings на нужные языки. И уж 20 языков в ручном режиме copy/paste это точно не 5 минут)
MarkParker5 Автор
00.00.0000 00:00В статье под локализацией как раз подразумевается перевод Localizable.strings на нужные языки
varton86
00.00.0000 00:00ЗдОрово, из статьи это не оч понятно, сорри) Надо будет опробовать инструмент.
И у вас какое-то сложное расширение в readme, так не проще?
extension String {
var localized: String {
return Bundle.main.localizedString(forKey: self, value: nil, table: nil)
}
}
MarkParker5 Автор
00.00.0000 00:00+1Можно еще проще, если не передавать параметры с дефолтным значением
extension String { var localized: String { NSLocalizedString(self, comment: "") } }
debug45
00.00.0000 00:00Это ужасный подход. Есть такое приложение для macOS — Wondershare UniConverter, отличный видеоконвертер. И оно переведено на русский язык машиной. Переведено так, что пользоваться им совершенно невозможно. Просто вообще ничего не понятно в интерфейсах. Лучше бы подобной «локализации» не было вовсе.
К счастью, система позволяет принудительно заставить его работать на английском, но мало кто вообще знает о такой возможности.varton86
00.00.0000 00:00+1Ну не всё так страшно) Я в своих приложениях прошу присылать исправления, если что-то не так переведено и присылают. Даже новые языки появляются (венгерский, голландский).
mironoffsky
Разделяю вашу боль, но вроде в начале статьи говорится о локализации в целом.
Да и не надо быть таким категоричным к машинному переводу, он хоть и не может с достаточной точностью перевести те или иные обороты речи, но позволяет хотя-бы из контекста понять, что к чему.
Что касается предмета статьи, то лично я бы рассматривал этот инструмент как возможность создать "предварительный" перевод, к которому можно привлекать переводчиков и команду тестирования, "вычитывать" его. Что-то мне подсказывает, что большая часть односложных конструкций будет переведена верно, и ресурсы переводчика будут брошены на действительно важные моменты.
Ну и даже автоматизированный перевод поможет получить прирост аудитории на языках, отличных от стандартного языка приложения, они тогда помогут поправить перевод на свой язык (в коммерческой компании за плюшки, в опенсорсе за идею).