Что мне нужно знать для глобализации приложения asp.net?

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


person Larry Foulkrod    schedule 12.09.2008    source источник


Ответы (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.

person John Christensen    schedule 12.09.2008
comment
В качестве последнего пункта можно рассмотреть возможность использования псевдолокализации (en.wikipedia.org/wiki/Pseudolocalization ). Скотт Хансельман разработал инструмент (hanselman.com/blog/), который генерирует файл псевдоресурсов . - person gsk; 28.12.2012

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

System.Globalization

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

person DaveK    schedule 12.09.2008


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

person Kibbee    schedule 12.09.2008

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

person bdukes    schedule 12.09.2008

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

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

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

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

person Tyler    schedule 13.09.2008

Я бы посоветовал:

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