Прошло много времени, поэтому это не исчерпывающе.
Наборы символов
Юникод великолепен, но вы не можете игнорировать другие наборы символов. Набор символов по умолчанию в Windows XP (английский) - Cp1252. В Интернете вы не знаете, что вам отправит браузер (хотя, надеюсь, ваш контейнер справится с большей частью этого). И не удивляйтесь, если в какой-либо реализации вы используете ошибки. Наборы символов могут иметь интересные взаимодействия с именами файлов при переходе между компьютерами.
Перевод строк
Переводчики, вообще говоря, не кодеры. Если вы отправите исходный файл переводчику, он сломает его. Строки должны быть извлечены в файлы ресурсов (например, файлы свойств в Java или библиотеки ресурсов в Visual C ++). Переводчикам должны быть предоставлены файлы, которые трудно взломать, и инструменты, которые не позволяют им их взломать.
Переводчики не знают, откуда берутся строки в продукте. Трудно перевести строку без контекста. Если вы не предоставите руководство, качество перевода пострадает.
Что касается контекста, вы можете увидеть, что одна и та же строка "foo" появляется несколько раз и считаете, что было бы более эффективно, если бы все экземпляры в пользовательском интерфейсе указывали на один и тот же ресурс. Это плохая идея. Слова могут быть очень контекстно-зависимыми в некоторых языках.
Перевод строк стоит денег. Если вы выпускаете новую версию продукта, имеет смысл восстановить старые версии. Есть инструменты для восстановления строк из ваших старых файлов ресурсов.
Конкатенация строк и ручные манипуляции со строками должны быть сведены к минимуму. При необходимости используйте функции форматирования.
Переводчики должны иметь возможность изменять горячие клавиши. Ctrl + P печатается на английском языке; немцы используют Ctrl + D .
Если у вас есть процесс перевода, который требует, чтобы кто-то вручную вырезал и вставлял строки в любое время, вы напрашиваетесь на неприятности.
Даты, время, календари, валюта, форматы чисел, часовые пояса
Все они могут варьироваться в зависимости от страны. Запятая может использоваться для обозначения десятичных знаков. Время может быть в 24-часовом формате. Не все используют григорианский календарь. Тебе тоже нужно быть однозначным. Если вы позаботитесь о том, чтобы на вашем сайте отображались даты в виде ММ / ДД / ГГГГ для США и ДД / ММ / ГГГГ для Великобритании, даты будут неоднозначными, если пользователь не знает, что вы это сделали.
Особенно Валюта
Функции Locale, предоставляемые в библиотеках классов, дадут вам символ местной валюты, но вы не можете просто вставить фунт (стерлинг) или символ евро перед значением, которое дает цену в долларах.
Пользовательские интерфейсы
Макет должен быть динамическим. Мало того, что строки при переводе могут удвоиться, может потребоваться инвертировать весь пользовательский интерфейс (иврит; арабский), чтобы элементы управления работали справа налево. И это до того, как мы доберемся до Азии.
Тестирование перед переводом
- Используйте статический анализ вашего кода для поиска проблем. Как минимум, используйте инструменты, встроенные в вашу IDE. (Пользователи Eclipse могут перейти в «Окно»> «Установки»> «Java»> «Компилятор»> «Ошибки / предупреждения» и проверить наличие неэкспериментированных строк.)
- Тест дыма путем симуляции перевода. Нетрудно разобрать файл ресурсов и заменить строки псевдопереведенной версией, которая удваивает длину и вставляет прикольные символы. Вам не нужно говорить на языке, чтобы использовать иностранную операционную систему. Современные системы должны позволять вам входить в систему как иностранный пользователь с переведенными строками и иностранным языком. Если вы знакомы с вашей ОС, вы можете выяснить, что и для чего, не зная ни слова из языка.
- Карты клавиатуры и ссылки на наборы символов очень полезны.
- Виртуализация была бы очень полезна здесь.
Нетехнические вопросы
Иногда вы должны быть чувствительны к культурным различиям (это может привести к обиде или непониманию). Ошибка, которую вы часто видите, заключается в использовании флагов в качестве визуальной подсказки при выборе языка или географии сайта. Если вы не хотите, чтобы ваше программное обеспечение объявляло стороны в глобальной политике, это плохая идея. Если вы были французами и предложили вариант для английского языка с флагом Святого Георгия (флаг Англии - это красный крест на белом поле), это может привести к путанице для многих носителей английского языка - предположим, что подобные проблемы возникнут с иностранными языками и странами , Иконы необходимо проверять на культурную значимость. Что означает палец вверх или зеленая галочка? Язык должен быть относительно нейтральным - обращение к пользователям определенным образом может быть приемлемым в одном регионе, но считается грубым в другом.
Ресурсы
Программисты C ++ и Java могут найти сайт ICU полезным: http://www.icu -project.org /