Иерархическая организация ресурсов для локализации
В Visual Studio локализованные ресурсы (такие данные, как строки и изображения, принадлежащие к определенной языковой и региональной среде) хранятся в отдельных файлах и загружаются при выборе соответствующих языковых и региональных параметров пользовательского интерфейса. Для понимания того как происходит загрузка локализованных ресурсов, удобно представлять их себе в виде иерархии.
Типы ресурсов в иерархии
Во главе иерархии находятся ресурсы возврата для языковых и региональных параметров по умолчанию, например английской ("en"). Это единственные ресурсы, у которых нет своего собственного файла; они хранятся в основной сборке.
За ресурсами возврата следуют ресурсы для нейтральных языковых и региональных параметров. Нейтральные языковые и региональные параметры связываются с языком, а не со страной или регионом. Примером нейтральных языковых и региональных параметров является французская — "fr" (обратите внимание, что резервные ресурсы тоже относятся к нейтральным языковым и региональным параметрам, хотя и особого вида).
Под этими ресурсами в иерархии находятся ресурсы определенных языковых и региональных параметров. Определенные языковые и региональные параметры связываются с языком и страной или регионом. Примером таких языковых и региональных параметров является французский язык (Канада) ("fr-CA").
Если приложение пытается загрузить какие-либо локализованные ресурсы, например строку, и не находит их, оно ищет их выше в иерархии до тех пор, пока не найдет файл ресурсов, содержащий нужный ресурс.
Оптимальный способ хранения ресурсов должен делать их как можно более общими. Это означает, что локализованные строки, изображения и прочее следует по возможности хранить в файлах ресурсов для нейтральных, а не определенных языковых и региональных параметров. Например, если имеются ресурсы для французского языка (Бельгия) ("fr-BE"), а непосредственно выше в иерархии находятся резервные ресурсы на английском языке, при работе приложения в системе, настроенной на канадский французский, могут возникнуть проблемы. Система начнет искать вспомогательную сборку для "fr-CA", не найдет ее и вместо французских ресурсов загрузит основную сборку с резервными ресурсами на английском языке. Эта нежелательная ситуация проиллюстрирована на рисунке.
Если следовать рекомендованной практике и включить максимально возможное число ресурсов в нейтральный файл ресурсов для языковых и региональных параметров "fr", то жители Канады увидят не те ресурсы, которые относятся к языковым и региональным параметрам "fr-BE", а строки на французском языке. Этот оптимальный сценарий показан на следующем рисунке.
См. также
Задачи
Практическое руководство. Установка значений Culture и UICulture для глобализации форм Windows Forms
Основные понятия
Языки нейтральных ресурсов для локализации
Безопасность и локализованные вспомогательные сборки