Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
.NETアプリケーションの国際化入門
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takuya Shibata
PRO
August 10, 2014
Technology
550
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
.NETアプリケーションの国際化入門
※発表中にいくつか指摘を受けておりあまり正しい内容とは言えないものとなっています。
2014/08/10に行われたCode 2014で発表した.NETの国際化についての内容です。
Takuya Shibata
PRO
August 10, 2014
More Decks by Takuya Shibata
See All by Takuya Shibata
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
670
AWSのProductのLifecycleについて
stknohg
PRO
0
740
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
760
CloudFrontの継続的デプロイを試してみたはなし
stknohg
PRO
0
1.6k
Snapshot & Backup
stknohg
PRO
0
4.3k
AWSエンジニアのためのActive Directory入門
stknohg
PRO
1
3.7k
EC2 Image Builder
stknohg
PRO
0
590
Windows on AWS の “基礎”
stknohg
PRO
0
1k
Azure Dedicated Host と2019年10月1日からのライセンス改定のはなし
stknohg
PRO
0
630
Other Decks in Technology
See All in Technology
【書籍出版記念】 10周回って、エージェント開発は RAGがすべてだった。〜RAGの歴史と開発現場で見えた実践知〜
akiratameto
3
430
8bit CPU 2026
koba789
1
480
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
290
LanceDB入門
mocobeta
9
640
SmartHR Engineering Team Deck
smarthr
1
3.1k
ハーレムエンジニアリング
kazuma777777
0
190
Genie Codeハンズオン応用編
taka_aki
0
130
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
320
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
140
国家プロジェクトを支える「さくらONE」 大規模LLM開発におけるGPU障害を乗り越えるクラスター運用戦略
gpuunite_official
0
170
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
The Curious Case for Waylosing
cassininazir
1
470
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
440
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Writing Fast Ruby
sferik
630
63k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
380
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
370
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
BBQ
matthewcrist
89
10k
Transcript
.NETアプリケーションの 国際化入門 2014/08/10 Code 2014 CLR/H 素敵なおひげ
自己紹介 H/N 素敵なおひげ Twitter - @stknohg
Blog - http://d.hatena.ne.jp/stknohg 何者? CLR/Hの裏方。 札幌でSIerやってます。 インフラ構築からアプリ製造、運用まで色々やってま す。
国際化と地域化 Wikipedia http://ja.wikipedia.org/wiki/国際化と地域化 地域化 地域固有の構成部品や翻訳テキストを追加することによって、 ソフトウェアを特定の地域や言語に適合させる工程
→本発表ではこちらについて主に触れる 国際化 ソフトウェアに技術的な変更を加えることなく多様な言語や地 域に適合できるようにする、ソフトウェア設計の工程 ※以下は発表時の間違っていた定義なので削除 オレオレ定義 地域化 – Localization (l10n) 特定のリソース(だいたい言語)のみを国別に対応する 国際化 – Internationalization(i18n) リソースに加え、アプリケーションの内容も国別に対応する
国際化で扱う主なリソース 地域 言語 日付 時刻
通貨 商習慣・文化
.NETでの国際化対応 System.Globalization名前空間 CultureInfoクラス http://msdn.microsoft.com/ja- jp/library/System.Globalization.CultureInfo.aspx スレッドカルチャとUIカルチャ
スレッドカルチャ 各スレッド毎のカルチャ CultureInfo.CurrentCulture UIカルチャ UI用(多分UIスレッド)のカルチャ CultureInfo.CurrentUICulture
.NETでの国際化対応 カルチャの種類 インバリアントカルチャ カルチャ未指定の場合 カルチャ指定
[言語]-[地域] ja-JPなど カルチャ名はRFC4646に準ずる 言語=ISO639 地域=ISO3166 [言語] jaなど 言語のみ指定するカルチャ=ニュートラルカルチャ .NET3.5まではカルチャをニュートラルカルチャにすることがで きなかった。
地域 地域と言語 OS上は地域と言語はセットで扱われることが多い。 .NETのカルチャ指定も「言語-地域」。 ja-JP /
en-US / en-GB 現実は地域と言語はバラバラである。 ja-USだったりen-JPな場合はままある ※上記の様なカルチャ指定はできないので注意 システムとしてどの地域を採用するか? PCやサーバーが物理的に置かれている場所? OSの設定上の地域?
言語(言語表記) 言語リソース .NET Frameworkではカルチャ別にリソースを持てる。 リソース無し=デフォルト 対応したいカルチャに対してリソースを作成する。
リソース上はニュートラルカルチャと個別のカルチャは別 扱いになる jaカルチャとja-JPカルチャでは別リソース 個別のカルチャ➡ニュートラルカルチャでリソースは参照される ResourceファイルとResxファイル .NETではXML形式のResxファイルがリソースの基本 従来のテキストベースのResourceファイルも使用可能 リソースコンパイラで別途リソースを作る必要はある
言語(文字コード) 文字コード 国際化対応するならシステムで扱う文字コードは ユニコードにせざるを得ない。 UTF-8?UTF-16? システム要件次第。
採用するデータベースにも左右される。 照合順序 文字や数字の並び順。 アプリケーションでは意識することは少ないが データベースによっては意識する必要がある。
言語(文字について) 1文字は何バイトか? UTF-8で文字を扱う場合、1文字のバイト数を意識する必 要がある。 画面の入力上限 データベース設計
1文字に見える文字 サロゲートペア 合成文字 アクセント記号、濁点・半濁点 ハングル文字やタイ文字など 補足 日本語の半角・全角 外字、拡張ASCII領域
日付 日付書式 国が違えば日付書式も異なる。 日本 – yyyy/MM/dd
アメリカ – MM/dd/yyyy ドイツ – dd.MM.yyyy CultureInfo.DateTimeFormat 暦 今年は何年何月何日? 西暦(グレゴリオ暦) - 2014年8月9日 和暦 - 平成26年8月9日 タイ太陽暦 – 2557年8月9日 (西暦+543年) NewCulture.DateTimeFormat.Calendar
日付 データベースでの日付 極力日付型を使う。 必要があればTimezone付きの型を使用する。 CHAR(8)…
既存システムとの連携などでCHAR(8)で日付を格納しな ければならない場合はそれなりにある。 この場合の書式はシステム全体で統一する必要がある。
時刻 時刻書式 時刻書式も国別に分かれるが、時-分-秒なのは大体同じ。 CultureInfo.DateTimeFormat 時差
国をまたぐアプリケーションでは時差を考慮する必要があ る。 システム上はUTC基準で動くと良い。 何の時刻を扱っているか常に意識する必要がある。 地域の実際の時刻 クライアントPCのローカル時刻 WEBサーバやDBサーバーのローカル時刻
通貨 通貨 国が違えば通貨も違う (私の知る範囲では)システム上通貨は国ごとに個別に扱う 国別に法人が違うため。
通貨の単位 補助単位 システム上小数で扱う通貨。セント等。 €0.10 = 10c 桁区切り・小数点 “,”区切りの国と”.”区切りの国 桁区切りの桁数も国によって異なる。
通貨 通貨書式(≒数値書式) CultureInfo.NumberFormat 通貨記号 CultureInfo.NumberFormat.CurrencySymbol
負号 CultureInfo.NumberFormat.NegativeSign 通貨の表記 日本(漢数字) – 金五千円也 タイ語 – ห้าพันบาทห้าสิบสตางค์ (5000バーツ50サタン) ExcelにBAHTTEXT関数なんてものもある http://office.microsoft.com/ja-jp/excel-help/HP010342197.aspx
商習慣・文化 国が違えば文化や習慣、法律が違う 共通の業務ロジックが使用出来ない システムとしての対処法 業務ロジックはリソース化できない。
国別に処理を分けるか、アプリケーション自体を分け るか? ケースバイケースだが個人的にはアプリケーション自体を 分けた方が良いと思う。 Order.dllとOrder.en.dllの様な感じで。 リソースではないので切り替えは自前で行う。
(捕捉)Windows独自の事情 アプリケーションで国際化対応できないもの コモンダイアログなどの共用リソース OpenFileDialog PrintDialog
Etc… 一部コントロールの外観 カレンダコントロールのカレンダー部分 OSの言語設定に依存