1. 程式人生 > 其它 >WPF 本地化資原始檔及執行時切換語言

WPF 本地化資原始檔及執行時切換語言

本地化資原始檔建立

前期準備
Visual Studio 搜尋並安裝擴充套件外掛 ResXManager

  1. 在專案內 Properties 資料夾內新增新建項 資原始檔 Resource.resx

  2. 手動重新編譯專案,然後 Resource.resx 右鍵選單 -> 在 ResX Manager 中開啟

  3. 開啟後介面如下

    3.1.
    新增新語言,由於語言比較多,點開下拉稍等一會後選擇需要新增的新語言

    3.2.
    檢測程式碼引用,指示該鍵在專案中被呼叫的次數
    3.3.
    索引序號,表內鍵序號
    3.4.
    新增新鍵
    3.5.(重要)
    匯入匯出Excel是這個擴充套件最重要的一個功能,是用於給運維、產品、翻譯等非開發人員做語言翻譯的一個Excel表格,根據這個表內已有的Key來翻譯相應語言,翻譯完成後可直接匯入到專案使用(第一語言在Excel中是空列名)

    (擴充套件內檢視如下)

執行時切換語言
1.新建類 ResourceService

public class ResourceService : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private static readonly ResourceService _current = new ResourceService();
    public static ResourceService Current => _current;

    readonly Properties.Resource resource = new Properties.Resource();
    public Properties.Resource Resources => resource;

    protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
    {
        var handler = this.PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }

    public void ChangedCulture(string name)
    {
        Properties.Resource.Culture = CultureInfo.GetCultureInfo(name);
        this.RaisePropertyChanged("Resources");
    }
}

2.XAML使用
<Button Content="{Binding Resources.Hello, Source={x:Static local:ResourceService.Current}}"/>

3.切換語言

private void Changed()
{
    ResourceService.Current.ChangedCulture("en-US");
}