2009-06-25 9 views
1

Ceci est lié à ma première poste aujourd'hui: link textDistributing localisée WinForms app

Alors maintenant, j'ai démo WinForms application avec deux différents, l'un Localisations anglais, espagnol. Maintenant, disons que j'ai une grosse application, disons qu'elle prend en charge les localisations dans 15 langues différentes. Dans la publication précédente, il a été suggéré que j'ajoute quelques lignes lorsque le formulaire est initialisé pour définir la localisation. Actuellement, j'utilise un clic pour déployer mon application. J'essaie de trouver un moyen de déployer sans avoir 15 différentes saveurs de l'application. Existe-t-il un moyen d'examiner la localisation de l'utilisateur actuel et s'il correspond à l'une des langues dans lesquelles j'ai écrit mes écrans pour l'utiliser, sinon utiliser la valeur par défaut?

Répondre

2

Le système de localisation intégré du framework .NET gère déjà cette situation de repli. Vous installez simplement les DLL satellites qui localisent vos formulaires et vos contrôles, puis, si la bonne correspond aux paramètres régionaux de l'utilisateur, .NET l'utilisera, sinon il se replacera dans les paramètres régionaux parent correspondants. Par exemple, si la langue par défaut de l'application est en États-Unis, mais vous avez fourni une traduction en-GB et une en traduction, le repli est:

en-GB-> en-> fr-FR

-à-dire quand en-GB n'est pas disponible, il recherche en, et si ce n'est pas là, il utilise la valeur par défaut, en États-Unis.

Par conséquent, lors de la distribution, vous pouvez distribuer seulement votre application principale en États-Unis, puis fournir DLLs satellites supplémentaires pour les langues particulières comme, par exemple, des modules linguistiques. Il y a un attribut, SatelliteContractVersionAttribute, qui permet à vos principaux ensembles d'application pour indiquer les versions satellites qu'il veut, ce qui permet à vos Localisations de travailler dans les versions d'assemblage (par exemple si vos versions d'assemblage incrémenter avec la construction - vous pouvez ignorer efficacement le numéro de build).

MSDN a beaucoup d'informations sur la mondialisation et la localisation et comment cela fonctionne, même dans le contexte du déploiement ClickOnce. Vérifiez le Globalizing Windows Forms section. Bien sûr, si vous avez choisi de ne pas compter sur le système .NET pour prendre en charge les produits globalisés, vous devrez alors trouver quelque chose qui corresponde à la direction que vous avez choisie.

+0

Jeff, je devais ajouter ce qui suit pour obtenir mon application pour ramasser les paramètres régionaux en cours. Est-ce que ça a l'air ok? Une fois cela fait, mon application se charge correctement lorsque je change mes standards et formats. On dirait que je suis tout fixé à partir de votre message. String cultureName = System.Globalization.CultureInfo.CurrentCulture.Name; System.Globalization.CultureInfo myCI = new System.Globalization.CultureInfo (nomCulture, false); System.Threading.Thread.CurrentThread.CurrentUICulture = myCI; System.Threading.Thread.CurrentThread.CurrentCulture = myCI; –

+0

Soyez prudent lorsque vous modifiez CurrentUICulture. Cela ne concerne pas les ressources et vous devriez généralement le laisser tranquille car vous pourriez casser les paramètres personnalisés qu'un utilisateur a mis en place pour la mise en forme des nombres, etc. –