Я создал локализованный веб-сайт MVC, используя код, найденный в этом блоге Алексом Адамяном .
Это прекрасно работает, если я использую существующую культуру. Тем не менее, я пытаюсь локализовать для тагальского (tl или tl-PH). В Windows нет встроенной культуры, поэтому я создал ее (я пробовал tl и tl-PH) в соответствии с кодом ниже:
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();
}
У меня также есть четыре файла ресурсов на моем тестовом сайте, расположенном в ~ / Views / Home / Resources:
- Home.aspx.resx;
- Home.aspx.tl.resx
- Home.aspx.tl-PH.resx
- Home.aspx.de.resx
При сборке я получаю три каталога с соответствующим именем в каталоге bin, каждый с соответствующим именем dll.
Поэтому, когда я захожу на домашнюю страницу своего веб-сайта http://localhost:1907, я получаю строки по умолчанию (на английском языке).
Когда я захожу на немецкую (де) домашнюю страницу http://localhost:1907/de, я получаю немецкую версию сайта.
Когда я перехожу к тагальской версии http://localhost:1907/tl или http://localhost:1907/tl-PH,, я получаю английскую версию вместо тагальской версии.
Я поместил точки останова в код выборки ресурсов и подтвердил, что культура текущего потока и культура интерфейса пользователя правильно установлены на культуру Tagalog, и что Tagalog - это культура, передаваемая в resourceManager.GetString (key, culture).
Есть мысли? Разве я не создал свои культуры правильно?