/
854.txt
596 lines (495 loc) · 16.6 KB
/
854.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
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
* 仕様書
[REFS[
- [62] [[LDML]]
--[63]
[CITE[Unicode Locale Data Markup Language ([[LDML]]) Part 4: Dates]], [TIME[2022-04-06T14:24:49.000Z]], [TIME[2022-07-12T13:33:09.486Z]] <https://unicode.org/reports/tr35/tr35-dates.html#Overview_Dates_Element_Supplemental>
--
[64]
[CITE[Unicode Locale Data Markup Language ([[LDML]]) Part 4: Dates]], [TIME[2022-04-06T14:24:49.000Z]], [TIME[2022-07-12T13:34:37.890Z]] <https://unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras>
-- [1]
'''[CITE[Unicode Locale Data Markup Language ([[LDML]]) Part 4: Dates]]''',
[TIME[2022-04-06T14:24:49.000Z]], [TIME[2022-07-11T08:01:56.548Z]] <https://unicode.org/reports/tr35/tr35-dates.html#Week_Data>
- [2]
[CITE@en[cldr/supplementalData.xml at latest · unicode-org/[[cldr]]]], [TIME[2022-07-11T08:03:29.000Z]] <https://github.com/unicode-org/cldr/blob/latest/common/supplemental/supplementalData.xml>
]REFS]
[3]
[[UAX #35]] ([[LDML]]) が構文を定め、
[[CLDR]] が[[ロケール]]定義を提供し、
[[ICU]] が実装するという関係になっています。
その母体となる[[標準化団体]]が [[Unicode Consortium]] です。
;; [4] [CITE[[[The Unicode Standard]]]]
本体と同じ[[標準化団体]]ですが、
仕様としては別物です。
[5] 実装はそれ以外にもあるかもしれません。
[SEE[ [[LDML]], [[CLDR]], [[ICU]] ]]
* LDML 要素
[65]
[[LDML]]
の[[ロケール]]データファイル用の[[XML要素]]として、
[DFN[[CODE[day]]]]
[[要素]]があります。
[CODE[type]] [[属性]]が[[必須]]です。
その[[内容]]は [[PCDATA]] です。
[SRC[>>64]]
[66]
[CODE[day]] [[要素]]の [DFN[[CODE[type]]]] [[属性]]は[[列挙属性]]で、
[CODE[sun]],
[CODE[mon]],
[CODE[tue]],
[CODE[wed]],
[CODE[thu]],
[CODE[fri]],
[CODE[sat]]
を指定できます。
[SRC[>>64]]
[[曜日]]を表し、それぞれ[[日曜日]]、[[月曜日]]、... [[土曜日]]です。
[[要素内容]]が当該[[ロケール]]において指定された[[曜日]]を表す[[文字列]]であることを意味します。
[67]
他の構造には[[数値]]を使っていますが、[[曜日]]に短い[[文字列]]を使っているのは、
普遍的に受け入れられている数値表現がないため、
と説明されています。
[SRC[>>64]]
-*-*-
[6]
[[LDML]] の[[ロケール]]データファイル用の [[XML要素]]として、
[DFN[[CODE[weekData]]]]
[[要素]]があります。
その[[内容]]は、
[CODE[minDays]],
[CODE[firstDays]],
[CODE[weekendStart]],
[CODE[weekEnd]],
[CODE[weekOfPreference]]
各[[要素]]で、この順序で、各0個[[以上]]含められます。
[SRC[>>1]]
[61]
[CODE[weekData]] [[要素]]は、
[CODE[supplementalData]] [[要素]]に含められます。
[SRC[>>63]]
-*-*-
[7]
[DFN[[CODE[minDays]]]]
は[[強制空要素]]で、
[CODE[count]] [[属性]]と
[CODE[territories]] [[属性]]が[[必須]]です。
[SRC[>>1]]
[8]
[DFN[[CODE[firstDay]]]],
[DFN[[CODE[weekendStart]]]],
[DFN[[CODE[weekendEnd]]]]
はすべて[[強制空要素]]で、
[CODE[day]] [[属性]]と
[CODE[territories]] [[属性]]が[[必須]]です。
[SRC[>>1]]
[11]
[CODE[minDays]],
[CODE[firstDay]],
[CODE[weekendStart]],
[CODE[weekendEnd]]
各[[要素]]の
[DFN[[CODE[territories]]]] [[属性]]は、
[CODE[NMTOKENS]]
を指定できます。
[SRC[>>1]]
[[要素]]は[[領土]]ごとの情報を表しており、
[CODE[territories]]
[[属性値]]の各[[名前字句]]が該当する[[領土]]を表しています。
同じ情報を持つ[[領土]]は1つの[[要素]]にまとめることができ、
別の情報を持つ[[領土]]は別の[[要素]]で表します。
[[領土]] [CODE[001]] の[[要素]]によって[[既定値]]の情報を記述できます
[SRC[>>1]]。
[9]
[CODE[minDays]] [[要素]]の
[DFN[[CODE[count]]]] [[属性]]は[[列挙属性]]で、 [CODE[1]] から [CODE[7]]
までの[[ASCII数字]]を指定できます。
[SRC[>>1]]
[[日]]数を表します。
[[年]]や[[月]]の最初の[[週]]の決定方法を指定するものです (>>15)。
[10]
[CODE[firstDay]],
[CODE[weekendStart]],
[CODE[weekendEnd]]
各[[要素]]の
[DFN[[CODE[day]]]] [[属性]]は[[列挙属性]]で、
[CODE[sun]],
[CODE[mon]],
[CODE[tue]],
[CODE[wed]],
[CODE[thu]],
[CODE[fri]],
[CODE[sat]]
を指定できます。
[SRC[>>1]]
[[曜日]]を表し、それぞれ[[日曜日]]、[[月曜日]]、... [[土曜日]]です。
[[週初]] (>>27) や[[週末]] (>>30) を指定するものです。
-*-*-
[12]
[DFN[[CODE[weekOfPreference]]]]
[[要素]]は[[強制空要素]]で、
[CODE[locales]] [[属性]]と
[CODE[ordering]] [[属性]]が[[必須]]です。
[SRC[>>1]]
[13]
[CODE[weekOfPreference]]
[[要素]]の
[DFN[[CODE[locales]]]] [[属性]]は、
[CODE[NMTOKENS]]
を指定できます。
[SRC[>>1]]
[[要素]]は[[ロケール]]ごとの情報を表しており、
[CODE[locales]]
[[属性値]]の各[[名前字句]]が該当する[[ロケール]]を表しています。
同じ情報を持つ[[ロケール]]は1つの[[要素]]にまとめることができ、
別の情報を持つ[[ロケール]]は別の[[要素]]で表します。
[[ロケール]] [CODE[und]] の[[要素]]によって[[既定値]]の情報を記述できます
[SRC[>>1]]。
[14]
[CODE[weekOfPreference]]
[[要素]]の
[DFN[[CODE[ordering]]]] [[属性]]は、
[CODE[NMTOKENS]]
を指定できます。
[SRC[>>1]]
週の表記法の優先順位を表します (>>52)。
* 週
[24]
[[LDML]] は[[七曜]]があてられた7日間の[[期間]]を[[週]]としているようです。
[[週]]と[[七曜]]は途切れず繰り返される前提としているようです。
[25]
7日以外の[[週]]や、[[週外日]]のようなものは扱えません。
[SEE[ [[週]] ]]
* 週初と週末
[27]
[[カレンダー]]表示の[[週]]の最初の[[日]]として表示するべきなのが、
[CODE[firstDay]]
で指定された[[曜日]]です。
[SRC[>>1]]
[29]
[RUBYB[週の日の番号付け][day-of-week numbering]]は、
[[カレンダー]]表示の[[週]]の最初の[[日]]を [N[1]]
として数えていきます。
将来は別途指定できるようにするかもしれないとされています。
[SRC[>>1]]
[28]
[[週末]]の後の最初の[[日]]、[[週]]の最初の[RUBYB[労働日][work day]]は、
[[週末]]から決定するべきものです。
必ずしも[[カレンダー]]表示の[[週]]の最初の[[日]]と同じとは限りません。
[SRC[>>1]]
[34]
[[CLDR]] は本段落執筆時点では次のようにしています。
[SRC[>>2]]
- [35] [[領土]]
[[001]]
AD AI AL AM AN AR AT AX AZ
BA BE BG BM BN BY
CH CL CM CR CY CZ
DE DK
EC EE ES
FI FJ FO FR
GB GE GF GP GR
HR HU
IE IS IT
KG KZ
LB LI LK LT LU LV
MC MD ME MK MN MQ MY
NL NO NZ
PL
RE RO RS RU
SE SI SK SM
TJ TM TR
UA UY UZ
VA VN
XK
は[[月曜日]]
- [36] [[領土]]
MV
は[[金曜日]]
- [37] [[領土]]
AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY
は[[土曜日]]
- [38] [[領土]]
AG AS AU
BD BR BS BT BW BZ
CA CN CO
DM DO
ET
GT GU
HK HN
ID IL IN
JM JP
KE KH KR
LA
MH MM MO MT MX MZ
NI NP
PA PE PH PK PR PT PY
SA SG SV
TH TT TW
UM US
VE VI
WS
YE
ZA ZW
は[[日曜日]]
[42]
[[既定値]]を表す [CODE[001]] や、[[欧州]]などが[[月曜日]]になっています。
[[日本]]を含む[[アジア]]や、
[[米国]]を含む[[米大陸]]方面などが[[日曜日]]になっています。
[[アラブ諸国]]などが[[土曜日]]に、
[[モルディブ]]が[[金曜日]]になっています。
[39]
更に次のような[[要素]]があります。
[SRC[>>2]]
[PRE(XML code)[
<firstDay day="sun" territories="GB" alt="variant" references="Shorter Oxford Dictionary (5th edition, 2002)"/>
]PRE]
[40] [CODE[alt]] [[属性]]と [COE[references]] [[属性]]は [[UAX #35]]
の [[DTD]] 片にない[[属性]]で意味は未詳です。
文言から推測すると、
[[英国]]は一般に[[月曜日]]始まりのところ、
[[日曜日]]始まりとすることもあって、
[CITE[Shorter Oxford Dictionary]] がその出典である、
といったところでしょうか。
[41]
なぜ[[英国]]のこの1例だけ別案が示されているのか不思議です。
-*-*-
[30]
[[週末]]は
[CODE[weekendStart]]
で指定された[[曜日]]から
[CODE[weekendEnd]]
で指定された[[曜日]]までです。
[31]
[RUBYB[[[週末]]][weekend]]が何を意味するかは[[国]]によります。
一般には小売業以外のほとんどが休業する時期です。
[SRC[>>1]]
;; [32]
[[時刻]]は「well-recognized part of the day」でなければ指定するべきではない
[SRC[>>1]] とされますが、 現行 [[LDML]] 仕様の [[DTD]]
片にはそのような指定がそもそも存在していません。過去には存在していたのでしょうか。
それとも他の規定が混入したのでしょうか。
;; [33]
[[LDML]]
では
[CODE[weekendStart]] の既定値は [CODE[sat]]、
[CODE[weekendEnd]] の既定値は [CODE[sun]] とされます。
[SRC[>>1]]
しかし
[[CLDR]]
は [CODE[001]] [[領土]]の値を明示的に定義しています。
この[[既定値]]は何のためのものでしょうか。
[[CLDR]] 以外の用途を想定したのでしょうか?
でも不思議なことに他の[[要素]]には[[既定値]]がなく、ここでだけ規定されています。
[45]
[[CLDR]] は本段落執筆時点では次のようにしています。
[SRC[>>2]]
- [46] [[領土]] AF は[[木曜日]]から[[金曜日]]
- [51] [[領土]] IR は[[金曜日]]から[[金曜日]]
- [47] [[領土]]
AE BH DZ EG IL IQ JO KW LY OM QA SA SD SY YE
は[[金曜日]]から[[土曜日]]
- [48] [[領土]]
[[001]]
は[[土曜日]]から[[日曜日]]
- [49] [[領土]]
IN UG
は[[日曜日]]から
-- [50] 既定値 = [[領土]] [[001]] を補って、[[日曜日]]から[[日曜日]]
-*-*-
[43]
[[LDML]] の仕様では[[領土]]単位でしか記述できません。
[[領土]]以外の[[ロケール]]の要素による違いや、
[[位相]]差、個人差は扱えません。
* 週名の表記
[52]
[[ロケール]]ごとの[RUBYB[週の指定][week designation]]の種類の優先順位は、
[CODE[weekOfPreference]]
[[要素]]で記述されます。
[SRC[>>1]]
[53]
次の4種類の値があります。 [SRC[>>4]]
[[LDML]] の[[属性値]]として1つ[[以上]]、それぞれを高々1つ記述されることが求められると思われます。
- [54] [DFN[[CODE[weekOfYear]]]]:
「week 15 of 2016」のような表記です。
具体的には[[ロケール]]の
[CODE[<[[dateFormatItem]] id='yw'>]]
の形式に相当します。
- [55] [DFN[[CODE[weekOfMonth]]]]:
「week 2 of April」
「2nd week of April」
のような表記です。
具体的には[[ロケール]]の
[CODE[<[[dateFormatItem]] id='MMMMW'>]]
の形式に相当します。
- [56] [DFN[[CODE[weekOfDate]]]]:
「the week of April 11, 2016」
のような表記です。
具体的には[[ロケール]]の
[CODE[<[[field]] type="week"><[[relativePeriod]]>]]
の形式に相当します。
最初の[[日]]、[RUBYB[労働日][workday]]、
週全体の範囲、[RUBYB[労働週][work week]]の範囲などで表現できます。
- [57] [DFN[[CODE[weekOfInterval]]]]:
「the week of April 11, 2016」
のような表記です。
具体的には[[ロケール]]の
[CODE[<[[field]] type="week"><[[relativePeriod]]>]]
の形式に相当します。
最初の[[日]]、[RUBYB[労働日][workday]]、
週全体の範囲、[RUBYB[労働週][work week]]の範囲などで表現できます。
[58]
[[CLDR]] は本段落執筆時点では次のようにしています。
[SRC[>>2]]
[FIG(table)[
:l: [[ロケール]]
:weekOfYear:[CODE[weekOfYear]]
:weekOfMonth:[CODE[weekOfMonth]]
:weekOfDate:[CODE[weekOfDate]]
:weekOfInterval:[CODE[weekOfInterval]]
:l:[CODE[und]]
:weekOfYear:1
:l:am az bs cs cy da el et hi ky lt mk sk ta th
:weekOfYear:1
:weekOfMonth:2
:l:is mn no sv vi
:weekOfYear:1
:weekOfMonth:2
:weekOfInterval:3
:l:fi zh_TW
:weekOfYear:1
:weekOfDate:2
:weekOfMonth:3
:l:zu
:weekOfYear:1
:weekOfInterval:2
:l:ca es fr gl
:weekOfDate:1
:l:en bn ja ka
:weekOfDate:1
:weekOfMonth:2
:l:bg de iw pt ur zh
:weekOfDate:1
:weekOfMonth:2
:weekOfInterval:3
:l:nl
:weekOfDate:1
:weekOfYear:2
:weekOfMonth:3
:l:af
:weekOfDate:1
:weekOfInterval:2
:weekOfMonth:3
:l:ar fil gu hu hy id kk ko
:weekOfMonth:1
:weekOfMonth:1
:weekOfYear:2
:l:km mr
:weekOfMonth:1
:weekOfYear:2
:weekOfInterval:3
:weekOfDate:4
:l:ms tr
:weekOfMonth:1
:weekOfDate:2
:l:eu
:weekOfMonth:1
:weekOfDate:2
:weekOfYear:3
:l:kn ml pa
:weekOfMonth:1
:weekOfInterval:2
:l:fa hr it lv pl si sr uk uz
:weekOfMonth:1
:weekOfInterval:2
:weekOfYear:3
:l:sw te
:weekOfMonth:1
:weekOfInterval:2
:weekOfDate:3
:weekOfYear:4
:l:lo sq
:weekOfInterval:1
:l:sl
:weekOfInterval:1
:weekOfMonth:2
:l:be ro ru
]FIG]
[59]
このデータがどれだけ信頼できるかというと、怪しい気がします。
[[週]]の表記は[[年月日]]ほど安定しておらず
(優先度2位以下を持つ[[ロケール]]が多いことがそれを証明しています)、
[[国]]の単位で[[週]]はこう表記するべき、
と決定できるところがまず少ないのではないかと疑われます。
[60]
[CODE[ja]] では weekOfDate が第1位、 weekOfMonth が第2位になっています。
[[日本国]]の[[日本語]]では、
確かに「何月何日の週」のような言い方はしますし、
「何月第何週」のような言い方もします。
でも前者が優勢かというと、
自信を持って肯定するのも否定するのも難しいのではないでしょうか。
どちらかというと
「何月第何週」
の方が定期スケジュールの記述には多い気がします。
スケジュール確認の場面では
「何月何日の週」
が多い気がします
(「何月第何週」の安定した定義がないと理解されているからかもしれません)。
出来事や予定を一覧にする場面では、
「何月何日から何月何日の週」
の表記も見かけます
(がこのデータには weekOfInterval がないですね)。
* 年の週と月の週
[15]
[RUBYB[[[年の週]]の計算][week-of-year calculation]]における年の最初の週の決定や、
[RUBYB[[[月の週]]の計算][week-of-month calculation]]における月の最初の週の決定では、
[CODE[minDays]] で指定された値を使って、
その[[日]]数[[以上]]が含まれる[[週]]を[[年]]や[[月]]の[[週]]、
それに満たない[[週]]を前の[[年]]や[[月]]の[[週]]とします。
[SRC[>>1]]
[44]
[[LDML]] の仕様書では明確ではありませんが、
[[週初]]の[[日]]からの7日間が[[週]]とみなされるのでしょうか。
[16]
[[CLDR]] は本段落執筆時点では次のようにしています。
[SRC[>>2]]
- [17] [[領土]] [[001]] GU UM US VI は [N[1]]
- [18] [[領土]]
AD AN AT AX
BE BG
CH CZ
DE DK
EE ES
FI FJ FO FR
GB GF GG GI GP GR
HU
IE IM IS IT
JE
LI LT LU
MC MQ
NL NO
PL PT
RE RU
SE SJ SK SM
VA は [N[4]]
[19]
[N[1]] は1日でも含まれれば新しい[[年]]や[[月]]に属することを意味します。
既定値を表す [CODE[001]] や、[[アメリカ合衆国]]などがこちらになっています。
[20]
[N[4]] は4日、つまり7日ある[[週]]の[[過半数]]が含まれれば新しい[[年]]や[[月]]に属することを意味します。
[[欧州]]の[[国]]の多くがこちらになっています。
[[ISO週暦]]における[[週年]]と同じ決め方です。
[21]
[[LDML]] は [N[2]], [N[3]], [N[5]], [N[6]], [N[7]]
も認めていますが、現在の [[CLDR]] にはそのような[[領土]]は登録されていません。
([N[7]] の地域がないのは意外ですね。)
[22]
[[LDML]] の仕様では所属年の決定方法と所属月の決定方法は変えられません。
(月が年に含まれるようにするためでしょうか。)
[23]
[[LDML]] の仕様では「前の月の最終週かつ次の月の最初の週である週」や
「前の月の最終週 (7日に満たない) と次の月の最初の週 (7日に満たない)」
のようなものを扱えません。
[26]
[[LDML]] の仕様では[[領土]]単位でしか記述できません。
[[領土]]以外の[[ロケール]]の要素による違いや、
[[位相]]差、個人差は扱えません。
* メモ