2009-03-24 17 views
2

J'ai créé une application Web dans asp.net, qui utilise des fichiers de ressources pour prendre en charge plusieurs langues. Le problème que j'ai est que je peux seulement ajouter un nouveau fichier de langue dans Visual Studio, et je dois reconstruire l'ensemble de l'application pour avoir une nouvelle langue incluse. Après avoir cherché sur le net, j'ai découvert que la compilation des fichiers de ressources peut être faite dans le compilateur .net. Je l'ai utilisé les commandes suivantes:Problème lors de la compilation du fichier de ressources dans la bibliothèque

resgen.exe/compiler langfile.en.resx

al.exe /out:en\App_GlobalResources.resources.dll/culture: en/embedresource: langfile .FR .resources

Le fichier est copié dans le dossier du site Web mais il ne fonctionne pas. Je veux dire, lorsque je sélectionne la nouvelle langue à partir de la page Web, les chaînes sont chargées à partir du fichier de ressources par défaut. Si je crée le fichier de ressources dans VS, cela fonctionne bien. J'ai vérifié la taille des deux fichiers dll, celle générée par VS et celle compilée par moi-même, et ils ont la même taille mais celle compilée ne fonctionne pas. Je ne peux que penser que peut-être je devrais utiliser d'autres paramètres dans les commandes ci-dessus, mais je ne sais pas vraiment.

Toute aide est vraiment appréciée.

+0

Est-il obligatoire que vous comptiez les ressources dans l'Assemblée? – RobS

Répondre

3

Vous pouvez obtenir ce que vous voulez en écrivant votre propre générateur d'expression au lieu d'utiliser la version des ressources intégrées et extraire les informations d'une base de données ou de fichiers XML. Fondamentalement, vous écrivez votre propre classe héritant de System.Web.Compilation.ExpressionBuilder puis l'enregistrer dans web.config comme ceci:

<compilation> 
    <expressionBuilders> 
    <add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/> 
    </expressionBuilders> 
</compilation> 

et vous pouvez référencer comme des ressources normales:

<%$ CustomResources:Section, Key %> 

Vous pouvez trouver quelques articles sur ce here et here.