Merge pull request #1045 from Allengl/feat/ja_JP

feat: add language ja_JP
This commit is contained in:
tangly1024
2023-05-15 17:03:03 +08:00
committed by GitHub
3 changed files with 96 additions and 21 deletions

View File

@@ -168,6 +168,11 @@
<a href="https://github.com/RedhairHambagu" style="display:inline-block;width:80px"><img src="https://avatars.githubusercontent.com/u/129669334" width="64px;" alt="RedhairHambagu"/><br/><sub><b>RedhairHambagu</b></sub></a><br/><a href="https://github.com/tangly1024/NotionNext/commits?author=RedhairHambagu" title="RedhairHambagu" >🔧 🐛</a>
</td>
<td align="center">
<a href="https://github.com/Allengl" style="display:inline-block;width:80px"><img src="https://avatars.githubusercontent.com/u/58612763" width="64px;" alt="Allen"/><br/><sub><b>Allen</b></sub></a><br/><a href="https://github.com/tangly1024/NotionNext/commits?author=Allengl" title="Allengl" >🔧 🐛</a>
</td>
</tr>
</table>

View File

@@ -4,47 +4,58 @@ 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'
/**
* 在这里配置所有支持的语言
* 国家-地区
*/
const lang = {
'en-US': enUS,
'zh-CN': zhCN,
'zh-HK': zhHK,
'zh-TW': zhTW,
'fr-FR': frFR,
'tr-TR': trTR
'tr-TR': trTR,
'ja-JP': jaJP
}
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-fr':
userLocale = lang['fr-FR']
break
case 'tr-tr':
userLocale = lang['tr-TR']
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)
}

59
lib/lang/ja-JP.js Normal file
View File

@@ -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: '上に戻る'
}
}