Submit Search
Upload
Tech Fielders 2009/9/18 LT
•
0 likes
•
1,475 views
T
terurou
Follow
「Silverlight 3 アプリの国際化」のハマりどころ
Read less
Read more
Technology
Report
Share
Report
Share
1 of 39
Download now
Download to read offline
Recommended
Deep dive into instanceof
Deep dive into instanceof
Hiroshi Saito
Scalaでプログラムを作りました
Scalaでプログラムを作りました
Tomoharu ASAMI
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
yamahige
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
kwatch
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
ひとし あまの
XSLT 2010-03-03
XSLT 2010-03-03
kmiyako
Recommended
Deep dive into instanceof
Deep dive into instanceof
Hiroshi Saito
Scalaでプログラムを作りました
Scalaでプログラムを作りました
Tomoharu ASAMI
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
yamahige
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
kwatch
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
ひとし あまの
XSLT 2010-03-03
XSLT 2010-03-03
kmiyako
Metro Style AppsでMSIL
Metro Style AppsでMSIL
terurou
Scala×silverlight
Scala×silverlight
terurou
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
Kref.net
Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSILver.2012/06/09
terurou
Iron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET Programming
terurou
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
terurou
Silverlight 4 のはなし
Silverlight 4 のはなし
terurou
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
terurou
jjugccc2018 app review postmortem
jjugccc2018 app review postmortem
tamtam180
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
Mitsuru Katoh
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
Datomic&datalog紹介
Datomic&datalog紹介
あしたのオープンソース研究所
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
Masanori Machii
ざっくり DDD 入門!!
ざっくり DDD 入門!!
Yukei Wachi
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Sotaro Kimura
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
実践 Reactive Extensions
実践 Reactive Extensions
Shin Ise
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Kentaro Yoshida
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Satomi Tsujita
More Related Content
Viewers also liked
Metro Style AppsでMSIL
Metro Style AppsでMSIL
terurou
Scala×silverlight
Scala×silverlight
terurou
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
Kref.net
Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSILver.2012/06/09
terurou
Iron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET Programming
terurou
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
terurou
Silverlight 4 のはなし
Silverlight 4 のはなし
terurou
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
terurou
Viewers also liked
(8)
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Scala×silverlight
Scala×silverlight
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSILver.2012/06/09
Iron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET Programming
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
Silverlight 4 のはなし
Silverlight 4 のはなし
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
Similar to Tech Fielders 2009/9/18 LT
jjugccc2018 app review postmortem
jjugccc2018 app review postmortem
tamtam180
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
Mitsuru Katoh
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
Datomic&datalog紹介
Datomic&datalog紹介
あしたのオープンソース研究所
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
Masanori Machii
ざっくり DDD 入門!!
ざっくり DDD 入門!!
Yukei Wachi
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Sotaro Kimura
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
実践 Reactive Extensions
実践 Reactive Extensions
Shin Ise
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Kentaro Yoshida
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Satomi Tsujita
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
Shuyo Nakatani
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
Hiroshi Tokumaru
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
Taiji Miyabe
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
Similar to Tech Fielders 2009/9/18 LT
(20)
jjugccc2018 app review postmortem
jjugccc2018 app review postmortem
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Datomic&datalog紹介
Datomic&datalog紹介
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
ざっくり DDD 入門!!
ざっくり DDD 入門!!
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
実践 Reactive Extensions
実践 Reactive Extensions
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
Jjug springセッション
Jjug springセッション
scala+liftで遊ぼう
scala+liftで遊ぼう
More from terurou
Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話
terurou
自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話
terurou
Computation Expressions for Haxe
Computation Expressions for Haxe
terurou
デンキヤギの採用の考え方
デンキヤギの採用の考え方
terurou
Vue.jsをhaxeで
Vue.jsをhaxeで
terurou
MQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
altJSの選び方
altJSの選び方
terurou
DataGridを自前実装する話
DataGridを自前実装する話
terurou
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
terurou
動的なILの生成と編集
動的なILの生成と編集
terurou
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
terurou
大規模なJavaScript開発の話
大規模なJavaScript開発の話
terurou
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
terurou
CommonJSの話
CommonJSの話
terurou
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
クラウドGPS(仮)
クラウドGPS(仮)
terurou
IronRuby on Silverlight っておいしいの?
IronRuby on Silverlight っておいしいの?
terurou
Dynamic Language による Silverlight2 アプリケーション開発
Dynamic Language による Silverlight2 アプリケーション開発
terurou
More from terurou
(18)
Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話
自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話
Computation Expressions for Haxe
Computation Expressions for Haxe
デンキヤギの採用の考え方
デンキヤギの採用の考え方
Vue.jsをhaxeで
Vue.jsをhaxeで
MQTTとAMQPと.NET
MQTTとAMQPと.NET
altJSの選び方
altJSの選び方
DataGridを自前実装する話
DataGridを自前実装する話
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
動的なILの生成と編集
動的なILの生成と編集
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
大規模なJavaScript開発の話
大規模なJavaScript開発の話
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
CommonJSの話
CommonJSの話
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
クラウドGPS(仮)
クラウドGPS(仮)
IronRuby on Silverlight っておいしいの?
IronRuby on Silverlight っておいしいの?
Dynamic Language による Silverlight2 アプリケーション開発
Dynamic Language による Silverlight2 アプリケーション開発
Recently uploaded
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Recently uploaded
(8)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
Tech Fielders 2009/9/18 LT
1.
「Silverlight 3 アプリの国際化の
ハマりどころ ⼋⽊照朗 / terurou 株式会社コスモルート DSTokai / FLOSS桜⼭ / DeLLa.JS / Python東海
2.
⾃⼰紹介 1
3.
⾃⼰紹介 • 株式会社コスモルート(名古屋の会社)に勤務
– Enterprise RIA エンジニア(JavaScript、Silverlight) – いちおう研究開発要員(WEB技術全般) – たまにプロジェクトマネージャも – 現在は Silverlight 3 開発案件のため、東京に常駐中 • 昨⽇から急にインフラ要員になりましたけどね…! • DSTokai(東海地⽅のメタコミュニティ)管理⼈ 2
4.
⾃⼰紹介 ⽐較的最近の活動 •
Tech Fielders インタビュー #23 – IronPython は、⽤途によって凄く便利な道具になる http://www.microsoft.com/japan/powerpro/TF/interview/23_1.mspx – 他の⽅と⽐較すると、明らかに⼀⼈だけ浮いている… • PHP 逆引きレシピ(翔泳社)を執筆 – PHP本の中では⼀番売れてるらしいです 3
5.
さて、本題。
4
6.
さて、本題。 Silverlight 3
アプリケーションを国際化する際の 基本的な⼿順とハマリどころをまとめてきました。 5
7.
さて、本題。
ライトニングトークのネタになる程度には ⼿順がめんどくさくて、ハマります…。 6
8.
さて、本題。 ちなみに今⽇のスライド、調⼦に乗って作ってたら 37枚になりました。たぶん時間⾜りません。
7
9.
国際化の⼿順
8
10.
国際化の⼿順 1.プロジェクトファイルに対応する⾔語
(カルチャ)を記述 2.アセンブリリソースファイル(.resx)を作成 3.XAMLにリソース埋め込む 4.【実⾏時】表⽰する⾔語(カルチャ)を指定 ※基本的にはMSDNの⼿順の変形です。 Silverlight ベースのアプリケーションのローカライズ http://msdn.microsoft.com/ja-jp/library/cc838238%28VS.95%29.aspx 9
11.
国際化の⼿順
⽇本語(ja-JP)と英語(en-US)に 対応させる例をベースに解説していきます。 10
12.
国際化の⼿順 1.プロジェクトファイルに対応する⾔語
(カルチャ)を記述 プロジェクトファイル(.csproj, .vbproj)を お好みのテキストエディタで開いて、 <SupportedCultures> に対応させたい カルチャ名を記述します。 Visual Studio 単独では設定不可能! 11
13.
国際化の⼿順 <Project ToolsVersion="3.5"
DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProductVersion>9.0.30729</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{87702BBC-F726-481B-AE35-18F56F6EEF4D}</ProjectGuid> <SupportedCultures>ja-JP;en-US</SupportedCultures> <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> セミコロンで区切ると複数カルチャを指定できます。 <RootNamespace>i18n</RootNamespace> <AssemblyName>i18n</AssemblyName> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <SilverlightApplication>true</SilverlightApplication> <SupportedCultures>ja -JP;en-US</SupportedCultures> <XapOutputs>true</XapOutputs> <GenerateSilverlightManifest>true</GenerateSilverlightManifest> <XapFilename>i18n.xap</XapFilename> <SilverlightManifestTemplate>PropertiesAppManifest.xml</SilverlightManifestTemplate> <SilverlightAppEntry>i18n.App</SilverlightAppEntry> <TestPageFileName>TestPage.html</TestPageFileName> <CreateTestPage>true</CreateTestPage> <ValidateXaml>true</ValidateXaml> ・ ・ ・ 12
14.
国際化の⼿順 2.アセンブリリソースファイル(.resx)を作成
ソリューションエクスプローラの 右クリックメニューから [追加] → [新しい項⽬] を選択し、 [アセンブリリソースファイル]を 選択します。 13
15.
国際化の⼿順 ⽇本語(ja-JP)、英語(en-US)に対応する場合は 以下のように3つのリソースファイルを作成します。 •
Resource.resx(インバリアントカルチャ⽤) • Resource.ja-JP.resx • Resource.en-US.resx ※インバリアントカルチャとは特定の⾔語/地域に 依存していないカルチャのことです。 14
16.
国際化の⼿順 Resouce.resx を開いて、アクセス修飾⼦
を Public に変更します。(初期値は Internal ) Resouce.ja-JP.resx、Resouce.en-US.resx は コード⽣成なし のままにしておきます。 15
17.
国際化の⼿順 3つのリソースファイルに置き換え⽂字列を 同じ名前で追加します。
Resource.resx Resource.ja-JP.resx Resource.en-US.resx 16
18.
国際化の⼿順 3.XAMLにリソース埋め込む App.xaml
の <App.Resouces> にリソースを 埋め込んで、Bindingするだけなのですが…。 アセンブリリソースファイルの⾃動⽣成コードは なぜかコンストラクタが internal なので、 そのままでは XAML に埋め込めません…。 これはバグなのか仕様なのか…。 17
19.
国際化の⼿順 解決するには以下のどちらかを⾏います。 •
⾃動⽣成コードのコンストラクタを public にする – リソースを変更する度にアクセス修飾⼦が internal に 戻されてしまう…。 • リソースをプロパティとするクラスを作る – MSDN の⼿順ではこちらの⼿順を紹介 – Binding の際のパス⽂字列が⻑くなる…。 18
20.
国際化の⼿順 リソースをプロパティとするクラスを作る場合は、 こんな感じに定義します。
public class LocalizedResouce { public LocalizedResouce() { } private static Resource resource = new Resource(); public Resource Resource { get { return resource; } } } 19
21.
国際化の⼿順 あとは App.xaml
にリソースを埋め込み、 <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:resources="clr-namespace:i18n" x:Class="i18n.App"> <Application.Resources> <resources:Resource x:Key="Resource" /> </Application.Resources> </Application> ⾃動⽣成コードを public にした場合 <resources:Resource x:Key="Resource" /> クラスを作った場合 <resources:Resource x:Key="LocalizedResource" /> 20
22.
国際化の⼿順 置き換え箇所で Binding
していきます。 ⾃動⽣成コードを public にした場合 <TextBlock Text="{Binding NameLabel, Source={StaticResource Resouce}}" /> クラスを作った場合 <TextBlock Text="{Binding Resource.NameLabel, Source={StaticResource LocalizedResouce}}" /> 21
23.
国際化の⼿順 CJK(中国語、⽇本語、韓国語)対応 CJKを適切に表⽰するためには更に設定が必要です。
ルート要素で以下のように指定します。 <UserControl Language="ja-JP" /> 22
24.
国際化の⼿順 4.【実⾏時】表⽰する⾔語(カルチャ)を指定 2つの指定⽅法があります。
• HTMLの<object>要素内で指定 • プログラム中で指定 23
25.
国際化の⼿順 HTMLの<object>要素内でカルチャを指定 <object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="Sample.xap"/> <param name="culture" value="ja-JP" /> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="uiculture" value="ja-JP" /> <param name="minRuntimeVersion" value="3.0.40624.0" /> <param name="autoUpgrade" value="true" /> <param name="culture" value="ja-JP" /> <param name="uiculture" value="ja-JP" /> <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Microsoft Silverlight を入手" style="border-style:none"/> </a> </object> 24
26.
国際化の⼿順 プログラム中でカルチャを指定 private void
Application_Startup(object sender, StartupEventArgs e) { Thread.CurrentThread.CurrentCulture = new CultureInfo("ja-JP"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); this.RootVisual = new MainPage(); } Thread.CurrentThread.CurrentCulture = new CultureInfo("ja-JP"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); 25
27.
国際化の⼿順
以上で基本的な⼿順は完了です。 ⾮常に簡単でしたね! 26
28.
補⾜(注意するポイント)
27
29.
補⾜(注意するポイント) 1.カルチャ指定時の注意点
XP と Vista/7 ではデフォルトカルチャの 解決ルールが異なるため、環境によって挙動が 変わってしまう場合があります。 カルチャは明⽰的に初期値を指定しましょう。 28
30.
補⾜(注意するポイント) 追記(2009/09/30) この部分の記載内容は誤りです。
実際に遭遇したケース カルチャを何も指定せずにアプリを実⾏。 • XP → インバリアントカルチャ • Vista/7 → OSのカルチャ設定に依存? ⽇本語版では ja-JP になった。 29
31.
補⾜(注意するポイント) 追記(2009/09/30) この部分の記載内容は誤りです。
また、ja-JP と en-US しか⽤意していないのに fr-FR などを指定した場合も同じ挙動に…。 30
32.
補⾜(注意するポイント) 追記(2009/09/30) 実際に遭遇したケース
アセンブリリソースを⽤意していない カルチャを表⽰⾔語として指定した場合、 読み込まれるカルチャが環境によって 異なる。(OSに依存している…?) 31
33.
補⾜(注意するポイント) 追記(2009/09/30)
Resource.rexs と Resource.ja-JP.resx の 2つを⽤意し、en-US を指定した場合 • XP → インバリアントカルチャ • Vista/7 → ⽇本語版OSでは ja-JP 32
34.
補⾜(注意するポイント) 2.アセンブリリソースファイルの⾃動⽣成コードは INotifyPropertyChanged、DependencyProperty
ではない。 普通に Binding すると、こういう⾔語切り替え UIは実装できない。 33
35.
補⾜(注意するポイント) 解決策
• Binding しない。プログラムで代⼊する。 NameLabelTextBlock.Text = Resource.NameLabel.toString(); • ⾃動⽣成コードをラッッピングする。 カルチャを切り替えたタイミングで INotifyPropertyChanged, DependencyProperty が 動作するように。 34
36.
補⾜(注意するポイント) ちなみに私は全部 Binding
に切り替えた後で、 気がついちゃったので、⾃動⽣成コードから INotifyPropertyChanged な動的クラスを⽣成する ジェネレータを作ることで解決しました。 35
37.
まとめ 36
38.
まとめ 開発者が意識することが多すぎです。 マイクロソフトさんには是⾮改善して頂きたい。
※これを⾔うために国際化なんて地味なネタでライトニングトークに 申し込んだとか、そうでないとか。 37
39.
ご清聴ありがとうございました
38
Download now