@thl-ui/locales 0.0.0-stage → 0.1.1

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.
package/dist/ja.js ADDED
@@ -0,0 +1,367 @@
1
+ const ja = {
2
+ common: {
3
+ ok: 'OK',
4
+ cancel: 'キャンセル',
5
+ close: '閉じる',
6
+ confirm: '確認',
7
+ save: '保存',
8
+ delete: '削除',
9
+ edit: '編集',
10
+ add: '追加',
11
+ search: '検索',
12
+ searchPlaceholder: '検索...',
13
+ loading: '読み込み中...',
14
+ empty: 'データがありません',
15
+ more: 'もっと見る',
16
+ back: '戻る',
17
+ next: '次へ',
18
+ previous: '前へ',
19
+ submit: '送信',
20
+ reset: 'リセット',
21
+ yes: 'はい',
22
+ no: 'いいえ',
23
+ viewAll: 'すべて表示',
24
+ clear: 'クリア',
25
+ apply: '適用',
26
+ collapse: '折りたたむ',
27
+ expand: '展開',
28
+ remove: '削除',
29
+ selectAll: 'すべて選択',
30
+ required: '必須',
31
+ color: '色',
32
+ editor: 'リッチテキストエディター',
33
+ min: '最小',
34
+ max: '最大',
35
+ value: '値',
36
+ progress: '進捗',
37
+ scrollRegion: 'スクロール領域',
38
+ selectRow: '{n} 行目を選択',
39
+ toggleDone: '完了にする',
40
+ carousel: 'カルーセル',
41
+ },
42
+ pagination: {
43
+ first: '最初',
44
+ last: '最後',
45
+ prev: '前',
46
+ next: '次',
47
+ page: '{page} ページ',
48
+ pageSize: '{size} 件/ページ',
49
+ total: { other: '全 {count} 件' },
50
+ goto: '移動',
51
+ showing: '{total} 件中 {from} から {to} まで表示',
52
+ },
53
+ table: {
54
+ empty: '一致するレコードがありません',
55
+ sortAsc: '昇順で並べ替え',
56
+ sortDesc: '降順で並べ替え',
57
+ filter: 'フィルター',
58
+ selected: { other: '{count} 行を選択中' },
59
+ actions: '操作',
60
+ search: '検索:',
61
+ show: '{n} 件表示',
62
+ },
63
+ upload: {
64
+ dropHere: 'ファイルをドラッグ&ドロップまたはクリック',
65
+ dropMultiple: 'ここにファイルをドロップまたはクリックしてアップロード',
66
+ remove: '削除',
67
+ replace: 'ドラッグ&ドロップまたはクリックで置換',
68
+ tooBig: 'ファイルサイズが大きすぎます(最大 {max})。',
69
+ wrongType: 'このファイル形式は許可されていません({types} のみ)。',
70
+ uploading: 'アップロード中...',
71
+ uploaded: 'アップロード完了',
72
+ failed: 'アップロードに失敗しました',
73
+ browse: '参照',
74
+ },
75
+ datepicker: {
76
+ today: '今日',
77
+ clear: 'クリア',
78
+ selectDate: '日付を選択',
79
+ selectTime: '時刻を選択',
80
+ startDate: '開始日',
81
+ endDate: '終了日',
82
+ now: '現在',
83
+ week: '週',
84
+ ranges: { today: '今日', yesterday: '昨日', last7: '過去7日間', last30: '過去30日間', thisMonth: '今月', lastMonth: '先月', custom: 'カスタム' },
85
+ },
86
+ select: { placeholder: '選択してください', noOptions: '結果がありません', addTag: 'タグを追加' },
87
+ modal: { close: '閉じる', confirmTitle: '本当によろしいですか?', confirmText: 'この操作は元に戻せません!', deleted: '削除しました!' },
88
+ steps: { step: 'ステップ {n}', finish: '完了', completed: '完了済み' },
89
+ session: {
90
+ warningTitle: 'セッションの有効期限が近づいています!',
91
+ warningText: '{seconds} 秒後にログアウトされます。',
92
+ stay: 'ログインを維持',
93
+ logout: 'ログアウト',
94
+ idle: '操作がありません',
95
+ expired: 'セッションの有効期限が切れました',
96
+ },
97
+ validation: {
98
+ required: 'この項目は必須です',
99
+ email: '有効なメールアドレスを入力してください',
100
+ minLength: '{min} 文字以上で入力してください',
101
+ maxLength: '{max} 文字以内で入力してください',
102
+ min: '{min} 以上の値を入力してください',
103
+ max: '{max} 以下の値を入力してください',
104
+ pattern: '指定された形式で入力してください',
105
+ match: '値が一致しません',
106
+ number: '有効な数値を入力してください',
107
+ },
108
+ toast: { success: '成功', info: 'お知らせ', warning: '警告', error: 'エラー' },
109
+ layout: {
110
+ toggleSidebar: 'サイドバー切替',
111
+ settings: '設定パネル',
112
+ layoutOptions: 'レイアウト設定',
113
+ fixedHeader: 'ヘッダー固定',
114
+ fixedSidebar: 'サイドバー固定',
115
+ withLightSidebar: 'ライトサイドバー',
116
+ withDarkSidebar: 'ダークサイドバー',
117
+ colorMode: 'カラーモード',
118
+ light: 'ライト',
119
+ dark: 'ダーク',
120
+ auto: '自動',
121
+ language: '言語',
122
+ layout: 'レイアウト',
123
+ vertical: '縦',
124
+ mini: 'ミニサイドバー',
125
+ horizontal: '横',
126
+ chatOption: 'チャット',
127
+ messages: 'メッセージ',
128
+ notifications: { other: '新しい通知が {count} 件あります' },
129
+ tasks: 'タスク',
130
+ seeAllNotifications: 'すべての通知を見る',
131
+ seeAllTasks: 'すべてのタスクを見る',
132
+ myProfile: 'プロフィール',
133
+ myBalance: '残高',
134
+ inbox: '受信箱',
135
+ accountSetting: 'アカウント設定',
136
+ logout: 'ログアウト',
137
+ online: 'オンライン',
138
+ offline: 'オフライン',
139
+ away: '離席中',
140
+ busy: '取り込み中',
141
+ copyright: '{year} © thl-ui',
142
+ complete: '{percent}% 完了',
143
+ },
144
+ menu: {
145
+ dashboard: 'ダッシュボード',
146
+ dashboard1: 'ダッシュボード 1',
147
+ dashboard2: 'ダッシュボード 2',
148
+ dashboard3: 'ダッシュボード 3',
149
+ dashboard4: 'ダッシュボード 4',
150
+ apps: 'アプリ',
151
+ inbox: '受信箱',
152
+ inboxDetail: 'メール詳細',
153
+ compose: '作成',
154
+ contact: '連絡先',
155
+ contactDetail: '連絡先詳細',
156
+ calendar: 'カレンダー',
157
+ ecommerce: 'Eコマース',
158
+ products: '商品',
159
+ productDetail: '商品詳細',
160
+ productEdit: '商品編集',
161
+ productOrders: '注文',
162
+ productCart: 'カート',
163
+ productCheckout: 'チェックアウト',
164
+ ui: 'UI 要素',
165
+ buttons: 'ボタン',
166
+ panels: 'パネル',
167
+ panelBlock: 'パネルブロック',
168
+ portlets: 'ドラッグ可能ポートレット',
169
+ tabs: 'タブ',
170
+ modals: 'モーダル',
171
+ notification: '通知',
172
+ progress: 'プログレスバー',
173
+ ribbons: 'リボン',
174
+ steps: 'ステップ',
175
+ timeline: 'タイムライン',
176
+ timelineHorizontal: '横タイムライン',
177
+ carousel: 'カルーセル',
178
+ uiGeneral: '基本 UI',
179
+ animation: 'アニメーション',
180
+ userCards: 'ユーザーカード',
181
+ customScroll: 'カスタムスクロール',
182
+ forms: 'フォーム',
183
+ formBasic: '基本フォーム',
184
+ formLayout: 'フォームレイアウト',
185
+ formAdvanced: '高度なフォーム',
186
+ formPickers: 'ピッカー',
187
+ formUpload: 'ファイルアップロード',
188
+ formFileDrop: 'ドロップゾーン',
189
+ checkRadio: 'チェック & ラジオ',
190
+ rangeSlider: 'レンジスライダー',
191
+ tables: 'テーブル',
192
+ basicTable: '基本テーブル',
193
+ tableLayouts: 'テーブルレイアウト',
194
+ dataTable: 'データテーブル',
195
+ advancedTables: '高度なテーブル',
196
+ editableTables: '編集可能テーブル',
197
+ responsiveTables: 'レスポンシブテーブル',
198
+ widgets: 'ウィジェット',
199
+ charts: 'チャート',
200
+ chartBasic: '折れ線/棒グラフ',
201
+ chartMini: 'ミニチャート',
202
+ chartGauge: '円グラフ',
203
+ sparkline: 'スパークライン',
204
+ pages: 'ページ',
205
+ starter: 'スターターページ',
206
+ blank: '空白ページ',
207
+ login: 'ログイン',
208
+ register: '登録',
209
+ recover: 'パスワード再設定',
210
+ lock: 'ロック画面',
211
+ profile: 'プロフィール',
212
+ invoice: '請求書',
213
+ pricing: '料金',
214
+ gallery: 'ギャラリー',
215
+ searchResult: '検索結果',
216
+ sessionTimeout: 'セッションタイムアウト',
217
+ sessionIdle: 'アイドルタイムアウト',
218
+ errors: 'エラーページ',
219
+ maps: '地図',
220
+ googleMap: 'Google マップ',
221
+ vectorMap: 'ベクターマップ',
222
+ icons: 'アイコン',
223
+ landing: 'ランディングページ',
224
+ },
225
+ pages: {
226
+ login: {
227
+ title: 'サインイン',
228
+ username: 'ユーザー名',
229
+ email: 'メール',
230
+ password: 'パスワード',
231
+ remember: 'ログイン状態を保持',
232
+ forgot: 'パスワードをお忘れですか?',
233
+ submit: 'ログイン',
234
+ noAccount: 'アカウントをお持ちでないですか?',
235
+ signUp: '新規登録',
236
+ social: '他の方法でサインイン',
237
+ },
238
+ register: {
239
+ title: '新規登録',
240
+ name: '名前',
241
+ confirmPassword: 'パスワード(確認)',
242
+ agree: '同意する:',
243
+ terms: '利用規約',
244
+ haveAccount: 'すでにアカウントをお持ちですか?',
245
+ signIn: 'サインイン',
246
+ },
247
+ recover: { title: 'パスワード再設定', text: 'メールアドレスを入力すると手順が送信されます!', submit: 'リセット' },
248
+ lock: { title: 'ロック中', text: 'パスワードを入力してロック解除', submit: 'ログイン' },
249
+ error: {
250
+ 400: { title: '不正なリクエスト', text: 'サーバーがリクエストを理解できませんでした。' },
251
+ 403: { title: 'アクセス禁止', text: 'このサーバーへのアクセス権限がありません。' },
252
+ 404: { title: 'ページが見つかりません!', text: 'お探しのページは見つかりませんでした' },
253
+ 500: { title: 'サーバー内部エラー', text: 'しばらくしてから再度お試しください' },
254
+ 503: { title: 'サービス利用不可', text: '現在メンテナンス中です。' },
255
+ backHome: 'ホームへ戻る',
256
+ },
257
+ dashboard: {
258
+ totalVisit: '総訪問数',
259
+ pageViews: 'ページビュー',
260
+ uniqueVisitor: 'ユニーク訪問者',
261
+ bounceRate: '直帰率',
262
+ sales: '売上',
263
+ revenue: '収益',
264
+ orders: '注文',
265
+ newClients: '新規顧客',
266
+ recentComments: '最近のコメント',
267
+ todoList: 'ToDo リスト',
268
+ salesOverview: '売上概要',
269
+ productsYearly: '年間商品売上',
270
+ recentSales: '最近の売上',
271
+ chat: 'チャット',
272
+ feeds: 'フィード',
273
+ weather: '天気',
274
+ },
275
+ inbox: {
276
+ compose: '作成',
277
+ inbox: '受信箱',
278
+ sent: '送信済み',
279
+ draft: '下書き',
280
+ spam: '迷惑メール',
281
+ trash: 'ゴミ箱',
282
+ labels: 'ラベル',
283
+ reply: '返信',
284
+ forward: '転送',
285
+ to: '宛先:',
286
+ subject: '件名:',
287
+ send: '送信',
288
+ discard: '破棄',
289
+ attachments: '添付ファイル',
290
+ },
291
+ invoice: {
292
+ title: '請求書',
293
+ invoiceTo: '宛先',
294
+ invoiceDate: '請求日',
295
+ dueDate: '支払期限',
296
+ description: '内容',
297
+ quantity: '数量',
298
+ unitCost: '単価',
299
+ total: '合計',
300
+ subTotal: '小計',
301
+ vat: '消費税 ({rate}%)',
302
+ print: '印刷',
303
+ proceed: '支払いへ進む',
304
+ },
305
+ pricing: {
306
+ perMonth: '月額',
307
+ signUp: '申し込む',
308
+ popular: '人気',
309
+ storage: '{gb} GB ストレージ',
310
+ users: '{n} ユーザー',
311
+ domains: 'ドメイン',
312
+ support: '24時間サポート',
313
+ },
314
+ profile: {
315
+ followers: 'フォロワー',
316
+ following: 'フォロー中',
317
+ tweets: '投稿',
318
+ activity: 'アクティビティ',
319
+ settings: '設定',
320
+ fullName: '氏名',
321
+ mobile: '携帯電話',
322
+ location: '所在地',
323
+ updateProfile: 'プロフィール更新',
324
+ },
325
+ products: {
326
+ addToCart: 'カートに追加',
327
+ buyNow: '今すぐ購入',
328
+ price: '価格',
329
+ inStock: '在庫あり',
330
+ outOfStock: '在庫切れ',
331
+ checkout: 'チェックアウト',
332
+ cart: 'カート',
333
+ quantity: '数量',
334
+ order: '注文',
335
+ status: 'ステータス',
336
+ customer: '顧客',
337
+ date: '日付',
338
+ placeOrder: '注文する',
339
+ },
340
+ contact: { addContact: '連絡先を追加', name: '名前', email: 'メール', phone: '電話', role: '役割', age: '年齢', joiningDate: '入社日', salary: '給与' },
341
+ calendar: { addEvent: 'イベント追加', eventName: 'イベント名', category: 'カテゴリ', dragDrop: 'イベントをドラッグ&ドロップするかカレンダーをクリック' },
342
+ search: { results: { other: '約 {count} 件の結果' } },
343
+ landing: {
344
+ hero: '最先端のダッシュボードキット',
345
+ tagline: 'React・Vue・Angular + 80+ コンポーネント + 74 ページ + 12 カラースキン + 4 言語 + ライト/ダークモード',
346
+ buy: '今すぐ始める',
347
+ livePreview: 'ライブプレビュー',
348
+ features: 'thl-ui が選ばれる理由',
349
+ more: 'すべてのコンポーネントを見る',
350
+ featureList: {
351
+ components: { title: '80 以上の UI コンポーネント', text: 'React・Vue・Angular で同じ API を持つコンポーネント' },
352
+ sidebar: { title: 'ライト/ダークのサイドバー', text: 'どのスキンもライトまたはダークのサイドバーを選べます' },
353
+ skins: { title: '12 のカラースキン', text: '6 色 × ライト/ダークのサイドバー、ブランドカラーも設定可能' },
354
+ slider: { title: 'レンジスライダー', text: '価格や範囲を絞り込むシングル/ダブルハンドルのスライダー' },
355
+ mini: { title: 'ミニサイドバー', text: 'メニューをアイコンだけに折りたたむ、または上部に配置' },
356
+ responsive: { title: '完全レスポンシブ', text: 'スマートフォンからワイド画面まで対応するレイアウト' },
357
+ customize: { title: 'カスタマイズが簡単', text: 'グローバル設定、--thl-* トークン、コンポーネントごとの既定値' },
358
+ upload: { title: '複数ファイルのアップロード', text: 'ドラッグ&ドロップ、進捗表示、ファイルチェックに対応' },
359
+ forms: { title: '多彩なフォームレイアウト', text: 'どのフレームワークでも翻訳済みメッセージで入力検証' },
360
+ dashboards: { title: 'すぐ使える 4 つのダッシュボード', text: '4 つのダッシュボードと再利用できる多数のウィジェット' },
361
+ pages: { title: '各種ページ', text: 'ギャラリー、登録、ログイン、プロフィールなど' },
362
+ ecommerce: { title: 'EC サイトにも対応', text: '商品、カート、決済、注文、詳細ページ' },
363
+ },
364
+ },
365
+ },
366
+ };
367
+ export default ja;
@@ -0,0 +1,25 @@
1
+ /** Plural forms use Intl.PluralRules categories: { one, other, zero?, two?, few?, many? } */
2
+ export type PluralMessage = {
3
+ one?: string;
4
+ other: string;
5
+ zero?: string;
6
+ two?: string;
7
+ few?: string;
8
+ many?: string;
9
+ };
10
+ /**
11
+ * Widen literal strings so other locales can implement the shape of `en`.
12
+ * Any object containing an `other` key is treated as a PluralMessage, so locales
13
+ * without singular forms (ja, zh) may provide `other` only.
14
+ */
15
+ export type DeepStringify<T> = {
16
+ [K in keyof T]: T[K] extends string ? string : T[K] extends {
17
+ other: string;
18
+ } ? PluralMessage : DeepStringify<T[K]>;
19
+ };
20
+ export type MessageValue = string | PluralMessage | {
21
+ [key: string]: MessageValue;
22
+ };
23
+ export type Messages = {
24
+ [key: string]: MessageValue;
25
+ };
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/vi.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { ThlMessages } from './en.js';
2
+ import type { DeepStringify } from './types.js';
3
+ declare const vi: DeepStringify<ThlMessages>;
4
+ export default vi;