index.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import CN from './cn'
  2. import EN from './en'
  3. import TW from './tw'
  4. export type { LocaleType } from './cn'
  5. type Lang = 'en' | 'cn' | 'tw'
  6. const LANG_KEY = 'lang'
  7. function getItem(key: string) {
  8. try {
  9. return localStorage.getItem(key)
  10. } catch {
  11. return null
  12. }
  13. }
  14. function setItem(key: string, value: string) {
  15. try {
  16. localStorage.setItem(key, value)
  17. } catch { }
  18. }
  19. function getLanguage() {
  20. try {
  21. return navigator.language.toLowerCase()
  22. } catch {
  23. return 'cn'
  24. }
  25. }
  26. export function getLang(): Lang {
  27. const savedLang = getItem(LANG_KEY)
  28. if (['en', 'cn', 'tw'].includes(savedLang ?? '')) {
  29. return savedLang as Lang
  30. }
  31. const lang = getLanguage()
  32. if (lang.includes('zh') || lang.includes('cn')) {
  33. return 'cn'
  34. } else if (lang.includes('tw')) {
  35. return 'tw'
  36. } else {
  37. return 'en'
  38. }
  39. }
  40. export function changeLang(lang: Lang) {
  41. setItem(LANG_KEY, lang)
  42. location.reload()
  43. }
  44. export default { en: EN, cn: CN, tw: TW }[getLang()]