@lokascript/i18n 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +286 -0
  2. package/dist/browser.cjs +7669 -0
  3. package/dist/browser.cjs.map +1 -0
  4. package/dist/browser.d.cts +50 -0
  5. package/dist/browser.d.ts +50 -0
  6. package/dist/browser.js +7592 -0
  7. package/dist/browser.js.map +1 -0
  8. package/dist/hyperfixi-i18n.min.js +2 -0
  9. package/dist/hyperfixi-i18n.min.js.map +1 -0
  10. package/dist/hyperfixi-i18n.mjs +8558 -0
  11. package/dist/hyperfixi-i18n.mjs.map +1 -0
  12. package/dist/index.cjs +14205 -0
  13. package/dist/index.cjs.map +1 -0
  14. package/dist/index.d.cts +947 -0
  15. package/dist/index.d.ts +947 -0
  16. package/dist/index.js +14095 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/transformer-Ckask-yw.d.cts +1041 -0
  19. package/dist/transformer-Ckask-yw.d.ts +1041 -0
  20. package/package.json +84 -0
  21. package/src/browser.ts +122 -0
  22. package/src/compatibility/browser-tests/grammar-demo.spec.ts +169 -0
  23. package/src/constants.ts +366 -0
  24. package/src/dictionaries/ar.ts +233 -0
  25. package/src/dictionaries/bn.ts +156 -0
  26. package/src/dictionaries/de.ts +233 -0
  27. package/src/dictionaries/derive.ts +515 -0
  28. package/src/dictionaries/en.ts +237 -0
  29. package/src/dictionaries/es.ts +233 -0
  30. package/src/dictionaries/fr.ts +233 -0
  31. package/src/dictionaries/hi.ts +270 -0
  32. package/src/dictionaries/id.ts +233 -0
  33. package/src/dictionaries/index.ts +238 -0
  34. package/src/dictionaries/it.ts +233 -0
  35. package/src/dictionaries/ja.ts +233 -0
  36. package/src/dictionaries/ko.ts +233 -0
  37. package/src/dictionaries/ms.ts +276 -0
  38. package/src/dictionaries/pl.ts +239 -0
  39. package/src/dictionaries/pt.ts +237 -0
  40. package/src/dictionaries/qu.ts +233 -0
  41. package/src/dictionaries/ru.ts +270 -0
  42. package/src/dictionaries/sw.ts +233 -0
  43. package/src/dictionaries/th.ts +156 -0
  44. package/src/dictionaries/tl.ts +276 -0
  45. package/src/dictionaries/tr.ts +233 -0
  46. package/src/dictionaries/uk.ts +270 -0
  47. package/src/dictionaries/vi.ts +210 -0
  48. package/src/dictionaries/zh.ts +233 -0
  49. package/src/enhanced-i18n.test.ts +454 -0
  50. package/src/enhanced-i18n.ts +713 -0
  51. package/src/examples/new-languages.ts +326 -0
  52. package/src/formatting.test.ts +213 -0
  53. package/src/formatting.ts +416 -0
  54. package/src/grammar/direct-mappings.ts +353 -0
  55. package/src/grammar/grammar.test.ts +1053 -0
  56. package/src/grammar/index.ts +59 -0
  57. package/src/grammar/profiles/index.ts +860 -0
  58. package/src/grammar/transformer.ts +1318 -0
  59. package/src/grammar/types.ts +630 -0
  60. package/src/index.ts +202 -0
  61. package/src/new-languages.test.ts +389 -0
  62. package/src/parser/analyze-conflicts.test.ts +229 -0
  63. package/src/parser/ar.ts +40 -0
  64. package/src/parser/create-provider.ts +309 -0
  65. package/src/parser/de.ts +36 -0
  66. package/src/parser/es.ts +31 -0
  67. package/src/parser/fr.ts +31 -0
  68. package/src/parser/id.ts +34 -0
  69. package/src/parser/index.ts +50 -0
  70. package/src/parser/ja.ts +36 -0
  71. package/src/parser/ko.ts +37 -0
  72. package/src/parser/locale-manager.test.ts +198 -0
  73. package/src/parser/locale-manager.ts +197 -0
  74. package/src/parser/parser-integration.test.ts +439 -0
  75. package/src/parser/pt.ts +37 -0
  76. package/src/parser/qu.ts +37 -0
  77. package/src/parser/sw.ts +37 -0
  78. package/src/parser/tr.ts +38 -0
  79. package/src/parser/types.ts +113 -0
  80. package/src/parser/zh.ts +38 -0
  81. package/src/plugins/vite.ts +224 -0
  82. package/src/plugins/webpack.ts +124 -0
  83. package/src/pluralization.test.ts +197 -0
  84. package/src/pluralization.ts +393 -0
  85. package/src/runtime.ts +441 -0
  86. package/src/ssr-integration.ts +225 -0
  87. package/src/test-setup.ts +195 -0
  88. package/src/translation-validation.test.ts +171 -0
  89. package/src/translator.test.ts +252 -0
  90. package/src/translator.ts +297 -0
  91. package/src/types.ts +209 -0
  92. package/src/utils/locale.ts +190 -0
  93. package/src/utils/tokenizer-adapter.ts +469 -0
  94. package/src/utils/tokenizer.ts +19 -0
  95. package/src/validators/index.ts +174 -0
  96. package/src/validators/schema.ts +129 -0
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Ukrainian Dictionary
3
+ *
4
+ * Translations for Ukrainian language support.
5
+ * Uses infinitive verbs (common in software UIs).
6
+ */
7
+
8
+ import { Dictionary } from '../types';
9
+
10
+ export const ukrainianDictionary: Dictionary = {
11
+ commands: {
12
+ // Event handling
13
+ on: 'при',
14
+ tell: 'сказати',
15
+ trigger: 'викликати',
16
+ send: 'надіслати',
17
+
18
+ // DOM manipulation
19
+ take: 'взяти',
20
+ put: 'покласти',
21
+ set: 'встановити',
22
+ get: 'отримати',
23
+ add: 'додати',
24
+ remove: 'видалити',
25
+ toggle: 'перемкнути',
26
+ hide: 'сховати',
27
+ show: 'показати',
28
+
29
+ // Control flow
30
+ if: 'якщо',
31
+ unless: 'якщо_не',
32
+ repeat: 'повторити',
33
+ for: 'для',
34
+ while: 'поки',
35
+ until: 'до',
36
+ continue: 'продовжити',
37
+ break: 'перервати',
38
+ halt: 'зупинити',
39
+
40
+ // Async
41
+ wait: 'чекати',
42
+ fetch: 'завантажити',
43
+ call: 'викликати',
44
+ return: 'повернути',
45
+
46
+ // Other commands
47
+ make: 'створити',
48
+ log: 'записати',
49
+ throw: 'кинути',
50
+ catch: 'зловити',
51
+ measure: 'виміряти',
52
+ transition: 'анімувати',
53
+
54
+ // Data Commands
55
+ increment: 'збільшити',
56
+ decrement: 'зменшити',
57
+ bind: "прив'язати",
58
+ default: 'за_замовчуванням',
59
+ persist: 'зберегти',
60
+
61
+ // Navigation Commands
62
+ go: 'перейти',
63
+ pushUrl: 'додати_url',
64
+ replaceUrl: 'замінити_url',
65
+
66
+ // Utility Commands
67
+ copy: 'копіювати',
68
+ pick: 'вибрати',
69
+ beep: 'звук',
70
+
71
+ // Advanced Commands
72
+ js: 'js',
73
+ async: 'асинхронно',
74
+ render: 'відобразити',
75
+
76
+ // Animation Commands
77
+ swap: 'поміняти',
78
+ morph: 'трансформувати',
79
+ settle: 'стабілізувати',
80
+
81
+ // Content Commands
82
+ append: 'додати_в_кінець',
83
+
84
+ // Control Flow
85
+ exit: 'вийти',
86
+ else: 'інакше',
87
+
88
+ // Behaviors
89
+ install: 'встановити',
90
+ init: 'ініціалізувати',
91
+ behavior: 'поведінка',
92
+
93
+ // Focus
94
+ focus: 'сфокусувати',
95
+ blur: 'розфокусувати',
96
+
97
+ // Clone
98
+ clone: 'клонувати',
99
+ prepend: 'додати_на_початок',
100
+ },
101
+
102
+ modifiers: {
103
+ to: 'до',
104
+ from: 'з',
105
+ into: 'в',
106
+ with: 'з',
107
+ at: 'в',
108
+ in: 'у',
109
+ of: 'з',
110
+ as: 'як',
111
+ by: 'на',
112
+ before: 'до',
113
+ after: 'після',
114
+ over: 'над',
115
+ under: 'під',
116
+ between: 'між',
117
+ through: 'через',
118
+ without: 'без',
119
+ on: 'на',
120
+ },
121
+
122
+ events: {
123
+ click: 'клік',
124
+ dblclick: 'подвійний_клік',
125
+ mousedown: 'миша_вниз',
126
+ mouseup: 'миша_вгору',
127
+ mouseenter: 'миша_вхід',
128
+ mouseleave: 'миша_вихід',
129
+ mouseover: 'наведення',
130
+ mouseout: 'відведення',
131
+ mousemove: 'рух_миші',
132
+
133
+ keydown: 'клавіша_вниз',
134
+ keyup: 'клавіша_вгору',
135
+ keypress: 'натискання_клавіші',
136
+
137
+ focus: 'фокус',
138
+ blur: 'розфокус',
139
+ change: 'зміна',
140
+ input: 'введення',
141
+ submit: 'надсилання',
142
+ reset: 'скидання',
143
+
144
+ load: 'завантаження',
145
+ unload: 'вивантаження',
146
+ resize: 'зміна_розміру',
147
+ scroll: 'прокрутка',
148
+
149
+ touchstart: 'дотик_початок',
150
+ touchend: 'дотик_кінець',
151
+ touchmove: 'дотик_рух',
152
+ touchcancel: 'дотик_скасування',
153
+ },
154
+
155
+ logical: {
156
+ when: 'коли',
157
+ where: 'де',
158
+ and: 'і',
159
+ or: 'або',
160
+ not: 'не',
161
+ is: 'є',
162
+ exists: 'існує',
163
+ matches: 'відповідає',
164
+ contains: 'містить',
165
+ includes: 'включає',
166
+ equals: 'дорівнює',
167
+ then: 'тоді',
168
+ else: 'інакше',
169
+ otherwise: 'в_іншому_випадку',
170
+ end: 'кінець',
171
+ has: 'має', // third-person: він/вона має
172
+ have: 'маю', // first-person: я маю
173
+ isNot: 'не_є',
174
+ empty: 'порожній',
175
+ },
176
+
177
+ temporal: {
178
+ seconds: 'секунд',
179
+ second: 'секунда',
180
+ milliseconds: 'мілісекунд',
181
+ millisecond: 'мілісекунда',
182
+ minutes: 'хвилин',
183
+ minute: 'хвилина',
184
+ hours: 'годин',
185
+ hour: 'година',
186
+ ms: 'мс',
187
+ s: 'с',
188
+ min: 'хв',
189
+ h: 'год',
190
+ forever: 'завжди',
191
+ once: 'один_раз',
192
+ every: 'кожний',
193
+ until: 'до',
194
+ },
195
+
196
+ values: {
197
+ true: 'істина',
198
+ false: 'хибність',
199
+ null: 'нічого',
200
+ undefined: 'невизначено',
201
+ it: 'це',
202
+ its: 'його',
203
+ me: 'я',
204
+ my: 'мій',
205
+ you: 'ти',
206
+ your: 'твій',
207
+ yourself: 'сам',
208
+ myself: 'я_сам',
209
+ element: 'елемент',
210
+ target: 'ціль',
211
+ detail: 'деталі',
212
+ event: 'подія',
213
+ window: 'вікно',
214
+ document: 'документ',
215
+ body: 'тіло',
216
+ result: 'результат',
217
+ value: 'значення',
218
+ first: 'перший',
219
+ last: 'останній',
220
+ next: 'наступний',
221
+ previous: 'попередній',
222
+ closest: 'найближчий',
223
+ parent: 'батьківський',
224
+ },
225
+
226
+ attributes: {
227
+ class: 'клас',
228
+ classes: 'класи',
229
+ style: 'стиль',
230
+ styles: 'стилі',
231
+ attribute: 'атрибут',
232
+ attributes: 'атрибути',
233
+ property: 'властивість',
234
+ properties: 'властивості',
235
+ disabled: 'вимкнено',
236
+ hidden: 'приховано',
237
+ checked: 'позначено',
238
+ selected: 'вибрано',
239
+ readonly: 'лише_читання',
240
+ required: "обов'язково",
241
+ text: 'текст',
242
+ html: 'html',
243
+ },
244
+
245
+ expressions: {
246
+ // Positional
247
+ first: 'перший',
248
+ last: 'останній',
249
+ next: 'наступний',
250
+ previous: 'попередній',
251
+ prev: 'попер',
252
+ at: 'в',
253
+ random: 'випадковий',
254
+
255
+ // DOM Traversal
256
+ closest: 'найближчий',
257
+ parent: 'батьківський',
258
+ children: 'діти',
259
+ within: 'всередині',
260
+
261
+ // Emptiness/Existence
262
+ no: 'ні',
263
+ empty: 'порожній',
264
+ some: 'деякі',
265
+
266
+ // String operations
267
+ 'starts with': 'починається_з',
268
+ 'ends with': 'закінчується_на',
269
+ },
270
+ };
@@ -0,0 +1,210 @@
1
+ // packages/i18n/src/dictionaries/vi.ts
2
+
3
+ import { Dictionary } from '../types';
4
+
5
+ export const vi: Dictionary = {
6
+ commands: {
7
+ // Event handling
8
+ on: 'khi',
9
+ tell: 'nói với',
10
+ trigger: 'kích hoạt',
11
+ send: 'gửi',
12
+
13
+ // DOM manipulation
14
+ take: 'lấy',
15
+ put: 'đặt',
16
+ set: 'gán',
17
+ get: 'lấy giá trị',
18
+ add: 'thêm',
19
+ remove: 'xóa',
20
+ toggle: 'chuyển đổi',
21
+ hide: 'ẩn',
22
+ show: 'hiển thị',
23
+
24
+ // Control flow
25
+ if: 'nếu',
26
+ unless: 'trừ khi',
27
+ repeat: 'lặp lại',
28
+ for: 'với mỗi',
29
+ while: 'trong khi',
30
+ until: 'cho đến khi',
31
+ continue: 'tiếp tục',
32
+ break: 'dừng',
33
+ halt: 'dừng lại',
34
+
35
+ // Async
36
+ wait: 'chờ',
37
+ fetch: 'tải',
38
+ call: 'gọi',
39
+ return: 'trả về',
40
+
41
+ // Other commands
42
+ make: 'tạo',
43
+ log: 'in ra',
44
+ throw: 'ném',
45
+ catch: 'bắt',
46
+ measure: 'đo lường',
47
+ transition: 'chuyển tiếp',
48
+
49
+ // Data Commands
50
+ increment: 'tăng',
51
+ decrement: 'giảm',
52
+ bind: 'ràng buộc',
53
+ default: 'mặc định',
54
+ persist: 'duy trì',
55
+
56
+ // Navigation Commands
57
+ go: 'đi đến',
58
+ pushUrl: 'pushUrl',
59
+ replaceUrl: 'thayThếUrl',
60
+
61
+ // Utility Commands
62
+ copy: 'sao chép',
63
+ pick: 'chọn',
64
+ beep: 'beep',
65
+
66
+ // Advanced Commands
67
+ js: 'js',
68
+ async: 'bất đồng bộ',
69
+ render: 'hiển thị',
70
+
71
+ // Animation Commands
72
+ swap: 'hoán đổi',
73
+ morph: 'biến đổi',
74
+ settle: 'ổn định',
75
+
76
+ // Content Commands
77
+ append: 'nối',
78
+
79
+ // Control Flow
80
+ exit: 'thoát',
81
+
82
+ // Focus
83
+ focus: 'tập trung',
84
+ blur: 'mất tập trung',
85
+
86
+ // Additional
87
+ init: 'khởi tạo',
88
+ behavior: 'hành vi',
89
+ install: 'cài đặt',
90
+ clone: 'sao chép',
91
+ prepend: 'thêm đầu',
92
+ else: 'không thì',
93
+ },
94
+
95
+ modifiers: {
96
+ into: 'vào',
97
+ before: 'trước',
98
+ after: 'sau',
99
+ then: 'rồi',
100
+ end: 'kết thúc',
101
+ from: 'từ',
102
+ to: 'đến',
103
+ with: 'với',
104
+ as: 'như',
105
+ by: 'bởi',
106
+ on: 'trên',
107
+ in: 'trong',
108
+ at: 'tại',
109
+ of: 'của',
110
+ the: '',
111
+ times: 'lần',
112
+ },
113
+
114
+ events: {
115
+ click: 'nhấp',
116
+ dblclick: 'nhấp đúp',
117
+ input: 'nhập',
118
+ change: 'thay đổi',
119
+ submit: 'gửi',
120
+ keydown: 'phím xuống',
121
+ keyup: 'phím lên',
122
+ keypress: 'nhấn phím',
123
+ mouseover: 'chuột vào',
124
+ mouseout: 'chuột ra',
125
+ mouseenter: 'chuột vào',
126
+ mouseleave: 'chuột rời',
127
+ focus: 'tập trung',
128
+ blur: 'mất tập trung',
129
+ load: 'tải',
130
+ scroll: 'cuộn',
131
+ resize: 'đổi kích thước',
132
+ },
133
+
134
+ logical: {
135
+ when: 'khi',
136
+ where: 'ở_đâu',
137
+ and: 'và',
138
+ or: 'hoặc',
139
+ not: 'không',
140
+ is: 'là',
141
+ equals: 'bằng',
142
+ contains: 'chứa',
143
+ matches: 'khớp',
144
+ exists: 'tồn tại',
145
+ has: 'có', // possession verb (context-based)
146
+ have: 'có', // same for first/third person
147
+ empty: 'trống',
148
+ true: 'đúng',
149
+ false: 'sai',
150
+ null: 'rỗng',
151
+ },
152
+
153
+ temporal: {
154
+ now: 'bây giờ',
155
+ today: 'hôm nay',
156
+ tomorrow: 'ngày mai',
157
+ yesterday: 'hôm qua',
158
+ always: 'luôn luôn',
159
+ never: 'không bao giờ',
160
+ sometimes: 'đôi khi',
161
+ once: 'một lần',
162
+ twice: 'hai lần',
163
+ forever: 'mãi mãi',
164
+ },
165
+
166
+ values: {
167
+ true: 'đúng',
168
+ false: 'sai',
169
+ null: 'rỗng',
170
+ undefined: 'không xác định',
171
+ none: 'không có',
172
+ all: 'tất cả',
173
+ any: 'bất kỳ',
174
+ some: 'một số',
175
+ each: 'mỗi',
176
+ every: 'tất cả',
177
+ },
178
+
179
+ attributes: {
180
+ id: 'id',
181
+ class: 'lớp',
182
+ style: 'kiểu',
183
+ value: 'giá trị',
184
+ text: 'văn bản',
185
+ html: 'html',
186
+ src: 'nguồn',
187
+ href: 'liên kết',
188
+ disabled: 'vô hiệu',
189
+ hidden: 'ẩn',
190
+ checked: 'được chọn',
191
+ selected: 'được chọn',
192
+ },
193
+
194
+ expressions: {
195
+ me: 'tôi',
196
+ my: 'của tôi',
197
+ it: 'nó',
198
+ its: 'của nó',
199
+ result: 'kết quả',
200
+ event: 'sự kiện',
201
+ target: 'mục tiêu',
202
+ first: 'đầu tiên',
203
+ last: 'cuối cùng',
204
+ next: 'tiếp theo',
205
+ previous: 'trước đó',
206
+ parent: 'cha',
207
+ children: 'con',
208
+ closest: 'gần nhất',
209
+ },
210
+ };
@@ -0,0 +1,233 @@
1
+ // packages/i18n/src/dictionaries/zh.ts
2
+
3
+ import { Dictionary } from '../types';
4
+
5
+ export const zh: Dictionary = {
6
+ commands: {
7
+ // Event handling
8
+ on: '当',
9
+ tell: '告诉',
10
+ trigger: '触发',
11
+ send: '发送',
12
+
13
+ // DOM manipulation
14
+ take: '获取',
15
+ put: '放置',
16
+ set: '设置',
17
+ get: '获得',
18
+ add: '添加',
19
+ remove: '移除',
20
+ toggle: '切换',
21
+ hide: '隐藏',
22
+ show: '显示',
23
+
24
+ // Control flow
25
+ if: '如果',
26
+ unless: '除非',
27
+ repeat: '重复',
28
+ for: '为',
29
+ while: '当',
30
+ until: '直到',
31
+ continue: '继续',
32
+ break: '中断',
33
+ halt: '停止',
34
+
35
+ // Async
36
+ wait: '等待',
37
+ fetch: '获取',
38
+ call: '调用',
39
+ return: '返回',
40
+
41
+ // Other commands
42
+ make: '制作',
43
+ log: '日志',
44
+ throw: '抛出',
45
+ catch: '捕获',
46
+ measure: '测量',
47
+ transition: '过渡',
48
+
49
+ // Data Commands
50
+ increment: '增加',
51
+ decrement: '减少',
52
+ bind: '绑定',
53
+ default: '默认',
54
+ persist: '持久化',
55
+
56
+ // Navigation Commands
57
+ go: '前往',
58
+ pushUrl: '推送网址',
59
+ replaceUrl: '替换网址',
60
+
61
+ // Utility Commands
62
+ copy: '复制',
63
+ pick: '选取',
64
+ beep: '蜂鸣',
65
+
66
+ // Advanced Commands
67
+ js: 'JS执行',
68
+ async: '异步',
69
+ render: '渲染',
70
+
71
+ // Animation Commands
72
+ swap: '交换',
73
+ morph: '变形',
74
+ settle: '稳定',
75
+
76
+ // Content Commands
77
+ append: '追加',
78
+
79
+ // Control Flow
80
+ exit: '退出',
81
+
82
+ // Behaviors
83
+ install: '安装',
84
+ },
85
+
86
+ modifiers: {
87
+ to: '到',
88
+ from: '从',
89
+ into: '进入',
90
+ with: '与',
91
+ at: '在',
92
+ in: '在',
93
+ of: '的',
94
+ as: '作为',
95
+ by: '通过',
96
+ before: '之前',
97
+ after: '之后',
98
+ over: '在上',
99
+ under: '在下',
100
+ between: '之间',
101
+ through: '通过',
102
+ without: '没有',
103
+ },
104
+
105
+ events: {
106
+ click: '点击',
107
+ dblclick: '双击',
108
+ mousedown: '鼠标按下',
109
+ mouseup: '鼠标抬起',
110
+ mouseenter: '鼠标进入',
111
+ mouseleave: '鼠标离开',
112
+ mouseover: '鼠标悬停',
113
+ mouseout: '鼠标移出',
114
+ mousemove: '鼠标移动',
115
+
116
+ keydown: '按键按下',
117
+ keyup: '按键抬起',
118
+ keypress: '按键',
119
+
120
+ focus: '聚焦',
121
+ blur: '失焦',
122
+ change: '改变',
123
+ input: '输入',
124
+ submit: '提交',
125
+ reset: '重置',
126
+
127
+ load: '加载',
128
+ unload: '卸载',
129
+ resize: '调整大小',
130
+ scroll: '滚动',
131
+
132
+ touchstart: '触摸开始',
133
+ touchend: '触摸结束',
134
+ touchmove: '触摸移动',
135
+ touchcancel: '触摸取消',
136
+ },
137
+
138
+ logical: {
139
+ when: '当',
140
+ where: '哪里',
141
+ and: '和',
142
+ or: '或',
143
+ not: '非',
144
+ is: '是',
145
+ exists: '存在',
146
+ matches: '匹配',
147
+ contains: '包含',
148
+ includes: '包括',
149
+ equals: '等于',
150
+ has: '有', // universal "have"
151
+ have: '有', // same character for first/third person
152
+ then: '那么',
153
+ else: '否则',
154
+ otherwise: '要不然',
155
+ end: '结束',
156
+ },
157
+
158
+ temporal: {
159
+ seconds: '秒',
160
+ second: '秒',
161
+ milliseconds: '毫秒',
162
+ millisecond: '毫秒',
163
+ minutes: '分钟',
164
+ minute: '分钟',
165
+ hours: '小时',
166
+ hour: '小时',
167
+ ms: '毫秒',
168
+ s: '秒',
169
+ min: '分',
170
+ h: '时',
171
+ },
172
+
173
+ values: {
174
+ true: '真',
175
+ false: '假',
176
+ null: '空',
177
+ undefined: '未定义',
178
+ it: '它',
179
+ its: '它的', // REVIEW: native speaker
180
+ me: '我',
181
+ my: '我的',
182
+ myself: '我自己',
183
+ you: '你', // REVIEW: native speaker
184
+ your: '你的', // REVIEW: native speaker
185
+ yourself: '你自己', // REVIEW: native speaker
186
+ element: '元素',
187
+ target: '目标',
188
+ detail: '详情',
189
+ event: '事件',
190
+ window: '窗口',
191
+ document: '文档',
192
+ body: '主体',
193
+ result: '结果',
194
+ value: '值',
195
+ },
196
+
197
+ attributes: {
198
+ class: '类',
199
+ classes: '类别',
200
+ style: '样式',
201
+ styles: '样式集',
202
+ attribute: '属性',
203
+ attributes: '属性集',
204
+ property: '特性',
205
+ properties: '特性集',
206
+ },
207
+
208
+ expressions: {
209
+ // Positional
210
+ first: '第一个',
211
+ last: '最后一个',
212
+ next: '下一个',
213
+ previous: '上一个',
214
+ prev: '上个',
215
+ at: '在',
216
+ random: '随机',
217
+
218
+ // DOM Traversal
219
+ closest: '最近的',
220
+ parent: '父级',
221
+ children: '子级',
222
+ within: '之内',
223
+
224
+ // Emptiness/Existence
225
+ no: '没有',
226
+ empty: '空的',
227
+ some: '一些',
228
+
229
+ // String operations
230
+ 'starts with': '以开头',
231
+ 'ends with': '以结尾',
232
+ },
233
+ };