Что мне нужно знать для глобализации приложения asp.net? - PullRequest
14 голосов
/ 12 сентября 2008

Я пишу приложение asp.net, которое нужно будет локализовать в нескольких регионах, кроме Северной Америки. Что мне нужно сделать, чтобы подготовиться к этой глобализации? Каковы ваши лучшие 1-2 ресурса для обучения написанию готовых приложений для всего мира.

Ответы [ 7 ]

23 голосов
/ 12 сентября 2008

Несколько вещей, которые я изучил:

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

  • Будьте очень осторожны с позиционированием 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. Опять тест, тест, тест.

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

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

3 голосов
/ 12 сентября 2008

Узнайте о пространстве имен System.Globalization:

System.Globalization

Также хорошей книгой является NET Internationalization: Руководство разработчика по созданию глобальных Windows и веб-приложений

2 голосов
/ 12 сентября 2008

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

2 голосов
/ 12 сентября 2008

Это сложная проблема. Я живу в Канаде, поэтому многоязычие - большая проблема. За все годы разработки программного обеспечения я никогда не видел решения, которое мне нравилось. Я видел много решений, которые работали, и выполнили свою работу, но они всегда чувствовали себя большим препятствием. Я хотел бы пойти с @harriyott и убедиться, что ни одна из ваших строк на самом деле в коде. Файл ресурсов хорошо работает для настольных приложений. Однако в ASP.Net я бы рекомендовал использовать базу данных. @ Джон Кристенсен также имеет несколько хороших указателей.

2 голосов
/ 12 сентября 2008
1 голос
/ 13 сентября 2008

Я бы серьезно подумал о прочтении следующей статьи проекта кода:

Глобализация и локализация демистифицированы в ASP.NET 2.0

Она охватывает все: от культур и локалей, настройки потоков, текущей культуры, файлов ресурсов, кодировок, назовите это!

И, конечно, он загружен красивыми картинками и примерами :-). Удачи!

0 голосов
/ 12 сентября 2008

Я бы предложил:

  1. Поместите все строки в базу данных или файлы ресурсов.
  2. Оставьте дополнительное место для переведенного текста, так как некоторые (например, немецкий) являются более словесными.
...