2009-02-25 10 views
0

Existe-t-il un moyen d'obtenir les traductions de ressources disponibles d'une DLL .net? Notre logiciel est en cours de traduction dans différentes langues, et je voudrais donner à l'utilisateur le choix de la langue dans laquelle le logiciel est, bien que je voudrais seulement les laisser choisir seulement entre les langues dans lesquelles il a été traduit.Comment obtenir les traductions disponibles depuis un DLL

Répondre

1

Je viens de recevoir un problème similaire donc juste pour référence future.

Pour mes traductions de logiciels sont dans le dossier du programme, chacun sous leur propre sous-dossier nommé après le nom de la culture. Code explique tout:

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; 
       } 
      } 
     } 
    } 

Il annonce une exception manutention aérienne, mais combien d'utilisateurs vont créer des dossiers personnalisés dans le répertoire d'installation avec la ressource faux nom exactement comme fichier de localisation ?? : P

+0

Déjà élaboré une solution similaire, mais j'ai oublié de le poster ici, alors félicitations, je vous donne la réponse: D – Stormenet

1

Vous devez donc être en mesure d'obtenir la culture de la DLL de base, puis d'énumérer toutes les DLL satellites?

La première partie est assez facile (il suffit d'obtenir l'attribut de niveau d'assemblage). Pour ce dernier, il ne semble pas y avoir d'assistant sur la classe ResourceManager, ce qui signifie que vous devrez émuler son machanisme de sondage (y compris, potentiellement, tous les remplacements disponibles avec les attributs et le fichier .config). Une alternative est de construire la liste à la construction ou à l'installation (ce qui fonctionnerait mieux si d'autres langages peuvent être ajoutés plus tard), crée une liste pour le fichier .config.

Questions connexes