2017-08-15 2 views
1

J'ai une application mvc asp.net qui utilise des fichiers Resx pour différentes langues. Les fichiers existent dans le projet Web et dans une autre couche de service.Comment personnaliser les fichiers de ressources .net pour différents clients?

Je veux maintenant personnaliser certaines étiquettes pour un client spécifique (ils ont des comptes et se connecter à notre application web). Est-il possible d'archiver avec moins de changement de code?

Avoir atteint certains articles comme ci-dessous, mais le passage à utiliser la base de données semble nécessiter beaucoup de travail.

https://stackoverflow.com/a/19277221/4903729 ou https://msdn.microsoft.com/en-us/library/aa905797.aspx ou http://afana.me/archive/2013/11/01/aspnet-mvc-internationalization-store-strings-in-database-or-xml.aspx/

Semblent en utilisant un fournisseur de ressources personnalisé pour charger resx à base de clients pourrait aider, mais la difficulté je pense est:

  • comment passer customerID au fournisseur de ressources.
  • comment charger le fichier dll de ressources à partir du répertoire personnalisé comme \ bin \ de \ * Customer1 .resources.dll ou \ bin \ it \ Customer1 * .resources.dll

Merci pour toute suggestion!

+0

_n'avons aucune idée de passer customerID au fournisseur de ressources_ probablement vous devez utiliser la propriété UserPrincipal dans vos contrôleurs –

+0

Oui merci @MahmoudHboubati pour le signaler. Maintenant, je vais voir comment charger la ressource spécifique au client ... – hazjack

Répondre

1

Alors, j'ai une solution qui marche! (basé sur le message de Afana), le changement de code devrait être très inférieur (créer des fichiers XML, exécutez ResourceBuilder.exe).

Ce que je ne personnalise est juste un peu:

  • Modifier le ResourceBuilder pour générer toutes les clés dans une classe partielle
  • créer manuellement Resources.provider.cs qui instancie XmlResourceProvider pour chaque client ou accepte des ressources XML par défaut

enter image description here