trmnl-i18n 0.1.0 → 0.3.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +8 -10
- data/lib/trmnl/i18n/locales/custom_plugins/da.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/de-AT.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/de.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/en.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/es-ES.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/fr.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/he.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/id.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/it.yml +48 -38
- data/lib/trmnl/i18n/locales/custom_plugins/ja.yml +45 -35
- data/lib/trmnl/i18n/locales/custom_plugins/ko.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/nl.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/pl.yml +188 -0
- data/lib/trmnl/i18n/locales/custom_plugins/pt-BR.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/raw.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/sv.yml +188 -0
- data/lib/trmnl/i18n/locales/custom_plugins/uk.yml +46 -36
- data/lib/trmnl/i18n/locales/custom_plugins/zh-CN.yml +15 -5
- data/lib/trmnl/i18n/locales/custom_plugins/zh-HK.yml +15 -5
- data/lib/trmnl/i18n/locales/plugin_renders/da.yml +201 -5
- data/lib/trmnl/i18n/locales/plugin_renders/de-AT.yml +206 -10
- data/lib/trmnl/i18n/locales/plugin_renders/de.yml +206 -10
- data/lib/trmnl/i18n/locales/plugin_renders/en.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/es-ES.yml +200 -3
- data/lib/trmnl/i18n/locales/plugin_renders/fr.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/he.yml +201 -5
- data/lib/trmnl/i18n/locales/plugin_renders/id.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/it.yml +212 -16
- data/lib/trmnl/i18n/locales/plugin_renders/ja.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/ko.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/nl.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/no.yml +201 -5
- data/lib/trmnl/i18n/locales/plugin_renders/pl.yml +399 -0
- data/lib/trmnl/i18n/locales/plugin_renders/pt-BR.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/raw.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/sv.yml +217 -0
- data/lib/trmnl/i18n/locales/plugin_renders/uk.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/zh-CN.yml +200 -4
- data/lib/trmnl/i18n/locales/plugin_renders/zh-HK.yml +200 -4
- data/lib/trmnl/i18n/locales/web_ui/da.yml +116 -33
- data/lib/trmnl/i18n/locales/web_ui/de-AT.yml +224 -142
- data/lib/trmnl/i18n/locales/web_ui/de.yml +224 -142
- data/lib/trmnl/i18n/locales/web_ui/en-GB.yml +479 -0
- data/lib/trmnl/i18n/locales/web_ui/en.yml +133 -53
- data/lib/trmnl/i18n/locales/web_ui/es-ES.yml +200 -118
- data/lib/trmnl/i18n/locales/web_ui/fr.yml +128 -46
- data/lib/trmnl/i18n/locales/web_ui/he.yml +132 -50
- data/lib/trmnl/i18n/locales/web_ui/id.yml +129 -47
- data/lib/trmnl/i18n/locales/web_ui/it.yml +177 -95
- data/lib/trmnl/i18n/locales/web_ui/ja.yml +133 -51
- data/lib/trmnl/i18n/locales/web_ui/ko.yml +204 -122
- data/lib/trmnl/i18n/locales/web_ui/nl.yml +129 -47
- data/lib/trmnl/i18n/locales/web_ui/no.yml +114 -35
- data/lib/trmnl/i18n/locales/web_ui/pl.yml +661 -0
- data/lib/trmnl/i18n/locales/web_ui/pt-BR.yml +132 -50
- data/lib/trmnl/i18n/locales/web_ui/raw.yml +109 -29
- data/lib/trmnl/i18n/locales/web_ui/sv.yml +479 -0
- data/lib/trmnl/i18n/locales/web_ui/uk.yml +135 -53
- data/lib/trmnl/i18n/locales/web_ui/zh-CN.yml +130 -48
- data/lib/trmnl/i18n/locales/web_ui/zh-HK.yml +152 -70
- data/lib/trmnl/i18n/synchronization/processor.rb +56 -0
- data/lib/trmnl/i18n/synchronization/repo.rb +43 -0
- data/lib/trmnl/i18n/synchronization/value_reducer.rb +23 -0
- data/trmnl-i18n.gemspec +3 -3
- data.tar.gz.sig +0 -0
- metadata +28 -19
- metadata.gz.sig +0 -0
@@ -1,9 +1,10 @@
|
|
1
|
+
---
|
1
2
|
zh-HK:
|
2
|
-
|
3
|
+
locale_name: Chinese (Hong Kong)
|
3
4
|
add: 加入
|
4
5
|
add_new: 新增
|
5
|
-
ago: 前
|
6
|
-
already_have_account: 我已經有帳戶
|
6
|
+
ago: 前
|
7
|
+
already_have_account: 我已經有帳戶
|
7
8
|
back: 返回
|
8
9
|
back_to_all_blog_posts: 返回所有貼文
|
9
10
|
blog: 網誌
|
@@ -11,15 +12,15 @@ zh-HK:
|
|
11
12
|
cancel: 取消
|
12
13
|
change_password: 更改密碼
|
13
14
|
charge_level: 充電狀態
|
14
|
-
charged:
|
15
|
+
charged: 電量
|
15
16
|
close: 關閉
|
16
17
|
confirm_change_password: 更改密碼
|
17
18
|
confirm_password: 確認新密碼
|
18
19
|
copy: 複製
|
19
20
|
copied_to_clipboard: 已複製!
|
20
21
|
copy_to_clipboard: 複製至剪貼簿
|
21
|
-
created: 新增於
|
22
|
-
create_an_account: 新增帳戶
|
22
|
+
created: 新增於
|
23
|
+
create_an_account: 新增帳戶
|
23
24
|
current_device: 現時裝置
|
24
25
|
days: 日
|
25
26
|
delete: 刪除
|
@@ -28,10 +29,10 @@ zh-HK:
|
|
28
29
|
edit: 設定
|
29
30
|
email_address: 電郵地址
|
30
31
|
export: 匯出
|
31
|
-
fetching: 載入中
|
32
|
+
fetching: 載入中
|
32
33
|
first_name: 名字
|
33
|
-
forgot_password: 忘記密碼
|
34
|
-
forgot_password_title: 再次輸入
|
34
|
+
forgot_password: 忘記密碼
|
35
|
+
forgot_password_title: 再次輸入
|
35
36
|
get_started: 讓我們開始吧!
|
36
37
|
identify: 識別
|
37
38
|
import: 匯入
|
@@ -40,37 +41,45 @@ zh-HK:
|
|
40
41
|
keep_me_signed_in: 保持登入狀態
|
41
42
|
knowledge_base: 知識庫
|
42
43
|
last_name: 姓氏
|
44
|
+
learn_more: Learn more
|
43
45
|
loading: 載入中
|
44
46
|
login: 登入
|
45
47
|
log_out: 登出
|
46
|
-
minimum_characters: 字元(最少)
|
47
|
-
mins: 分鐘
|
48
|
-
my_playlist: 我的播放清單
|
48
|
+
minimum_characters: 字元(最少)
|
49
|
+
mins: 分鐘
|
50
|
+
my_playlist: 我的播放清單
|
49
51
|
new_password: 新密碼
|
50
52
|
password: 密碼
|
51
|
-
please_wait: 請稍候⋯
|
53
|
+
please_wait: 請稍候⋯
|
52
54
|
plugin_not_found: 找不到外掛
|
53
|
-
refresh_rates_hint:
|
55
|
+
refresh_rates_hint: __按此__了解重新整理頻率如何運作。
|
54
56
|
reset_password: 重設密碼
|
55
57
|
save: 儲存
|
56
58
|
section: 章節
|
57
|
-
sign_in: 登入
|
58
|
-
sign_up: 註冊
|
59
|
+
sign_in: 登入
|
60
|
+
sign_up: 註冊
|
59
61
|
something_went_wrong: 發生錯誤
|
60
|
-
|
62
|
+
tech_support: 支援
|
61
63
|
update: 更新
|
62
64
|
view: 查看
|
63
|
-
welcome: 歡迎
|
64
|
-
|
65
|
-
|
65
|
+
welcome: 歡迎
|
66
|
+
time:
|
67
|
+
formats:
|
68
|
+
shorter: "%-I:%M %p"
|
69
|
+
start_of_week: 0
|
66
70
|
account:
|
67
71
|
index:
|
68
72
|
title: 帳戶
|
69
73
|
tagline: 管理帳戶設定
|
74
|
+
api_key_confirm: Are you sure you want to regenerate your API Key? The old key will be invalidated.
|
75
|
+
api_key_hint: See __the docs__ to learn how to configure your local environment.
|
76
|
+
api_key_label: The credential for authenticating local development tools
|
77
|
+
api_key_reset: Regenerate
|
78
|
+
api_key: API Key
|
70
79
|
email_address: 電郵地址
|
71
80
|
refer_and_earn: 推薦回贈計劃
|
72
81
|
refer_and_earn_hint: 使用專屬優惠券與分享TRMNL。每次使用都可賺取收入,按月支付。
|
73
|
-
refer_and_earn_redemptions: 兌換次數
|
82
|
+
refer_and_earn_redemptions: 兌換次數
|
74
83
|
refer_and_earn_request_code: 索取推薦碼
|
75
84
|
device_invoice: 裝置發票
|
76
85
|
device_invoice_label: 下載商業文件以作會計用途。
|
@@ -80,7 +89,7 @@ zh-HK:
|
|
80
89
|
last_name_hint: 可讓TRMNL介面更舒適。
|
81
90
|
password_hint: 用於保護你的TRMNL帳戶。
|
82
91
|
enable_2fa: 啟用雙重驗證(2FA)?
|
83
|
-
enable_2fa_hint:
|
92
|
+
enable_2fa_hint: __按此__啟用OTP。
|
84
93
|
disable_2fa: 停用雙重驗證(2FA)
|
85
94
|
disable_2fa_hint: 如要停用,請提供有效的單次密碼(OTP),並在上方輸入現時密碼。
|
86
95
|
session: 登入狀態
|
@@ -89,78 +98,91 @@ zh-HK:
|
|
89
98
|
time_zone_hint: 用於判斷重新整理頻率及裝置睡眠時間。
|
90
99
|
locale: 地區設定
|
91
100
|
locale_hint: 你希望使用哪一種語言? __按此了解更多__。
|
92
|
-
|
93
|
-
# toast messages
|
94
101
|
update:
|
95
102
|
success: 成功更新個人資料
|
103
|
+
reset_api_key:
|
104
|
+
success: API key was regenerated successfully
|
96
105
|
dashboard:
|
97
106
|
index:
|
98
107
|
title: 儀表板
|
99
|
-
morning_salutation: 早晨
|
100
|
-
afternoon_salutation: 午安
|
101
|
-
evening_salutation: 晚安
|
102
108
|
last_7_days: 過去7日
|
103
109
|
last_30_days: 過去30日
|
104
110
|
last_90_days: 過去90日
|
105
111
|
today: 今日
|
106
112
|
yesterday: 昨日
|
107
|
-
health:
|
113
|
+
health:
|
108
114
|
bad: 外掛出現問題
|
109
115
|
good: 外掛運作正常
|
110
116
|
next_steps: 當有變更時,我們會通知你
|
111
|
-
news:
|
117
|
+
news:
|
112
118
|
title: 新聞
|
113
119
|
cta: 查看所有
|
114
|
-
|
120
|
+
playlist_items:
|
115
121
|
title: 播放清單
|
116
122
|
cta: 編輯播放清單
|
117
123
|
pieces_of_content_displayed: 顯示畫面數量
|
118
|
-
plugins:
|
124
|
+
plugins:
|
119
125
|
title: 外掛功能
|
120
126
|
cta: 前往外掛列表
|
121
127
|
connected: 已連接外掛
|
122
128
|
new_and_popular: 最新及熱門項目
|
123
129
|
shop:
|
124
130
|
title: 商店
|
125
|
-
time_saved:
|
131
|
+
time_saved:
|
126
132
|
title: 已節省時間
|
127
133
|
cta: 詳情
|
134
|
+
welcome_message:
|
135
|
+
morning_salutation: 早晨
|
136
|
+
afternoon_salutation: 午安
|
137
|
+
evening_salutation: 晚安
|
128
138
|
devices:
|
129
139
|
edit:
|
130
|
-
accepts_beta_firmware: 韌體搶先發佈
|
140
|
+
accepts_beta_firmware: 韌體搶先發佈
|
131
141
|
accepts_beta_firmware_hint: 啟用設定後,你會在其他用戶之前取得最新的硬件韌體改進。
|
132
142
|
back_to_devices: 返回裝置
|
133
143
|
battery_consumption: 電池消耗
|
134
144
|
battery_consumption_hint: 啟用「睡眠模式」可節省電量,並延長電池續航時間。
|
135
|
-
developer_perks: 開發者福利
|
145
|
+
developer_perks: 開發者福利
|
136
146
|
developer_perks_hint: 以下選項需要購買「__開發者版本__」。.
|
137
147
|
device_credentials: 裝置認證
|
138
|
-
device_credentials_hint:
|
148
|
+
device_credentials_hint: __按此__了解如何使用裝置認證
|
139
149
|
device_name: 裝置名稱
|
140
150
|
device_name_hint: 此名稱可讓TRMNL介面更舒適
|
151
|
+
device_model: Device Model
|
152
|
+
device_model_hint: Your hardware Model
|
153
|
+
device_model_switch_warning: This is a dangerous operation, learn more __here__
|
141
154
|
edit_device: 編輯裝置
|
155
|
+
guest_mode: Guest Mode
|
156
|
+
guest_mode_hint: Choose what to display (and for how long) whenever guest mode is enabled.
|
157
|
+
guest_mode_item_placeholder: Choose an item
|
158
|
+
guest_mode_duration_placeholder: Choose a duration
|
142
159
|
identify: 識別
|
143
160
|
identify_device: 識別裝置
|
144
161
|
identify_device_hint: 按下按鈕後,裝置會顯示識別畫面。
|
145
162
|
logs: 除錯記錄
|
146
163
|
logs_hint: 提供即時串流的原始錯誤記錄,以偵錯你的裝置或外掛。
|
164
|
+
low_battery_email_notification: Low Battery Email Notification
|
147
165
|
mirror: 鏡像共享
|
148
166
|
mirror_device: 鏡像共享另一部裝置
|
149
167
|
mirror_device_hint: 輸入可共享(shareable)裝置的ID,以鏡像共享其播放清單。你的播放清單仍然會顯示。
|
150
|
-
|
168
|
+
mirror_stop: Disconnect Mirroring
|
169
|
+
mirror_sync: Sync Screens
|
170
|
+
ota_enabled: 啟用自動更新
|
151
171
|
ota_enabled_hint: 自動安裝新的韌體。如要使用自訂韌體,請關閉此設定。
|
152
172
|
sleep_mode: 睡眠模式
|
153
173
|
sleep_mode_hint: 調整重新整理頻率,以提升專注度及電池續航時間。
|
154
174
|
sleep_screen: 睡眠畫面
|
155
175
|
special_function: 特別功能
|
156
176
|
special_function_hint: 按兩下裝置背面的按鈕時,會執行特別功能。
|
157
|
-
special_function_learn_more:
|
177
|
+
special_function_learn_more: __按此__了解特別功能。
|
158
178
|
unlink: 取消連結
|
179
|
+
unlink_confirm: Are you sure? This will delete all underlying plugin settings and playlist items, so the device can be added to another account.
|
159
180
|
unlink_device: 取消連結裝置
|
160
181
|
unlink_device_hint: 如要安全地轉售或轉讓TRMNL裝置,請先取消連結。
|
182
|
+
unlink_device_learn_more: Follow the full guide __here__.
|
161
183
|
visibility: 共享狀態
|
162
184
|
visibility_hint: 讓其他TRMNL裝置可鏡像共享此裝置的內容。
|
163
|
-
your_device: 你的TRMNL
|
185
|
+
your_device: 你的TRMNL
|
164
186
|
index:
|
165
187
|
title: 裝置
|
166
188
|
tagline: 你的TRMNL裝置
|
@@ -170,8 +192,6 @@ zh-HK:
|
|
170
192
|
title: 新增裝置
|
171
193
|
description: 輸入裝置ID以新增TRMNL裝置到你的帳戶。
|
172
194
|
add_device: 新增裝置
|
173
|
-
|
174
|
-
# toast messages
|
175
195
|
associate:
|
176
196
|
error: 連結裝置時發生錯誤
|
177
197
|
success: 成功連結裝置
|
@@ -201,12 +221,14 @@ zh-HK:
|
|
201
221
|
title: 除錯記錄
|
202
222
|
all: 所有
|
203
223
|
device: 裝置
|
204
|
-
dump: 內容
|
224
|
+
dump: 內容
|
205
225
|
id: ID
|
206
226
|
private_plugins: 客製外掛
|
207
227
|
source: 來源
|
208
228
|
time: 時間
|
209
229
|
markups:
|
230
|
+
console_logs:
|
231
|
+
js_logs: JS Logs
|
210
232
|
form:
|
211
233
|
back_to_plugin_settings: 返回外掛設定
|
212
234
|
design_system: 活用我們的原生設計系統
|
@@ -218,14 +240,17 @@ zh-HK:
|
|
218
240
|
edit_markup_without_preview: 編輯標記碼(略過預覽)
|
219
241
|
error_rendering_markup: 轉譯標記碼時發生錯誤
|
220
242
|
fix_indentation: 修復縮排
|
243
|
+
go_to_preview: Go To Preview
|
221
244
|
live_preview: 即時預覽
|
222
245
|
no_changes_to_save: 沒有變更可儲存
|
246
|
+
pop_out_preview: Pop Out Preview
|
223
247
|
quickstart_examples: 快速入門範例
|
224
248
|
quickstart_example_applied: 已套用!
|
225
249
|
quickstart_use_this_example: 套用此範例
|
226
250
|
revert: 還原
|
227
251
|
revert_confirm: 確定要還原嗎?所有未儲存的變更將會消失。
|
228
252
|
save_changes: 儲存變更 (⌘﹢S)
|
253
|
+
separate_preview: Preview is open in a separate window
|
229
254
|
merge_variables:
|
230
255
|
your_variables: 變數
|
231
256
|
no_merge_variables:
|
@@ -246,36 +271,53 @@ zh-HK:
|
|
246
271
|
error: OTP錯誤
|
247
272
|
verify_otp:
|
248
273
|
verify: 驗證
|
274
|
+
reset: Reset MFA
|
275
|
+
reset_instructions: Click the button on the back of your TRMNL to generate a reset code
|
249
276
|
success: 雙重驗證成功
|
250
277
|
error: OTP錯誤
|
251
|
-
|
278
|
+
playlist_items:
|
252
279
|
index:
|
253
280
|
title: 播放清單
|
254
281
|
tagline: 選擇此裝置上顯示的畫面
|
255
|
-
add_a_group:
|
282
|
+
add_a_group: 新增群組
|
256
283
|
add_a_plugin: 加入外掛
|
257
284
|
add_first_device_cta: 請先__新增__TRMNL裝置!
|
258
285
|
add_to_playlist: 加入至播放清單
|
259
286
|
create_first_playlist_cta: 請先__連接__第一個外掛功能,方可新增播放清單!
|
260
|
-
custom:
|
261
|
-
device_default:
|
287
|
+
custom: 自訂
|
288
|
+
device_default: 裝置預設
|
262
289
|
display_period_from: 顯示時間
|
263
290
|
display_period_to: 至
|
264
|
-
display_period_validation:
|
265
|
-
every:
|
266
|
-
|
291
|
+
display_period_validation: 開始時間必須早於結束時間。如要跨越午夜,請新增另一個群組。
|
292
|
+
every: 頻率
|
293
|
+
never_skip: Never skip screens
|
294
|
+
smart_playlist: Smart Playlist
|
295
|
+
smart_playlist_hint: Automatically skip screens whose contents haven't changed in a while.
|
296
|
+
skip_after:
|
297
|
+
one: Skip stale screens after 1 day
|
298
|
+
other: Skip stale screens after %{count} days
|
299
|
+
playlist_item:
|
300
|
+
adjust_schedule: Adjust schedule
|
267
301
|
delete: 確定要移除此項目嗎?外掛會保持連接,只是不會在裝置上顯示。
|
268
302
|
displayed_now: 正在顯示
|
269
303
|
not_displayed_yet: 待處理
|
270
304
|
remove_from_playlist: 從播放清單中移除
|
271
|
-
|
272
|
-
|
305
|
+
hide_playlist: Hide this item
|
306
|
+
show_playlist: Show this item
|
273
307
|
create:
|
274
308
|
error: 更新播放清單時發生錯誤
|
275
309
|
success: 已更新播放清單
|
276
310
|
destroy:
|
277
311
|
error: 移除外掛時發生錯誤
|
278
312
|
success: 已從播放清單移除外掛
|
313
|
+
toggle_visibility:
|
314
|
+
success: Playlist item %{change}
|
315
|
+
duplicate:
|
316
|
+
success: Playlist duplicated
|
317
|
+
sort:
|
318
|
+
success: Playlist order updated
|
319
|
+
set_preferences:
|
320
|
+
success: Smart playlist preference updated
|
279
321
|
update:
|
280
322
|
success: 已更新播放清單順序
|
281
323
|
plugins:
|
@@ -284,9 +326,9 @@ zh-HK:
|
|
284
326
|
tagline: 你會在TRMNL上顯示什麼?
|
285
327
|
available: 可使用
|
286
328
|
connected: 已連接
|
287
|
-
recipes: 模板(Recipe)
|
329
|
+
recipes: 模板(Recipe)
|
288
330
|
recipes_hint: 社群用戶開發的客製外掛,一鍵即可安裝。 __了解更多__
|
289
|
-
search:
|
331
|
+
search:
|
290
332
|
placeholder: 搜尋外掛
|
291
333
|
my:
|
292
334
|
index:
|
@@ -302,18 +344,23 @@ zh-HK:
|
|
302
344
|
tagline: 其他用戶將可以安裝此外掛。
|
303
345
|
name: 名稱
|
304
346
|
category: 類別
|
347
|
+
category_hint: Hold cmd or ctrl to choose up to 3
|
348
|
+
refresh_every: Supported Refresh Interval
|
349
|
+
refresh_every_hint: The fastest refresh interval your plugin can support.
|
305
350
|
description: 描述
|
306
351
|
description_hint: 最多50個字元
|
307
352
|
icon: 圖示
|
308
|
-
icon_hint: 建議使用
|
353
|
+
icon_hint: 建議使用512x512像素
|
309
354
|
installation_url: 安裝網址
|
310
|
-
installation_url_hint:
|
355
|
+
installation_url_hint: __按此__了解安裝流程。
|
311
356
|
installation_success_webhook_url: 安裝成功Webhook網址
|
312
357
|
knowledge_base_url: 知識庫網址
|
313
358
|
management_url: 管理網址
|
314
|
-
management_url_hint:
|
359
|
+
management_url_hint: __按此__了解管理流程。
|
315
360
|
markup_url: 標記碼(Markup)網址
|
316
|
-
markup_url_hint:
|
361
|
+
markup_url_hint: __按此__了解畫面生成方式。
|
362
|
+
no_screen_padding: No Screen Padding
|
363
|
+
no_screen_padding_hint: Removes the outermost padding in fullscreen mode.
|
317
364
|
uninstallation_webhook_url: 解除安裝Webhook網址
|
318
365
|
edit:
|
319
366
|
title: 編輯外掛
|
@@ -321,7 +368,13 @@ zh-HK:
|
|
321
368
|
name: 名稱
|
322
369
|
description: 描述
|
323
370
|
plugin_recipes:
|
324
|
-
connected:
|
371
|
+
connected: 已連接模板
|
372
|
+
connections:
|
373
|
+
one: Connection
|
374
|
+
other: Connections
|
375
|
+
forks:
|
376
|
+
one: Fork
|
377
|
+
other: Forks
|
325
378
|
new:
|
326
379
|
error: 找不到模板
|
327
380
|
plugin_settings:
|
@@ -330,14 +383,20 @@ zh-HK:
|
|
330
383
|
delete_are_you_sure: 確定要刪除此設定嗎?
|
331
384
|
delete: 這樣會完全移除此外掛的設定。如要只從你的裝置隱藏此外掛,請從播放清單將其移除。
|
332
385
|
inactive: 停用
|
333
|
-
no_plugin_settings_found: 找不到外掛設定。
|
386
|
+
no_plugin_settings_found: 找不到外掛設定。
|
334
387
|
refreshing_now_please_wait: 正在重新整理,請在幾秒鐘後重新載入此頁面。
|
335
388
|
reset_credentials: 成功重設「%{plugin_name}」帳戶
|
336
389
|
form:
|
337
390
|
active_hint: 在你的裝置上顯示或隱藏此外掛
|
391
|
+
advanced_settings: Advanced Settings
|
338
392
|
back_to_plugin: 返回%{plugin}
|
339
393
|
back_to_plugins: 返回外掛列表
|
340
394
|
connect_with: 連接%{plugin}
|
395
|
+
debug_logs: Debug Logs
|
396
|
+
debug_logs_click_here: Click here
|
397
|
+
debug_logs_click_here_hint: to enable debug logs for this plugin instance.
|
398
|
+
debug_logs_enabled: Debug logs enabled for %{hours} hours.
|
399
|
+
debug_logs_enabled_link: View logs
|
341
400
|
disconnect_account: 中斷連接帳戶
|
342
401
|
manage_plugin: 設定%{plugin}
|
343
402
|
force_refresh: 強制重新整理
|
@@ -345,6 +404,11 @@ zh-HK:
|
|
345
404
|
force_refresh_click_here: 按此
|
346
405
|
force_refresh_click_here_hint: 立即生成新的畫面
|
347
406
|
learn_more: 前往知識庫以了解此外掛
|
407
|
+
learn_more_fork: This plugin was forked from a Recipe.
|
408
|
+
learn_more_fork_original: See Original
|
409
|
+
learn_more_recipe_author: Need help? Contact %{recipe_author} on Discord.
|
410
|
+
learn_more_recipe_long: This plugin is a community Recipe and is not maintained by TRMNL.
|
411
|
+
learn_more_recipe_short: 'Note: this plugin is a Recipe.'
|
348
412
|
linked_account: 已連結帳戶
|
349
413
|
linked_account_success: 成功連接%{plugin_name}
|
350
414
|
link_oauth: 連接帳戶
|
@@ -355,24 +419,30 @@ zh-HK:
|
|
355
419
|
plugin_uuid: 外掛UUID
|
356
420
|
plugin_uuid_hint: 用於發送Webhook API請求。
|
357
421
|
preview: 預覽圖(裝置會顯示實際資料)
|
422
|
+
recipe_cta_heading_published: This plugin is a Recipe
|
423
|
+
recipe_cta_heading_in_review: Recipe in review
|
424
|
+
recipe_cta_heading_not_published: Publish as a Recipe?
|
425
|
+
recipe_cta_body_published: Changes will be reflected on existing installs and future installs/forks.
|
426
|
+
recipe_cta_body_in_review: This plugin has been submitted to our team. Stand by.
|
427
|
+
recipe_cta_body_not_published: Submit this plugin for others to install. __Learn more__.
|
428
|
+
recipe_cta_confirm: Are you sure? Our team will review and get back to you within a couple days. You may continue making changes.
|
358
429
|
refresh_rate: 重新整理頻率
|
359
430
|
refresh_rate_hint: 設定此外掛每隔多久後擷取新資料。
|
360
431
|
refreshed: 已重新整理
|
361
432
|
remove_plugin: 移除外掛
|
362
433
|
remove_plugin_hint: 移除外掛後,亦會從你的播放清單中移除
|
363
434
|
synced: 已同步
|
364
|
-
refresh_paused:
|
365
|
-
refresh_paused_hint:
|
366
|
-
refresh_paused_mashup:
|
367
|
-
refresh_paused_mashup_hint:
|
435
|
+
refresh_paused: 已暫停更新
|
436
|
+
refresh_paused_hint: 自動更新已暫停,請加入至播放清單以重新開始。
|
437
|
+
refresh_paused_mashup: 只更新混搭畫面
|
438
|
+
refresh_paused_mashup_hint: 已暫停全螢幕的自動更新,混搭畫面(Mashup)仍會更新。
|
439
|
+
refresh_stopped: Auto-refresh stopped. Please fix the plugin error to continue.
|
368
440
|
visit_docs: 前往文件
|
369
441
|
import:
|
370
442
|
archive_too_large: ZIP檔案太大(最多%{max_mb} MB)
|
371
443
|
missing_entry: ZIP檔案未包含「%{filename}」
|
372
|
-
entry_too_large: 「%{filename}」太大
|
373
|
-
malformed: 「%{filename}」格式不符
|
374
|
-
|
375
|
-
# toast messages
|
444
|
+
entry_too_large: "「%{filename}」太大"
|
445
|
+
malformed: "「%{filename}」格式不符"
|
376
446
|
create:
|
377
447
|
success: 已新增外掛,並加入至你的
|
378
448
|
playlist: 播放清單
|
@@ -383,17 +453,29 @@ zh-HK:
|
|
383
453
|
success: 成功更新外掛設定
|
384
454
|
add_to_playlist:
|
385
455
|
success: 外掛已加入至播放清單
|
386
|
-
|
387
456
|
referral_code:
|
388
457
|
create:
|
389
458
|
request_received: 已收到請求,請查看收件箱
|
459
|
+
recipes:
|
460
|
+
index:
|
461
|
+
newest_to_oldest: Newest to Oldest
|
462
|
+
oldest_to_newest: Oldest to Newest
|
463
|
+
most_popular: Most Popular
|
464
|
+
install: Install
|
465
|
+
fork: Fork
|
466
|
+
schedules:
|
467
|
+
form:
|
468
|
+
add: Add a custom schedule
|
469
|
+
append: And during…
|
470
|
+
no_schedule: This screen will be shown at all times.
|
471
|
+
some_schedule: Only show this screen during…
|
472
|
+
to: to
|
473
|
+
copy_prompt: Copy schedule from…
|
390
474
|
upgrade:
|
391
475
|
index:
|
392
476
|
title: 升級裝置:
|
393
477
|
tagline: 解鎖自訂外掛及__更多__功能。
|
394
|
-
pay: 付款
|
478
|
+
pay: 付款
|
395
479
|
error: 裝置「%{device_name}」已經升級,請切換至另一部裝置
|
396
|
-
|
397
|
-
# toast messages
|
398
480
|
confirm:
|
399
481
|
success: 已啟用開發者版本附加元件
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "cogger"
|
4
|
+
require "refinements"
|
5
|
+
require "yaml"
|
6
|
+
|
7
|
+
require_relative "value_reducer"
|
8
|
+
|
9
|
+
module TRMNL
|
10
|
+
module I18n
|
11
|
+
module Synchronization
|
12
|
+
# Copies new key/value pairs from the source locale (typically 'en') to destination locales.
|
13
|
+
class Processor
|
14
|
+
using Refinements::Hash
|
15
|
+
|
16
|
+
def initialize repository, reducer: ValueReducer, logger: Cogger.new(id: "trmnl-i18n")
|
17
|
+
@repository = repository
|
18
|
+
@reducer = reducer
|
19
|
+
@logger = logger
|
20
|
+
end
|
21
|
+
|
22
|
+
def call source_locale = "en"
|
23
|
+
repository.locales.each do |destination_locale|
|
24
|
+
log_info "Syncing #{repository.name}/#{destination_locale}..."
|
25
|
+
|
26
|
+
destination_root = repository.load destination_locale
|
27
|
+
result = add_missing_contents source_locale, destination_locale, destination_root
|
28
|
+
|
29
|
+
repository.save destination_locale, result
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
attr_reader :repository, :reducer, :logger
|
36
|
+
|
37
|
+
def log_info(message) = logger.info { message }
|
38
|
+
|
39
|
+
# :reek:FeatureEnvy
|
40
|
+
def add_missing_contents source_locale, destination_locale, destination_root
|
41
|
+
destination_contents = destination_root[destination_locale]
|
42
|
+
contents_to_merge = reduce source_locale, destination_locale
|
43
|
+
destination_root[destination_locale] = contents_to_merge.deep_merge destination_contents
|
44
|
+
destination_root
|
45
|
+
end
|
46
|
+
|
47
|
+
# :reek:ControlParameter
|
48
|
+
def reduce source_locale, destination_locale
|
49
|
+
repository.load(source_locale)[source_locale].then do |contents|
|
50
|
+
destination_locale == "raw" ? reducer.call(contents) : contents
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements"
|
4
|
+
require "yaml"
|
5
|
+
|
6
|
+
module TRMNL
|
7
|
+
module I18n
|
8
|
+
module Synchronization
|
9
|
+
# Represents a directory containing YAML files named "{locale}.yml"
|
10
|
+
class Repo
|
11
|
+
using Refinements::Pathname
|
12
|
+
|
13
|
+
def self.all
|
14
|
+
Pathname(__dir__).join("../locales")
|
15
|
+
.directories
|
16
|
+
.map { |directory| new directory }
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize directory
|
20
|
+
@directory = Pathname directory
|
21
|
+
end
|
22
|
+
|
23
|
+
def name = directory.name.to_s
|
24
|
+
|
25
|
+
def load(locale) = YAML.load_file locale_path(locale)
|
26
|
+
|
27
|
+
def save locale, data
|
28
|
+
locale_path(locale).open "w" do |file|
|
29
|
+
Psych.dump data, file, indentation: 2, line_width: -1
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def locales = directory.files("*.yml").map { |path| path.name.to_s }
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
attr_reader :directory
|
38
|
+
|
39
|
+
def locale_path(locale) = directory.join "#{locale}.yml"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TRMNL
|
4
|
+
module I18n
|
5
|
+
module Synchronization
|
6
|
+
# Reduces a nested structure into key/value pairs with flattened values.
|
7
|
+
ValueReducer = lambda do |initial_value, path = ""|
|
8
|
+
case initial_value
|
9
|
+
when Array
|
10
|
+
initial_value.map.with_index do |item, index|
|
11
|
+
ValueReducer.call item, "#{path}[#{index}]"
|
12
|
+
end
|
13
|
+
when Hash
|
14
|
+
initial_value.each.with_object({}) do |(key, value), result|
|
15
|
+
next_path = path.empty? ? key : "#{path}.#{key}"
|
16
|
+
result[key] = ValueReducer.call value, next_path
|
17
|
+
end
|
18
|
+
else path
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/trmnl-i18n.gemspec
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "trmnl-i18n"
|
5
|
-
spec.version = "0.
|
6
|
-
spec.authors = ["
|
7
|
-
spec.email = ["
|
5
|
+
spec.version = "0.3.0"
|
6
|
+
spec.authors = ["TRMNL"]
|
7
|
+
spec.email = ["engineering@usetrmnl.com"]
|
8
8
|
spec.homepage = "https://github.com/usetrmnl/trmnl-i18n"
|
9
9
|
spec.summary = "A collection of TRMNL locales."
|
10
10
|
spec.license = "MIT"
|
data.tar.gz.sig
CHANGED
Binary file
|