Абсолютно и жестоко минимизируйте количество изображений, содержащих текст. Это сделает вашу жизнь на миллиард процентов проще, поскольку вам не нужно будет получать новый набор изображений для каждого чертового языка.
Будьте очень осторожны с позиционированием 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. Вообще говоря, я буду тестировать на немецком, польском и азиатском языках (японский, китайский, корейский). Немецкий и польский являются многословными и почти гарантированно растягивают текстовые области, азиатские языки используют совершенно другой набор символов, который проверяет вашу поддержку юникода.