对于本地化这个功能我个人一直觉得在需求阶段就要确定该项目需不需要实行本地化,这样后面就可以减轻许多工作量,Sl中对本地化功能的支持与ASP.NET

中一样,主要使用CultureInfo类来完成的。

下面来看实现本地化的具体流程,先来看一看我的项目结构:

这里我是把资源文件放入单独的项目中,这样结构上也比较的清晰。

第一步:

先在Languages项目下添加几个资源文件,这里对于资源的命名要遵循.NET命名规范,比如说当前文化是中文的话,系统就会自动到Localization.zh-CN.resx中获取相关的字符。这里如果对多语言的文化的命名不熟悉的话,可以查看.NET全球化

我们设置一个简单的值,

我们这里定义了一个Country字段,在中文和英文两种文化中值分别为中国与China

第二步:

建立值转化类AppResource.cs

  namespace Languages
 {
    public class AppResource:IValueConverter
    {
        public readonly static ResourceManager manager = new ResourceManager("Languages.Localization", typeof(Localization).Assembly);
        private static CultureInfo culture = Thread.CurrentThread.CurrentCulture;
        public static CultureInfo UICultrue
        {
            get { return culture; }
            set { culture = value; }
        }
        public string Get(string resource)
        {
             return manager.GetString(resource, UICultrue);
        }
        public static string GetValue(string resource)
        {
            return manager.GetString(resource, UICultrue);
        }
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var reader=(AppResource)value;
            return reader.Get((string)parameter);
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
  }

这个类主要使用了ResourceManager对象对本地化进行操作的

第三步:

编译之后,我们在LocalilizationInSilverlight项目中引入Languages.dll

在App.xaml中我们引入这个dll,并且将其设为资源

    <Application
    x:Class="LocalilizationInSilverlight.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Languages;assembly=Languages"
    >
    <Application.Resources>
        <local:AppResource x:Key="Localization"></local:AppResource>
    </Application.Resources>
    </Application>

第四步:

这里有一点需要注意的是,当你编译解决方案时,vs并未将资源文件打包至xap中,需要手动修改一下LocalilizationInSilverlight.csproj

中的SupporttedCultures节点

    <SupportedCultures>zh-CN,en-GB
    </SupportedCultures>

引入资源后,我们就在页面中使用它了

      <TextBlock Height="23"
           Name="textBlock1"
           Text="{Binding ConverterParameter=Country,
           Converter={StaticResource Localization},Source={StaticResource Localization}}"
           Width="90" />

运行之后我们就可以看到界面上出现中国二字,我们可以改当前文化来测试一下

       public MainPage()
        {
            AppResource.UICultrue = new CultureInfo("en-GB");
            InitializeComponent();
        }

这样,我们在页面InitializeComponent()之前修改当前文化为en-GB,这时候TextBlock就会出现China这个值了

扩展:对DataGrid的Headers属性应用本地化功能

那么这里我们可以首先在AppResource.cs中添加简单的方法

       public static string GetValue(string resource)
        {
            return manager.GetString(resource, UICultrue);
        }

然后UI上添加一个DataGrid

   <data:DataGrid AutoGenerateColumns="False"
                                   Height="200"
                                   Name="dataGrid1"
                                   Width="200">
                        <data:DataGrid.Columns>
                            <data:DataGridTextColumn CanUserReorder="True"
                                                     CanUserResize="True"
                                                     CanUserSort="True"
                                                     Width="Auto" />
                        </data:DataGrid.Columns>
    </data:DataGrid>

C#代码只要对标题设置一下即可:

  this.dataGrid1.Columns[0].Header = AppResource.GetValue("Country");
完成之后可以利用上面的第四步的方法进行测试了

Silverlight中本地化的实现(语言切换)的更多相关文章

  1. 在SOUI中使用动态多语言切换

    动态语言切换是很多国际化产品的需求,SOUI之前的版本支持静态多语言翻译,通过在程序启动时设置好语言翻译模块,在程序中打开的UI都会自动调用该翻译模块进行文字翻译,但是不支持运行进语言切换. 最近几个 ...

  2. vue-i18n vue-cli项目中实现国际化 多语言切换功能 一

    vue-cli项目中引入vue-i18n 安装: npm install vue-i18n可参考vue-i18n官网文档 main.js中引入: import Vue from 'vue' impor ...

  3. vue-i18n 国际化语言切换

    vue-i18n 用于前端vue项目中,需要多语言切换的场景 安装方法(npm) npm install vue-i18n 简单使用   1.在vue项目的main.ts文件中实例化 i18n imp ...

  4. iOS 语言切换、本地化,国际化

    什么是本地化处理? 本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下. 本地化处理需要处理那些文件? ( ...

  5. 本地化SilverLight应用程序(多语言支持)

    原文 http://www.cnblogs.com/seaworm/archive/2010/11/30/1892325.html 利用资源文件(Resources File)使SilverLight ...

  6. react中多语言切换的实现方式

    目前正在进行的项目就是一个多语言切换的项目,有些前情知识我们可以 从https://react.i18next.com/getting-started进行了解. 说到使用方法,当然首先是要$ npm ...

  7. 动态语言切换(续)-designer中的retranslateUi(带源码)

    本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作.原文链接:动态语言切换(续)-designer中 ...

  8. vue 双语言切换中,data内翻译文字不正常切换的解决方案

    背景 有这么一个登录页面,相关功能如下: 支持双语言,点击切换语言 表单内部有一个自定义的select,里面option的label.value都是的名字由外部提供:其中预设的option的label ...

  9. 关于在静态html中实现语言切换的思路与实现

    在项目中只用到了三种语言:英文.中文简体.中文繁体.所以我首先想到了最笨的方法:1.直接将三种语言写在html中,显示当前设置的语言隐藏其它两种来实现.2.使用css伪元素的content:attr( ...

随机推荐

  1. [Java] 使用Comparator排序对象

    package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...

  2. [模板总结] Java的一些模板

    快速排序(数组a从小到大,参数1是待排序的数组,参数2是起始下标,参数3是终止下标): static void sort(int [] a, int l,int r){ int m = l+r> ...

  3. cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas

    在 cocos2d-x 中有三个类可以在层或精灵中添加文字: LabelTTF LabelBMFont LabelAtlas LabelTTF 直接支持使用 TTF 字库,可以支持全部的中文,但是效率 ...

  4. MFC中,如何自定义用户消息

    1.用处 在多个类之间传递消息.当需要响应用户操作,本类却无法实现时,可以向系统发出消息.然后让系统中的需要的位置实现它. 2.方法 2.1定义这个消息,并让拥有者发送这个这个消息,传递一个整型参数 ...

  5. VC 获 取 当前程序运行路径的几种方法

    1.使用APi函数GetModuleFileName char path[MAX_PATH]; GetModuleFileName(NULL, path, MAX_PATH);        //获取 ...

  6. go五笔——基于Google在线五笔制作

    go五笔 v0.0.2 加入新世纪版 86版收录几个不常用汉字,其它无更新 下载 86版64位密码: qe7k 86版32位密码: y25a 06版64位密码: d2ug 06版32位密码: bxxz ...

  7. [转]Markdown 语法手册

    Markdown 是一种轻量级标记语言,能将文本换成有效的XHTML(或者HTML)文档,它的目标是实现易读易写,成为一种适用于网络的书写语言. Markdown 语法简洁明了,易于掌握,所以用它来写 ...

  8. UIApplication介绍

    一.什么是UIApplication UIApplication对象是应用程序的象征. 每一个应用都有自己的UIApplication对象,这个对象是系统自动帮我们创建的, 它是一个单例对象. 一个i ...

  9. FindResource函数错误代码:1813-找不到映像文件中指定的资源类型 与LoadResource函数错误代码:1812-指定的映像文件不包含资源区域

    HRSRC WINAPI FindResource( _In_opt_  HMODULE hModule, _In_      LPCTSTR lpName, _In_      LPCTSTR lp ...

  10. Windows10系统如何安装Microsoft Visual Studio 2015及最小子数组和求解

    一.Windows10系统如何安装Microsoft Visual Studio 2015. 1.首先到Visual Studio官方网站(https://www.visualstudio.com/v ...