I18N

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Languages" value="en-US.xaml"/>
  </appSettings>
</configuration>

App.xaml.cs

protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            //第一种方式就是用配置文件 配置
            string appLang = ConfigurationManager.AppSettings.Get("Languages");
            App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri(appLang, UriKind.RelativeOrAbsolute) });
            //第二种方式 就是获取当前系统的语言
            string lang = System.Globalization.CultureInfo.InstalledUICulture.Name.ToString(CultureInfo.InvariantCulture);
            switch (lang)
            {
                case "zh-CN":
                    App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("zh-CN.xaml", UriKind.RelativeOrAbsolute) });

                    break;
                case "en-US":
                    App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("en-US.xaml", UriKind.RelativeOrAbsolute) });

                    break;
                default:
                    App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("en-US.xaml", UriKind.RelativeOrAbsolute) });

                    break;
            }
        }

en-US.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib">

  <sys:String x:Key="Window1Title">Window</sys:String>
  <sys:String x:Key="UserLog">UserLogin</sys:String>
  <sys:String x:Key="UserCode">UserCode</sys:String>
  <sys:String x:Key="UserName">UserPwd</sys:String>
  <sys:String x:Key="BtnLoginOk">Login</sys:String>
  <sys:String x:Key="BtnLoginCancel">Cancel</sys:String>
  <sys:String x:Key="BtnzhCN">Chinese</sys:String>
  <sys:String x:Key="BtnenUS">English</sys:String>

</ResourceDictionary>

zh-CN.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib">

  <sys:String x:Key="Window1Title">窗体</sys:String>
  <sys:String x:Key="UserLog">用户登录</sys:String>
  <sys:String x:Key="UserCode">用户名</sys:String>
  <sys:String x:Key="UserName">密码</sys:String>
  <sys:String x:Key="BtnLoginOk">登录</sys:String>
  <sys:String x:Key="BtnLoginCancel">取消</sys:String>
  <sys:String x:Key="BtnzhCN">中文</sys:String>
  <sys:String x:Key="BtnenUS">英文</sys:String>

</ResourceDictionary>

MainWindow.xaml

<Window x:Class="I18N.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="{DynamicResource Window1Title}">
  <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
    <GroupBox Header="{DynamicResource UserLog}">
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="45*" />
          <RowDefinition Height="48*" />
          <RowDefinition Height="58*" />
          <RowDefinition Height="100*" />
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="1"
                   Margin="36,22,0,0"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Top"
                   Text="{DynamicResource UserCode}"
                   TextWrapping="Wrap" />
        <TextBlock Grid.Row="2"
                   Margin="36,23,0,0"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Top"
                   Text="{DynamicResource UserName}"
                   TextWrapping="Wrap" />
        <TextBox Grid.Row="1"
                 Width="120"
                 Height="23"
                 Margin="125,22,0,0"
                 HorizontalAlignment="Left"
                 VerticalAlignment="Top"
                 Text="TextBox"
                 TextWrapping="Wrap" />
        <TextBox Grid.Row="2"
                 Width="120"
                 Height="23"
                 Margin="125,23,0,0"
                 HorizontalAlignment="Left"
                 VerticalAlignment="Top"
                 Text="TextBox"
                 TextWrapping="Wrap" />
        <Button Grid.Row="3"
                Width="75"
                Margin="78,29,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Content="{DynamicResource BtnLoginOk}" />
        <Button Grid.Row="3"
                Width="75"
                Margin="192,29,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Content="{DynamicResource BtnLoginCancel}" />
        <Button Name="btnenUS"
                Width="75"
                Margin="301,10,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Click="btnenUS_Click"
                Content="{DynamicResource BtnenUS}" />
        <Button Name="btnzhCN"
                Width="75"
                Margin="221,10,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Click="btnzhCN_Click"
                Content="{DynamicResource BtnzhCN}" />

      </Grid>
    </GroupBox>
  </Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Windows;

namespace I18N
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnzhCN_Click(object sender, RoutedEventArgs e)
        {
            App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("zh-CN.xaml", UriKind.RelativeOrAbsolute) });
        }

        private void btnenUS_Click(object sender, RoutedEventArgs e)
        {
            App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("en-US.xaml", UriKind.RelativeOrAbsolute) });
        }
    }
}
时间: 2024-12-23 12:20:08

I18N的相关文章

Django1.9开发博客(12)- i18n国际化

国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指定他们哪些app应该被翻译或被格式化为本地形式. 允许用户根据自己的偏好来实现本地化显示.翻译依据语言,格式化依据国家, 这些信息由浏览器中的Accept-Language头来决定.不过目前为止时区还未能实现. 参考官方文档:https://docs.djangoproject.com/en/1.9

多语言切换jquery.i18n.min.js

项目需求,切换多语言,采用 jQuery.i18n.min.js文件内容如下 ------------------------------------------------- /*! * jquery i18n Plugin v1.0.0 * https://github.com/ZOMAKE/jquery.i18n * * Copyright 2017 ZOMAKE,Inc. * Released under the Apache Licence 2.0 */ (function($) { 

javaweb学习总结(三十一)——国际化(i18n)

一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationalization)又称为 i18n(读法为i 18 n,据说是因为internationalization(国际化)这个单词从i到n之间有18个英文字母,i18n的名字由此而来) 二.合格的国际化软件 软件实现国际化,需具备以下两个特征: 1.对于程序中固定使用的文本元素,例如菜单栏.导航条等中使用的文本

浅谈struts2的国际化----i18n

可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization    i 开头,n 结尾, 总共18个字母,今天的主要内容就是围绕这 四个字母. struts2国际化是建立在 java 国际化的基础上的,通过提供不同国家.语言环境的消息资源,然后通过 ResourceBundle 加载指定Locale 对应的资源文件,取得文件中指定的 key 对应的信息. Locale 对象表示了特定的地理.政治和文化地区.需要 Locale 来执行其任务的

Struts2对于i18n的支持

1 2 struts.xml中可以配置 3 <constant name="struts.custom.i18n.resources" value="itcast"> 指定全局资源文件 4 全局资源文件/包范围资源文件/动作类的资源文件 5 全局资源文件:src下放到WEB-INF/classes目录下 6 包范围资源文件:服务于Java类中的包下的动作类的. java类访问资源文件 7 取名:package_语言_国家.properties 8 9 动

jQuery之前端国际化jQuery.i18n.properties

jQuery之前端国际化jQuery.i18n.properties jQuery.i18n.properties是一款轻量级的jQuery国际化插件,能实现Web前端的国际化. 国际化英文单词为:Internationalization,又称i18n,“i”为单词的第一个字母,“18”为“i”和“n”之间单词的个数,而“n”代表这个单词的最后一个字母.jQuery.i18n.properties采用.properties文件对JavaScript进行国际化.jQuery.i18n.proper

基于jQuery.i18n.properties实现前端网站语言多版本

我是参考播客做了个demo:http://blog.csdn.net/aixiaoyang168/article/details/49336709 jQuery.i18n.properties采用.properties文件对JavaScript进行国际化.jQuery.i18n.properties插件首先加载默认的资源文件(strings.properties),然后加载针对特定语言环境的资源文件(strings_zh.properties),这就保证了在未提供某种语言的翻译时,默认值始终有效

linux语言设置i18n(转)

修改 /etc/sysconfig/i18n 文件,如 LANG="en_US.UTF-8",xwindow会显示英文界面, LANG="zh_CN.GB18030",xwindow会显示中文界面. 还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n 修改 $HOME/.i18n 文件,如 LANG="en_US.UTF-8",xwindow会显示英文界面, LANG="zh_CN.GB18030&quo

jasperReport+iReport的国际化(I18N)

JasperReport中,也可以根据不通的Locale来将个别信息进行国际化处理.根据我的整理,应该有以下的三种方式: (1)采用PrintWhenExpression的方式:PrintWhenExpression属性,是指在打印的时候,会根据设定的Expression(只返回布尔值)进行判定,如果为true,那么就打印信息:如果为false,那么该信息就直接不打印.采用该种方式来实现(一般是用StaticText来),需要几种国际化语言,对应的元素就要出现几次,每个元素的PrintWhenE