mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-13 15:09:13 +00:00
67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
import { useGlobal } from '@/lib/global'
|
|
|
|
const LANGS = {
|
|
'en-US': 'en',
|
|
'zh-CN': 'zh',
|
|
'zh-HK': 'zh-HK',
|
|
'zh-TW': 'zh-TW',
|
|
'fr-FR': 'fr',
|
|
'tr-TR': 'tr',
|
|
'ja-JP': 'ja'
|
|
}
|
|
|
|
/**
|
|
* 获取当前not-by-ai文件路径
|
|
* 如果匹配到完整的“国家-地区”语言,则显示国家的语言
|
|
* @returns string
|
|
*/
|
|
export function generateNotByAiPath(langString) {
|
|
const supportedLocales = Object.keys(LANGS)
|
|
let userLocale
|
|
|
|
// 将语言字符串拆分为语言和地区代码,例如将 "zh-CN" 拆分为 "zh" 和 "CN"
|
|
const [language, region] = langString?.split(/[-_]/)
|
|
|
|
// 优先匹配语言和地区都匹配的情况
|
|
const specificLocale = `${language}-${region}`
|
|
if (supportedLocales.includes(specificLocale)) {
|
|
userLocale = LANGS[specificLocale]
|
|
}
|
|
|
|
// 然后尝试匹配只有语言匹配的情况
|
|
if (!userLocale) {
|
|
const languageOnlyLocales = supportedLocales.filter(locale =>
|
|
locale.startsWith(language)
|
|
)
|
|
if (languageOnlyLocales.length > 0) {
|
|
userLocale = LANGS[languageOnlyLocales[0]]
|
|
}
|
|
}
|
|
|
|
// 如果还没匹配到,则返回最接近的
|
|
if (!userLocale) {
|
|
const fallbackLocale = supportedLocales.find(locale =>
|
|
locale.startsWith('en')
|
|
)
|
|
userLocale = LANGS[fallbackLocale]
|
|
}
|
|
|
|
return userLocale ?? 'zh'
|
|
}
|
|
|
|
/**
|
|
* 版权声明
|
|
* @returns
|
|
*/
|
|
export default function NotByAI() {
|
|
const { lang, isDarkMode } = useGlobal()
|
|
|
|
return (
|
|
<img
|
|
className='transform hover:scale-110 duration-150'
|
|
src={`/svg/not-by-ai/${generateNotByAiPath(lang)}/Written-By-Human-Not-By-AI-Badge-${isDarkMode ? 'black' : 'white'}.svg`}
|
|
alt='not-by-ai'
|
|
/>
|
|
)
|
|
}
|