我正在尝试实现现有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/

10-11 11:46