Fichier .resx invariant - c #, resx

J'ai une application localisable c #. Il y a un fichier Localization.resx et un dossier Localization.de.resx. le Localization.resx contient la langue invariante - c'est l'anglais.

L'utilisateur doit pouvoir sélectionner sa langue préférée. J'ai trouvé la première réponse à cette question Méthode programmatique pour obtenir toutes les langues disponibles (dans les assemblées satellites) pour déterminer quelles cultures sont disponibles. Je vois qu'il y a de et InvariantCulture disponible.

Mais je ne peux pas offrir InvariantCulture. Un utilisateur ne saura pas ce que c en.

Je ne peux pas renommer Localization.resx à Localization.en.resx, puisque ce fichier est nécessaire pour créer la classe contenant les ressources.

Je pourrais copier Localization.resx à Localization.en.resx, mais alors je devrais toujours garder ces fichiers cohérents et aussi avoir besoin de supprimer InvariantCulture des cultures disponibles.

Je pourrais écrire un convertisseur qui visualise le la InvariantCulture comme en. Mais ceci, je pense, est un bidouillage laid.

Toute aide s'il vous plaît?

Réponses:

3 pour la réponse № 1

Vous pouvez utiliser le NeutralResourcesLanguageAttribute attribut assembly pour définir le langage neutre.

[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]

Cela permet également de "se replier" sur d'autres satellites si une clé n'est pas trouvée dans une ressource (si vous demandez une clé qui n'est pas définie dans resource.en-US.resx, il "cherchera dans resource.en.resx et enfin dans resource.resx)

Je ne suis pas sûr de savoir comment vous listez les noms de langue, mais au cas où cela donnerait InvariantCulture, vous pourriez avoir un vide Localization.en.resxet avec cette méthode, il trouvera toutes les ressources manquantes dans Localization.resx, donc pas besoin de les synchroniser.


2 pour la réponse № 2

Dans l'interface utilisateur, nous indiquons à l'utilisateur ce que "Par défaut"l'application a la localisation anglaise. Et proposez de le changer en affichant toutes les options disponibles sauf Invariant. En outre, écrire un convertisseur qui visualisera l’InvariantCulture comme étant en fr ne sera pas un vilain stratagème.