J'ai créé un site Web MVC localisé en utilisant le code trouvé sur this blog by Alex Adamyan.ResourceManager ne sélectionne pas le jeu de ressources correct lors de l'utilisation de la culture personnalisée
Cela fonctionne très bien si j'utilise une culture existante. Cependant, j'essaie de localiser pour Tagalog (tl ou tl-PH). Windows n'a pas cette culture construit donc j'ai créé un (j'ai essayé les deux tl et tl-PH) selon le code ci-dessous:
public static void CreateCustomCultures()
{
var cultureBuilder = new CultureAndRegionInfoBuilder(
"tl", CultureAndRegionModifiers.Neutral);
cultureBuilder.LoadDataFromCultureInfo(new CultureInfo("en-US"));
cultureBuilder.LoadDataFromRegionInfo(new RegionInfo("US"));
cultureBuilder.IsMetric = true;
cultureBuilder.CultureEnglishName = "Tagalog";
cultureBuilder.CultureNativeName = "Tagalog";
cultureBuilder.RegionEnglishName = "Tagalog";
cultureBuilder.RegionNativeName = "Tagalog";
cultureBuilder.TwoLetterISOLanguageName = "tl";
cultureBuilder.ThreeLetterISORegionName = "PH";
cultureBuilder.Register();
var cultureBuilder2 = new CultureAndRegionInfoBuilder(
"tl-PH", CultureAndRegionModifiers.None);
cultureBuilder2.LoadDataFromCultureInfo(new CultureInfo("en-US"));
cultureBuilder2.LoadDataFromRegionInfo(new RegionInfo("US"));
cultureBuilder2.IsMetric = true;
cultureBuilder2.CultureEnglishName = "Tagalog";
cultureBuilder2.CultureNativeName = "Tagalog";
cultureBuilder2.RegionEnglishName = "Tagalog";
cultureBuilder2.RegionNativeName = "Tagalog";
cultureBuilder2.TwoLetterISOLanguageName = "tl";
cultureBuilder2.ThreeLetterISORegionName = "PH";
cultureBuilder2.Register();
}
J'ai également quatre fichiers de ressources sur mon site de test situé dans ~/Vues/Accueil/Ressources:
- Accueil.aspx.resx;
- Home.aspx.tl.resx
- Home.aspx.tl-PH.resx
- Home.aspx.de.resx
Quand je construis, je reçois trois répertoires nommés de manière appropriée sous mon répertoire bin, chacun avec une DLL nommée de manière appropriée. Donc quand je vais à la page d'accueil de mon site Web http://localhost:1907 Je reçois les chaînes de langue par défaut (anglais).
Quand je vais à la page d'accueil allemande (de) http://localhost:1907/de Je reçois la version allemande du site.
Quand je vais dans les versions de tagalog http://localhost:1907/tl ou http://localhost:1907/tl-PH, j'obtiens la version anglaise à la place de la version Tagalog. J'ai placé des points d'arrêt dans le code de récupération de ressources et ai confirmé que la culture de thread et la culture d'interface utilisateur sont correctement définies sur la culture Tagalog et que Tagalog est la culture transmise à resourceManager.GetString (clé, culture).
Des pensées? N'ai-je pas créé mes cultures correctement?
cultureBuilder2.LoadDataFromCultureInfo (nouveau CultureInfo ("en-US")); cultureBuilder2.LoadDataFromRegionInfo (new RegionInfo ("US")); fr-FR? –
@Avatar: Il charge simplement les paramètres (comme les séparateurs décimaux et de regroupement et/ou les formats) de la culture anglo-saxonne. Cela ne devrait avoir aucun effet sur le chargement des ressources appropriées ... –
Je suis à peu près sûr que vous avez créé votre culture personnalisée correctement. La seule préoccupation que j'ai est votre code de pays ISO 3166 à trois lettres, qui est apparemment seulement deux lettres. Cependant, cela ne devrait pas avoir d'importance. –