Русский
Русский
English
Статистика
Реклама

Localization

Перевод Локализационное тестирование зачем оно нужно приложению или сайту?

02.10.2020 10:21:39 | Автор: admin


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

Сегодня США уже больше не является крупнейшим игроком на рынке мобильных приложений. Китай и Индия соревнуются за звание мирового лидера. И сегодня нужно, и даже не один раз, проверять все языковые версии перед релизом. Ведь цена даже крошечной ошибки может быть очень высока.

О тестировании локализации компании-разработчики, как правило, задумываются не сразу. И всё же этот процесс нужно обязательно включить в разработку. Давайте подробнее рассмотрим, что представляет собой тестирование локализации, какие важные этапы оно включает и зачем вообще оно нужно.


Что такое локализационное тестирование?


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

Тестирование локализации один из видов контроля качества, который проводится во время разработки продукта. Этот тип тестирования помогает найти баги или ошибки перевода в локализованной версии до того, как конечный продукт попадет к пользователю. Цель тестирования поиск и устранение ошибок в различных локализованных версиях продукта, предназначенных для разных рынков и локалей.

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

Почему локализационное тестирование так важно?



Главная задача тестирования заключается в том, чтобы продукт выглядел так, как будто изначально был создан на языке целевой аудитории и полностью соответствовал культурным и региональным особенностям.

Локализация повышает лояльность клиентов к вашему бренду. Вот конкретные цифры: около 72,1% пользователей Интернета предпочитают делать покупки на сайтах на своем родном языке. Даже те, кто хорошо владеет английским, по-прежнему предпочитают просматривать веб-страницы на своем родном языке.

Тестирование локализации обеспечивает высокое качество приложений и сайтов на глобальном рынке. Давайте представим такую ситуацию: вы создали приложение и планируете выпустить его английскую, русскую и немецкую версии. Вы наняли лучших переводчиков, поэтому на 100% уверены в правильности орфографии и грамматики. Но внезапно вы обнаружили, что длина немецких строк превышает лимит символов для некоторых кнопок в приложении или форматы времени и даты на сайте не соответствуют региону. Тестирование локализации как раз и существует для того, чтобы не допустить подобные ситуации, ведь с переводным контентом проблемы могут возникнуть даже в случае, когда тексты грамматически правильные. Если вы хотите, чтобы ваше приложение или сайт выглядели нативными, уделяйте должное внимание контексту и тонкостям местной культуры.

На что следует обратить внимание во время тестирования локализации?


Тестирование локализации это далеко не только проверка орфографии, грамматики и корректности перевода. Чтобы ничего не упустить в этом процессе, мы сделали чек-лист самых важных вещей. Итак, приступим.

Подготовительный этап

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

  • Подготовьте для тестировщиков необходимую документацию и все сведения о сайте или продукте, которые смогут пригодиться.
  • Создайте глоссарий и память переводов, чтобы помочь тестировщикам правильно истолковать используемые термины.
  • Если приложение или сайт уже переводились раньше, приложите предыдущие версии в целях ознакомления. А ещё можно воспользоваться специализированными сервисами или базами данных для хранения всех версий перевода и организовать к ним доступ.
  • Создайте трекер багов документ или платформу, где вы будете фиксировать все баги, найденные во время тестирования локализации. Так проще контролировать исправление ошибок и общаться с остальными членами команды.


Проверка региональных и культурных особенностей

Это очень важный этап в тестировании локализации. Вам понадобятся скриншоты либо локализованная сборка приложения. Нужно проверить следующее:
  • Соответствие формата даты и времени выбранному региону.
  • Форматы для телефонных номеров и адресов.
  • Цветовые схемы (это важно, так как один и тот же цвет может иметь разные значения в различных культурах). Например, белый цвет символизирует удачу в Западных странах, но в азиатской культуре он ассоциируется с трауром.
  • Соответствие названий продуктов региональным стандартам.
  • Формат валюты.
  • Единицы измерения.


Лингвистическая проверка

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


Пользовательский интерфейс или внешний вид

Это нужно для того, чтобы ваш программный продукт смотрелся безукоризненно на любом языке. Обязательно удостоверьтесь в следующем:
  • Все текстовые надписи на картинках локализованы.
  • Макет языковых версий совпадает с оригиналом.
  • Переносы и разрывы строк на страницах/экранах размещены правильно.
  • Диалоги, всплывающие окна и уведомления отображаются корректно.
  • Длина строк не превышает существующие ограничения и текст отображается правильно (иногда текст перевода длиннее оригинала и не помещается на кнопках).


Пример
Команда Alconost столкнулась с одним таким случаем во время работы с DotEmu и их игрой Blazing Chrome. В испанской версии количество символов в переводе текста кнопок превосходило ограничения для них. Слово Далее было слишком длинным на испанском: Siguiente. Команда Alconost обнаружила эту ошибку во время тестирования локализации и предложила заменить Siguiente на Seguir для корректного отображения в интерфейсе. Именно благодаря обнаружению подобных проблем и их устранению интерфейс программного продукта и эффективность взаимодействия с пользователем улучшаются.





Функциональность

Это один из завершающих и важнейших этапов, когда нужно проверить правильно ли работает локализованное приложение. Советуем обратить внимание на следующее:
  • Функционал локализованного приложения или сайта.
  • Н=Гиперссылки (убедитесь, что они работают во всех языковых версиях, легальны для указанного региона и не будут блокироваться местными или региональными файрволами).
  • Работу вводных функций.
  • Поддержку специальных символов для различных локалей и языков.
  • Работу сочетаний клавиш.
  • Функцию сортировки списков.
  • Поддержку различных шрифтов.
  • Поддержку различных разделителей формата.


Какие трудности могут возникнуть во время тестирования локализации?


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

Одна из главных сложностей это недостаточное знание целевого языка. Естественно, знать все языки мира невозможно. Но есть компании по локализации, интернационализации и переводу. Например, Alconost предлагает своим клиентам полный спектр услуг по локализационному тестированию и оценке качества. Локализованные тексты всегда дополнительно проверяются переводчиками-носителями языка, которые также имеют большой опыт тестирования локализации. И можно быть увереным на 99,99%, что все региональные особенности будут учтены.

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

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

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

Нужна помощь с локализацией / переводом? Мы в Alconost всегда рады помочь!

О нас


Alconost профессионально занимается локализацией игр, приложений и сайтов на более 70 языков. Лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджмент проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем видеоролики.

Подробнее
Подробнее..

Интернационализация и локализация приложения на KotlinNative

22.03.2021 18:15:22 | Автор: admin

, или добрый день по-японски.

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

Поэтому далее мы пошагово рассмотрим процесс адаптации консольного приложения для Linux на Kotlin/Native к русской и английской локали.

Поможет нам в этом старый-добрый GNU gettext.

В итоге убедимся, что это совсем не страшно.

Заодно посмотрим интеграцию с библиотеками на C, которая значительно расширяет возможности Kotlin/Native.

Что напишем: переводчик количественных числительных на японский язык.

Что ожидается от читателя: знание языков программирования Kotlin, C, базовый уровень знакомства с ОС Linux (в частности Bash).

Что понадобится в процессе: любой дистрибутив Linux, любая версия IntelliJ IDEA, установленный пакет gettext-devel или аналогичный.

Мотивация

Собственно почему Kotlin/Native и причём тут японский

Где-то полгода медленно и печально изучаю японский язык по учебнику Minna no Nihongo: частью ради перевода текста песен, частью просто из интереса к культуре.

Позже решил перейти с системной разработки на прикладную, с десктопа на мобильные платформы, соответственно с C++/Qt/STL на Kotlin/JVM/Android SDK.

Теперь хочу два этих занятия совместить, написав для себя программы для помощи в изучении японского. Конечно, уже много готовых, но NIH-синдром ведь не что-то плохое, правда?

Раньше я не задумываюсь использовал бы связку Qt/QML/C++: она позволяет быстро и эффективно решать в общем-то любые задачи и на любой платформе.

Однако Qt всё больше поворачивается спиной к Open Source, вот и решил пора валить попробовать что-то другое.

И тут в процессе изучения Kotlin узнал про Kotlin/Native.

Соответственно, первая программа-помощник будет именно на нём.

Что такое Kotlin/Native

Изначально Kotlin выступал в качестве "более лучшей" (С) Java, и целиком опирался на платформу JVM.

Однако затем компания JetBrains, разработчик Kotlin, решила адаптировать набирающий популярность язык и под другие платформы.

В частности, под веб (Kotlin/JS) и под "натив" (Kotlin/Native).

Kotlin/Native появился в марте 2017 года, кстати ровно четыре года назад.

Он позволяет компилировать код на Kotlin в нативный код с помощью LLVM, без зависимости от виртуальной машины JVM и других библиотек.

Далее мои субъективные впечатления по опыту разработки демонстрационного приложения, так что буду рад исправлениям и дополнениям.

Из плюсов:

  • исходный код под пермиссивной открытой лицензией (Apache-2.0 license)

  • работа на всех поддерживаемых LLVM платформах, в частности iOS и десктопы

  • генерирует единственный исполняемый файл без сторонних зависимостей

  • низкое потребление системных ресурсов

  • доступны все базовые "вкусности" Kotlin вроде коллекций и функционального программирования

  • есть прозрачный interop с языком C

  • как следствие: доступны low-level функции платформы, в частности POSIX

Из минусов:

  • стандартная библиотека весьма бедная по сравнению с огромной JVM, многое придётся писать с нуля (пример: оставьте только пункт Native тут)

  • нет стабильной библиотеки для GUI, хотя есть некоторые привязки через C interop (GTK, libui)

  • слабый инструментарий по сравнению с той же Android Studio, например нет той же локализации

  • относительно долгое время сборки

Больше о Kotlin/Native можно почитать тут, а примеры доступны на Github.

Терминология

Интернационализация (i18n): подготовка приложения к локализации, обычно выполняется разработчиками.

Локализация (l18n): Процесс перевода и адаптации контента приложения для конкретных языков, обычно выполняется переводчиками.

Важно: "контент" тут это не только строки, но и направление текста, формат даты, чисел и так далее. В данной статье ограничусь только строками.

Что такое GNU gettext

Этот пакет из нескольких утилит, библиотек и регламентов.

Является частью GNU Translation Project.

Состоит из:

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

  • утилиты для генерации текстовых файлов с локализуемыми строками

  • кроссплатформенная нативная библиотека для извлечения переводов в runtime

  • правила дистрибуции бинарных файлов с переводами

Почему GNU gettext

Интернационализация в Kotlin/JVM для Android использует средства Android SDK, в частности строковые ресурсы, и завязана на JVM.

Поэтому для Kotlin/Native эти средства недоступны.

В Qt есть собственный инструментарий, но его не получится использовать вне Qt, тем более с отличным от C++ языком.

Поэтому остаётся GNU gettext:

  • универсальный (поддерживается множество языков программирования)

  • кроссплатформенный (Win/Mac/Linux, есть Android/iOS версия)

  • стабильный в силу почтенного возраста

  • с подробной документацией

  • со вспомогательными приложениями

Демонстрационный проект

Суть: консольная программа пока только под Linux, чтобы не переусложнять код.

Функционал: читает натуральное число из аргумента командной строки или stdin, и переводит его в количественное числительное на японском.

Число может содержать специфичные для локали разделители тысяч, которая программа выводит при запуске.

Скачать проект можно на Github и затем открыть в IntelliJ IDEA.

Характеристики исполняемых файлов

Для начала время полной сборки: ~18 сек на конфигурации Ryzen 3900X + 32GB DDR4-3600 + NVM-E SSD. На мой взгляд многовато для такого маленького проекта и такой конфигурации.

Тут можно вспомнить о преимуществах скриптовых языков, которые компилировать не надо.

Теперь посмотрим свойства исполняемого файла для отладочной и релизной конфигураций:

Размеры скомпилированных исполняемых файлов
$ file build/bin/native/debugExecutable/JapaneseNumeralTranslator.kexebuild/bin/native/debugExecutable/JapaneseNumeralTranslator.kexe: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.16, BuildID[xxHash]=a0971dbf76e9db60, with debug_info, not stripped$ ldd build/bin/native/debugExecutable/JapaneseNumeralTranslator.kexelinux-vdso.so.1 (0x00007fff890d7000)libdl.so.2 => /lib64/libdl.so.2 (0x00007f348e47a000)libm.so.6 => /lib64/libm.so.6 (0x00007f348e334000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f348e312000)libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f348e2f7000)libc.so.6 => /lib64/libc.so.6 (0x00007f348e12c000)/lib64/ld-linux-x86-64.so.2 (0x00007f348e4a0000)libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f348e112000)libutil.so.1 => /lib64/libutil.so.1 (0x00007f348e10b000)libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f348e0d1000)librt.so.1 => /lib64/librt.so.1 (0x00007f348e0c6000)$ file build/bin/native/releaseExecutable/JapaneseNumeralTranslator.kexe build/bin/native/releaseExecutable/JapaneseNumeralTranslator.kexe: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.16, BuildID[xxHash]=c76aff5e0db3fdae, not stripped$ ldd build/bin/native/releaseExecutable/JapaneseNumeralTranslator.kexe linux-vdso.so.1 (0x00007ffff69c2000)libdl.so.2 => /lib64/libdl.so.2 (0x00007f41ad9dd000)libm.so.6 => /lib64/libm.so.6 (0x00007f41ad897000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f41ad875000)libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f41ad85a000)libc.so.6 => /lib64/libc.so.6 (0x00007f41ad68f000)/lib64/ld-linux-x86-64.so.2 (0x00007f41ada03000)libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f41ad675000)libutil.so.1 => /lib64/libutil.so.1 (0x00007f41ad66e000)libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f41ad634000)librt.so.1 => /lib64/librt.so.1 (0x00007f41ad629000)$ ls -lh build/bin/native/debugExecutable/JapaneseNumeralTranslator.kexe-rwxr-xr-x. 1 eraxillan eraxillan 1.8M Mar  7 13:24 build/bin/native/debugExecutable/JapaneseNumeralTranslator.kexe$ ls -lh build/bin/native/releaseExecutable/JapaneseNumeralTranslator.kexe -rwxr-xr-x. 1 eraxillan eraxillan 529K Mar  7 13:24 build/bin/native/releaseExecutable/JapaneseNumeralTranslator.kexe

Тут всё в порядке, бинарники скромные по размеру и без каких-либо сторонних зависимостей.

Отладка проекта

Она не работает, по крайней мере в Community Edition.

Просто игнорируются точки останова, хотя судя по выводу команды file отладочные символы в исполняемом файле есть.

Насколько я понял, соответствующий плагин доступен только в платной редакции IDE, которая пока для меня избыточна.

Прошу поправить, если ошибаюсь.

Так что для написания демо пришлось обходиться printf-driven отладкой, ну мне не привыкать после Android AOSP.

Интернационализация

В случае нашего проекта нужно лишь все локализуемые строки "обернуть" в вызов функции gettext().

Для краткости можно сделать синоним этой функции, например tr(), это общепринятая практика.

import kotlinx.cinterop.*import platform.linux.*import platform.posix.*fun tr(key: String): String = gettext(key)?.toKString() ?: ""

Понадобится ещё служебный код для работы с POSIX-локалями, он находится в файле Locale.kt.

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

Кстати, посмотреть названия локалей можно с помощью команды locale -a.

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

Я написал Bash-скрипты для генерации с нуля и обновления файлов gettext:

Далее вкратце опишу основные шаги, которые они выполняют.

Генерируем pot-файл ("шаблон"), который содержит базовую информацию о программе и собственно строки нуждающиеся в переводе.

# Extract all tr() wrapped strings to po/jnt.pot filexgettext --keyword=tr --language=java \    --add-comments --sort-output \    --copyright-holder='Alexander Kamyshnikov <axill777@gmail.com>' \    --package-name='Japanese numeral translator' \    --package-version='1.0' \    --msgid-bugs-address='axill777@gmail.com' \    -o po/jnt.pot --files-from=KT_FILES

Генерируем po-файл (текстовый перевод):

# Generate locale sources# NOTE: --no-translator option is a workaround to supress email input requestmsginit --no-translator --input=po/jnt.pot --locale=en_US.UTF-8 --output po/en_US/jnt.pomsginit --no-translator --input=po/jnt.pot --locale=ru_RU.UTF-8 --output po/ru_RU/jnt.po

Генерируем mo-файл (бинарный перевод):

# Generate locale binary filesmsgfmt --output-file=po/en_US/jnt.mo po/en_US/jnt.pomsgfmt --output-file=po/ru_RU/jnt.mo po/ru_RU/jnt.po

Развертывание бинарных файлов с переводами

К сожалению, Kotlin/Native не поддерживает ресурсы, так что "упаковать" mo-файлы в исполняемый файл пока не выйдет.

На это есть соответствующий баг.

Думаю, функционал ресурсов можно реализовать и вручную дополнительной задачей в Gradle, это пожалуй тема для отдельной статьи.

Для тестового проекта положим mo-файлы рядом с приложением, где не нужны права суперпользователя и где gettext сможет их найти.

Для релиза приложение следует упаковать в RPM/DEB-пакет, а mo-файлы установить в директорию /usr/share/locale.

Итог

Как видите, процесс несложен, по крайней мере при наличии готового кода и скриптов.

В процессе разработки нужно лишь периодически вызывать update_localization.sh, переводить новые строки, и снова вызывать этот скрипт для генерации mo-файлов.

, или спасибо за внимание!

Источники

Определения взяты из документации Django

Почему интернационализация и локализация имеют значение

Kotlin Native: следите за файлами

DxGetText GNU Gettext for Delphi and C++ Builder

P.S.: дальше планирую использовать Kotlin/Native уже в рамках кроссплатформенных библиотек. Если будет интерес, могу доработать демо, например портировать на Windows.

Подробнее..

Реализация наследования в файлах локализации iOS

20.07.2020 10:13:25 | Автор: admin


Приветствую, дорогие хабражители!

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



Для тех, кто с этим пока не сталкивался, объясню проблему подробнее на примере.

Допустим, у нас есть большой проект, в котором 90% общего кода и 3 таргета: MyApp1, MyApp2, MyApp3, которые имеют некоторое количество специфичных экранов, а так же каждый имеет своё название и тексты. По сути таргет представляет из себя самостоятельное приложение. Каждый из них должен быть переведен на 10 языков. При этом мы НЕ хотим добавлять ключи локализации типа app1_localizable_key1, app2_localizable_key1 и т.д. Хотим, чтобы в коде всё было красиво и локализация происходила одной строчкой
NSLocalizedString(@"localizable_key1", nil)

Без всяких if и ifdef, чтобы при добавлении нового таргета нам не пришлось искать по всему коду огромного проекта места с NSLocalizedString и прописывать там новые ключи. Так же хотим, чтобы часть ключей была привязана к специфичным экранам таргета, т.е. были ключи app2_screen1_key, app3_screen2_key.

Штатными средствами Xcode сейчас можно сделать следующее:
  • Скопировать общую часть localizable.strings в каждый таргет, при этом мы получим 3 копии этих файлов.
  • Добавить в соответствующие localizable.strings ключи специфичные для конкретного таргета.


Каким проблемы мы получаем:
  • Добавить новый общий ключ в проект достаточно накладно. Число мест равняется числу таргетов помноженному на число языков. В нашем примере это 30 мест.
  • Есть вероятность ошибки, когда добавили строку в 1-2 текущих таргета, с которыми идёт активная работа, а через год решили воскресить еще один или несколько таргетов. Придется вручную синхронизировать между собой локализации, либо писать для этого скрипт. А если была проявлена некоторая неряшливость при добавлении или мерже веток, и общие ключи смешаны со специфичными, то тут будет самый настоящий квест.
  • Объём файлов локализации. Они все постоянно растут, это затрудняет работу с ними и увеличивает шансы конфликта при мерже веток.


Что хотелось бы:
  • Чтобы все общие ключи хранились в отдельном файле.
  • Для каждого таргета был файл, в котором хранились только специфичные для него ключи, а так же общие ключи со значениями для данного таргета.


Для нашего примера имея общий файл localizable.strings со строками
"shared_localizable_key1" = "MyApp title""shared_localizable_key2" = "MyApp description""shared_localizable_key3" = "Shared text1""shared_localizable_key4" = "Shared text2"


Хотелось бы иметь файл localizable_app2.strings, в котором были бы ключи
"shared_localizable_key1" = "MyApp2 another title""shared_localizable_key2" = "MyApp2 another description""app2_screen1_key" = "Profile screen title"


Т.е. организовать в файлах локализации принцип наследования.

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

Мы имеем проект с 18 таргетами и 12 языками. И это не шутка, проект действительно большой и такое количество таргетов там необходимо. Каждый раз, когда нам нужно добавить новый общий ключ для перевода, мы имеем дело с 216 файлами локализации. Это отнимает достаточно много времени. А добавление нового таргета приводит к тому, что нужно скопировать в него еще 12 localizable.strings. В общем в какой-то момент мы поняли, что так больше жить нельзя и нужно искать решение.

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

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

Далее, когда мы получили общий (базовый) файл локализации, а точнее 12 физических файлов, а так же набор файлов для каждого таргета, идем в Xcode, добавляем туда все файлы. При этом не прикрепляем файлы к какому-либо таргету, т.е. в правой панели в разделе Target Membership не должно быть отметок.



Эти отметки мы поставим только для файла, который будет результатом работы скрипта по сборке файлов.

Далее начинается тот самый велосипед:
  • Создаём в корне папку Localization, там будет лежать скрипт build_localization.py.
  • Создаём рядом со скриптом папку Localizable. В неё скрипт будет генерировать файлы localizable.strings.
  • Копируем в папку Localizable базовую локализацию.




Она нам нужна просто для того, чтобы корректно добавить ссылку на файлы в проект, и чтобы Xcode правильно их распознал. Иначе он не будет их использовать для поиска ключей. Например, если создать папку Localizable с правильно разложенными файлами localizable.strings внутри, и добавить в проект как ссылку на папку (create folder references), то не смотря ни на что Xcode не поймет, что мы дали ему ключи локализации. По-этому берем папку Localizable, перетаскиваем как группу (create group) и снимаем галочку copy items if needed, чтобы получилось как на картинке ниже.



Удаляем папку Localizable и вносим её в исключения для гита. Потому что результат работы скрипта нам в гите не нужен, он будет меняться для каждого таргета и засорять коммиты.

Теперь нам нужно добавить скрипт в фазу сборки. Для этого в Build Phases нажимаем New Run Script Phase и прописываем наш скрипт с параметрами.
python3 ${SRCROOT}/Localization/build_localization.py -b ${SRCROOT}/BaseLocalization" -s "${SRCROOT}/Target1Localization" -d "${SRCROOT}/Localization/Localizable"

b это папка с базовой локализацией, s локализация текущего таргета, d папка результата.

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



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



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

Теперь при каждой сборке скрипт будет брать базовый файл локализации, накатывать на него изменения из файла таргета (добавлять, перезаписывать ключи) и генерировать локализацию в папку Localizable, которую iOS будет использовать для поиска ключей.

В целом получили то, что и планировалось при реализации механизма наследования:
  • Общие ключи лежат в одном файле и не мешаются в других. Время на процесс внесения новых ключей сокращено в 18! раз.
  • Ключи, относящиеся к конкретному таргету, лежат в соответствующем файле.
  • Размер файлов значительно снизился. Избавились от захламления повторяющимися строками.
  • Процесс добавления нового языка в проект так же значительно упрощён.
  • При создании нового таргета не нужно копировать локализацию с кучей ненужных строк. Создаём новый файл localizable.strings и добавляем туда только нужное для этого таргета.
  • Если решили реанимировать старый таргет, то со строками вообще ни чего делать не надо, всё подтянется из базового файла.
  • Скрипт не захламляет гит, результат работы остаётся локально и его можно безболезненно удалить.


Готовый скрипт можно взять тут: github.com/iBlacksus/iOSLocalizationInheritance
Не претендую на идеальность скрипта, пул-реквесты приветствуются.
Подробнее..

Непрерывная локализация что, как и зачем

09.07.2020 14:06:35 | Автор: admin


С распространением глобализации компании-разработчики приспосабливаются к растущему спросу на локализованные версии их продуктов. При пользователи хотят получать готовый локализованный продукт без задержек.


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


Что такое непрерывная локализация?


Прежде чем поговорить о непрерывной локализации, давайте вспомним, что такое традиционная локализация.


Локализация программного обеспечения означает его адаптацию к культурам и языкам пользователей. Это не просто перевод текста, как многие думают нужно учитывать различные нюансы (форматы даты и времени, форматирование и дизайн, единицы веса и роста, тонкости юмора, приметы, определения, имена и т.д.).

Когда самым распространенным методом разработки была каскадная модель (waterfall), локализация выполнялась таким же образом линейно. То есть после завершения работы над кодом менеджеры передавали задачу на локализацию переводчикам и агентствам. Очевидно, что в таком подходе много недостатков, и главный время до релиза затягивается.


С распространением agile-разработки компании стали применять agile-методологию и к локализации продуктов. Так появилась непрерывная локализация постоянная работа по локализации программного обеспечения.


Непрерывная локализация даёт разработчикам преимущества


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

Как внедрить непрерывную локализацию в процессы компании?


Вот несколько советов.


1. Используйте платформы автоматизации


Гари Лефман, архитектор по глобализации компании Cisco, вспоминает, что когда он пытался реализовать непрерывную локализацию, он искал инструмент, который бы автоматизировал процесс. Это не редкость разработчики широко используют автоматизацию, чтобы облегчить себе жизнь. Так что если хотите, чтобы команда охотно включилась в локализации, нужен удобный для всех инструмент.


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


Пример из нашего опыта партнёрство Alconost и Crowdin.


Crowdin это облачная платформа для управления локализацией. Мы в Alconost предлагаем клиентам и команде переводчиков, редакторов и менеджеров работать с контентом, загруженным в Crowdin. Переведенные файлы можно экспортировать вручную или автоматически (через API). Затем тестировщики Alconost проверяют качество локализованного билда.


При помощи Crowdin мы предлагаем заказчикам услуги непрерывной локализации и переводим их продукты качественно и без неожиданных проблем.

2. Начните с популярных языков


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


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


Если это звучит слишком запутанно, не волнуйтесь мы составили небольшое руководство о том, как выбирать языки для локализации. Тут много статистики (например, языки по количеству носителей, интернет-пользователей и т. д.), но это оправдано правильные бизнес-решения должны основываться на данных.


Опыт приложения inDriver


Приложение InDriver из небольшого стартапа превратилось в один из самых популярных и удобных сервисов для поездок. Основная идея приложения: пассажиры устанавливают приемлемую для них цену, а водители решают, будут ли они брать пассажира по такой цене.


По мере роста популярности приложения команде inDriver понадобилась помощь с локализацией, и компания обратилась в Alconost. Приложение inDriver нужно было не только перевести на популярные языки (например, на французский), но и локализовать для индонезийского и индийского рынков. При этом понадобился перевод на некоторые редкие диалекты, чтобы сервис пользовался высоким уровнем доверия среди местных пользователей.


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


3. Соберите команду по локализации


Это следующий этап организации процесса непрерывной локализации. В команду обычно входят:


  • Инженер по локализации: отвечает за построение и организацию рабочих процессов.
  • Менеджер проекта: следит за работами по проекту и сроками.
  • Менеджер по качеству: отвечает за качество конечного локализованного продукта.
  • Переводчики: занимаются непосредственно локализацией контента.

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


4. Задействуйте пользователей


Качество контента сильно зависит от выбранных переводчиков. Но если у вас огромное количество текстов, сжатые сроки или ограниченный бюджет, можно попробовать привлечь к переводу пользователей. На примере Reddit участие пользователей в локализации может повысить лояльность к продукту и усилить бренд.


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


А ещё, есть смысл инициировать пользовательское обсуждение локализованной версии на доступных площадках и форумах. Чем раньше вы получите фидбэк, тем быстрее вы его внедрите и тем лучше будет ваш продукт.


Заключение

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


Нужна помощь с локализацией / переводом? Мы в Alconost всегда рады помочь!


О нас


Alconost профессионально занимается локализацией игр, приложений и сайтов на более 70 языков. Лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджмент проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем видеоролики.
Подробнее

Подробнее..

Советы по эффективной локализации продукта

16.07.2020 12:18:27 | Автор: admin


Локализация это воплощение принципа удобства для пользователя: примерно 75% людей в мире чувствуют себя более свободно и уверенно при использовании продуктов на родном языке, а не на английском.


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


Сложности локализации на стыке с разработкой


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


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


Правильный подход с самого начала


Если учесть необходимость локализации с самого начала разработки и правильно выбрать программное обеспечение и специалистов по локализации, переводы можно автоматизировать и ускорить, на техническом уровне. В этом случае переводчики смогут давать более качественный и соответствующий контексту результат.


Переводческие компании часто могут посоветовать процессы и удобные инструменты управления переводами для конкретной задачи. К примеру, мы в Alconost, часто разрабатываем собственные коннекторы для интеграции систем управления контентом, что позволяет добиться высокой степени автоматизации.


Этапы локализации продукта и рекомендации


В стратегии по локализации важны налаженные процессы и конкретные инструкции: они обеспечивают эффективную локализацию в рамках разработки цифровых продуктов.


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


Этап 1. Проверка исходных текстов


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


Кроме того, исходные материалы должны пройти оценку по культурным, техническим и лингвистическим аспектам (этим может заняться компания по локализации).


Этап 2. Тестирование локализации (псевдо-локализация)


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


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


Этап 3. Работа со сторонней компанией по локализации


На этом этапе рекомендуется остановить изменения в пользовательском интерфейсе, заблокировать контент и перенести обновления на будущий спринт. Переводческой компании нужно передать все необходимые материалы и сведения, в том числе об используемых для перевода инструментах и программном обеспечении (облачных платформах, CRM, CMS и других инструментах для перевода). Для автоматизации и оптимизации качества переводов часто используются платформы управления переводами (например, Crowdin), в которых работают все стороны, в том числе агентства по локализации.



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


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


Этап 4. Оценка качества перевода


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


Этап 5. Исправление интерфейса и перевод остальных текстов


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


Проблемы и решения в непрерывной локализации


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


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


Небольшие по объему регулярные переводы частое лучше делать с помощью профессионального программного обеспечения (не прибегая к машинному переводу). К примеру, с помощью нашего сервиса для перевода текстов Nitro можно получить профессиональный перевод в течение нескольких часов.



Интеграция программного обеспечения для управления переводами


Ключевое, удобное для компаний решение это использование программного обеспечения для переводов, с которым работают специалисты по локализации. Такой софт, как правило, интегрируется с веб-сайтами и платформами компании посредством API или CLI.


А ещё на таких платформах менеджеры по продукту, специалисты по локализации и переводчики получают уведомления, когда необходимо перевести новую строку (слово, фразу, абзац). И затем либо сразу приступают к переводу (если есть такая договоренность), либо ждут, когда будет назначено задание.


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


Оценка качества


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


Лингвистическое тестирование это когда специалист по локализации тестирует сборку на соответствующей локальной версии ОС. При этом делаются снимки экрана с проблемами (непереведенный текст, не влезающие в экран строки, неправильные кодировка, направление текста или контекст) и с помощью разработчиков вносятся изменения в ресурсные файлы.


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


Нужна помощь с локализацией / переводом? Мы в Alconost всегда рады помочь!


О нас


Alconost профессионально занимается локализацией игр, приложений и сайтов на более 70 языков. Лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджмент проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем видеоролики.
Подробнее

Подробнее..

Быстрый лайфхак для роста приложений ASO на других языках

18.06.2020 16:09:14 | Автор: admin


Нужно больше золота пользователей Знакомая проблема? Мы расскажем, как решить ее за счет ASO-оптимизации на других языках.

Многие игры и приложения для расширения аудитории выходят на зарубежные рынки. И это отличный growth hack, но надо переводить не только саму игру, но и ее страницу то есть делать локализацию ASO. Иначе представьте: ваша игра локализована на 10 языков, но, наткнувшись на нее в сторе, немец увидит описание и скриншоты на английском. Конечно, он подумает, что немецкой версии нет.

Локализация метаданных нужна для того, чтобы пользователь легко мог найти приложение на своем языке. Вот, например, как резко выросли позиции RetouchMe (приложения для профессиональной ретуши) после локализации метаданных на 10 языков. После этого успеха RetouchMe локализовали на 35 языков.



Что входит в ASO-оптимизацию?


Говоря про ASO, первым делом вспоминают про ключевые слова. Но ключевики не единственное, что повышает в выдаче ваше приложение и влияет на установки.

Посмотрим, какие элементы страницы входят в ASO-оптимизацию:

  • Название приложения
  • Подзаголовок
  • Описание приложения
  • Ключевые слова
  • Иконка
  • Скриншоты
  • Видео

Пройдемся по каждому и посмотрим, а все ли нужно локализовать.

Локализация текста на странице


Название и подзаголовок. Обычно есть одно англоязычное название, которое сохраняется на всех языках. Иногда название могут транслитерировать: например, Bon Voyage Бон Вояж, Tinder (звучит как Tindeo на корейском). Идеально, когда в названии фигурируют универсальные слова, которые известны во всем мире например, War Robots. Компания Pixonic рассказывала, что изначально игра называлась Walking War Robots, но в итоге его сократили до более емкого и понятного War Robots.

Посмотрите, как меняется название игры Blocky Cars в зависимости от локали. Для Китая и Турции название перевели, но в скобках все же оставили оригинальное Blocky Cars.



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

Подзаголовок есть только в App Store, и он, можно сказать, компенсирует короткое название (в App Store это всего 30 символов, в то время как в Google Play 50). В подзаголовок можно добавить те ключевые слова, которые не уместились в названии.

Описание. В Google Play есть краткое описание первые 80 символов описания, те самые 1-2 строчки, на которые можно кликнуть и прочитать полное описание. Советуем регулярно проводить A/B-тестирование краткого описания.

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

Помните, что App Store и Google Play индексируют разные метаданные: App Store индексирует название, подзаголовок, ключевые слова, а Google Play вообще весь текст на странице приложения, включая название компании-разработчика. Вот удобная табличка от ASOdesk, где хорошо видно, какой стор что индексирует:

Из статьи 6 принципов работы с метаданными

Таким образом, для Google Play вам нужно будет аккуратно распихать ключевые слова по описанию так, чтобы они органично вписывались в текст. Есть мнение, что первые 160 символов имеют наибольший вес для индексирования, поэтому стоит использовать самые релевантные ключевые слова в начале описания.

Ключевые слова. Есть отличная статья от ASOdesk о том, как подбирать ключевые слова для названия и описания.

Добавим, что хотя ASO часто называют SEO для мобильных приложений, нельзя судить о популярности ключевого слова по его частотности в веб-поиске (Google, Wordstat) в магазинах приложений свои топы ключевых слов!

Имейте ввиду, что иногда лучше взять два ключевых слова со средней популярностью вместо одного с высокой популярностью (high score), так как почти нет шансов пробиться с ключевиками типа game, taxi и пр. Есть разные инструменты для проверки популярности ключевиков и шансов подняться в выдаче с конкретными ключевыми словами, такие как Mobile Action, Apple Search Ads и др.

Как подобрать ключевые слова на языках, на которых вы не говорите? Для этой задачи есть ряд инструментов в ASOdesk. Keyword Manager предлагает подсказки по ключевым словам, релевантным вашему приложению. К ним прилагается автоматический перевод на английский, что упрощает подбор ключей на других языках.

Также в Keyword Manager есть инструмент Missing Ranked Keywords, показывающий запросы, которые еще не отслеживаются, но по которым приложение ранжируется в конкретной стране. Для этого инструмента также доступен автоматический перевод на английский. Вы можете потестировать эти инструменты для ASO на других языках в бесплатном доступе к ASOdesk.

Важно: если ASO отлично работает в США, и вы решили попробовать этот же набор ключевых слов в Великобритании, Канаде и Австралии это не сработает. Дело в том, что, хоть язык в этих странах и общий, но есть различия в зависимости от страны. Например, слово отпуск в американском английском vacation, а в британском holiday.

Соответственно, поисковые запросы будут отличаться. Та же история с португальским в Бразилии vs. португальский в Португалии, французским во Франции и в Канаде, а также с испаноговорящими странами: то, что работает в Испании, может не работать в Мексике, Аргентине и др.

В некоторых странах говорят на нескольких языках, так что вы можете добавить 2-3 языка для этой страны и увеличить охват аудитории. Например, в США это английский (US) и испанский (мексиканский вариант), в Швейцарии немецкий, итальянский, французский и английский (UK). Полную таблицу по дополнительным языкам в App Store можно посмотреть здесь.

Локализация графики на странице


Помимо текстов, к ASO-оптимизации относятся и графические изображения, а именно иконка и скриншоты.

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

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



Скриншоты. Многие оптимизируют скриншоты под определенные локали. Это менее актуально для игр, но для приложений это часто оправданно, особенно если на скриншотах изображены люди. Чаще всего есть один вариант скриншотов для Европы и Америки, и второй для Азии (а именно для Японии, Кореи и Китая; остальным азиатским странам показывают европейские скриншоты). В зависимости от типа приложения могут нарисовать скриншоты специально под аудиторию Бразилии и аудиторию из арабских стран.

В PicsArt отдельные варианты скриншотов представлены чуть ли не для каждой страны, для которой есть локализация приложения! Вот некоторые из них:



Сейчас у многих игр на странице есть видеоролик, он тоже повышает конверсию в установку. Если в нем есть выноски, их тоже надо перевести

Важно! ASO-оптимизация для Google Play и App Store будет отличаться. Иногда сильно отличаться. Мало того, что у сторов разные требования к скриншотам и объему текста, так еще и ключевые слова должны подбираться отдельно. Именно поэтому у приложений в App Store и Google Play часто не совпадают названия.

То есть запомним: нельзя взять одинаковый текст, ключевики и скриншоты и использовать этот набор и в Google Play, и в App Store. Если так сделать, то эффективность ASO в одном из сторов а может, и в обоих будет низкая.

Влияние локализации ASO на реальных примерах


Давайте рассмотрим влияние ASO на реальном кейсе студии Full HP. Они переводят у нас две популярные игры, free-to-play экшны Blocky Cars и Mad GunZ. Эти игры доступны на 12 языках, а их суммарные загрузки достигают 50 млн. Они засветились в фичеринге от Google Play, и не последнюю роль в этом сыграла ASO-оптимизация.

На скриншотах ниже вы видите показатели конверсии для игры Blocky Cars в Германии:



Слева показатели конверсии, когда страница игры не была локализована на немецкий (т.е. описание и ключевые словы были на английском). Красный прямоугольник показывает, что конверсия сильно ниже средней, то есть игра получала гораздо меньше пользователей, чем могла бы.

Справа как изменилась конверсия, когда страницу перевели и подобрали ключевые слова на немецком. Прямоугольник на скриншоте стал зеленым, потому что на странице стало больше посетителей, а конверсия выросла на 25%.

Локализация страницы это быстрое и недорогое мероприятие: на скриншотах фразы короткие, а описание, если оно длинное, можно перевести частично. Это особенно актуально для детских игр, где аудитория обращает внимание не на текст, а на скриншоты.

Перевод описания, текстов на скриншотах и выносках видео удобно отдавать переводчикам-носителям в сервисе профессионального перевода Nitro. Фишка в том, что вам не надо бегать к 10-20 переводчикам с этими мини-текстами: достаточно вставить текст, отметить нужные языки и получить все переводы в течение суток.

Когда можно ждать результатов от ASO-оптимизации? Надо понимать, что ASO разгоняется долго. Чтобы увидеть, как подрастет конверсия, нужно наблюдать и постоянно работать над ключевыми словами и скриншотами, и тогда первые существенные результаты вы заметите через 2-3 месяца.

При этом нельзя один раз сделать ASO и забыть о нем: надо держать руку на пульсе и проверять, какие появляются новые тренды в играх в конкретных локалях и в мире, не появились ли новые удачные ключевые слова. Компания Full HP рассказывала, что чаще всего переписывать ASO приходится в Японии, в Корее, а вот в США нечасто что-то меняют, так как там ASO показывает стабильные результаты.

Как понять, что что-то стоит поменять? Проводите А/В тестирование у Google: это помогает понять, в каком направлении необходимо двигаться в описании, какая иконка привела больше пользователей на страницу и т.д. Используйте маркетинговые инструменты, которые позволяют увидеть, на каком месте игра по тому или иному ключевому запросу. Также с их помощью можно проверить, какой шанс будет у игры по желаемому ключу.

Перспективные рынки для локализации приложения и работы с ASO


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



Это языки, на которые мы рекомендуем локализовать игры. Вы можете захотеть протестировать эти рынки, прежде чем заказывать локализацию игры. Перевод страницы игры то есть локализация ASO как раз помогает проверить потенциал конкретных рынков для вашей игры. Это так называемая Minimum Viable Localization (локализация по программе-минимум).

Выберите несколько языков, на которые страница вашего приложения еще не локализована например, корейский, турецкий и бразильский португальский. Попробуйте перевести описание, текст на скриншотах, ключевые слова в названии и наблюдайте, насколько вырастет количество загрузок и посетителей страницы из Кореи, Турции и Бразилии.

Есть страны, которые не ждут полной локализации: это, например, Индия, Вьетнам, Малайзия. Достаточно перевести только страницу и конверсия повышается, а на отсутствие локализованной версии игры пользователи не жалуются. Эти и еще 60 языков доступны в Nitro, сервисе профессионального перевода, который был создан специально для коротких текстов.

Отметим, что выход на рынок Японии, Кореи и особенно Китая сильно отличается от того, к чему мы привыкли в западных странах. Мы написали статью о продвижении приложений в Азии, чтобы вы были готовы к тонкостям Востока заранее.

В мире много быстрорастущих рынков, места на которых лучше занимать заранее. Если вы вдохновились возможностями роста благодаря локализации и ASO на других языках, мы в Alconost будем рады помочь вам с любыми из 70+ наших языков.

Хотите увидеть больше примеров с влиянием ASO и локализации? Читайте наши кейсы:
Кейс Full HP: Как получить фичеринг от Google Play и адаптировать ASO под разные страны
Кейс Wachanga: Локализация приложения на 50+ языков как growth hack

Об авторе

Статья написана в Alconost.

Nitro служба профессионального перевода онлайн на 35 языков. Создана компанией Alconost. Переводчики-носители языка, заказ от 1 слова, онлайн-чат со службой поддержки.
50% заказов готово в течение 2 часов, 96% менее чем за 24 часа.

P.S: Nitro хорошо подходит для перевода небольших текстов. Если вам нужна локализация или перевод проекта посерьезней, добро пожаловать в Alconost.
Подробнее..

Локализация мобильных приложений основные сложности и лайфхаки

22.06.2020 18:15:30 | Автор: admin


Изменения неизбежны. Рост не гарантирован.
Джон Максвелл

Хотя цитата Максвелла и может показаться чрезмерно обобщённой, но она абсолютно применима и к разработке приложения.

То есть если у вас есть приложение и на него есть локальный спрос, когда-нибудь вы встанете перед выбором: выходить на новые рынки или нет, что в конечном итоге означает отказ от доли рынка и роста. На самом деле, для разработчиков продукта, нацеленных на рост, это всего лишь пресловутый выбор Хобсона. То есть когда именно начнётся локализация мобильных приложений лишь вопрос времени.

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

Читайте дальше, мы вот-вот собираемся погрузиться глубже в тему.

Написано в Alconost

1. Изучите рынок приложения как свои пять пальцев


Самая большая опасность при вводе в приложение новых локалей плохо знать своих пользователей. В первую очередь, вы должны убедиться, что ваше приложение хорошо примут на новом рынке, и его ROI (return-on-investments) будет положительным.

Здесь вам помогут два простых вопроса:

Ваше приложение востребовано на местном рынке?

Готовы ли местные пользователи за него платить?

Изучите целевую аудиторию до локализации вашего приложения


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

Результаты могут указать на то, что, хотя приложение, которое вы предлагаете, по всей видимости, должно заинтересовать целевую аудиторию, в нём необходимо дифференцировать дизайн или платные функции. К примеру, может быть так, что некоторые бесплатные фичи окажутся в данном регионе более ценными, чем платные. То есть имеет смысл адаптировать платную подписку и её функционал.

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

Изучите локализации конкурентов в целевом регионе


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

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

Анализ конкурентов также поможет нащупать, где именно может быть ваше конкурентное преимущество и как его лучше преподнести целевой аудитории.

Обеспечьте клиентскую поддержку для локализованного приложения


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

2. Обратите внимание на культурные различия


Вы можете досконально изучить рыночные показатели, но это не всё, что вам понадобится. Вы также должны понять сущность вашей аудитории, их культуру, ценности, образ жизни и табу. Зачем? Потому что выход локализованных версий продукта почти то же самое, что его первый запуск, только точечно, на целевом рынке.

Так как же культурные различия проявляются в локализованной версии приложения? Некоторые особенности могут сыграть огромную роль при локализации термины, шутки, цветовая гамма, числа, меры и целые изображения. Держать всё это под контролем очень сложно, если вообще возможно, тем более, если вам нужно локализовать своё приложение на 10 или 20 языков всего за несколько недель.

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

У нас есть яркий пример, как мы справились с культурными различиями проект локализации игры Streets of Rogue. Самым сложным было локализовать диалоги и юмор, характерные для жанра rogue-like, на 7 языков всего за 2 недели пришлось по особому подойти к подбору соответствующих лингвистов для проекта. Однако, по нашему скромному мнению, в итоге всё вышло хорошо, и на проекте было много забавных моментов посмотрите сами!

Английский Французский Немецкий Русский Испанский
How ya doin, fancy pants? La forme, pingouin ? Was geht, Schickimicki? Как дела, фраер? Cmo ests, elegante?
*glug glug* *Glou* *Glou* *gluck gluck* Бульк-бульк * glug glug *
Blood makes you related. Loyalty makes you family. Meatballs make you fart. Le sang cre les liens. La loyaut fonde la famille. Les boulettes de viande provoquent les pets Durch Blut wird man verwandt. Durch Loyalitt wird man Familie. Durch Frikadellen furzt man. Кровь делает нас родственниками. Преданность объединяет нас в семьи. Фрикадельки делают нас пердунами. La sangre te hace pariente. La lealtad te hace familia. Las albndigas te hacen tirar pedos.
HOLY CRAP!!! HOLY HOLY CRAP!!! BON SANG!!! BON SANG DE BONSOIR !!! MEINE GTE!!! MEINE LIEBE GTE!!! БОЖЕЧКИ!!! БО-ЖЕЧ-КИ, БО-ЖЕЧ-КИ!!! SANTO DIOS!!! SANTSIMO DIOS!!!

Примеры перевода некоторых смешных диалогов в игре Streets of Rogue

3. Будьте готовы окунуться в процесс перевода


Конечно, необходимо нанять опытных переводчиков, но на этом работа не заканчивается, а напротив, только начинается.

Создание глоссария приложения


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

Актуализация памяти переводов


Эту часть работы обычно выполняет команда по локализации. К примеру, мы в Alconost создаём и поддерживаем память переводов для каждого языка базу данных всех переводов, когда-либо загруженных в систему управления переводами.

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

Будьте на связи со своей командой по локализации


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

4. Выполняйте локализацию технически грамотно избегайте повторяющихся и механических задач



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

На схеме ниже мы показали, как примерно выглядит процесс локализации в нашей компании.



Исходя из опыта, мы советуем максимально адаптировать процесс непрерывной локализации (continuous localization) к непрерывной поставке (continuous delivery). Тем самым вы обеспечите непрерывную независимую работу обоих потоков agile-логика. Кроме того, локализация будет тестироваться в рамках стандартного процесса QA (quality assessment).

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

Системы управления переводами


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

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

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

Итак, первая проблема на этом этапе извлекаемость ресурсных файлов.

Давайте внимательнее рассмотрим некоторые другие узкие места: предупреждён значит вооружён!

Фактор узкого места 2: Кодировка переводов

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

Мы рекомендуем всегда, по возможности, использовать Юникод вместо ASCII. А именно, наиболее распространённую и компактную кодировку UTF-8. Так что, пожалуйста, убедитесь, что передаёте локализационные файлы в правильной кодировке.

Фактор узкого места 3: жёстко закодированные строки

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

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

Фактор узкого места 4: числовые форматы и единицы измерения

Обратите внимание на то, чтобы числа и единицы измерения находились внутри текста и в контексте. Вот небольшой пример, как надо и не надо делать:

Нет: Мама съела + %num + яблок.
Да: Мама съела %num + яблок.

Фактор узкого места 5: ошибки интерфейса

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

Поэтому при создании элементов интерфейса, как правило, имеет смысл закладывать как минимум 30% дополнительного пространства (или больше, если это возможно) для других языков. Это особенно актуально для коротких строк (пунктов меню, форм и т. д.).

Ещё один совет: делайте дизайн интерфейса, опираясь на худший с точки зрения возможной длины текста язык локализации. Например, немецкая версия текста в среднем на 30% длиннее английской, а текст на русском языке в среднем на 10% длиннее. То же самое обычно справедливо для арабской локализации. Между тем традиционные китайские иероглифы, как правило, требуют на 30% меньше места, чем латинский алфавит.

5. Соберите команду по локализации и организуйте процесс


Теперь, когда мы рассмотрели наиболее распространённые проблемы локализации приложений, вы видите, что в каждом проекте есть задачи по маркетингу, лингвистике, культуре, разработке, тестированию и управлению. Это означает, что вам нужно собрать команду и с самого начала выстроить правильные процессы, чтобы проект локализации работал как часы.

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

Мы надеемся, что эти советы были полезны, и желаем вам удачи в ваших проектах по локализации!

Об авторе

Статья написана в Alconost.

Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

Мы также делаем рекламные и обучающие видеоролики для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Подробнее
Подробнее..

Гибкая локализация как применить agile к проекту по переводу

24.07.2020 10:04:54 | Автор: admin


В современном мире всё меняется очень быстро. Поэтому гибкая методология (agile) сегодня применяют везде, где только можно. Она стала также неотъемлемой частью жизненного цикла разработки программного обеспечения и, конечно, затронула и локализацию продукта.


Как гибкая локализации помогает улучшить качество продукта и оптимизировать бизнес-процессы? Рассказываем о преимуществах применения agile на проектах по локализации продукта.


Что такое гибкая локализация


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


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


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


Как работает гибкая локализация?


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


При гибкой локализации обычно используется система управления локализацией (LMS) или система управления переводом (TMS). К примеру, такие инструменты, как облачная платформа Crowdin, помогают сократить время, необходимое для перевода, и автоматизировать трудоемкие процессы.


Главное преимущество использования LMS или TMS заключается в том, что с их помощью можно автоматически извлечь строки текста, которые необходимо перевести. Больше никаких ручных операций по извлечению и преобразованию строк!


Пошаговое описание процесса гибкой локализации выглядит примерно так:


Каковы преимущества гибкой локализации?


1. Меньше времени для вывода продукта на рынок


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


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



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


Ведь неидеальный продукт, выпущенный вовремя, лучше, чем идеальный, который появился слишком поздно. Или как гласит народная мудрость: Иногда лучше сделать неидеально, чем не сделать вовсе.


2. Меньше затрат


Когда локализация выполняется по agile методологии, специалисты переводят только новые или недавно обновленные строки. Не нужно снова переводить или пересматривать текст, который не менялся и уже был переведен для предыдущей версии. Такие текстовые материалы просто можно использовать повторно. Это приводит к снижению затрат на локализацию и перевод.


3. Легче находить ошибки


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


4. Меньше ручной работы


Гибкая методология позволяет управлять сложными процессами, сводя объем ручных задач к минимуму. Использование специализированных программных средств автоматизации делает процесс локализации еще более легким. Не нужно извлекать переведенные строки вручную передача между репозиториями разработки и системами управления локализацией происходит автоматически при помощи API (application programming interface) или CLI (command-line interface).


5. Более быстрое тестирование локализации


Тестирование локализованных текстов и элементов интерфейса обязательное условие для выпуска качественного продукта. Лучше планировать и этот этап заранее, а не в ночь перед выпуском. При тестировании локализации проверяется соответствие единиц измерения, длина текстовых строк в различных элементах интерфейса, связность текста и общая полнота перевода.


А есть ли трудности?


Конечно, ни один подход не идеален на 100%. Гибкая методология не исключение.


1. Контекст определяет всё


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


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


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


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


2. Командная работа


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


3. Не так быстро, как хотелось бы


Да, гибкая локализация работает быстрее, чем каскадная модель. Однако не стоит переоценивать ее возможности.


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


Как подготовиться к гибкой локализации?


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


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


Нужна помощь с локализацией / переводом? Мы в Alconost всегда рады помочь!


О нас


Alconost профессионально занимается локализацией игр, приложений и сайтов на более 70 языков. Лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджмент проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем видеоролики.


Подробнее

Подробнее..

Как конвертировать праздники в прибыль для разработчика и радость для игроков

28.07.2020 18:07:12 | Автор: admin


Праздники это всегда high season для бизнеса. Маркетологи придумывают различные активности, чтобы не упустить момент и получить максимум прибыли. Разработчикам мобильных игр праздники также открывают широкое поле для экспериментов.

Прибыль достигает своего максимума в Черную Пятницу и период Рождества и Нового года: так, в 2019 году геймеры по всему миру потратили на мобильные игры $277 млн за Рождество, а жители США за Черную Пятницу $70 млн, побив рекорд предыдущего года. Во многом на эти доходы влияют внутриигровые ивенты и спецпредложения.

Но как удерживать пользователей в игре в остальное время года, когда нет таких ярких и всеми любимых праздников? И как соблюсти баланс между затратами на подготовку этих самых ивентов и прибылью?

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


Для чего вообще нужны ивенты?


Ивенты это отличная возможность привлечь новых пользователей креативным контентом, а также вернуть старых пользователей в игру и увеличить свою прибыль

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

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

Для разработчиков подготовка к серьезным ивентам может стать настоящим стрессом. Поэтому нужно готовиться к праздникам заблаговременно, так как Новый Год все равно наступит, а ивенты сами себя не подготовят.

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

Если ваши игроки из разных стран со всего мира, важно заранее подготовить переводы нового контента. Так как объем таких текстов как правило небольшой, а языков для перевода может быть много, удобнее переводить их в сервисе профессионального перевода Nitro.

При этом вам не надо искать 10-20 переводчиков для каждого языка, а достаточно отметить нужные языки галочкой. Nitro работает с переводами от одного слова, и вы получаете готовые переводы в течение 24 часов, а иногда всего за пару часов. Идеально для перевода небольших обновлений!



Какие праздники выбрать и как это сделать?


Очевидно, что Рождеством и Черной Пятницей праздники не ограничиваются, к тому же эти праздники наиболее популярны у американских и европейских пользователей, а ведь есть еще многообещающие аудитории Латинской Америки и Азии.

Самое простое, что вы можете сделать, это приурочить ваши внутриигровые ивенты к популярным праздникам, которые отмечаются практически везде: Хэллоуин, Черная Пятница, Рождество/Новый год и Китайский Новый год.

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

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

Логичнее всего будет подбирать праздники с учетом географии пользователей. Так, в большинстве азиатских стран (кроме Японии) Новый год по лунному календарю главный праздник в году. Пасхальные ивенты популярны у европейских и американских пользователей, но будут неуместны в глазах арабской аудитории.

Обратите особое внимание на развивающиеся рынки, которые сейчас растут огромными темпами и поэкспериментируйте с ивентами, созданными специально для них. К этим рынкам относятся Латинская Америка, Юго-Восточная Азия, Ближний Восток.

Пользователи из арабских стран известны высоким ARPPU (Average Revenue Per Paying User). Во время мусульманского праздника Рамадан, который длится месяц, арабские пользователи оставляют в играх существенные суммы совсем как англоговорящие игроки в рождественские праздники.

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

Зимние праздники
25 декабря Рождество (Католический мир)
31 декабря/1 января Новый год (почти все страны, кроме Азии)
Январь-февраль Лунный Новый год/Праздник Весны (Китай и Юго-Восточная Азия, но в Японии Новый год отмечают 1 января)
14 февраля День Всех Влюбленных (почти все страны, кроме Азии)
Февраль-март Китайский фестиваль фонарей
Февраль-марта Бразильский карнавал

Весенние праздники
17 марта День Святого Патрика (Ирландия и англоговорящие страны)
Март-апрель Ханами, праздник цветения сакуры (Япония)
Апрель-май Рамадан (арабские страны)
Апрель Пасха (США, Россия, Европа)
29 апреля 5 мая Золотая неделя в Японии, длинные выходные вроде майских праздников в России
Май-июнь Фестиваль Драконьих Лодок (Китай)

Летние праздники
20-е числа июня Мидсоммар, праздник середины лета (Швеция и Финляндия)
Начало июля недельный Праздник огней (Куба)
7 июля/7 августа яркий и романтичный праздник Танабата (Япония)
20 июля День Друга (Латинская Америка)

Осенние праздники
Сентябрь День середины Осени (Азия)
Сентябрь-октябрь Октоберфест (Европа)
1 октября День КНР (Китай)
27 октября фестиваль огней Дивали (Индия, Малайзия)
31 октября Хэллоуин (США)
11 ноября день Холостяка, время крупнейших распродаж (Китай)
Конец ноября День Благодарения и Черная Пятница, время распродаж (США)

Как вы могли заметить, многие праздники имеют плавающие даты, да и длиться могут не один день. Так, Черная Пятница обычно не ограничивается одним днем: распродажи могут начаться уже в День Благодарения (в четверг), а закончиться в понедельник, который уже получил название Cyber Monday специальный день для онлайн-распродаж. А уж праздники вроде Хэллоуина и Рождества могут отмечаться в играх на протяжении нескольких недель.

В Японии есть День Девочек (3 марта) и День Мальчиков (5 мая), как и в России 8 марта и 23 февраля. Но будьте осторожны с подобными праздниками в западных странах, где некоторые радикально настроенные пользователи могут негативно воспринять праздник для мальчиков.

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

Будьте внимательны с переводом текстов, когда вводите новых персонажей для праздничных ивентов. Так, команда Narcade решила ко дню св. Валентина подарить герою игры-коту подружку. Влюбленную кошачью парочку звали Тиа и Миа. По именам непонятно, кто из них кот, а кто кошка, а ведь это важно при переводе на языки типа итальянского, испанского, русского Хорошо, что ребята из Narcade не забыли оставить комментарий переводчику к их заказу в Nitro, что Тиа кот, а Миа кошка.

Как можно отмечать праздники внутри игры?


Праздники можно отмечать по-разному: от украшения иконки (обычно означает, что в игре появилось что-то новое) и тематических скинов до праздничных квестов, новых уровней и предметов в игре.

World of Warcraft проводит ежегодный Тыквовин. Тыквовин является внутриигровой версией Хэллоуина и отмечается с 18 октября по 1 ноября. В это время в игре появляются новые персонажи, тыквовинские сладости, костюмы и так далее.

Стоит отметить тонкий момент праздничных ивентов. Цель разработчиков мобильных игр развлечь игроков интересным свежим контентом, но при этом выиграть от этого больше, чем потратить на разработку. Как правило, компании обычно закладывают в план максимум 2-3 крупных ивента в год, поскольку они долго готовятся и дорого стоят.

Однако игроки ждут новых развлечений хотя бы раз в месяц. Поэтому можно использовать второстепенные праздники или вообще придумывать свои. Например, это может быть День Рождения игры, День солнцестояния, международный день пирата, и т.д.

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

Примеры ивентов из игр


  • В Dota 2 и Overwatch есть новогодние режимы, созданные специально для зимнего периода: Холодрыжество и Охота на Йети.
  • В World of Warcraft к Октоберфесту во вселенной игры появился в Хмельной фестиваль. Также в этой игре создавали ивенты к Международному дню пирата.
  • В World of Warcraft проходит любовная лихорадка, которая основана на реальном празднике Дне Святого Валентина.
  • В World of Tanks проходит акция Купальская ночь, по мотивами ночи на Ивана Купалу. Цветок открывает замки ко всем сокровищницам.
  • В Mad GunZ есть зимнее оружие, которое пользователи могут приобрести только во время зимних каникул.
  • В игре Magic Jigsaw Puzzles придумали ивент Зимняя история. Суть собирать праздничную валюту, продвигать упряжку навстречу Санте и собирать призы.


Как привлечь пользователей к ивентам?


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

Вот пару идей, как можно это сделать:
1) Push-уведомления. Отправьте существующим игрокам пуш, чтобы они узнали о предстоящем событии. Добавляйте в пуши эмодзи: компания Pixonic в ходе экспериментов выяснила, что пуши с эмодзи эффективнее.

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

SUMMER SALE Summer is the best time of year! Don't miss the best summer offer: everything is 50% off!

The hottest offer these warm summer days: get twice as much stuff for the same price!

HARVEST FESTIVAL The end of summer is the most abundant season. It's time to harvest everything is 50% off!

HALLOWEEN brings scary good prices: everything is 50% off! Price Crash!

BLACK FRIDAY Don't miss a very good deal: you get twice as much stuff for the same price!

2) Соцсети. Рассказывайте о вашем спецпредложении/ивенте в соцсетях, проводите приуроченные к праздничному ивенту конкурсы, чтобы привлечь еще большую аудиторию.

3) Текст Whats New. Не забудьте красочно рассказать о новых фичах в тексте Whats New. Это вернет в игру старых пользователей и привлечет новых.


Duck Rockets продвигают в соцсетях новый контент для Bon Voyage

Вместо выводов


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

Богатые на праздники осень и зима уже не за горами, поэтому начинайте продумывать ивенты уже сейчас. А чтобы вы могли быстро и удобно переводить тексты для ивентов и спецпредложений, мы дарим вам $20 бонусный купон в сервисе профессионального перевода Nitro. Создайте аккаунт по этой ссылке, и на вашем счету окажется $20. Не откладывайте на потом: 30.09.2020 купон превратится в тыкву.

Об авторе

Статья написана в Alconost.

Nitro служба профессионального перевода онлайн на 35 языков. Создана компанией Alconost. Переводчики-носители языка, заказ от 1 слова, онлайн-чат со службой поддержки.
50% заказов готово в течение 2 часов, 96% менее чем за 24 часа.

P.S: Nitro хорошо подходит для перевода небольших текстов. Если вам нужна локализация или перевод проекта посерьезней, добро пожаловать в Alconost.
Подробнее..

5 ключиков к игровому рынку Бразилии

10.08.2020 16:05:18 | Автор: admin


Девятая по величине экономика в мире, высокий уровень покупательной способности (восьмое место), один их самых больших показателей по загрузкам в Google Play и App Store (третье место сразу после Индии и США) все это Бразилия.

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


1. Кто и как играет


Согласно данным Newzoo, в 2018 г. в Бразилии насчитывалось 76 миллионов геймеров. В год они тратят на игры примерно $1,5 млрд (из них в 2020 г. на мобильные игры было потрачено $380 млн, а число пользователей составило 60 млн), что ставит Бразилию на 13-е место на мировом рынке игр, и на первое в Латинской Америке.

Кто из бразильцев и на каких устройствах играет? Согласно Forbes, опрос Game Brazil 2019 г. показал, что большинство игроков составили женщины (53%). Самое популярное игровое устройство смартфон (83 %), затем идут игровые консоли (48,5%). Возраст большинства игроков (61,9%) от 25 до 54 лет.

Опрос также показал, что хардкорные игроки это обычно мужчины в возрасте 2534 лет, и играют они на консолях. При этом их противоположность казуальные игроки это в основном женщины (58,8%) в возрасте 2534 лет, предпочитающие мобильные игры.
Согласно данным международного опроса потребителей Statista, по доходам игроки на мобильных устройствах распределены примерно поровну, но игроков со средним доходом больше (38,4%), чем с низким (32,1%) или высоким (29,6%).

Самая популярная операционная система Android (79,9%), на втором месте iOS (16,4%), на третьем Windows (2,2%). Малая доля Apple отражает общую латиноамериканскую тенденцию как и рыночная доля Android. Обязательно учитывайте это неравенство при разработке игр для бразильского рынка.

Также следует помнить о том, что бразильцы, как и латиноамериканцы в целом, обычно склонны покупать телефоны среднего класса с меньшим объемом памяти (часто менее 10 ГБ). Кроме того, одно устройство часто используется несколькими членами семьи, и каждый устанавливает то, что нужно ему, поэтому чем меньше места занимают игры и приложения, тем лучше.

Подавляющее большинство бразильцев используют Android, поэтому Google Play самый популярный магазин и значительно обгоняет App Store. Но используются и другие магазины: например, Aptoide (для Android) и Baixaki (популярный веб-сайт для загрузки игр и приложений для Android и iOS).

2. Популярные игры и приложения


Загрузки игр из Google Play и App Store в 2019 г. в Бразилии следуют мировым тенденциям это, в частности, привычные Minecraft, Free Fire, Grand Theft Auto, Fortnite, Roblox, League of Legends, PUBG, Sonic the Hedgehog, Counter-Strike, Pokmon.

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

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

В Бразилии мобильные игры запускают, чтобы отвлечься и снять стресс (так ответили 87% респондентов в опросе потребителей, проведенном Google), поэтому в рекламе следует делать акцент на отдыхе от работы и снятии напряжения.
По этой причине в Бразилии предпочитают игры, которые способны увлечь и полностью захватить внимание: это экшены, стратегии и ролевые игры. Кроме того, Бразилия третий по величине киберспортивный рынок в мире.

3. Бразилия перспективный рынок


В последние годы Бразилия, как и другие латиноамериканские страны, пережила сверхбыстрый технологический рост. По показателям Google Play и App Store рынок этой страны крупнее, чем мексиканский, и находится на первом месте по загрузкам мобильных игр в Латинской Америке.

Население страны 212 млн человек, причем смартфоны есть у 81% (к 2025 г. прогнозируется цифра в 88%), поэтому Бразилия третья в мире по общему количеству загрузок в App Store и Google Play.


Общее количество загрузок по странам (оценка по 500 самым популярным приложениям из категории все, январь июнь 2019 г.), источник

По прогнозам Statista, к 2025 г. доход на бразильском рынке мобильных игр достигнет $450 млн.

4. Адаптация к реалиям бразильского рынка


Бразильцы обожают социальные сети и мессенджеры Facebook, Twitter, Instagram, WhatsApp. Старайтесь добавлять развлекательный контент например, конкурсы и рекламные акции, и поощряйте пользователей делиться им с друзьями. Используйте YouTube: бразильцы много времени проводят за просмотром местных каналов, поэтому привлекайте к продвижению игры инфлюэнсеров. Один из самых популярных бразильских ютуберов-геймеров Joo Sampaio, канал Flakes Power.

Хороший вариант привлечь внимание аудитории рекламные акции и специальные предложения в мобильных играх: бразильцы говорят, что им нравятся выгодные предложения и возможность сэкономить. Не забудьте локализовать цены и перевести их в бразильские реалы (R$).

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

5. Язык пользователей


Что касается языка, то бразильцы явно предпочитают играть в игры на родном португальском: лишь 5% населения свободно владеют английским. Таким образом, если вы хотели знать, нужно ли переводить приложение на португальский, ответ очевиден: если этого не сделать, большинство игроков пройдут мимо вас.

Важно помнить, что это должен быть бразильский (а не европейский) вариант португальского: они различаются и по произношению, и по лексике. Ты на бразильском португальском voc, а на европейском tu. Девушка в Португалии это rapariga, а в Бразилии это же слово может означать женщина легкого поведения. Такие различия могут вызвать как минимум путаницу будьте внимательны.

Опыт показывает, что если ASO-оптимизация демонстрирует хорошие результаты в Португалии, то в Бразилии она скорее всего провалится и наоборот. Подробнее в этой статье.

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

Для локализации игры, перевода страницы в сторе и других маркетинговых материалов можно использовать Nitro сервис профессионального перевода, где вам помогут перевести текст в рекордно короткие сроки (часто всего за пару часов).



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

Наши клиенты Full HP поделились интересной историей о том, как их мобильный шутер Mad GunZ завоевал успех у бразильской аудитории. Когда они выпустили Mad GunZ на альтернативной платформе (Catappult), в игре был только английский язык.

Они получили фичеринг (см. самый большой скачок на снимке экрана), но вскоре цифры снова упали. Большинство игроков были из Бразилии, поэтому Full HP локализовали игру и страницу приложения на бразильский вариант португальского и в результате число игроков снова выросло.


Рост загрузок Mad GunZ после локализации на португальский. На графике отмечены фичеринг и локализация на португальский.

Еще один наш клиент платформа семейного развития Wachanga рассказывает, что бразильцы очень активны и охотно дают отзывы и предложения по улучшению. Так что призываем и вас попытать счастья у этой многообещающей аудитории :)

Заключение


Рынок мобильных игр в Бразилии, конечно, не сравнить с китайским, но он постоянно растет и открывает заманчивые перспективы перед разработчиками.
Помните, что бразильцы любят многопользовательские игры, и что загрузки в основном идут из Google Play.

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

Наконец, имейте в виду, что игровой рынок в Бразилии все еще растет. Бразильцы доказали, что готовы платить за игры: у более чем двух третей игроков уровень дохода средний или высокий, поэтому средний чек и LTV в мобильных играх будет продолжать расти.

Об авторе

Статья написана в Alconost.

Nitro служба профессионального перевода онлайн на 35 языков. Создана компанией Alconost.

Переводчики-носители языка, заказ от 1 слова, онлайн-чат со службой поддержки.
50% заказов готово в течение 2 часов, 96% менее чем за 24 часа.

P.S: Nitro хорошо подходит для перевода небольших текстов. Если вам нужна локализация или перевод проекта посерьезней, добро пожаловать в Alconost.
Подробнее..

Арабские страны новый Клондайк для разработчиков

26.08.2020 16:11:24 | Автор: admin


Рынок Юго-Восточной Азии постепенно становится насыщенным, и крупные компании обратили внимание на страны Ближнего Востока и Северной Африки (регион MENA).

Чем привлекателен рынок арабских стран?
  • Это один из самых быстрорастущих игровых рынков в мире (ежегодный рост 25%);
  • 22 страны с населением свыше 400 млн человек;
  • Оборот игрового рынка в регионе MENA достиг $4.8 млрд и составляет 23% от мирового рынка игр;
  • и, наконец, арабский регион может похвастаться одним из самых высоких показателей ARPU (average revenue per user, средняя прибыль с одного пользователя) в мире $181 (сравните с $48 в Китае).

Что удивительно, лишь 1% контента в интернете представлен на арабском языке, причем 70% населения Ближнего Востока предпочитают выбирать арабский для интерфейса своего смартфона. Похоже, западные разработчики и маркетологи упускают из вида важный рынок.

По мнению Хабиба Чамса, основателя Digital Games Conference Dubai, если ваша игра переведена на арабский, включает в себя отсылки к истории и диалоги на арабском, она взлетит как ракета.

Мы в Nitro, сервисе профессионального перевода, пообщались с Хэди Шарафельдином, лингвистом и переводчиком с английского на арабский, и расспросили Хэди о его опыте в локализации игр на арабский язык и о том, как найти подход к арабской аудитории.



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

Передаем микрофон нашему гостю, Хэди Шарафельдину.

Что выбрать: стандартный арабский или один из диалектов?


Я говорю на египетском диалекте арабского языка, но при переводе с английского на арабский использую современный стандартный арабский (MSA, Modern Standard Arabic), который также называют фусха.

Стандартный арабский можно считать универсальным языком в арабском мире. Когда вы локализуете продукт, вы, вероятно, нацелены на все арабскоязычные страны, правда? Так вот, MSA современный стандартный арабский как раз служит этой цели, чтобы все арабские пользователи понимали локализованный контент.

Диалекты мы используем в повседневной разговорной речи, но в книгах, онлайн-материалах и любых других письменных материалах, как правило, предпочтение отдается MSA. Однако диалекты можно услышать по радио и ТВ, так как программы направлены на конкретную аудиторию конкретной страны, где используют тот или иной диалект.

Некоторый люди утверждают, что MSA, также называемый литературным арабским, звучит слишком сухо и формально. Но когда я участвовал в локализации Battlefield 4 на арабский, мы придерживались стандартного арабского. Если Electronic Arts используют этот вариант и их пользователей все устраивает, почему бы вам не последовать их примеру?

Другие крупные компании также придерживаются этого подхода: Мы рассматриваем вариант использования диалектов в наших будущих играх, но текстовая локализация всегда будет на MSA, чтобы быть уверенными, что все наши арабскоговорящие игроки понимают контент, говорит Малек Теффаха из Ubisoft Middle East.

Относительно диалектов я отмечу, что египетский диалект один из самых понятных для арабов. Так что если вашей игре или приложению нужен более неформальный язык, может быть даже с использованием сленга, вы можете прибегнуть к египетскому диалекту арабского как сделала компания Sony в их игре Detroit: Become Human.

Square Enix выпустили тайтл Just Cause 3 с озвучкой на ливанском диалекте, что оказалось удачным решением, и коммьюнити из Саудовской Аравии и Залива очень положительно отреагировали на игру. Арабскоговорящие игроки отметили, что, несмотря на некоторую непривычность отдельных названий, они понимали суть, а ливанский диалект хорошо вписался в забавные игровые моменты, рассказывает уже знакомый нам Малек Теффаха из Ubisoft.

Однако выбор в пользу диалекта может оказаться неверным шагом. Когда Ubisoft анонсировала, что The Division 2 будет озвучена на сирийском диалекте, геймеры не одобрили это решение, и издателю пришлось вернуться к озвучке на стандартном арабском.

Резюмируем: поэкспериментировать с различными диалектами можно, но стоит быть осмотрительным, чтобы игроки не остались недовольны. И, конечно, интерфейс и субтитры всегда должны быть на стандартном арабском MSA, чтобы все арабские игроки понимали тексты.

Так ли плох Google Translate для переводов на арабский?


Хотя Google Translate неплохо справляется с общими темами, он может здорово вас подвести как в плане идиом, так и отдельных слов. Попробуйте перевести арабское слово которое означает скидки. Так вот: Google Translate считает, что оно переводится загрузки так как машинный перевод не может разобраться в контексте.

А вот еще одна забавная ошибка перевода, которая встречалась мне в работе: later alligator (шутливое Увидимся!, дословно позже, крокодил!) в машинном переводе превратилось в эй женщина, осторожнее, а то крокодил поймает тебя!

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

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

Успешный маркетинг на арабском


Первая сложность при переводе творчески передать смысл, а вторая сложность сохранить посыл, который был заложен в оригинале. Например, слоган Domino Pizza Happiness is just a bite away (дословно Счастье лишь в кусочке от тебя). Переводчики сохранили оригинальный месседж, но адаптировали его под арабский менталитет: The taste will tell you (дословно Вкус подскажет, а по смыслу Попробуйте, и вы сами все поймете).

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

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

Грамотный маркетинг на арабском делает отсылки к тому, что затронет наше сердце. Отличный пример удачной локализации от Vodafone: их слоган Power to you перевели на арабский как что означает Сила в твоих руках, ты тот, кто владеет этой силой.

Если в рекламных кампаниях или на скриншотах в App Store или Google Play представлены изображения людей, замените людей типичной западной внешности на тех, с кем арабская аудитория сможет себя идентифицировать. Как и люди в любой другой стране, арабские пользователи хотят видеть персонифицированную рекламу, а универсальная реклама оставляет их равнодушными.

Комментарий Nitro: Наш клиент Wachanga, платформа для развития семьи, придерживается именно этого подхода для своих приложений. Посмотрите на картинки для их трекера женского цикла Clover:



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

Локализация игр и арабские геймеры


Арабы заядлые геймеры, и это неудивительно, учитывая, что 50% населения моложе 30 лет. Почти 90% владельцев смартфонов в ОАЭ, Саудовской Аравии и Египте играют в мобильные игры.

Такая аудитория лакомый кусочек для разработчиков, не так ли? Однако не так много компаний заботятся о локализации своих игр и приложений на арабский язык. Одна из немногих крупных компаний, которая издала много игр на арабском Ubisoft. Интересно, что эта компания присутствует во всех соцсетях на арабском и локализует каждый трейлер к каждой игре на арабский язык, а некоторые из трейлеров даже озвучивают на арабском.

Еще одна такая компания CD Projekt. Когда их спросили, что побудило их локализовать Ведьмак 3 на арабский (мир Ведьмака нарушает множество табу арабского мира!), они ответили: Это логичный шаг. Мы хотели расти и расширять аудиторию. А так как в нашей игре очень важна история и сюжет, без локализации на арабский многие игроки попросту остались бы за бортом из-за слабого знания английского.

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

Одной из сложностей был перевод ругательств. Для арабских пользователей такие слова надо обязательно смягчать, чтобы они не шли вразрез с нашей культурой и религией. Например, мы не используем такие ругательства как f**k и переводим их как черт!

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

Имена и названия: переводить или транслитерировать?


Обычно название игры оставляют на английском. Но это может меняться в зависимости от игры. Вот интересный пример: когда выпустили арабскую версию Assassin's Creed, локализаторы выбрали транслитерацию слова ассасин, потому что перевод этого слова придал бы всей игре ярко выраженную негативную окраску (ведь в игре убийцы-ассасины вообще-то герои).

В Battlefield 4, над которой я работал в качестве переводчика, надо было решить, как поступить с названиями оружия и режимов. В итоге мы оставили эти названия на английском, так как у них нет арабских эквивалентов и они известны игрокам под английскими названиями.

Имена людей не переводят на арабский. Их можно транслитерировать или оставить на английском. Я предпочитаю транслитерировать и ставить их в кавычки.

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

Зачем переводить на арабский, если арабы знают английский?


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

Учитывайте, что более 70% населения арабских стран устанавливает арабский в качестве языка интерфейса на своих смартфонах. Если вы будете обращаться к арабской аудитории на языке, который они понимают, постоянно используют и восхищаются, ваши шансы преуспеть будут намного выше.

Еще одна веская причина локализовать ваш продукт/ сайт: изначальный английский текст может оказаться грубым и даже оскорбительным без культурной адаптации. Например, в одной из игр имя персонажа совпадало с именем жены пророка, и, конечно, это звучало совершенно неприемлемо для арабов, и имя пришлось заменить.

Поговорим подробнее о том, что приемлемо в арабской культуре, а чего следует избегать.

Как адаптировать игры и рекламу под арабскую культуру?


Локализация игр и рекламы на арабский представляет некоторые технические и культурные сложности.

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

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

Игра Ведьмак 3 собрала почти все табу, которые только можно: обнаженка, алкоголь, божества и мистические существа. Создателям игры пришлось внести существенные изменения в арабскую версию, чтобы получить допуск от Media Council комиссии, которая проверяет все новые игры на предмет нарушения ценностей арабского мира и запрещает те игры, которые их нарушают.

В одной из первых сцен в игре появляется обнаженная Йеннифер, но для арабской версии команде CD Projekt пришлось ее приодеть. Еще им пришлось заменить слово бог(и) более абстрактными понятиями типа вселенная, судьба во всей игре.

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

В мобильных играх уместным шагом будет поздравить арабских игроков и предложить им тематические квесты или спецпредложения к большим исламским праздникам Рамадан, Ураза-Байрам и Курбан-Байрам (также известные как Eid). Это золотой период, когда траты в играх взлетают до небес, ведь во время этих праздников людям нечего делать (сокращенные рабочие дни, летние каникулы), и они играют в игры целыми днями.

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

Посмотрите, какой ивент придумали в PUBG Mobile в честь Рамадана: они ввели награды за ежедневный вход в игру на протяжении всего Рамадана (который длится около месяца, как мы рассказывали в статье Как конвертировать праздники в прибыль для разработчика и радость для игроков)


Источник: PUBG Mobile

Если в вашей мобильной игре запланированы какие-нибудь особые мероприятия для выходных, имейте ввиду, что во многих странах Ближнего Востока выходные это пятница и суббота, а не привычные вам суббота и воскресенье.

Делаем выводы


Стоит ли делать ставку на арабскоговорящие страны? Определенно стоит!

В регионе MENA (Ближний Восток и Северная Африка) сосредоточено самое активное игровое сообщество в мире. К 2022 рынок мобильных игр в арабскоговорящих странах достигнет $2.3 млрд.

Арабские геймеры известны своими бешеными тратами на игры, а такие страны как Саудовская Аравия и Объединенные Арабские Эмираты могут похвастаться самым высоким средним чеком в играх во всем мире!

Но качественных игр и контента на арабском языке все еще не хватает. Некоторые крупные компании типа Ubisoft и Blizzard уже оценили возможности арабского рынка и не собираются упускать этот шанс.

Вы тоже можете успеть локализовать игру или другой контент на арабский язык, пока рынок не заполонили другие компании, как это начинает происходить с Юго-Восточной Азией. А если вы думаете, что прибыль светит только крупным компаниям, посмотрите на кейс инди-студии Duck Rockets. Иранские пользователи в их игре самые активные и удерживают лучшие показатели retention.

Переводите на современный стандартный арабский (MSA), чтобы все игроки региона MENA могли оценить вашу локализованную версию. Экспериментировать с диалектами можно, но только для озвучки.

Не забудьте убрать из игры излишнее насилие, упоминание алкоголя, секса и других табу, о которых мы говорили выше.

А вам уже захотелось попытать счастья на арабском рынке?

Мониторите новые интересные рынки? Тогда вам понравятся эти статьи:

5 ключиков к игровому рынку Бразилии

Как продвигать игры и приложения в Японии, Китае и Корее

Быстрый лайфхак для роста приложений: ASO на других языках

Об авторе


Статья написана в Alconost.

Nitro служба профессионального перевода онлайн на 35 языков. Создана компанией Alconost.
Переводчики-носители языка, заказ от 1 слова, онлайн-чат со службой поддержки.
50% заказов готово в течение 2 часов, 96% менее чем за 24 часа.

P.S: Nitro хорошо подходит для перевода небольших текстов. Если вам нужна локализация или перевод проекта посерьезней, добро пожаловать в Alconost.
Подробнее..

Перевод Как локализовать продукт для канадского рынка?

30.12.2020 12:20:04 | Автор: admin

Канада это одна из самых развитых стран в мире. Согласно последним данным, в 2019 году Канада стала 10-й страной в мире по величине экономики с ВВП в 1731 триллион долларов США. Более того, по прогнозу, к 2034 году Канада имеет все шансы стать 8-ой экономикой в мире. В последние годы канадская экономика растёт за счёт значительного развития в сфере новых технологий и разработки программного обеспечения.

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

Рост экономики Канады за счёт сферы технологий, программного обеспечения, приложений и игр

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

Как мы уже говорили, Канада одна из самых перспективных стран для продвижения бизнеса благодаря тому, что входит в топ самых богатых стран мира. Даже в условиях нынешнего экономического спада на мировом рынке Канада по-прежнему имеет относительно стабильную, диверсифицированную и хорошо развитую экономику. В конце концов, Канада гораздо меньше пострадала от COVID-19, например, по сравнению с её южным соседом, Соединенными Штатами Америки.

Основные отрасли экономики Канады, в которых наблюдается рост, программное обеспечение, электронная коммерция, онлайн-игры, а также природные ресурсы. Да, согласно данным Statista, ВВП падает. В 2020 году он упал на 7%, но, по прогнозам, в 2021 году ВВП сможет вырасти на 5%.

Очевидно, что компании-разработчики, инвестирующие в канадский рынок, также смогут насладиться всеобщим ростом экономики. В последние несколько лет доходы в сфере разработки программного обеспечения и компьютерных услуг в Канаде увеличивались примерно на 5,9% в год.

По состоянию на 2020 год количество пользователей смартфонов в Канаде увеличилось до 31 миллиона человек. В Канаде существуют приложения почти для всего, о чём вы можете только подумать. Более того, канадцы в полной мере используют их и пробуют новые решения в различных сферах жизни.

Рынок мобильных игр также демонстрирует значительный рост в Канаде: прогнозируемый доход от мобильных игр вырастет с 309 млн долларов США в 2019 году до 364 млн долларов США в 2025 году. И компании, которые инвестируют в локализацию своих игр сейчас, имеют много шансов получить большую прибыль на канадском рынке.

Кроме того, в Канаде большой средний класс с высокими зарплатами, которые растут с каждым годом. Например, в 2018 году канадские налоговые органы получили 938,5 миллиарда канадских долларов с заработной платы, окладов и комиссионных населения.

Данные из Statista.com Данные из Statista.com

Поэтому если вы задумывались о расширении своего бизнеса в 2021 году, то мы советуем присмотреться к рынку Канады.

С чего начать локализацию для Канады?

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

В Канаде официальными признаны сразу два языка: английский и французский. Это означает, что все федеральные документы и информация должны публиковаться на обоих официальных языках. Однако в каждой из десяти провинций и трёх территорий Канады действуют свои лингвистические правила. Вот, например, некоторые из них:

  • В Канаде всего две официально двуязычные провинции: Нью-Брансуик и Манитоба. Упаковка продуктов, реклама и другие публичные коммуникации должны быть как на английском, так и французском. Также, правительство провинции должно предлагать услуги на обоих языках.

  • Квебек официально является только франкоязычным, хотя в самом крупном городе этой провинции, Монреале, 50/50 французского и английского населения.

  • Британская Колумбия, Ньюфаундленд и Лабрадор это провинции только с английским языком.

  • Центральные провинции Альберта и Саскачеван, а также приморские провинции Новая Шотландия и остров Принца Эдуарда официально являются только английскими. Тем не менее, многие продукты и услуги предлагаются на обоих языках, поскольку в этих регионах также есть некоторые франкоязычные группы.

  • Онтарио имеет региональную языковую политику. Некоторые части провинции двуязычны, а другие только английские.

Канада и США: разве это не одно и то же?

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

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

  • Слова, оканчивающиеся на -or в США, заканчиваются на -our в Канаде. Например, в таких словах, как colour, favour, flavour или behaviour.

  • Вместо слов, оканчивающихся на -er, они пишутся с -re, как в словах centre.

  • Существительные, такие как defence и offence, заканчиваются на -ce вместо -se. Кроме того, чтобы различать существительные и глагольные формы некоторых слов, например, practice и practise, используется буква s для глагола и c для существительного.

  • Конечная буква l удваивается в таких словах, как в travelled и cancelled, тогда как американцы используют только одну букву l.

  • Окончание -оg в словах типа catalog изменяется на catalogue.

  • Такие слова, как esthetic в США, пишутся через -ae: как в aesthetic в Канаде.

В Канаде используется метрическая система и измеряется температура в градусах Цельсия вместо имперской системы и градусов Фаренгейта, как в США. Однако старшие поколения могут всё ещё использовать американские единицы измерения, так как метрическая система пришла в Канаду только в 1970 году.

Конечно же, в Канаде есть свои сленговые слова, как и в США. Скорее всего вы захотите быть близкими по культуре к местным брендам. В этом случае для маркетинговых кампаний или перевода сайта необходимо использовать локальный сленг и местные шутки, чтобы быстрее влиться в новый рынок и завоевать доверие новой аудитории. Для этого очень важно знать, чем живёт ваша аудитория. Например, самый любимый поставщик кофе канадцев, Тим Хортон (Tim Hortons), и канадцы часто называют его просто Тиммис (Timmies).

Вот список некоторых терминов, характерных для Канады:

  • Washroom (Санузел): вместо restroom or bathroom.

  • Pop: аналог soda (газировка) в США.

  • Chocolate bar (Шоколадный батончик): в отличие от candy bar в США.

  • Click: ещё один способ сказать километр в Канаде.

  • Runners (беговые кроссовки): вместо слов tennis shoes (теннисные туфли) или sneakers (кроссовки) в США или trainers в Великобритании.

  • Loonies and Toonies: как канадцы называют свои монеты в один и два канадских доллара. Слово loon происходит от одноименной птицы.

Канадский французский и Европейский французский

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

Французский, на котором говорят в Квебеке, называется joual, в то время как в каждом регионе есть свой способ называть свой язык. Например, в Альберте его называют Franco-Albertain, а в Саскачеване Fransaskois. Акадский французский это ещё один диалект канадского французского, на котором говорят около 350 000 человек, в основном в Нью-Брансуике.

Канадский французский отличается от европейского французского грамматикой, стилем письма, словарным запасом и, конечно же, произношением. Французский язык в Канаде имеет широкий диапазон отличий: от сильного диалекта до более академического французского.

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

Вот, например, некоторые различия между европейским французским и французским канадским языком:

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

  • Канадский французский включает слова коренных народов Канады.

  • Канадцы обычно более неформальны и при обращении друг к другу используют форму tu вместо vous; это социально неприемлемо во Франции или франкоговорящих странах Европы.

  • Французские канадцы будут чаще использовать для слова мы форму on, чем nous.

Разница некоторых слов в Канаде и Франции

Русский

Французский (Франция)

Французский (Канада)

машина

voiture

char

нижнее бельё

culottes

bobettes

хот-дог

hot-dog / saucisse

chien-chaud

стиральная машина

machine laver

laveuse

насекомое

moustique

maringuouin

Стратегия локализации для рынка Канады

При выходе на канадский рынок необходимо учитывать некоторые культурные и лингвистические особенности. Индивидуальный подход к контенту и осознание уникальности страны будет иметь решающее значение. Важно понимать, что Канада, как бы она ни была близка к США, это самобытная и уникальная страна.

Поэтому важно знать, какие языки используются в каких регионах. При выходе на канадский рынок разумно локализовать свой продукт как на канадский английский, так и на французский, чтобы соблюсти все законы и охватить всё возможное население. В Канаде 22,8% населения говорит по-французски, а 75,4% по-английски. Поэтому, если вы будете ориентироваться только на одну языковую группу, то вы значительно сократите количество своих потенциальных клиентов.

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

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

Помните, что канадская культура не идентична с американской. Хотя у этих соседних стран есть много общего, между ними всё же есть поразительные различия с точки зрения языка и культурных норм, не говоря уже о совершенно иной политической и экономической системе. Последний, наверное самый важный совет: при запуске в Канаду не копируйте американскую стратегию. Вам нужно локализовать продукт отдельно для Канады, как и для любой другой страны.

О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимаетсялокализацией игр,приложений и сайтовна 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

Мы также делаемрекламные и обучающие видеоролики для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Подробнее..

Из песочницы Стабилизация видео с движущейся камеры, или как перевести всё в неподвижную систему координат

21.08.2020 18:08:22 | Автор: admin

Сейчас возможности Computer Vision (CV) полностью перекраивают ландшафт рынка Public Safety solutions. В то время, как традиционными системами видеонаблюдения уже не просто никого не удивить, а странно не найти её в любом общественном месте, использование ИИ в данной области всё ещё вновинку.


Как R&D департамент Oxagile, мы исследуем применение CV для различных бизнес-задач в сфере Public safety. В этом посте мы предлагаем вариант перевода видео с движущейся камеры в неподвижную систему координат для последующего анализа.




Допустим у нас есть какое-то видео и мы хотим построить для него неподвижную систему координат, чтобы оценивать расположение объектов относительно друг друга.


Зачем это нужно? Очень часто в задачах public surveillance видео, которое нужно анализировать, снято на движущуюся камеру. Из-за этого возникает несколько проблем в определении положения объектов относительно друг друга:


  • Непонятно, чем вызвано изменение координат объекта: движется камера или сам объект;
  • При смене сцены из-за поворота камеры разные объекты могут получить одни и те же координаты, даже если объекты были статичными.

image
Рисунок 1- Одинаковые объекты имеют разные координаты из-за движения камеры


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


  1. Определить начало координат;
  2. Сопоставить между собой два последовательных фрейма;
  3. Найти преобразование, которое будет переводить координаты объекта на текущем фрейме в координаты относительно начала координат, при этом учитывать все движения камеры (поворот, перемещение, наклон и т.д.).

image
Рисунок 2-проективное преобразование


О каждом пункте подробнее:


  1. За начало координат возьмем верхний левый угол первого фрейма.
  2. Введем определение: особой будет называться такая точка изображенного объекта, которая с большой вероятностью будет найдена на другом изображении этого же объекта. С помощью таких особых точек мы и будем сопоставлять между собой последовательный фреймы. Матчатся особые точки одного объекта на разных изображениях между собой по совпадению дескприторов. Здесь в качетсве алгоритмов для поиска особых точек и их дискрипторов мы использовали SIFT, SURF и ORB. Три типа особых точек использовались для того, чтобы покрыть максимально возможную площадь фрейма. Важно отметить, что фреймы могут быть связаны с помощью разных типов точек, и можно использовать другие алгоритмы для их поиска, но в данной версии мы выбрали иммено эти три.


Рисунок 3-matching visualization


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

Что нужно знать о гомографии


Гомография характеризуется своей матрицей Н:


image


  • a, e масштабирование по x и y соответственно;
  • b, d сдвиг по осям (вместе с a и e влияют на поворот);
  • c, f смещение по осям;
  • g, h изменение перспективы.

Используя эту матрицу, можно описать изменение координат одного объекта между двумя фреймами, если это изменение вызванно движением камеры. Получить из (x,y) новые координаты (x',y') можно следующим образом:


image
или в матричнов виде:


$t(x',y',1)=H(x,y,1) (1)$


Пайплайн:


Давайте рассмотрим работу алгоритма на примере обработки k-ого фрейма.
Пусть есть N последовательных фреймов (f1,..., fN). В качестве начала координат зафиксируем левый верхний угол первого фрейма. Определим matching points как точки, которые связывают fk и fk-1.


Введем следующие обозначения:


О начало координат;
(Xk, Yk)=((x1k, y1k),, (xnk, ynk)) координаты n matching points;
(X'k, Y'k) =((x'1k, y'1k),, (x'nk, y'nk)) координаты n matching points в неподвижной системе координат;
(X''k, Y''k) =((x''1k, y''1k),, (x''nk, y''nk)) k координаты n matching points в систееме координат, где ее началом является левый верхний угол fk-1.
Hk матрица гомографии, которая описывает движение камеры между fk-1 и fk.

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


Необходимо из (Xk, Yk) получить (X'k, Y'k). Найти матрицу гомографии между f1 и fk не всегда возможно, т.к. за время движения камеры сцена могла кардинально поменяться и фреймы могут не содержать общих объектов. Поэтому найдем матрицу перехода Hk.


Считаем, что уже найдена последовательность таких матриц для предыдущих фреймов (H1,, Hk-1). Если матрица Hk будет описывать изменения между координатми (Xk-1, Yk-1) и (Xk, Yk), то мы не учтем, что взаимное расположение объектов могло сильно измениться с начала видео.


Рассмотрим рисунок 3:


image


Рисунок 3 пример движения камеры, при котором произошло масштабирование объектов

Здесь показан пример такого движения камеры, при котором происходит масштабирование объектов. Если на текущем фрейме координата объекта изменилась на a пискелей:
x1k = x1k-1a, это не значит, что он переместился на a координат в неподвижной системе: x'1k = x1ka, это очень хорошо видно на рисунке 3. Поэтому, при поиске преобразования между двумя фреймами нужно учесть все трансформации, которые произошли с первого кадра.


Как это сделать?
Описать передвижение камеры между всеми предыдущими парами последовательных фреймов можно с помощью известных матриц гомографии (H1,, Hk-1). Но необходимо найти такую суперпозицию этих матриц, которая будет описывать полное движение от 1 до k-1 кадра и позволит найти координаты mathcing points на fk-1 в неподвижной системе. Если посмотреть на формулу (1), становится понятно, что такая суперпозиция это перемножение матриц всех предыдущих переходов.


$H_{sup}=H_1(H_2(H_3...))(2)$


Таким образом, для того, чтобы найти матрицу гомографии, описывающую движение камеры между fk-1 и fk, необходимо: умножить оригинальные координаты (Xk-1, Yk-1) и (Xk, Yk) на суперпозицию матриц (формула (2)), и уже для полученных координат (X'k-1, Y'k-1) и (X''k, Y''k) искать матрицу Hk. В результате, получим преобразование, которое переведет координаты объекта на этом фрейме (x1k, y1k) в координаты этого объекта относительно начала координат (x'1k, y'1k).


$t(x',y',1)=H_{sup} (x,y,1) (3)$


Но есть одна проблема: дело в том, что особые точки могут цепляться за подвижные объекты (за людей, машины, и т.д. ), и из-за этого матрица гомографии может быть посчитана неточно и описывать не только движение камеры, но и движение людей. Поэтому необходимо отфильтровывать точки.
Разработан следующий вариант фильтрации:


  • Получаем "грязные" matching points с координатами ((x1k, y1k), ,(x'nk, y'nk)), которые включают в себя точки и на подвижных объектах
  • Находим матрицу гомографии H которая переведет координаты k-ого фрейма в плоскость k-1 фрейма.
  • Применяем ее к найденым точкам получаем их новые координаты ((x'1k, y'1k), ,(x'nk, y'nk))
  • Фильтруем точки следующим образом:
    • Ищем расстояние на которое переместилась каждая точка по сравнению с предыдущим фреймом;
    • Группируем. Округляем перемещение до целых, и точки с одинаковым пермещением попадают в одну группу;
    • Если кол-во точек в группе меньше трешхолда (в скрипте этот порог равен LENGTH_ACCOUNTED_POINTS len(matching points)*), считаем, что это точки, которые зацепились за движущийся объект, и удаляем их из рассмотрения.

Остались только точки, которые находятся на неподвижных объектах. Именно их и используем при подсчете матрицы гомографии Н.


Но найденная на грязных точках матрица будет описывать не только движение камеры, но и частично движение движущихся объектов. И, следовательно, координаты объектов, движение которых будет описано достаточно точно, не изменятся и попадут в группу с неподвижными объектами. Tаким образом, матрица гомографии может быть посчитана неточно. В связи с этим, в качестве улучшения фильтрации рассматривается внедрение motion video segmentation.


О проекте.


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


  • evenvizion_component.py
  • evenvizion_visualization.py
  • compare_evenvizion_with_original_video.py

evenvizion_component.py
Реализация самого алгоритма неподвижной системы координат и всех основных результатов, происходит в файле evenvizion_component.py. На вход скрипт принимает путь к видео, на выходе возвращает json с матрицами гомографии, описывающими перемещение между fk-1 и fk. Важно, в json записаны матрицы, описывающие перемещение только между двумя фреймами. Чтобы получить координаты в неподвижной системе, необходимо сначала получить суперпозицию матриц, о которой было рассказано выше.


Если же вы хотите пересчитать координаты каких-то определенных объектов, то необходимо указать путь к json файлу в --path_to_original_coordinate с этими объектами и вы получите recalculated_coordinates.json с пересчитанными координатами, а также их визуализацию.
Формат json файла:


{"frame_no": [{"x1": x coordinate, "y1": y coordinate}, ...], ...}

Таким образом после работы evenvizion_component.py скрипта, вы получаете 3 визуализации (управлять matching and heatmap визуализациями можно с помощью аргументов --show_matches и --visualize_fixed_coordinate_system соответственно).


evenvizion_visualization.py и compare_evenvizion_with_original_video.py используются исключительно для получения визуализаций работы компонента.


Больше про аргументы и константы Вы можете прочитать в README.


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


Визуализация и интерпретация результатов:


Визуализация matching points matching visualization:


image
Рисунок 5 matching visualization


Ее описание приводилось выше.
Для демонстрации того, как работает именно неподвижная система координат была разработана следующая визуализация (heatmap visualization):


image
Рисунок 6 heatmap visualization


В данной визуализации фрейм разбивается на 20 прямоугольников, и на каждом кадре координаты центра прямоугольника пересчитываются в новой системе координат, то есть можно посмотреть как неподвижные объекты сохраняют свои координаты по мере движения камеры. Здесь используется окрашивание фрейма в зависимости от того, насколько далеко от начала координат расположен объект. Цвет окрашивания определяется следующим образом: вычисляется расстояние от объекта до начала координат r =sqrt(x2+y2), нормализуется с помощью агрумента heatmap_constant и в зависимости от полученного значения окрашивается в определенный цвет, диапазон цветов: 0 синий, 1 красный.



Рисунок 7 fixed_coordinate_system_visualization


Если Вы указали json с координатами объектов, которые необхомо пересчитать, вы получите fixed_coordinate_system_visualization (рисунок 7)


evenvizion_visualization.py и compare_evenvizion_with_original_video.py используются для визуализации стабилизации камеры, и покрывают только перемещение камеры (масштабирование и поворот такая визуализация не учитывает). На рисунках 8 и 9 представлены результаты работы этих скриптов соотвественно


image
Рисунок 8 visualize_camera_stabilization


image
Рисунок 9 original_video_with_EvenVizion


Known issues


N/a координаты. Когда matching points цепляются за подвижные объекты, то есть фильтрация работает недостаточно хорошо, и когда угол поворота камеры больеш 90 градусов, координаты не могут быть определены. В качетсве решения первой проблемы в данный момент рассматривается внедрение video motion segmentation, чтобы, учитывая характер движения, отделять static points от motion points. А в качетсве решения второй переход к цилиндрической системе координат.


Матрица Н не определена. Для поиска гомографии необходимо минимум 4 matching points, но бывают случаи, когда 4 точки невозможно найти, и матрицы гомографии Н=None. В данной версии алгоритма такие случаи обрабатываются следующим образом: если аргумент none_H_processing стоит True, то считаем что матрца предыдущего фрейма будет соответствовать матрице текущего: Hk=Hk-1. Если же False, то H единичная матрица, то есть никакого движения на данном кадре не было. Необходимо продумать более качетсвенную обработку таких ситуаций.


Погрешность. Имеет место погрешность в координатах. Некачественно полученная матрица гомографии искажает результаты пересчета координат. Причины:


  • Некачественная фильтрация. Если точки зацепятся за движущийся объект, то матрица гомографии будет описывать не только движение камеры, но и самостоятельное движение объектов (например, ходьбу человека).
  • Ипользование встроенной функции findHomography() модуля opencv. Эта функциия уже предполагет наличие погрешности в расчете матрицы гомографии.

Выводы


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

Подробнее..

Перевод Локализация в ASP.NET Core Razor Pages Культуры

26.10.2020 20:10:07 | Автор: admin

Привет, хабр! Прямо сейчас OTUS открывает набор на новый поток курса "C# ASP.NET Core разработчик". В связи с этим традиционно делимся с вами полезным переводом и приглашаем записаться на день открытых дверей, в рамках которого можно будет подробно узнать о курсе, а также задать эксперту интересующие вас вопросы.


Это первая статья из серии, посвященной локализации в ASP.NET Core Razor Pages приложениях. В этой статье мы рассмотрим конфигурацию, необходимую для подготовки сайта к локализации контента, или другими словами, для глобализации сайта. В следующих статьях я расскажу о создании локализованного контента и о том, как преподносить его конечному пользователю.

Глобализация в ASP.NET Core

Глобализация - это подготовка приложения к поддержке различных языков в зависимости от предпочтений пользователя. Локализация - это процесс адаптации контента сайта под разные страны, регионы или культуры. Отправной точкой в глобализации веб-приложения является способность определять язык или культуру для каждого запроса. Далее нам потребуется механизм для выбора контента на основе культуры текущего запроса. В этой статье мы рассмотрим роль, которую играет класс CultureInfo в локализации, и то, как можно реализовать компонент представления, чтобы пользователи могли выбирать для запросов предпочтительную для них культуру.

Приведенные ниже шаги добавляют базовую локализацию к Razor Pages приложению, которое создается из стандартного шаблона веб-приложения ASP.NET Core 3.0 без настроенной аутентификации. Я назвал свое приложение Localisation. Свое вы можете назвать как вам угодно, но в таком случае не забудьте про пространства имен, если будете копировать код из этой статьи.

1. Начните с открытия файла Startup.cs и добавления туда следующих using директив:

using System.Globalization;using Microsoft.AspNetCore.Localization;using Microsoft.Extensions.Options;

2. Локализация - это дополнительная фича. По умолчанию она не включена. Измените метод ConfigureServices, включив AddLocalization, что сделает различные вспомогательные сервисы локализации доступными для системы инжекции зависимостей. Затем добавьте следующий код для конфигурации RequestLocalizationOptions в приложении.

services.Configure<RequestLocalizationOptions>(options =>{   var supportedCultures = new[]    {        new CultureInfo("en"),        new CultureInfo("de"),        new CultureInfo("fr"),        new CultureInfo("es"),        new CultureInfo("ru"),        new CultureInfo("ja"),        new CultureInfo("ar"),        new CultureInfo("zh"),        new CultureInfo("en-GB")    };    options.DefaultRequestCulture = new RequestCulture("en-GB");    options.SupportedCultures = supportedCultures;    options.SupportedUICultures = supportedCultures;});

Вам необходимо указать языки или культуры, которые вы планируете поддерживать в своем приложении. Культуры представлены в .NET классом CultureInfo, который содержит информацию о форматировании чисел и дат, календарях, системах письма, порядках сортировки и других вопросах, зависящих от местности проживания конечного пользователя. Перегрузка конструктора класса CultureInfo, используемого здесь, принимает строку, представляющую имя языка и региональных параметров (культуры). Допустимые значения - это коды ISO 639-1, которые представляют язык (например, en для английского языка), с необязательным кодом субкультуры ISO 3166, который представляет страну или диалект (например, en-GB для Великобритании или en-ZA для Южной Африки). В приведенном выше примере поддерживается несколько языков, включая одну субкультуру - британский английский, который был установлен в качестве культуры по умолчанию.

3. Теперь, когда RequestLocalizationOptions настроены, их можно применить к промежуточной прослойке локализации запросов, которую необходимо добавить в метод Configure после app.UseRouting():

app.UseHttpsRedirection();app.UseStaticFiles();app.UseRouting();var localizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value;app.UseRequestLocalization(localizationOptions);

Установка культуры запроса

Для определения культуры текущего запроса промежуточный слой локализации запросов используются компоненты, называемые RequestCultureProviders. Три из них добавляются по умолчанию:

  • QueryStringRequestCultureProvider, который получает культуру из строки запроса

  • CookieRequestCultureProvider, который получает культуру из файла cookie

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

1. Первый шаг - создать папку с именем Models и добавить в нее файл класса с именем CultureSwitcherModel.cs.

using System.Collections.Generic;using System.Globalization; namespace Localisation.Models{    public class CultureSwitcherModel    {        public CultureInfo CurrentUICulture { get; set; }        public List<CultureInfo> SupportedCultures { get; set; }    }}

2. Добавьте в проект папку с именем ViewComponents и в нее добавьте новый файл класса C# с именем CultureSwitcherViewcomponent.cs. Затем замените содержимое на следующий код:

using Localisation.Models;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Localization;using Microsoft.AspNetCore.Mvc;using Microsoft.Extensions.Options;using System.Linq; namespace Localisation.ViewComponents{    public class CultureSwitcherViewComponent : ViewComponent    {        private readonly IOptions<RequestLocalizationOptions> localizationOptions;        public CultureSwitcherViewComponent(IOptions<RequestLocalizationOptions> localizationOptions) =>            this.localizationOptions = localizationOptions;         public IViewComponentResult Invoke()        {            var cultureFeature = HttpContext.Features.Get<IRequestCultureFeature>();            var model = new CultureSwitcherModel            {                SupportedCultures = localizationOptions.Value.SupportedUICultures.ToList(),                CurrentUICulture = cultureFeature.RequestCulture.UICulture            };            return View(model);        }    }}

3. Добавьте новую папку в папку Pages и назовите ее Components. Внутри добавьте еще одну папку с именем CultureSwitcher. Затем добавьте Razor View в default.cshtml и замените существующее содержимое следующим:

@model CultureSwitcherModel <div>    <form id="culture-switcher">        <select name="culture" id="culture-options">            <option></option>            @foreach (var culture in Model.SupportedCultures)            {                <option value="@culture.Name" selected="@(Model.CurrentUICulture.Name == culture.Name)">@culture.DisplayName</option>            }        </select>    </form></div>  <script>    document.getElementById("culture-options").addEventListener("change", () => {        document.getElementById("culture-switcher").submit();    });</script>

Компонент представления - это простой select элемент, заполненный поддерживаемыми культурами, которые были настроены в Startup. Представление, в котором он находится, использует дефолтный get метод, что означает, что отправленное значение появится в строке запроса с именем culture. QueryStringRequestCultureProvider предназначен для поиска элемента в строке запроса по ключа culture (и/или ui-culture).

CurrentCulture для запроса определяет местное форматирование которое будет использоваться для таких вещей как даты и числа. CurrentUICulture используется, чтобы выбрать правильный ресурс, содержащий переведенные строки. В следующей статье этой серии я рассмотрю, как использовать ресурсные файлы для локализации статического контента. Для CurrentCulture и CurrentUICulture можно установить разные значения, но чаще имеет смысл, чтобы оба эти значения совпадали. Если установлено только одно из них (например, через одно значение строки запроса), то значение присваивается обоим свойствам.

4. На этом этапе у вас, вероятно, у вас появилось несколько красных волнистых линий в только что созданном представлении - откройте файл _ViewImports.cshtml и добавьте вторую и третью директивы using, приведенные ниже, вместе с последней строкой, которая позволяет вам использовать tag-хелпер для рендеринга компонент представления:

@using Localisation@using Localisation.Models@using System.Globalization@namespace Localisation.Pages@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers@addTagHelper *, Localisation

5. Включите компонент переключателя культуры на страницу макета, используя подход с tag-хелпером, как показано здесь в последней строке.

<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">    <ul class="navbar-nav flex-grow-1">        <li class="nav-item">            <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>        </li>        <li class="nav-item">            <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>        </li>    </ul></div><vc:culture-switcher/>

6. Измените Index.cshtml, включив код в блок кода и HTML-код для таблицы, которая отображает различные биты данных:

@page@using Microsoft.AspNetCore.Localization@model IndexModel@{    ViewData["Title"] = "Home page";    var requestCultureFeature = HttpContext.Features.Get<IRequestCultureFeature>();    var requestCulture = requestCultureFeature.RequestCulture;} <div class="text-center">    <h1 class="display-4">Welcome</h1>    <p>Learn about <a href="http://personeltest.ru/aways/docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>     <table class="table culture-table">        <tr>            <td style="width:50%;">Culture</td>            <td>@requestCulture.Culture.DisplayName {@requestCulture.Culture.Name}</td>        </tr>        <tr>            <td>UI Culture</td>            <td>@requestCulture.UICulture.Name</td>        </tr>        <tr>            <td>UICulture Parent</td>            <td>@requestCulture.UICulture.Parent</td>        </tr>        <tr>            <td>Date</td>            <td>@DateTime.Now.ToLongDateString()</td>        </tr>        <tr>            <td>Currency</td>            <td>                @(12345.00.ToString("c"))            </td>        </tr>        <tr>            <td>Number</td>            <td>                @(123.45m.ToString("F2"))            </td>        </tr>    </table></div>

При первом запуске приложения культура для запроса задается AcceptHeadersCultureRequestProvider. Когда вы используете раскрывающийся список для выбора разных культур, культура задается QueryStringCultureRequestProvider. Попробуйте добавить ключ ui-culture в строку запроса с другим значением ключа culture (например, https://localhost:xxxxx/?culture=es&ui-culture=de), чтобы посмотреть, что произойдет.

Резюме

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

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


Подробнее о курсе.


Читать ещё:

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru