WPF アプリケーションの 多言語切替

Similar documents
WPF アプリケーションの 多言語切替

WPF アプリケーションの 多言語切替

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

C#の基本

Abstract Kinect for Windows RGB Kinect for Windows v Kinect for Windows v2

Windows 10 IoT Core MVA 2015 August Windows 10 IoT Core ハンズオントレーニング Building and running Github MS IoT Samples on Windows 10 IoT Core 3 章 UWP アプリの開発 L

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

Microsoft PowerPoint - Windows Presentation Foundation (WPF) 3.5 の新機能

Prog2_12th

Chart3D for WPF/Silverlight

XAML Do-It-Yourself シリーズ 第 7 回テンプレート -1-

WPFの初歩の初歩

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

Prog2_4th

TOEIC

Sparkline for WPF

Prog2_10th

saihata.doc

A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3,

Visual Studio Do-It-Yourself シリーズ 第 1 回 Windows ゕプリケーション開発の概要 -1-

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

Microsoft PowerPoint ppt

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

プロセス間通信

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

...Visual Studio 2015\Projects\MyHomePage 用サンプル \Database(Access2)\Database(Access2)\MainForm.cs 2 れを含めておかないと Database への更新がきかない oadp.fill(dtbl); dgvk

PowerPoint プレゼンテーション

XAML Do-It-Yourself シリーズ 第 8 回ゕニメーション -1-

とても使いやすい Boost の serialization

スライド 1

XAML Do-It-Yourself シリーズ 第 1 回 XAML 概要 -1-

Prog2_15th

オブジェクト指向プログラミング・同演習 5月21日演習課題

MISAO with WPF

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

第1章 ビジュアルプログラミング入門

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

TestDesign for Web

YKToolkit.Controls 取扱説明書 Ver YKSoftware

プラグイン

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

GUIプログラムⅣ

PDFViewer for WPF/Silverlight


OutlookBar for WPF/Silverlight

C#の基本2 ~プログラムの制御構造~

基礎計算機演習 実習課題No6

MVP for VB が語る C# 入門

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft Word - VB.doc

1_cover

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

Java言語 第1回

Prog2_5th

design_pattern.key

WPF Bindingの威力

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Javaプログラムの実行手順

ガイダンス

Carousel for WPF/Silverlight

Microsoft PowerPoint - hmoriya-REMIX2006-Print-New [互換モード]


グラフィックス 目次

Prog2_10th

HOW DO I WebBrowser コントロールで HTML5 を 使用するには ここでは以下の手順で説明します Video 要素を使用する Silverlight と JavaScript の間でやり取りする Canvas 要素を使用する Video 要素を使用する 1. Visual Stu

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

sp2-2.indd

Microsoft PowerPoint - prog03.ppt


Prog2_2nd

Prog2_6th

Microsoft認定資格問題集(70-483_demo)

XAML Do-It-Yourself シリーズ 第 11 回 2D グラフゖックス -1-

シヤチハタ デジタルネーム 操作マニュアル

Silverlight を使用したデータアプリケーション開発手順

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

PowerPoint Presentation

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Javaの作成の前に

: : : TSTank 2

マイクロソフト株式会社 デベロッパー & プラットフォーム統括本部 井上大輔 井上章

プログラミング基礎I(再)

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

Prog1_6th

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

BarCode for WPF

グラフィックス 目次

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

ウィンドウ操作 応用

Transcription:

WPF アプリケーションの 多言語切替 YK S o f t w a r e 2015 年 6 月 2 日 @twyujiro15

プロフィール 加藤裕次郎 本職は製造業の開発業務 - 2009 年 4 月に入社 1982.03.03 生まれ ( うお座 ) 左利き ( お箸は右 ) twitter : @twyujiro15 プログラミング経験 Excel VBA MATLAB MATX C VC++ (Windows SDK) VC++ (MFC) WPF + C# 組み込みソフトウェア開発で初めてまともに C 言語 デバッグソフトで Visual C++(MFC Windows SDK) Excel 大好きマンだったので VBA も使用 VBA でソケット通信したときは感動した - 2013 年 10 月 あるサンプルが "WPF" なるものでできていることを知る 独自調査から @okazuki さんの MVVM 入門四則演算にたどり着く 1

今回のゴール WPF デスクトップアプリケーションで動的に言語を切り替える English ボタンを押すと英語表記になる 日本語 ボタンを押すと日本語表記になる リソースディクショナリを使う方法もあるようですが ここではアセンブリリソースを使う方法を紹介します 2

目次 リソースによる文字列の表示多言語リソースの追加動的に言語を切り替える - 準備 - ボタンの追加おまけ 3

リソースによる文字列の表示 (1/2) アセンブリリソースファイル Resources.resx に文字列リソースを定義する ない or 削除した場合は追加しましょう Public にします 4

リソースによる文字列の表示 (2/2) XAML から参照する <Window x:class="multilingualapp.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:properties="clr-namespace:multilingualapp.properties" Title="MainWindow" Height="150" Width="225"> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="{x:Static properties:resources.helloworld}" /> </StackPanel> </Window> Resources.resx の HelloWorld キーを指定 5

目次 リソースによる文字列の表示 多言語リソースの追加動的に言語を切り替える - 準備 - ボタンの追加おまけ 6

多言語リソースの追加 (1/2) 別の言語用のアセンブリリソースファイル Resources.< カルチャ >.resx を追加する 日本語は "ja-jp" 韓国語は "ko-kr" など Properties 以下では直接追加できないのでいったんプロジェクト直下に追加して後から移動した 7

多言語リソースの追加 (2/2) 別の言語用の文字列リソースを設定する 同じ HelloWorld キーを定義する 日本語設定の Windows で実行すると日本語になる - 設定が "ja-jp" なのでそのリソースを検索 - なければデフォルトの Resource.resx を参照する つまり英語設定の Windows で実行すると英語になる 8

目次 リソースによる文字列の表示 多言語リソースの追加 動的に言語を切り替える - 準備 - ボタンの追加おまけ 9

動的に言語を切り替える準備 (1/3) ResourceService クラスを定義 namespace MultilingualApp { using MultilingualApp.Properties; /// <summary> /// 多言語化されたリソースと言語の切り替え機能を提供します /// </summary> public class ResourceService { #region Singleton members private static readonly ResourceService _current = new ResourceService(); public static ResourceService Current { get { return _current; } } #endregion Singleton members private readonly MultilingualApp.Properties.Resources _resource = new Resources(); } } /// <summary> /// 多言語化されたリソースを取得します /// </summary> public MultilingualApp.Properties.Resources Resources { get { return _resource; } } 10

動的に言語を切り替える準備 (2/3) <Window x:class="multilingualapp.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:properties="clr-namespace:multilingualapp.properties" xmlns:app="clr-namespace:multilingualapp" Title="MainWindow" Height="150" Width="225"> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="{x:Static properties:resources.helloworld}" /> <TextBlock Text="{Binding Source={x:Static app:resourceservice.current}, Path=Resources.HelloWorld, Mode=OneWay}" /> </StackPanel> </Window> Binding するように変更する 現時点では結果は同じ 11

動的に言語を切り替える準備 (3/3) using MultilingualApp.Properties; using System.ComponentModel; using System.Globalization; using System.Runtime.CompilerServices; /// <summary> /// 多言語化されたリソースと言語の切り替え機能を提供します /// </summary> public class ResourceService : INotifyPropertyChanged { ~~( 中略 )~~ プロパティ変更通知を追加 #region INotifyPropertyChanged members public event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged([CallerMemberName] string propertyname = null) { var h = this.propertychanged; if (h!= null) h(this, new PropertyChangedEventArgs(propertyName)); } #endregion INotifyPropertyChanged members } /// <summary> /// 指定されたカルチャ名を使用してリソースのカルチャを変更します /// </summary> /// <param name="name"> カルチャ名を指定します </param> public void ChangeCulture(string name) { Resources.Culture = CultureInfo.GetCultureInfo(name); this.raisepropertychanged("resources"); } 外部からカルチャを指定 Resources プロパティ変更通知 12

目次 リソースによる文字列の表示 多言語リソースの追加 動的に言語を切り替える - 準備 - ボタンの追加 おまけ 13

言語切替ボタンの追加 (1/2) <Window x:class="multilingualapp.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:properties="clr-namespace:multilingualapp.properties" xmlns:app="clr-namespace:multilingualapp" Title="MainWindow" Height="150" Width="225"> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="{x:Static properties:resources.helloworld}" /> <TextBlock Text="{Binding Source={x:Static app:resourceservice.current}, Path=Resources.HelloWorld, Mode=OneWay}" /> <Button Content="English" Click="EnglishButton_Click" /> <Button Content=" 日本語 " Click="JapaneseButton_Click" /> </StackPanel> </Window> 後は Click イベントハンドラでリソースを切り替えるだけ 本来なら ViewModel でおこなうべき 14

言語切替ボタンの追加 (2/2) private void EnglishButton_Click(object sender, RoutedEventArgs e) { ResourceService.Current.ChangeCulture("en"); } private void JapaneseButton_Click(object sender, RoutedEventArgs e) { ResourceService.Current.ChangeCulture("ja-JP"); } 英語に切り替える 日本語に切り替える 完成! 本来なら ViewModel でおこなうべき 15

目次 リソースによる文字列の表示 多言語リソースの追加 動的に言語を切り替える - 準備 - ボタンの追加 おまけ 16

おまけ Resources.ja-JP.resx を追加してビルドすると以下のようなファイルができる ja-jp フォルダの中身 サテライトアセンブリ ( カルチャに固有のリソースのみを含む ) MultilingualApp.exe にはニュートラルのカルチャリソースが含まれる Resources.resx サテライトアセンブリを消すとそのカルチャの言語表示ができなくなる 17

ご清聴ありがとうございました S o f t w a r e