c#本地化问题,CultureInfo挪威和丹麦,翻译不起作用

时间:2017-03-31 12:06:00

标签: c# localization cultureinfo

我正在尝试实现现有Web应用程序的语言翻译。 该应用程序是用C#,Javascript和Angular JS编写的。

我已成功添加(resx文件)并测试了以下语言:

- 德语 - 西班牙语 -芬兰 - 法国 - 意大利 -荷兰人 语 - 瑞典语

同样,我也为丹麦语和挪威语添加了资源,但这些都失败了。

完全相同的事情,在完全相同的时间实现所有这些;我检查了所有属性和其他所有匹配项。

这两种文化有什么特别之处可能阻碍这一点吗?

我称他们为Transwegian.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 }
    );

正如我所说,它适用于除挪威语和丹麦语之外的所有语言。或者更确切地说,路线按照应有的方式出现,而不是&#34; no&#34;或&#34; dk&#34;引用,但翻译不是映射,而是出现默认的英语。

我能提供的其他内容可能会有所帮助吗?

1 个答案:

答案 0 :(得分:0)

答案是由@PalleDue和@LocEngineer提供的,我使用了错误的双字母ISO代码:

丹麦语的DA 挪威语的NN或NB,但更好地使用NB,因为它被约85%的人口使用。

谢谢大家!!!