【问题标题】:Why does my localization only work on my Development-Machine?为什么我的本地化只能在我的开发机器上工作?
【发布时间】:2016-10-18 05:14:06
【问题描述】:

我已使用 MulitlingualAppToolkit 4.0 将我的应用程序本地化为两种语言(英语和德语)。英语是基础语言,而德语是基于英语的翻译。 翻译作为 resw 文件存储在文件夹“strings.en”和“strings.de”中。

在 App.xaml.cs App() 我这样设置文化:

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = GetCurrentCulture();
CultureInfo.CurrentUICulture = GetCurrentCulture();

private CultureInfo GetCurrentCulture()
{
    var cultureName = new DateTimeFormatter("longdate", new[] {"US"}).ResolvedLanguage;
    return new CultureInfo(cultureName);
}

(我从这篇文章https://www.pedrolamas.com/2015/11/02/cultureinfo-changes-in-uwp/ 中得到了这种安静奇怪的 Windows 10 区域文化方式,因为我认识到 CultureInfo.CurrentCulture 和 CultureInfo.CurrentUICulture 始终是“en-EN”,无论我在我的机器中配置什么区域和语言设置)

为了检查 PrimaryLanguageOverride 是否按预期工作,我在我的第一个页面上添加了一个名为 tbTest 的 TextBox,并添加了一个链接到此事件的按钮:

private void Button_Click(object sender, RoutedEventArgs e)
{
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = tbTest.Text;
    Frame.Navigate(this.GetType(), 0);
    System.IO.File.AppendAllText(System.IO.Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "PrimaryLanguageOverride.txt"),
        DateTime.Now + " - Actual PrimaryLanguageOverride:\n    " + WIndows.Globalization.ApplicationLanguages.PrimaryLanguageOverride);
    }
    catch(Exception ex) { Helper.Log.LogUnhandledError(ex); }
}

现在奇怪的东西来了:

当从我的开发机器调试或执行应用程序时,一切都按预期工作,但是当我制作一个 appx 捆绑包并将其安装在另一个(Windows10-桌面)设备上时,应用程序无法识别其语言。 在我的情况下,设备设置为德语、地区及其语言。此外,当使用测试程序时,它会得到我设置的字符串,只要它是有效的文化名称,例如:“en-EN”、“en-US”、“de-DE”、“de”, “en”(所有这些在我的开发机器上都可以正常工作)如果它是一个无效的字符串,我会得到一个异常,在我的未处理错误日志中有一个日志条目。它刷新页面,甚至在我的 PrimaryLanguageOverride-Log 中写入新设置的语言,但它不会更改我翻译的任何文本。

所以我的问题是,这是一个常见问题(因为我在 UWP/Win10 中认识到文化系统有点混乱)还是我使用了错误的程序来覆盖 App-Culture?

【问题讨论】:

    标签: c# .net visual-studio localization uwp


    【解决方案1】:

    这是 AppXBundling 的一个问题。安装包时,它会检查当前操作系统是否已安装语言包,并从包中复制相关语言资源并忽略其他语言文件。单个包的目标是复制必要的资源并构建应用程序,因此系统中不存在的语言被认为是不相关的。作为修复,您可以停止生成单个包并为每个 CPU 架构创建包。 Check this for more info

    【讨论】:

    • 感谢您的回答。我们已经找到了这个解决方案,但是由于周围没有太多关于 MAT 的资源,希望这将有助于其他 UWP 开发人员。
    • 欢迎您:D。那么作为解决方案,您为 CPU 架构使用多个包?还是从应用程序手动加载资源?
    • 我们目前正在使用一个非捆绑包,非常希望最近能得到修复,因为微软将 MAT4.0 作为他们制作多语言应用程序的选择。
    猜你喜欢
    • 2017-01-17
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2011-01-06
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多