Files
2026-08-05 23:59:22 +08:00

539 lines
16 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const baseDir = path.resolve(__dirname, "src/locales");
function buildNamespaceZh() {
return {
title: "日期计算器",
toolTitle: "日期计算器",
toolDescription: "日期间隔计算与日期推算",
toolCategory: "实用",
heroTitle: "日期计算器",
backToList: "返回工具列表",
tab: {
interval: "日期间隔",
calc: "日期推算",
},
quick: {
today: "今天",
tomorrow: "明天",
week: "一周后",
month: "一月后",
year: "一年后",
plus7d: "+7天",
plus30d: "+30天",
plus365d: "+365天",
plus100d: "+100天",
},
field: {
startDate: "起始日期",
endDate: "结束日期",
baseDate: "起始日期",
operation: "运算",
days: "天数",
},
placeholder: {
chooseStart: "选择起始日期",
chooseEnd: "选择结束日期",
chooseBase: "选择起始日期",
},
result: {
totalDays: "总天数",
workDays: "工作日",
weeks: "周数",
months: "月数",
years: "年数",
startDate: "起始日期",
endDate: "结束日期",
targetDate: "目标日期",
targetShort: "目标日期(短格式)",
targetTimestamp: "目标日期时间戳",
targetIso: "目标日期 ISO",
intervalDays: "间隔天数",
},
unit: {
days: "天",
week: "周",
month: "个月",
year: "年",
about: "约",
excludeWeekend: "不含周末",
sameDay: "同一天",
},
empty: {
selectBoth: "选择两个日期后自动计算间隔",
selectBase: "选择起始日期后自动推算目标日期",
},
clipboard: {
copied: "已复制到剪贴板",
},
tips: {
interval: {
title: "日期间隔",
desc: "计算两个日期之间的天数、工作日、周数、月数和年数。",
},
calc: {
title: "日期推算",
desc: "从指定日期向前或向后推算任意天数,快速得到目标日期。",
},
privacy: {
title: "数据安全",
desc: "所有计算在本地浏览器完成,不会上传任何数据到服务器。",
},
},
};
}
function buildNamespaceEn() {
return {
title: "Date Calculator",
toolTitle: "Date Calculator",
toolDescription: "Calculate date intervals and project dates",
toolCategory: "Utility",
heroTitle: "Date Calculator",
backToList: "Back to tool list",
tab: {
interval: "Date Interval",
calc: "Date Projection",
},
quick: {
today: "Today",
tomorrow: "Tomorrow",
week: "In 1 week",
month: "In 1 month",
year: "In 1 year",
plus7d: "+7 days",
plus30d: "+30 days",
plus365d: "+365 days",
plus100d: "+100 days",
},
field: {
startDate: "Start Date",
endDate: "End Date",
baseDate: "Base Date",
operation: "Operation",
days: "Days",
},
placeholder: {
chooseStart: "Choose start date",
chooseEnd: "Choose end date",
chooseBase: "Choose base date",
},
result: {
totalDays: "Total Days",
workDays: "Work Days",
weeks: "Weeks",
months: "Months",
years: "Years",
startDate: "Start Date",
endDate: "End Date",
targetDate: "Target Date",
targetShort: "Target Date (short)",
targetTimestamp: "Target Date Timestamp",
targetIso: "Target Date ISO",
intervalDays: "Interval Days",
},
unit: {
days: "days",
week: "week",
month: "months",
year: "years",
about: "about",
excludeWeekend: "excluding weekends",
sameDay: "same day",
},
empty: {
selectBoth: "Interval will be calculated automatically once both dates are selected",
selectBase: "Target date will be calculated automatically once the base date is selected",
},
clipboard: {
copied: "Copied to clipboard",
},
tips: {
interval: {
title: "Date Interval",
desc: "Calculate the days, work days, weeks, months and years between two dates.",
},
calc: {
title: "Date Projection",
desc: "Project any number of days forward or backward from a given date.",
},
privacy: {
title: "Data Safety",
desc: "All calculations run locally in your browser. No data is uploaded to any server.",
},
},
};
}
function buildNamespaceJa() {
return {
title: "日付計算ツール",
toolTitle: "日付計算ツール",
toolDescription: "日付の間隔と日付の推算",
toolCategory: "ユーティリティ",
heroTitle: "日付計算ツール",
backToList: "ツール一覧に戻る",
tab: {
interval: "日付間隔",
calc: "日付推算",
},
quick: {
today: "今日",
tomorrow: "明日",
week: "1週間後",
month: "1か月後",
year: "1年後",
plus7d: "+7日",
plus30d: "+30日",
plus365d: "+365日",
plus100d: "+100日",
},
field: {
startDate: "開始日",
endDate: "終了日",
baseDate: "基準日",
operation: "演算",
days: "日数",
},
placeholder: {
chooseStart: "開始日を選択",
chooseEnd: "終了日を選択",
chooseBase: "基準日を選択",
},
result: {
totalDays: "総日数",
workDays: "営業日",
weeks: "週数",
months: "月数",
years: "年数",
startDate: "開始日",
endDate: "終了日",
targetDate: "目標日",
targetShort: "目標日(短縮)",
targetTimestamp: "目標日タイムスタンプ",
targetIso: "目標日 ISO",
intervalDays: "間隔日数",
},
unit: {
days: "日",
week: "週",
month: "か月",
year: "年",
about: "約",
excludeWeekend: "土日を除く",
sameDay: "同日",
},
empty: {
selectBoth: "2つの日付を選択すると間隔が自動計算されます",
selectBase: "基準日を選択すると目標日が自動で推算されます",
},
clipboard: {
copied: "クリップボードにコピーしました",
},
tips: {
interval: {
title: "日付間隔",
desc: "2つの日付の間の日数、営業日、週数、月数、年数を計算します。",
},
calc: {
title: "日付推算",
desc: "指定した日付から任意の日数を前後に移動し、目標日をすばやく求めます。",
},
privacy: {
title: "データの安全性",
desc: "すべての計算はブラウザ上でローカル実行され、サーバーにデータが送信されることはありません。",
},
},
};
}
function buildNamespaceKo() {
return {
title: "날짜 계산기",
toolTitle: "날짜 계산기",
toolDescription: "날짜 간격 계산 및 날짜 추정",
toolCategory: "유틸리티",
heroTitle: "날짜 계산기",
backToList: "도구 목록으로 돌아가기",
tab: {
interval: "날짜 간격",
calc: "날짜 추정",
},
quick: {
today: "오늘",
tomorrow: "내일",
week: "일주일 후",
month: "한 달 후",
year: "일 년 후",
plus7d: "+7일",
plus30d: "+30일",
plus365d: "+365일",
plus100d: "+100일",
},
field: {
startDate: "시작 날짜",
endDate: "종료 날짜",
baseDate: "기준 날짜",
operation: "연산",
days: "일 수",
},
placeholder: {
chooseStart: "시작 날짜 선택",
chooseEnd: "종료 날짜 선택",
chooseBase: "기준 날짜 선택",
},
result: {
totalDays: "총 일 수",
workDays: "평일",
weeks: "주 수",
months: "월 수",
years: "년 수",
startDate: "시작 날짜",
endDate: "종료 날짜",
targetDate: "목표 날짜",
targetShort: "목표 날짜 (짧은 형식)",
targetTimestamp: "목표 날짜 타임스탬프",
targetIso: "목표 날짜 ISO",
intervalDays: "간격 일 수",
},
unit: {
days: "일",
week: "주",
month: "개월",
year: "년",
about: "약",
excludeWeekend: "주말 제외",
sameDay: "같은 날",
},
empty: {
selectBoth: "두 날짜를 선택하면 간격이 자동으로 계산됩니다",
selectBase: "기준 날짜를 선택하면 목표 날짜가 자동으로 계산됩니다",
},
clipboard: {
copied: "클립보드에 복사되었습니다",
},
tips: {
interval: {
title: "날짜 간격",
desc: "두 날짜 사이의 일 수, 평일, 주 수, 월 수, 년 수를 계산합니다.",
},
calc: {
title: "날짜 추정",
desc: "지정한 날짜로부터 앞뒤로 임의의 일 수를 계산해 목표 날짜를 빠르게 구합니다.",
},
privacy: {
title: "데이터 안전",
desc: "모든 계산은 브라우저 로컬에서 실행되며, 어떤 데이터도 서버로 전송되지 않습니다.",
},
},
};
}
function buildNamespaceZhTW() {
return {
title: "日期計算器",
toolTitle: "日期計算器",
toolDescription: "日期間隔計算與日期推算",
toolCategory: "實用",
heroTitle: "日期計算器",
backToList: "返回工具列表",
tab: {
interval: "日期間隔",
calc: "日期推算",
},
quick: {
today: "今天",
tomorrow: "明天",
week: "一週後",
month: "一個月後",
year: "一年後",
plus7d: "+7天",
plus30d: "+30天",
plus365d: "+365天",
plus100d: "+100天",
},
field: {
startDate: "起始日期",
endDate: "結束日期",
baseDate: "起始日期",
operation: "運算",
days: "天數",
},
placeholder: {
chooseStart: "選擇起始日期",
chooseEnd: "選擇結束日期",
chooseBase: "選擇起始日期",
},
result: {
totalDays: "總天數",
workDays: "工作日",
weeks: "週數",
months: "月數",
years: "年數",
startDate: "起始日期",
endDate: "結束日期",
targetDate: "目標日期",
targetShort: "目標日期(短格式)",
targetTimestamp: "目標日期時間戳",
targetIso: "目標日期 ISO",
intervalDays: "間隔天數",
},
unit: {
days: "天",
week: "週",
month: "個月",
year: "年",
about: "約",
excludeWeekend: "不含週末",
sameDay: "同一天",
},
empty: {
selectBoth: "選擇兩個日期後自動計算間隔",
selectBase: "選擇起始日期後自動推算目標日期",
},
clipboard: {
copied: "已複製到剪貼簿",
},
tips: {
interval: {
title: "日期間隔",
desc: "計算兩個日期之間的天數、工作日、週數、月數和年數。",
},
calc: {
title: "日期推算",
desc: "從指定日期向前或向後推算任意天數,快速得到目標日期。",
},
privacy: {
title: "資料安全",
desc: "所有計算在本地瀏覽器完成,不會上傳任何資料到伺服器。",
},
},
};
}
function buildNamespaceRu() {
return {
title: "Калькулятор дат",
toolTitle: "Калькулятор дат",
toolDescription: "Расчёт интервала и проекция дат",
toolCategory: "Утилита",
heroTitle: "Калькулятор дат",
backToList: "Вернуться к списку инструментов",
tab: {
interval: "Интервал дат",
calc: "Проекция даты",
},
quick: {
today: "Сегодня",
tomorrow: "Завтра",
week: "Через неделю",
month: "Через месяц",
year: "Через год",
plus7d: "+7 дней",
plus30d: "+30 дней",
plus365d: "+365 дней",
plus100d: "+100 дней",
},
field: {
startDate: "Начальная дата",
endDate: "Конечная дата",
baseDate: "Базовая дата",
operation: "Операция",
days: "Дней",
},
placeholder: {
chooseStart: "Выберите начальную дату",
chooseEnd: "Выберите конечную дату",
chooseBase: "Выберите базовую дату",
},
result: {
totalDays: "Всего дней",
workDays: "Рабочих дней",
weeks: "Недель",
months: "Месяцев",
years: "Лет",
startDate: "Начальная дата",
endDate: "Конечная дата",
targetDate: "Целевая дата",
targetShort: "Целевая дата (короткий формат)",
targetTimestamp: "Целевая дата — временная метка",
targetIso: "Целевая дата — ISO",
intervalDays: "Дней в интервале",
},
unit: {
days: "дней",
week: "нед.",
month: "мес.",
year: "лет",
about: "около",
excludeWeekend: "без выходных",
sameDay: "тот же день",
},
empty: {
selectBoth: "Интервал будет автоматически рассчитан после выбора обеих дат",
selectBase: "Целевая дата будет автоматически рассчитана после выбора базовой даты",
},
clipboard: {
copied: "Скопировано в буфер обмена",
},
tips: {
interval: {
title: "Интервал дат",
desc: "Рассчитайте дни, рабочие дни, недели, месяцы и годы между двумя датами.",
},
calc: {
title: "Проекция даты",
desc: "Сдвиньте любое количество дней вперёд или назад от указанной даты.",
},
privacy: {
title: "Безопасность данных",
desc: "Все вычисления выполняются локально в браузере. Никакие данные не отправляются на сервер.",
},
},
};
}
const files = {
"zh.json": buildNamespaceZh(),
"en.json": buildNamespaceEn(),
"ja.json": buildNamespaceJa(),
"ko.json": buildNamespaceKo(),
"zh-TW.json": buildNamespaceZhTW(),
"ru.json": buildNamespaceRu(),
};
function detectIndent(jsonStr) {
const lines = jsonStr.split("\n");
for (let i = 1; i < lines.length; i++) {
const m = lines[i].match(/^(\s+)\S/);
if (m) return m[1];
}
return " ";
}
for (const [filename, namespace] of Object.entries(files)) {
const fullPath = path.join(baseDir, filename);
let src = fs.readFileSync(fullPath, "utf8");
if (src.charCodeAt(0) === 0xfeff) src = src.slice(1);
const indent = detectIndent(src);
const topIndent = indent; // top level keys indent
// parse existing to check it's valid json
const existing = JSON.parse(src);
if (existing.dateCalculator) {
console.log(`[SKIP] ${filename} already has dateCalculator`);
continue;
}
existing.dateCalculator = namespace;
// Build new JSON with same indent size
const indentSize = indent.length;
const newContent = JSON.stringify(existing, null, indentSize) + "\n";
fs.writeFileSync(fullPath, newContent, "utf8");
console.log(`[OK] ${filename} updated (indent=${indentSize} spaces)`);
}
console.log("All files processed.");