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) });
}
}
}

I18N的更多相关文章

  1. Java国际化(i18n)

    Java国际化(i18n) 最近在做一个网站国际化的功能.用Java做开发,使用spring+velocity. Java提供了对i18n的支持,spring对其做了集成,可以很方便的配置.主要思想就 ...

  2. Java的国际化(i18n)

    http://blog.csdn.net/csuliky/article/details/4225800 1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, ...

  3. I18N 国际化

    http://blog.sina.com.cn/s/blog_6c7e59770101p7w9.html 一.I18N 在 J2EE 中的应用 [转载:http://blog.csdn.net/cha ...

  4. i18n国际化

    <%  request.setAttribute("date", new Date());  request.setAttribute("salary", ...

  5. 国际化支持(I18N)

    本章译者:@nixil 使用国际化支持(I18N)能够使你的应用根据用户所在地区的不同选择不同的语言.下面介绍如何在引用中使用国际化. 只允许使用UTF-8 Play只支持UTF-8一种字符编码.这是 ...

  6. JSTL I18N 格式标签库

    <%@ page language="java" pageEncoding="gbk"%> <%@ taglib prefix="c ...

  7. yii框架详解 之 国际化 (I18N)

    我们要开启组件中们关于语言的配置,默认的就是CPhpMessageSource,也可以改为其他的方式. #组件配置中  'messages' => array(     'class'=> ...

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

    国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指 ...

  9. I18N、L10N、G11N

    I18N --是“Internationalization” 的缩写,由于 “Internationalization” 单词较长,所以为了书写简便,通常缩写为“I18N” .中间的 18 代表在首字 ...

随机推荐

  1. 数位DP bzoj1026

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5809  Solved: 2589[Submit][Sta ...

  2. jquery_选择器

    jquery选择器:对javascript的操作进行封装. jquery选择器的优点          1,简洁的写法          2,支持css1到css3选择器(拥有跨浏览器的兼容性)    ...

  3. MVC Model数据验证

    概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.Co ...

  4. dede数据库类使用方法 $dsql

    dedecms的数据库操作类,非常实用,在二次开发中尤其重要,这个数据库操作类说明算是奉献给大家的小礼物了. 引入common.inc.php文件 require_once (dirname(__FI ...

  5. BizTalk开发系列(三十六) Orchestration单实例执行

    BizTalk 是高效的消息处理引擎,采用多线程并发的方式来处理消息.也就是说当有消息被接收的时候就会产生一个新的消息处理实例.但有时目标系统可能并没有并发处理 的能力, 这时就需要在BizTalk中 ...

  6. BizTalk开发系列(十五) Schema设计之Qualified 与Unqualified

    XML Schema中的命名空间前缀限定包括对元素(Element)或属性(Attribute)的限定,即常见的如 “<ns0:root>...</ns0:root>”之类的格 ...

  7. ios-WKWebView 拨打电话

    -(void)webView:(WKWebView* )webView didStartProvisionalNavigation:(WKNavigation* )navigation { NSStr ...

  8. 反向代理在Web渗透测试中的运用

    在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...

  9. robots

    User-agent: Baiduspider Disallow: /w? Allow: / User-agent: Googlebot Allow: / User-agent: Googlebot- ...

  10. [转]倍数提高工作效率的 Android Studio 奇技

    转自:http://android.jobbole.com/81687/ 倍数提高工作效率的 Android Studio 奇技 2015/10/08 · 技术分享 · 4 评论· Android S ...