Всем привет.
Поделитесь опытом, как у вас построен процесс локализации/интернационализации?
Используются ли специализированные инструменты или вручную/скриптами формируются файл для перевода?
Как налажено взаимодействие с переводчиками?
Любые мысли по этому поводу приветствуются.
Привет,
LF>Поделитесь опытом, как у вас построен процесс локализации/интернационализации?
LF>Используются ли специализированные инструменты или вручную/скриптами формируются файл для перевода?
LF>Как налажено взаимодействие с переводчиками?
Интернационализация (то, что делает разработчик):
1. Вынесение строчек, картинок и др. материалов, подлежащих переводу в отдельные ресурсные файлы. Все современные средства разработки это умеют. Ресурсы хранятся отдельно от кода. Строки нельзя разбивать на бессмысленные куски т.е. нельзя "Всего " + 10 + " карт на руках", а нужно "Всего %d карт на руках".
2. Реализация поддержки юникода в программе. Можно использовать и локальные национальные кодировки для каждой локали, но без юникода будет невозможно показать пользователю строку на 2-ях языках одновременно: например, русский интерфейс и имя файла на китайском.
3. Реализация поддержки форматов вывода даты, времени, денег, чисел и т.п. Если программа что-то такое показывает, отображение должно зависеть от текущей локали пользователя.
4. Спец. символы — разные для разных локалей. Например, в японском символ разделителя пути к файлу не "слеш", а "елочка".
5. Механизм определения текущей (либо переключения) локали.
6. Нужно исключить из UI ситуаций, когда что-то может "не поместиться". Например, немецкие строчки длиннее английских на 30%. Китайские — наоборот, короче. Поэтому caption лучше располагать не перед контролом: "Всего: 10", а над ним. У Microsoft есть специальный гайд по локализации, который все такие случаи разбирает.
7. Следует учесть направление текста — для арабского, иврита написание текста — справа-налево. Т.е. не "Всего: 10" а "10 :Всего". Это легко решается если среда среда разработки и компоненты имеют поддержку написания справа-налево.
Локализация (то, что делает локализатор):
Идеальный процесс:
1. Используем специальную облачную платформу для управления локализацией (да, есть такие).
2. Заливаем в облако ресурсы.
3. Приглашаем переводчиков и редакторов.
4. Скачиваем переведенные ресурсы.
(5). Апдейтим ресурсы
(6). Допереводятся новые строчки.
К строчкам можно аттачить скриншоты, задавать вопросы. Есть опция вычитки вторым переводчиком. Накапливается память переводов.
Есть админка для разработчика — можно в реалтайме смотреть за процессом.
Можно даже закачку ресурсов автоматизировать с помощью API облачной платформы.
Вот полное описание решения по локализации от Alconost:
Alconost — предложение по локализации для разработчиков ПО, игр
Там написано подробно про платформу и процесс работы.
В довесок, пару полезных ссылок:
Microsoft Language Portal
http://www.microsoft.com/Language/en-US/Default.aspx
Localizing Windows Phone apps: New terminology and Style Guides
http://blogs.technet.com/b/terminology/archive/2011/12/19/creating-international-windows-phone-apps-new-terminology-and-style-guides-posted.aspx
Globalization and Localization for Windows Phone
http://msdn.microsoft.com/en-us/library/ff637522(v=VS.92).aspx
Facebook internationalization guidance for developers
http://developers.facebook.com/docs/internationalization/
Adobe Flash Localization Guidelines
http://blogs.adobe.com/globalization/adobe-flash-localization-guidelines/
Здравствуйте, LF, Вы писали:
LF>Всем привет.
LF>Поделитесь опытом, как у вас построен процесс локализации/интернационализации?
LF>Используются ли специализированные инструменты или вручную/скриптами формируются файл для перевода?
LF>Как налажено взаимодействие с переводчиками?
LF>Любые мысли по этому поводу приветствуются.
Для каждого проекта (и его типа) в каждый период есть более желательный способ. Пока больше о Winforms.
Больше всего напрягают строки и диалоги. И желательно что бы разработчики писали бы в коде обычные строки и рисовали "обычные диалоги". Когда проект "устаканивается" строки из исходников и диалогов "вытаскиваются" специальной прогой в специальную базу и сохраняются "ссылки" на исходные места. База экспортируется, допустим в экзел, и передается для перевода. Пришедший перевод импортируется обратно в базу и обновляются "исходники". Важно чтобы на время перевода не нужно было приостанавливать разработку, новые строки просто добавляются в новый запрос для перевода, когда обновится первый.
При этом также не должно быть сложно переносить старый код в новые проекты иногда бывает нужна просто какая то малая часть.
Также есть приворечие между точкой зрения разработчиков и ответственным за локализацию. Разработчикам удобно "держать" тексты по месту их появления в коде. Отвественному же удобнее по месту их появления в GUI. Копромиссом может быть использование общего текстового репозитория на последних этапах разработки (также спец. прогой)
При этом разработчики должны только соблюдать определенные правила, всем остальным должен заниматься один человек (кроме перевода)