如何在Code-Behind中使用wpflocalizeextension?

Тар*_*иця 7 c# wpf localization

如何在C#代码中使用wpflocalizeextension?在xaml中,为了获取本地化字符串,我可以使用它,如下所示:

<Window x:Class="SomeClass"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:lex="http://wpflocalizeextension.codeplex.com"    
    lex:LocalizeDictionary.DesignCulture="uk-UA"    
   lex:ResxLocalizationProvider.DefaultAssembly="DesktopApp"    
   lex:ResxLocalizationProvider.DefaultDictionary="Resources">
   <Button Content="{lex:Loc SignInBtn}"/>
Run Code Online (Sandbox Code Playgroud)

例如,如何在代码中获取本地化字符串MessageBox.Show("SignInBtn");

dym*_*oid 11

这很简单.本地化密钥存储为AssemblyName:Resources:KeyName,其中ResourcesResources类名,通常您不会将其更改为其他名称.

您可以创建一个简单的包装器来获取本地化的值:

using WPFLocalizeExtension.Extensions;

public static class LocalizationProvider
{
    public static T GetLocalizedValue<T>(string key)
    {
        return LocExtension.GetLocalizedValue<T>(Assembly.GetCallingAssembly().GetName().Name + ":Resources:" + key);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,假设您已使用"SignInBtn"密钥创建了字符串资源,则可以调用:

MessageBox.Show(LocalizationProvider.GetLocalizedValue<string>("SignInBtn"));
Run Code Online (Sandbox Code Playgroud)

  • 您应该将`Resources`更改为您使用的资源文件的文件名.例如,在示例中使用的"字符串". (2认同)