Хочу поделиться некоторыми мыслями по поводу глобализации. Разумеется не о глобализации как «процессе всемирной экономической, политической и культурной интеграции» ((с) Wikipedia), а о глобализации приложений :) Недавно обсуждали это на работе, решил поделиться и с вами своими соображениями на этот счет.
Почитать о том, что это такое, какие есть best practices и технологии можно в поиске по MSDN. Если коротко, глобализация – это процесс проектирования и реализации ПО, предназначенного для использования локализованного UI пользователями разных регионов мира. В этом контексте локализация – это процесс перевода ресурсов приложения для всех регионов, которые поддерживает приложение. Для простоты можно считать регионы странами, хотя это не совсем так.
Теперь о моем отношении к этому вопросу.
Вряд ли я открою Америку, если скажу, что практически для любого приложение, написанного сначала только для использования пользователями одного региона, потенциально может потребоваться локализация.
Вторая давно известная истина – нетривиальное приложение, изначально спроектированное и разработанное без учета последующей локализации, будет непросто локализовать, когда в этом возникнет потребность.
Хотя бы по этим двум причинам, стоит перед разработкой подготовить плацдарм для последующей локализации. Разумеется, можно подойти к этому с разной степенью тщательности. Например, можно заранее сказать, что иероглифические языки поддерживаться не будут и этим немного упростить себе жизнь (хотя в наши непростые дни этот рынок не стоит сбрасывать со счетов ;)).
Помимо этого у меня есть два соображения по поводу пользы использования хотя бы строковых ресурсов даже без локализации:
- Когда строковые ресурсы не «внедрены» в web-приложение, а поставляются в виде отдельных файлов, их можно оперативно скорректировать на рабочем сервере без необходимости полного деплоймента и перезапуска приложения.
- Иногда полезно бывает получить полный список сообщений в системе для review у заказчика, а получить их из одного или нескольких XML-файлов на порядок проще, чем «собирать» их по всему приложению.
Кстати, в Visual Studio есть (теперь, уже встроенная) поддержка генерации классов для строковых ресурсов. Хотя в моей компании все-таки используются внешние ресурсы в своем формате (тоже с генерируемыми классами).