From 49267a2997e5a67d1806c021b4e40b3fb3428e35 Mon Sep 17 00:00:00 2001 From: guolong Date: Thu, 11 May 2023 16:53:34 +0800 Subject: [PATCH 1/6] feat: add language ja_JP --- lib/lang.js | 6 ++++- lib/lang/ja-JP.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 lib/lang/ja-JP.js diff --git a/lib/lang.js b/lib/lang.js index c56d2c7d..f9cbfd84 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -4,6 +4,7 @@ import zhHK from './lang/zh-HK' import zhTW from './lang/zh-TW' import frFR from './lang/fr-FR' import trTR from './lang/tr-TR' +import jaJP from './lang/ja-JP' import cookie from 'react-cookies' import { getQueryVariable, isBrowser, mergeDeep } from './utils' @@ -13,7 +14,8 @@ const lang = { 'zh-HK': zhHK, 'zh-TW': zhTW, 'fr-FR': frFR, - 'tr-TR': trTR + 'tr-TR': trTR, + 'ja-JP': jaJP } export default lang @@ -42,6 +44,8 @@ export function generateLocaleDict(langString) { case 'tr-tr': userLocale = lang['tr-TR'] break + case 'ja-jp': + userLocale = lang['ja-JP'] default: userLocale = lang['en-US'] } diff --git a/lib/lang/ja-JP.js b/lib/lang/ja-JP.js new file mode 100644 index 00000000..ab0e81f8 --- /dev/null +++ b/lib/lang/ja-JP.js @@ -0,0 +1,59 @@ +export default { + LOCALE: 'ja-JP', + NAV: { + INDEX: 'ホーム', + RSS: '購読', + SEARCH: '検索', + ABOUT: 'このサイトについて', + NAVIGATOR: 'ナビゲーション', + MAIL: 'メール', + ARCHIVE: 'アーカイブ' + }, + COMMON: { + MORE: 'さらに', + NO_MORE: 'それ以上ありません', + LATEST_POSTS: '最新の記事', + TAGS: 'タグ', + NO_TAG: 'タグなし', + CATEGORY: 'カテゴリ', + SHARE: 'シェア', + SCAN_QR_CODE: 'WeChatで共有', + URL_COPIED: 'リンクがコピーされました!', + TABLE_OF_CONTENTS: '目次', + RELATE_POSTS: '関連する記事', + COPYRIGHT: '免責事項', + AUTHOR: '作成者', + URL: 'リンク', + ANALYTICS: '統計', + POSTS: '記事', + ARTICLE: '記事', + VISITORS: '人の訪問者', + VIEWS: '回の閲覧', + COPYRIGHT_NOTICE: 'この記事はCC BY-NC-SA 4.0 ライセンスの下でライセンスされています。転載する場合には出典を明らかにしてください。', + RESULT_OF_SEARCH: '個の検索結果', + ARTICLE_DETAIL: '記事の詳細', + PASSWORD_ERROR: 'パスワードが違います!', + ARTICLE_LOCK_TIPS: 'この記事はロックされています。アクセスパスワードを入力してください。', + SUBMIT: '送信', + POST_TIME: '公開日', + LAST_EDITED_TIME: '最終更新日', + RECENT_COMMENTS: '最近のコメント', + DEBUG_OPEN: 'デバッグをオンにする', + DEBUG_CLOSE: 'デバッグをオフにする', + THEME_SWITCH: 'テーマの切り替え', + ANNOUNCEMENT: 'お知らせ', + START_READING: '読み始める' + }, + PAGINATION: { + PREV: '前のページ', + NEXT: '次のページ' + }, + SEARCH: { + ARTICLES: '記事を検索', + TAGS: 'タグを検索' + }, + POST: { + BACK: '前のページに戻る', + TOP: '上に戻る' + } +} From 27485b3a3c166567205ca3352ca8530c58afc83d Mon Sep 17 00:00:00 2001 From: Allen <1942813644@qq.com> Date: Thu, 11 May 2023 18:47:11 +0800 Subject: [PATCH 2/6] fix: fix trailing-space --- lib/lang.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/lang.js b/lib/lang.js index f9cbfd84..afa6b528 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -46,6 +46,7 @@ export function generateLocaleDict(langString) { break case 'ja-jp': userLocale = lang['ja-JP'] + break default: userLocale = lang['en-US'] } From 9a465708a3701906d1cb8ab5987dae975c4ec6e2 Mon Sep 17 00:00:00 2001 From: Allen <1942813644@qq.com> Date: Thu, 11 May 2023 21:11:40 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E6=9C=AC=E8=AF=AD=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=85=B6?= =?UTF-8?q?=E5=AE=83=E8=AF=AD=E8=A8=80=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/lang.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/lang.js b/lib/lang.js index afa6b528..61285514 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -38,13 +38,13 @@ export function generateLocaleDict(langString) { case 'zh-tw': userLocale = lang['zh-TW'] break - case 'fr-fr': + case 'fr': userLocale = lang['fr-FR'] break - case 'tr-tr': + case 'tr': userLocale = lang['tr-TR'] break - case 'ja-jp': + case 'ja': userLocale = lang['ja-JP'] break default: From 1115881e939ea64b544dc6e1e23707ca433a73cf Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 15 May 2023 16:59:40 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E9=80=82?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/lang.js | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/lib/lang.js b/lib/lang.js index 61285514..64069b0c 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -22,34 +22,36 @@ export default lang /** * 获取当前语言字典 + * 提升兼容性 * @returns 不同语言对应字典 */ export function generateLocaleDict(langString) { - let userLocale = lang['en-US'] + const supportedLocales = Object.keys(lang) + let userLocale - switch (langString.toLowerCase()) { - case 'zh-cn': - case 'zh-sg': - userLocale = lang['zh-CN'] - break - case 'zh-hk': - userLocale = lang['zh-HK'] - break - case 'zh-tw': - userLocale = lang['zh-TW'] - break - case 'fr': - userLocale = lang['fr-FR'] - break - case 'tr': - userLocale = lang['tr-TR'] - break - case 'ja': - userLocale = lang['ja-JP'] - break - default: - userLocale = lang['en-US'] + // 将语言字符串拆分为语言和地区代码,例如将 "zh-CN" 拆分为 "zh" 和 "CN" + const [language, region] = langString.split(/[-_]/) + + // 优先匹配语言和地区都匹配的情况 + const specificLocale = `${language}-${region}` + if (supportedLocales.includes(specificLocale)) { + userLocale = lang[specificLocale] } + + // 然后尝试匹配只有语言匹配的情况 + if (!userLocale) { + const languageOnlyLocales = supportedLocales.filter(locale => locale.startsWith(language)) + if (languageOnlyLocales.length > 0) { + userLocale = lang[languageOnlyLocales[0]] + } + } + + // 如果还没匹配到,则返回最接近的语言包 + if (!userLocale) { + const fallbackLocale = supportedLocales.find(locale => locale.startsWith('en')) + userLocale = lang[fallbackLocale] + } + return mergeDeep({}, lang['en-US'], userLocale) } From b1983aef7014e64f6bc7be96425ae55c0219f5bf Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 15 May 2023 17:01:19 +0800 Subject: [PATCH 5/6] new contributor --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2505564c..d0e78aeb 100644 --- a/README.md +++ b/README.md @@ -168,6 +168,11 @@ RedhairHambagu
RedhairHambagu

🔧 🐛 + + Allen
Allen

🔧 🐛 + + + From 55f029e3d352813bec7dcd935ebf2a120aab80fa Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 15 May 2023 17:02:47 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/lang.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/lang.js b/lib/lang.js index 64069b0c..83f867b3 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -8,6 +8,10 @@ import jaJP from './lang/ja-JP' import cookie from 'react-cookies' import { getQueryVariable, isBrowser, mergeDeep } from './utils' +/** + * 在这里配置所有支持的语言 + * 国家-地区 + */ const lang = { 'en-US': enUS, 'zh-CN': zhCN, @@ -22,7 +26,7 @@ export default lang /** * 获取当前语言字典 - * 提升兼容性 + * 如果匹配到完整的“国家-地区”语言,则显示国家的语言 * @returns 不同语言对应字典 */ export function generateLocaleDict(langString) {