我正在尝试实现现有Web应用程序的语言翻译。
该应用程序是用C#,Javascript和Angular JS编写的。
我已经成功添加(resx文件)并测试了以下语言:
-德语
-西班牙文
-芬兰
-法文
-义大利文
-荷兰人
-瑞典
同样,我也添加了丹麦语和挪威语的资源,但是这些都失败了。
我在完全相同的时间执行了全部相同的操作;我检查了所有属性,其他所有都匹配。
这两种文化有什么特殊之处可能会阻碍这一点吗?
我将它们称为Norwegian的Translations.no.resx和丹麦语的Translations.dk.resx,并相应地添加了路线,如下所示:
private static readonly List<LanguageModel> AllLanguages = new List<LanguageModel>
{
new LanguageModel { Name = "English", TwoLetterIsoLanguageName = "en" },
new LanguageModel { Name = "Svenska", TwoLetterIsoLanguageName = "sv" },
// ITCR-1182 adding translations. DK and NO are not working.
new LanguageModel { Name = "Dansk", TwoLetterIsoLanguageName = "dk" },
new LanguageModel { Name = "Español", TwoLetterIsoLanguageName = "es" },
new LanguageModel { Name = "Deutsch", TwoLetterIsoLanguageName = "de" },
new LanguageModel { Name = "Nederlands", TwoLetterIsoLanguageName = "nl" },
new LanguageModel { Name = "Française", TwoLetterIsoLanguageName = "fr" },
new LanguageModel { Name = "Norsk", TwoLetterIsoLanguageName = "no" },
new LanguageModel { Name = "Suomi", TwoLetterIsoLanguageName = "fi" },
new LanguageModel { Name = "Italiano", TwoLetterIsoLanguageName = "it" }
};
该列表当前用于语言选择器,但是它将从数据库中生成……只要我能使它们起作用!
相应地调用所有语言资源:
Translations.{TwoLetterIsoLanguageName}.resx
除了默认的英语版本之外,Translations.resx
路线是这样形成的
routes.MapRoute(
name: "Default",
url: "{culture}/{site}/{controller}/{action}/{id}",
defaults: new { culture = LocalizationAttribute.DefaultCulture, site = LayoutController.DefaultSite, controller = "Home", action = "Index", id = UrlParameter.Optional }
);
就像我说的,它适用于挪威语和丹麦语以外的所有语言。或更确切地说,使用“ no”或“ dk”引用按原样显示路线,但翻译未映射,而是显示默认的英语。
我还有其他可以提供的帮助吗?
最佳答案
答案由@PalleDue和@LocEngineer提供,我使用了错误的两个字母的ISO代码:
丹麦语DA
NN或NB适用于挪威语,但最好使用NB,因为约有85%的人口使用NB。
感谢大伙们!!!
关于c# - C#本地化问题,CultureInfo挪威和丹麦,翻译不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43140272/