Commit 9e4647b
Changed files (8)
i18n
i18n/zh-TW/cli/index.ts
@@ -0,0 +1,59 @@
+import type { NamespaceCliTranslation } from '../../i18n-types.js';
+
+const zh_TW_cli = {
+ new: {
+ prompt: {
+ title: '請輸入新文章的標題:',
+ category: '請輸入文章分類(可選):',
+ tags: '請輸入文章標籤,以逗號分隔(可選):',
+ },
+ action: {
+ exit: '退出,不創建草稿',
+ },
+ info: {
+ success_created: '成功創建文章:{filePath}',
+ overwrite: '正在覆蓋現有文件:{filePath}',
+ },
+ error: {
+ no_title: '文章標題不能為空。',
+ },
+ },
+ pub: {
+ prompt: {
+ select: '請選擇要發布的草稿:',
+ },
+ action: {
+ exit: '退出,不發布',
+ },
+ info: {
+ no_drafts_found: '未找到可發布的草稿。',
+ success_article_published: "成功將 '{source}' 發布到 '{destination}'。",
+ info_empty_dir_removed: '已清理空的源目錄:{dirPath}',
+ publish_cancelled: '發布操作已取消。',
+ },
+ error: {
+ publish_article: '發布文章時出錯:{message}',
+ },
+ },
+ prompt: {
+ file_exists: '文件 {filePath} 已存在。請選擇操作:',
+ enter_new_name: '請輸入新文件名(不帶擴展名):',
+ },
+ action: {
+ rename: '重命名文件',
+ overwrite: '覆蓋現有文件',
+ },
+ info: {
+ cancelled_by_user: '用戶已取消操作。',
+ },
+ error: {
+ unexpected: '發生意外錯誤:{message}',
+ generic: '發生錯誤:{message}',
+ file_exists: '文件已存在:{filePath}',
+ create_file: '創建文件時出錯:{message}',
+ empty_filename: '文件名不能為空。',
+ rename_to_original_conflict: '新文件名與原文件名衝突:{fileName}',
+ },
+} satisfies NamespaceCliTranslation;
+
+export default zh_TW_cli;
i18n/zh-TW/index.ts
@@ -0,0 +1,7 @@
+import type { Translation } from '../i18n-types.js';
+
+const zh_TW = {
+ // Add non-namespaced Chinese translations here if needed
+} satisfies Translation;
+
+export default zh_TW;
i18n/i18n-types.ts
@@ -8,6 +8,7 @@ export type BaseLocale = 'en'
export type Locales =
| 'en'
| 'zh-CN'
+ | 'zh-TW'
export type Translation = RootTranslation & DisallowNamespaces
i18n/i18n-util.async.ts
@@ -8,6 +8,7 @@ import { loadedFormatters, loadedLocales, locales } from './i18n-util.js'
const localeTranslationLoaders = {
en: () => import('./en/index.js'),
'zh-CN': () => import('./zh-CN/index.js'),
+ 'zh-TW': () => import('./zh-TW/index.js'),
}
const localeNamespaceLoaders = {
@@ -16,6 +17,9 @@ const localeNamespaceLoaders = {
},
'zh-CN': {
cli: () => import('./zh-CN/cli/index.js')
+ },
+ 'zh-TW': {
+ cli: () => import('./zh-TW/cli/index.js')
}
}
i18n/i18n-util.sync.ts
@@ -7,9 +7,11 @@ import { loadedFormatters, loadedLocales, locales } from './i18n-util.js'
import en from './en/index.js'
import zh_CN from './zh-CN/index.js'
+import zh_TW from './zh-TW/index.js'
import en_cli from './en/cli/index.js'
import zh_CN_cli from './zh-CN/cli/index.js'
+import zh_TW_cli from './zh-TW/cli/index.js'
const localeTranslations = {
en: {
@@ -20,6 +22,10 @@ const localeTranslations = {
...zh_CN,
cli: zh_CN_cli
},
+ 'zh-TW': {
+ ...zh_TW,
+ cli: zh_TW_cli
+ },
}
export const loadLocale = (locale: Locales): void => {
i18n/i18n-util.ts
@@ -12,7 +12,8 @@ export const baseLocale: Locales = 'en'
export const locales: Locales[] = [
'en',
- 'zh-CN'
+ 'zh-CN',
+ 'zh-TW'
]
export const namespaces: Namespaces[] = [
scripts/new.ts
@@ -20,7 +20,7 @@ interface CLIOptions extends OptionValues {
const program = new Command<[], CLIOptions>();
// Determine current locale
-const availableLocalesForScript: Locales[] = ['en', 'zh-CN'];
+const availableLocalesForScript: Locales[] = ['en', 'zh-CN', 'zh-TW'];
let detectedSystemLocale: string = 'en';
try {
detectedSystemLocale = osLocaleSync().replace('_', '-');
scripts/pub.ts
@@ -10,7 +10,7 @@ import fs from 'node:fs/promises';
import path from 'node:path';
import { osLocaleSync } from 'os-locale';
-const availableLocalesForScript: Locales[] = ['en', 'zh-CN'];
+const availableLocalesForScript: Locales[] = ['en', 'zh-CN', 'zh-TW'];
let detectedSystemLocale: string = 'en';
try {
detectedSystemLocale = osLocaleSync().replace('_', '-');