2008-09-26 8 views

Répondre

29

Utilisez ResourceManager. GetResourceSet() pour une liste de toutes les ressources pour une culture donnée. Le ResourceSet retourné implémente IEnumerable (vous pouvez utiliser foreach).


Pour répondre à la question de Nico: vous pouvez compter les éléments d'un IEnumerable en jetant à la IEnumerable<object> générique et utiliser la méthode d'extension Enumerable.Count<T>(), ce qui est nouveau en C# 3.5:

using System.Linq; 

... 

var resourceSet = resourceManager.GetResourceSet(..); 
var count = resSet.Cast<object>().Count(); 
+0

comment diable puis-je obtenir un compte pour cela? – bevacqua

+0

@Nico: IEnumerable n'implémente pas une propriété Count mais vous pouvez itérer les entrées et les compter. Vous pouvez également convertir le RessourceSet en IEnumerable et utiliser la méthode d'extension Count() qui est nouvelle dans C# 3.5: http://msdn.microsoft.com/en-us/library/system.linq.enumerable.count.aspx – VVS

+0

Existe-t-il un moyen de parcourir toutes les cultures disponibles? J'essaie d'écrire un template T4 qui génère des fichiers json de localisation à partir de fichiers resx. – Santhos

1

Je me demande Pourquoi voudriez-vous parcourir toutes les ressources?

Quoi qu'il en soit, ResourceManager doit être instancié en lui donnant un Type ou le nom de base où rechercher des ressources. Ensuite, vous serez en mesure de récupérer un ResourceSet mais pour un donné CultureInfo, ergo si vous voulez obtenir toutes les ressources pour un `ResourceManager

+0

Nous avons une utilisation pour cela où nous permettons à un administrateur client de remplacer les littéraux de langue dans la base de données, nous avons donc besoin d'une page pour montrer toutes les ressources qu'ils peuvent remplacer. –

Questions connexes