Как настроить приложение CultureInfo для WPF. NET CORE и заставить его работать после установки из Windows проекта упаковки приложения - PullRequest
0 голосов
/ 06 марта 2020

Моя проблема в том, что приложение не использует правильный язык после установки. Это не тот случай, когда приложение запускается из Visual Studio. Я создал пример приложения со следующей структурой.

PublishTestApp
--Properties
----Resources.de-DE.resx
----Resources.en-US.resx
----Resources.resx
--App.xaml
--AssemblyInfo.cs
--MainWindows.xaml

WapProjTemplate1 (Application set to PublishTestApp)
--Package.appxmanifest
--priconfig.default.xml
--priconfig.packaging.xml

Main:

namespace PublishTestApp
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE");
            Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("de-DE");

            InitializeComponent();
        }
    }
}

Основной вид:

<Window x:Class="PublishTestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:prop="clr-namespace:PublishTestApp.Properties"    
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel HorizontalAlignment="Center">
        <TextBlock Text="{x:Static prop:Resources.Language}"></TextBlock>
    </StackPanel>
</Window>

В ресурсах установлено только одно значение в каждый файл:

  • Язык = нейтральный (Resources.resx)
  • Язык = en-US (Resources.en-US.resx)
  • Язык = де- DE (Resources.de-DE.resx

Package.appxmanifest - для языков по умолчанию установлено значение de-DE

priconfig.default. xml -

<?xml version="1.0" encoding="utf-8" ?>
<default>
  <qualifier name="Language" value="de-DE" />
</default>

priconfig.packaging. xml -

<?xml version="1.0" encoding="utf-8" ?>
<packaging>
  <autoResourcePackage qualifier="Scale" />
  <autoResourcePackage qualifier="DXFeatureLevel" />
</packaging>

Даже несмотря на то, что я установил культуру de-DE, после установки я получаю значение "нейтрального" из Resources.resx, в то время как я ожидаю чтобы получить значение из Resources.de-DE.resx из "de-DE". Есть ли у вас какие-либо предложения, что я делаю неправильно? :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...