Я пишу приложение asp.net, которое необходимо будет локализовать в нескольких регионах, кроме Северной Америки. Что мне нужно сделать, чтобы подготовиться к этой глобализации? Каковы ваши первые 1-2 ресурса, чтобы научиться писать готовое приложение?
Что мне нужно знать для глобализации приложения asp.net?
Ответы (7)
Пару вещей, которые я узнал:
Абсолютно и грубо минимизируйте количество изображений, содержащих текст. Это упростит вашу жизнь на миллиард процентов, поскольку вам не придется получать новый набор изображений для каждого чертового языка.
Будьте очень осторожны с позиционированием CSS, которое полагается на то, что вещи всегда остаются одного и того же размера. Если эти элементы содержат текст, они не будут иметь тот же размер, и вам нужно будет вернуться и исправить свои дизайны.
Если вы используете символьные типы в своих таблицах sql, убедитесь, что любой из тех, которые могут получать международный ввод, являются unicode (nchar, nvarchar, ntext). В этом отношении я бы просто стандартизировал использование версий Unicode.
Если вы создаете SQL-запросы динамически, убедитесь, что вы включили префикс N перед любым цитируемым текстом, если есть вероятность, что текст может быть Unicode. Если вы в конечном итоге помещаете мусор в таблицу SQL, проверьте, есть ли он там.
Убедитесь, что на всех ваших веб-страницах однозначно указано, что они находятся в формате Unicode. См. Статью Джоэла, упомянутую выше.
Для этого проекта вы собираетесь много использовать файлы ресурсов. Это хорошо - ASP.NET 2.0 отлично поддерживает это. Вы захотите заглянуть в папку App_LocalResources и App_GlobalResources, а также в GetLocalResourceObject, GetGlobalResourceObject и концепцию meta: resourceKey. В главе 30 Professional ASP.NET 2.0 есть отличные содержание по этому поводу. В версии 3.5 книги тоже может быть хороший контент, но он мне не принадлежит.
Подумайте о шрифтах. Многие из стандартных шрифтов, которые вы, возможно, захотите использовать, не поддерживают Unicode. Мне всегда везло с Arial Unicode MS, MS Gothic, MS Mincho. Однако я не уверен, насколько они кроссплатформенны. Также обратите внимание, что не все шрифты поддерживают все определения символов Юникода. Опять тестируем, тестируем, тестируем.
Начните думать сейчас о том, как вы собираетесь получить переводы в эту систему. Поговорите со своим поставщиком переводов о том, как они хотят, чтобы данные передавались туда и обратно для перевода. Подумайте о том, что через ваши локальные файлы ресурсов вы, вероятно, будете повторять в системе некоторые часто используемые строки. Вы нормализуете их в глобальные файлы ресурсов или у вас есть какой-то уровень базы данных, где создается только одна копия каждого используемого текста. В нашем недавнем проекте мы использовали файлы ресурсов, которые были созданы из таблицы базы данных, содержащей все переводы и исходную английскую версию файлов ресурсов.
Контрольная работа. Обычно я буду тестировать на немецком, польском и азиатском языках (японском, китайском, корейском). Немецкий и польский многословны и почти гарантированно растягивают текстовые области, азиатские языки используют совершенно другой набор символов, который проверяет вашу поддержку Unicode.
Узнайте о пространстве имен System.Globalization:
Также хорошей книгой является Интернационализация NET: Руководство разработчика по созданию Глобальные Windows и веб-приложения
Было бы неплохо немного обновить Юникоды, если вы ориентируетесь на другие культуры и языки.
Это сложная проблема. Я живу в Канаде, поэтому многоязычие - большая проблема. За все годы разработки программного обеспечения я никогда не видел решения, которое мне нравилось бы. Я видел много решений, которые работали и выполнили свою работу, но они всегда казались мне большой трепой. Я бы пошел с @harriyott и убедился, что ни одна из ваших строк на самом деле не находится в коде. Файл ресурсов хорошо подходит для настольных приложений. Однако в ASP.Net я бы рекомендовал использовать базу данных. У @John Christensen также есть несколько хороших указателей.
Убедитесь, что при компиляции включен анализ кода, и обратите внимание на глобализацию предупреждения, которые он вам дает. Храните данные в неизменном формате (CultureInfo.InvariantCulture), пока вы не отобразите его пользователю (затем используйте CultureInfo.CurrentCulture).
Я бы серьезно подумал о прочтении следующей статьи проекта кода:
Глобализация и локализация демистифицированы в ASP.NET 2.0
Он охватывает все: от культур и локалей, настройки текущей культуры потоков, файлов ресурсов, кодировок и т. Д.
И, конечно же, он загружен красивыми картинками и примерами :-). Удачи!
Я бы посоветовал:
- Поместите все строки в базу данных или файлы ресурсов.
- Оставьте дополнительное место для переведенного текста, так как некоторые (например, на немецком языке) многословны.