Ho creato un sito Web MVC localizzato utilizzando il codice trovato su this blog by Alex Adamyan.ResourceManager che non seleziona il set di risorse corretto quando si utilizza cultura personalizzata
Questo funziona perfettamente se utilizzo una cultura esistente. Tuttavia, sto provando a localizzare per Tagalog (tl o tl-PH). Windows non ha questa cultura costruito in modo ho creato uno (ho provato sia TL e TL-PH) secondo il codice qui sotto:
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();
}
Ho anche quattro file di risorse sul mio sito di prova si trova in ~/Visualizzazioni/Home/Risorse:
- Home.aspx.resx;
- Home.aspx.tl.resx
- Home.aspx.tl-PH.resx
- Home.aspx.de.resx
Quando costruisco, ottengo tre directory nome appropriato sotto la mia directory bin, ognuna con una dll opportunamente chiamata.
Così quando vado alla home page del mio sito Web http://localhost:1907 Ottengo le stringhe di lingua (inglese) predefinite.
Quando vado in tedesco (de) home page http://localhost:1907/de Ottengo la versione tedesca del sito.
Quando passo alle versioni tagalog http://localhost:1907/tl o http://localhost:1907/tl-PH, ottengo la versione inglese anziché la versione Tagalog.
Ho inserito i punti di interruzione nel codice di recupero delle risorse e ho confermato che la cultura del thread corrente e la cultura dell'interfaccia utente sono correttamente impostate sulla cultura Tagalog e che Tagalog è la cultura passata a resourceManager.GetString (chiave, cultura).
Qualche idea? Non ho creato correttamente le mie culture?
cultureBuilder2.LoadDataFromCultureInfo (new CultureInfo ("en-US")); cultureBuilder2.LoadDataFromRegionInfo (new RegionInfo ("US")); it-IT? –
@Avatar: carica solo le impostazioni (come separatori decimali e di raggruppamento e/o formati) dalla cultura inglese degli Stati Uniti. Non dovrebbe avere alcun effetto sul caricamento delle risorse appropriate ... –
Sono abbastanza sicuro di aver creato correttamente la cultura personalizzata. L'unica preoccupazione che ho è il codice paese ISO 3166 di tre lettere, che a quanto pare è solo due lettere. Comunque non dovrebbe importare. –