Как получить доступные переводы из dll - PullRequest
1 голос
/ 25 февраля 2009

Есть ли способ получить доступные переводы ресурсов .net dll?

Наше программное обеспечение переводится на несколько разных языков, и я хотел бы дать пользователю выбор, на каком языке это программное обеспечение, хотя я хотел бы только позволить им выбирать только те языки, на которые оно было переведено.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2009

У меня просто похожая проблема, так что просто на будущее.

Для моего программного обеспечения переводы находятся в папке программы, каждая в своей собственной подпапке, названной в честь названия культуры. Код объясняет все это:

    private void SettingsForm_Load(object sender, EventArgs e)
    {
   // load default language to the list
        languageList.Add(new Language("English", "en"));
        string fileName = "myProgram.resources.dll";

   // load other languages available in the folder
        DirectoryInfo di = new DirectoryInfo(Application.StartupPath);
        foreach (DirectoryInfo dir in di.GetDirectories())
        {
            if (File.Exists(dir.FullName + "\\" + fileName))
            {
                try
                {
                    CultureInfo ci = new CultureInfo(dir.Name);
                    languageList.Add(new Language(ci.NativeName, ci.Name));
                }
                catch
                {
                    // whatever happens just don't load the language and proceed ;)
                    continue;
                }
            }
        }
    }

Это объявление о некоторых исключениях, связанных с обработкой исключений, но сколько пользователей создаст пользовательские папки в каталоге установки с поддельным ресурсом, названным в точности как файл локализации ?? : P

1 голос
/ 25 февраля 2009

То есть вам нужно получить культуру базовой библиотеки DLL, а затем перечислить все библиотеки спутников?

Первая часть достаточно проста (просто получите атрибут уровня сборки).

Для последнего, похоже, нет помощника для класса ResourceManager, что означает, что вам нужно будет эмулировать его пробный механизм (включая, возможно, все переопределения, доступные с атрибутами и файлом .config).

Альтернативой является создание списка при сборке или установке (последний будет работать лучше, если позже могут быть добавлены дополнительные языки), создает список для файла .config.

...