2009-10-14 3 views
4

Je suis sur le point de commencer à écrire un outil dans .NET 2.0 (C#), et l'outil doit être re-brandable pour être vendu à d'autres sociétés. Nous compilerons l'outil en interne, avec les ressources de l'autre entreprise, afin qu'ils n'obtiennent pas la source, seulement la sortie générée. Comme le re-branding utilisera la même langue par défaut, comment gérez-vous plusieurs ressources pour le même jeu de langues sans faire quelque chose de louche comme l'échange de fichiers resx avec des scripts au moment de la construction, ou quelque chose de plus malicieux? prone) comme utiliser en-US pour le client A, en-CA pour le client B, en-GB pour le client C, etc.Rebranding Application Resources dans .NET 2.0

Répondre

1

L'itinéraire que j'ai décidé de suivre est d'avoir une classe TextOverrides. Cette classe expose un tas de propriétés telles que:

public static string ProductName 
{ 
    get 
    { 
    #if <companyNameA> 
     return Properties.Resources.ProductName_CompanyNameA; 
    #elif <companyNameB> 
     return Properties.Resources.ProductName_CompanyNameB; 
    #else 
     return Properties.Resources.ProductName; 
    #endif 
    } 
} 

Cela n'est possible si le nombre d'éléments de texte outrepassée reste faible.

3

Nous avons trouvé sur notre projet que la route la plus simple était d'avoir l'image de marque dans son propre DLL qui est chargé ensuite de façon dynamique par la réflexion. Si nécessaire, il existe deux approches évidentes pour localisant toute marque:

  1. Remplacer la DLL de marque avec un autre qui a été localisé
  2. Utilisez la technique d'assemblage par satellite supporté par .NET

Option 1 est beaucoup plus facile, à mon avis, mais les deux sont réalisables. Bien sûr, il existe d'autres approches de localisation.

Questions connexes