/
286.txt
264 lines (203 loc) · 11.4 KB
/
286.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
* ロケール実装の構成要素
[53]
[FIG(short list)[
- [[言語]]
- [[IME]]
- [[フォント]]
- [[書字方向]]
- [[文字コード]]
- [[照合順序]]
- [[翻訳テキスト]]
- [[数値形式]]
- [[単位系]]
- [[貨幣]]
- [[価格形式]]
- [[暦法]]
- [[紀年法]]
- [[時刻系]]
- [[時間帯]]
- [[日時形式]]
- [[暦注]]
- その他[[言語]]依存処理の情報
]FIG]
* IETF における定義
[FIG[
[4]
> Locale is the user-specific location and cultural information managed by a computer.
[FIGCAPTION[
[CITE@en[RFC 3536 - Terminology Used in Internationalization in the IETF]]
<http://tools.ietf.org/html/rfc3536#section-7>
]FIGCAPTION]
]FIG]
* LDML における定義
[FIG[
[7]
>In this model, a locale is an identifier (id) that refers to a set of user preferences that tend to be shared across significant swaths of the world. Traditionally, the data associated with this id provides support for formatting and parsing of dates, times, numbers, and currencies; for measurement units, for sort-order (collation), plus translated names for time zones, languages, countries, and scripts. The data can also include support for text boundaries (character, word, line, and sentence), text transformations (including transliterations), and other services.
[FIGCAPTION[
[CITE@en-us[UTS #35: Unicode Locale Data Markup Language]] ([TIME[2011-07-19 03:14:51 +09:00]] 版) <http://unicode.org/reports/tr35/#Locale>
]FIGCAPTION]
]FIG]
[8] この定義による「[[ロケール]]」は文字列です。
* ロケールの仕様
[FIG(list middle)[ [13]
- [5] [[ISO/IEC 15897]] ([[IDT]] [[CEN ENV 12005]])
- [[POSIX locale]]
- [6] [[UTS #35]] [[LDML]]
]FIG]
* ロケールの分類
- [9] [[言語ロケール]]
- [10] [[領土ロケール]]
* ロケール識別子
[61] [[ロケール識別子]]参照。
* ロケールの継承
[11] [[ロケール]]間には[[継承]]関係が定義されていることもあります。
[REFS[
- [12] [CITE@en-us[UTS #35: Unicode Locale Data Markup Language]] ([TIME[2011-07-19 03:14:51 +09:00]] 版) <http://unicode.org/reports/tr35/#Locale_Inheritance>
]REFS]
* データ
[49] [[ロケール]]に関わる次のデータは、[[年]]または[[月]]レベルで随時更新されていきますから、
それに依存するソフトウェアは、何らかの[[自動更新]]の仕組みを保持するべきです。
[FIG(list)[
- [[文字]]の情報 - 数ヶ月程度で改訂されます。
-- [[Unicode Character Database]] の情報
-- プロトコル依存の情報 (例えば [[IDNA]])
-- [[フォント]]
-- [[照合順序]]の情報
- [[時間帯]]の情報
-- [[標準時]]の改正や[[夏時刻]]の実施がいつあるかわかりません。
-- [[夏時間]]の開始や終了が実施の数日前に発表されることがあります。
- [[言語タグ]]の正規化や妥当性検証の情報 - 何ヶ月かの頻度で新規追加があります。
- [[暦]]の情報
-- [[暦]]によっては、翌年の[[月]]配置などが前年末に決定されたりします。
-- [[改暦]]、[[紀年法]]の変更、[[改元]]が突然実施されることがあります。
- [[祝祭日]]の情報
-- [[暦]]によって決まる[[祝祭日]]は、直前まで[[日]]が定まらないことがあります。
-- 臨時の[[休日]]などが実施の数日前に発表されることがあります。
- [[入力システム]]の[[辞書]]
-- [[新語]]等
-- 新しい [[Unicode]] [[文字]]・[[異体字]]など
-- 新しい[[元号]]
-- 新しい[[祝祭日]]
]FIG]
;; [50] [[改元]]は翌日施行されたりします。
;; [54] [[将来の日時]]も参照。
[57] [[プラットフォーム]]や[[アプリケーション]]は、
[[ロケール]]に関する情報の更新を適切に反映させる仕組みを持つ必要があります。
[EG[
[58] 例えば[[政府]]が[[夏時刻]]の実施を1週間前に決定し、
[[プラットフォーム]]の提供者が[[時間帯]]データベースの更新データを2日前に配信した場合、
[[プラットフォーム]]がこれを取得し、
([[プラットフォーム]]および連続して稼働中の[[アプリケーション]]も含めて)
実施までに現に参照している[[データベース]]を新しい定義に置き換える必要があります。
]EG]
[EG[
[59] 例えば[[政府]]が[[夏時刻]]の実施の中止を直前に発表し、
[[プラットフォーム]]の提供者の更新データ配布がそれに間に合わず実施翌日に配信した場合、
[[プラットフォーム]]は誤って[[夏時刻]]に移行した後に更新データを適用することになります。
[[プラットフォーム]]の[[地方時]]は[[夏時刻]]から[[標準時]]に戻すことになり、
[[時刻]]の不連続が発生します。
誤った[[夏時刻]]の実施中に[[夏時刻]]で記述された[[時刻]]は、
データベースの訂正後にも正しい[[時刻]]と解釈され続けるべきですが、
そのように実装されているかどうかはケースバイケースでしょう。
]EG]
[52] 次の情報は、それほど頻繁には更新されないかもしれません。
[FIG(list)[
- [[言語]]ごとの[[利用者インターフェイス]]上の文字列や音声の情報
- [[綴り検査]]や[[文法検査]]の[[辞書]]
- [[自動翻訳]]のための情報
- [[言語判定]]の情報
- [[OCR]] のための情報
- [[音声合成]]のための情報
]FIG]
* セキュリティーとプライバシー
[60] [[ロケール]]の選択の情報は、[[プライバシー]]に関するものと扱う必要があります。
[34] [[日時のプライバシー]]、[[日時のセキュリティー]]、[[文字のセキュリティー]]も参照。
* 実装
[FIG(short list)[ [33] [[ロケール]]の実装
- [[ロケール (WebExtensions)]]
- [[ロケール (Facebook)]]
- [CODE[Intl]]
]FIG]
* メモ
[1]
<http://macchiato.com/slides/unicode_at_google.pdf>
[2] [CITE[Manpage of LOCALE]] ([TIME[2009-03-14 16:26:46 +09:00]] 版) <http://www.linux.or.jp/JM/html/LDP_man-pages/man5/locale.5.html>
[3] [CITE@en[GNU libc (glibc) locale patch page]] ([TIME[2004-07-18 17:07:47 +09:00]] 版) <http://www.hungry.com/~pere/linux/glibc/>
[14] [CITE@en[RFC 6365 - Terminology Used in Internationalization in the IETF]]
([TIME[2011-09-10 19:11:51 +09:00]] 版)
<http://tools.ietf.org/html/rfc6365#section-8>
[15] [CITE@en[Web Applications 1.0 r6905 Clarify how language affects form controls.]]
( ([TIME[2012-01-21 08:03:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6904&to=6905>
[16] [CITE@en[Web Services Internationalization (WS-I18N)]]
( ([TIME[2012-05-17 23:07:50 +09:00]] 版))
<http://www.w3.org/TR/2012/NOTE-ws-i18n-20120522/#sec-locale>
[17] [CITE@en[Bug 22679 – API to expose locale-specific settings]]
( ([TIME[2013-10-15 08:07:23 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22679>
[18] [CITE@ja[ロケールとコード ページ]]
([TIME[2015-04-24 19:40:59 +09:00]] 版)
<https://msdn.microsoft.com/ja-jp/library/8w60z792.aspx>
[23] [CITE[Internationalizing Your App - Google Chrome]]
([TIME[2015-04-24 19:47:04 +09:00]] 版)
<https://developer.chrome.com/webstore/i18n?csw=1#localeTable>
[24] [CITE@en[Mozilla localizations - Wikipedia, the free encyclopedia]]
([TIME[2015-04-23 11:42:41 +09:00]] 版)
<http://en.wikipedia.org/wiki/Mozilla_localizations>
[25] [CITE@ja[カスタム用語集の形式 - Translate ヘルプ]]
([TIME[2015-04-24 20:24:00 +09:00]] 版)
<https://support.google.com/translate/toolkit/answer/147854?hl=ja>
[26] [CITE[Locale | Android Developers]]
([TIME[2015-04-24 21:39:02 +09:00]] 版)
<http://developer.android.com/reference/java/util/Locale.html>
[27] [CITE[localization - What is the list of supported languages/locales on Android? - Stack Overflow]]
([TIME[2015-04-24 21:39:12 +09:00]] 版)
<http://stackoverflow.com/questions/7973023/what-is-the-list-of-supported-languages-locales-on-android>
[28] [CITE@en-US[Android App Localization :: WilsonMar.com]]
([[Wilson Mar, 310.320-7878]] 著, [TIME[2014-08-24 10:54:11 +09:00]] 版)
<http://www.wilsonmar.com/android_localization.htm>
[29] [CITE@en[Mobile/Projects/Localization - MozillaWiki]]
([TIME[2015-04-24 21:45:04 +09:00]] 版)
<https://wiki.mozilla.org/Mobile/Projects/Localization>
[39] [CITE@ja[LibreOffice Localization Guide/Adding a New Language or Locale - The Document Foundation Wiki]]
([TIME[2015-01-25 23:26:46 +09:00]] 版)
<https://wiki.documentfoundation.org/LibreOffice_Localization_Guide/Adding_a_New_Language_or_Locale>
[40] [CITE@en[LCOV - make check - i18nlangtag/source/isolang/isolang.cxx]]
([TIME[2015-03-05 07:44:18 +09:00]] 版)
<http://lcov.libreoffice.org/i18nlangtag/source/isolang/isolang.cxx.gcov.html>
[41] [CITE@en[List of Wikipedias - Meta]]
([TIME[2015-04-25 09:00:16 +09:00]] 版)
<http://meta.wikimedia.org/wiki/List_of_Wikipedias>
[42] [CITE@en[MySQL :: MySQL 5.6 Reference Manual :: 10.7 MySQL Server Locale Support]]
([TIME[2015-04-25 15:10:18 +09:00]] 版)
<https://dev.mysql.com/doc/refman/5.6/en/locale-support.html>
[43] [CITE[Java SE 7 Supported Locales]]
([TIME[2015-04-25 17:28:54 +09:00]] 版)
<http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html>
[44] [CITE@en[''''''[''''''mediawiki'''''']'''''' Contents of /trunk/phase3/languages/Names.php]]
([TIME[2015-04-25 19:49:51 +09:00]] 版)
<http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/Names.php?view=markup>
[45] [CITE@en[mediawiki/Names.php at master · wikimedia/mediawiki]]
([TIME[2015-04-25 19:51:12 +09:00]] 版)
<https://github.com/wikimedia/mediawiki/blob/master/languages/Names.php>
[46] [CITE@en[Languages]]
([TIME[2015-04-25 22:25:47 +09:00]] 版)
<https://translations.launchpad.net/+languages>
[47] [CITE@ja[+1 ボタン - Google+ Platform — Google Developers]]
([TIME[2013-06-08 08:18:53 +09:00]] 版)
<https://developers.google.com/+/web/+1button/#available-languages>
[55] [CITE@en[API Reference - Web Application - Tizen Web Device API Reference - Cordova - Globalization API | Tizen Developers]]
([TIME[2017-04-13 01:18:45 +09:00]])
<https://developer.tizen.org/development/api-references/web-application?redirect=https://developer.tizen.org/dev-guide/3.0.0/org.tizen.web.apireference/html/device_api/mobile/tizen/cordova/globalization.html>
[56] [CITE@en[API Reference - Web Application - Tizen Web Device API Reference - System - Time API | Tizen Developers]]
([TIME[2017-04-13 01:21:29 +09:00]])
<https://developer.tizen.org/development/api-references/web-application?redirect=https://developer.tizen.org/dev-guide/3.0.0/org.tizen.web.apireference/html/device_api/mobile/tizen/time.html>
[35] [[ゲーム]]に[[○]]や[[×]]の[[ボタン]]があると、
[[ロケール]]によって「決定」と「取消」の割当が逆になったりします。
([[ハードウェア]]の[[ボタン]]の位置は当然そのままで、
挙動が入れ替わります。それに伴い操作説明など関係する[[文言]]の一部を変える必要が出たりもします。)
[19] [[記号]]にすると多文化対応で怒られる。
[[文字]]にすると多言語対応で怒られる。
[[色]]にすると色盲対応で怒られる。
[[矢印]]にすると[[多方向性][bidi]]対応で怒られる。
何やっても詰んどるやんけwwwww