Ken*_*nic 10 .net globalization localization resourcemanager asp.net-mvc-2
我使用Alex Adamyan在此博客上找到的代码创建了一个本地化的MVC网站.
如果我使用现有的文化,这很有效.但是,我正在尝试本地化Tagalog(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();
}
Run Code Online (Sandbox Code Playgroud)
我的测试站点上还有四个资源文件位于〜/ Views/Home/Resources中:
当我构建时,我在bin目录下得到三个适当命名的目录,每个目录都有一个适当命名的dll.
所以,当我访问我的网站主页http:// localhost:1907时, 我得到了默认(英语)语言字符串.
当我去德国(德)主页http:// localhost:1907/de我得到该网站的德语版本.
当我转到tagalog版本http:// localhost:1907/tl或http:// localhost:1907/tl-PH时,我得到的是英文版而不是Tagalog版.
我在资源获取代码中放置了断点,并确认当前线程的文化和UI文化已正确设置为Tagalog文化,而Tagalog是传递给resourceManager.GetString(key,culture)的文化.
有什么想法吗?我没有正确地创造我的文化吗?
我认为你们的文化从未被注册过,至少其中一种没有被注册。
下面的代码将引发异常,因为您无法为中性区域性指定区域值。就像您无法为中性区域性创建 DateTimeFormatInfo 对象一样。
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();
Run Code Online (Sandbox Code Playgroud)
应该是这样的
var cultureBuilder = new CultureAndRegionInfoBuilder(
"tl", CultureAndRegionModifiers.Neutral);
cultureBuilder.LoadDataFromCultureInfo(new CultureInfo("en-US"));
cultureBuilder.CultureEnglishName = "Tagalog";
cultureBuilder.CultureNativeName = "Tagalog";
cultureBuilder.TwoLetterISOLanguageName = "tl";
cultureBuilder.Register();
Run Code Online (Sandbox Code Playgroud)
第二种特定文化似乎还不错。
| 归档时间: |
|
| 查看次数: |
1817 次 |
| 最近记录: |