nplayer
Version:
powerful danmaku video player
65 lines (60 loc) • 1.96 kB
text/typescript
import { isBrowser } from '../utils';
const data: Record<string, Record<string, string>> = Object.create(null);
export const FULL_SCREEN = 'Fullscreen';
export const EXIT_FULL_SCREEN = 'Exit fullscreen';
export const WEB_FULL_SCREEN = 'Web fullscreen';
export const WEB_EXIT_FULL_SCREEN = 'Exit web fullscreen';
export const SETTINGS = 'Settings';
export const PLAY = 'Play';
export const PAUSE = 'Pause';
export const MUTE = 'Mute';
export const UNMUTE = 'Unmute';
export const NORMAL = 'Normal';
export const SPEED = 'Speed';
export const PIP = 'Picture in Picture';
export const LOOP = 'Loop';
export const VOLUME = 'Volume';
export const AIRPLAY = 'Airplay';
export const LIVE = 'Live';
export const I18n = {
defaultLang: '',
currentLang: '',
t(key: string, lang?: string): string {
return data[lang || I18n.currentLang || I18n.defaultLang]?.[key] || key;
},
add(lang: string, transData: Record<string, string>): void {
data[lang.toLowerCase()] = { ...data[lang.toLowerCase()], ...transData };
I18n.fallback();
},
fallback(): void {
Object.keys(data).forEach((k) => {
data[k.split('-')[0]] = data[k];
});
},
setCurrentLang(lang?: string): void {
this.currentLang = lang || navigator.language || (navigator as any).userLanguage;
if (this.currentLang) this.currentLang = this.currentLang.toLowerCase();
},
setDefaultLang(lang?: string): void {
this.defaultLang = (lang || '').toLowerCase();
},
};
I18n.add('zh-cn', {
[]: '全屏',
[]: '取消全屏',
[]: '网页全屏',
[]: '退出网页全屏',
[]: '设置',
[]: '播放',
[]: '暂停',
[]: '静音',
[]: '取消静音',
[]: '正常',
[]: '播放速度',
[]: '画中画',
[]: '循环播放',
[]: '音量',
[]: '隔空播放',
[]: '直播',
});
if (isBrowser) I18n.setCurrentLang();