我使用Alex Adamyan 在此博客上找到的代码创建了一个本地化的 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:
- 主页.aspx.resx;
- 主页.aspx.tl.resx
- 主页.aspx.tl-PH.resx
- 主页.aspx.de.resx
当我构建时,我在我的 bin 目录下获得了三个适当命名的目录,每个目录都有一个适当命名的 dll。
因此,当我访问我的网站主页http://localhost:1907时 ,我会得到默认(英文)语言字符串。
当我访问德语 (de) 主页http://localhost:1907/de时,我得到了该站点的德语版本。
当我转到他加禄语版本http://localhost:1907/tl或http://localhost:1907/tl-PH时,我得到的是英文版而不是他加禄语版本。
我在资源获取代码中放置了断点,并确认当前线程的文化和 UI 文化已正确设置为他加禄语文化,并且他加禄语是传递给 resourceManager.GetString(key,culture) 的文化。
有什么想法吗?我没有正确地创造我的文化吗?