Имам localizable c # заявление. Има файл Localization.resx
и файл Localization.de.resx
, Най- Localization.resx
съдържа инвариантен език - това е английски.
Потребителят трябва да може да избере предпочитания от него език. Намерих първия отговор на този въпрос Програматичен начин за получаване на всички налични езици (в сателитни асемблени) за да се определи кои култури са на разположение. Виждам, че има de
и InvariantCulture
на разположение.
Но не мога да предложа InvariantCulture. Потребителят няма да знае какво е това, а трябва да предложа en
.
Не мога да преименувам Localization.resx
да се Localization.en.resx
, тъй като този файл е необходим за създаване на класа, в която се съхраняват ресурсите.
Мога да копирам Localization.resx
да се Localization.en.resx
, но тогава винаги ще трябва да поддържам тези файлове съвместими и също така трябва да ги премахна InvariantCulture
от наличните култури.
Мога да напиша конвертор, който визуализира InvariantCulture
като en
, Но това, мисля, е грозна рана.
Всяка помощ моля?
Отговори:
3 за отговор № 1Можете да използвате NeutralResourcesLanguageAttribute монтажен атрибут за задаване на неутрален език.
[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]
Това също така го прави "резервен" за други спътници, ако ключът не е намерен в един ресурс (ако поискате ключ, който не е определен в resource.en-US.resx
, той ще търси в resource.en.resx
и накрая в resource.resx
)
Не съм сигурен как изброявате езиковите имена, но в случай, че това все още е дадено InvariantCulture
, може да има празен Localization.en.resx
, и с този метод "ще намери всички липсващи ресурси в Localization.resx
, така че няма нужда да ги синхронизирате.
2 за отговор № 2
В потребителския интерфейс позволяваме на потребителя да знае какво "по подразбиране"приложението има локализация на английски език. И предлагайте да го промените, като покажете всички налични опции, освен Invariant. Също така няма да е грозна хак да напишем конвертор, който визуализира InvariantCulture като en.