MediaWiki:Gadget-i18n.js:修订间差异

删除的内容 添加的内容
 
// Edit via Wikiplus
 
第263行:
vary
} = i18nMethods;
/*!
// 仓库内用法
// 定义多条消息
// 支持多语言,可选值定义在modules/types.d.ts#L-1,可直接添加其他值(RFC 5646)
import {content, localize, vary} from 'ext.gadget.i18n';
const getI18nMessages = () => {
// i18n的三个方法会匹配当前语言和它所接收对象中的键,对于localize来说,假设已定义zh、en和ja,则
// 当页面语言(wgUserLanguage ?? wgContentLanguage)为中文/英语/日语时,返回页面语言所对应的值
// 当页面语言为法语,浏览器语言为中文/英语/日语时,返回浏览器语言所对应的值
// 当页面语言为法语,且不存在浏览器语言所对应的键,返回L-25定义的键所对应的值。若此键同样没被定义,则返回空字符串
return {
Cancel: content({
en: 'Cancel',
ja: 'キャンセル',
zh: '取消',
}),
QiuWen: localize({
en: 'QiuWen',
ja: 'ちゅううん',
'zh-cn': '求闻',
'zh-hk': '求聞',
}),
LongText: vary({
en: 'This is a very long text',
ja: 'これは非常に長いテキストです',
'zh-hans': '这是一段非常长的文本',
'zh-hant': '這是一段非常長的文字',
}),
};
};
const i18nMessages = getI18nMessages();
const getMessage: GetMessages<typeof i18nMessages> = (key) => {
return i18nMessages[key] || key;
};
// 调用
getMessage('Cancel'); // en: Cancel, ja: キャンセル, zh: 取消, zh-hans: 取消, zh-hant: 取消, zh-cn: 取消, zh-hk: 取消, zh-tw: 取消
getMessage('QiuWen'); // en: QiuWen, ja: ちゅううん, zh: 求闻, zh-hans: 求闻, zh-hant: 求聞, zh-cn: 求闻, zh-hk: 求聞, zh-tw: 求聞
getMessage('LongText');
// en: This is a very long text
// ja: これは非常に長いテキストです
// zh: 这是一段非常长的文本
// zh-hans: 这是一段非常长的文本
// zh-hant: 這是一段非常長的文字
// zh-cn: 这是一段非常长的文本
// zh-hk: 這是一段非常長的文字
// zh-tw: 這是一段非常長的文字
 
// 直接转换单条消息(不推荐,仅为兼容性保留)
// 仅支持传递中文和英语。在非中文环境且未传递英语文本时,最终返回zh的值
wgUCS('求闻', '求聞'); // en: 求闻, ja: 求闻, zh: 求闻, zh-hans: 求闻, zh-hant: 求聞, zh-cn: 求闻, zh-hk: 求聞, zh-tw: 求聞
wgULS('求闻', '求聞'); // en: 求闻, ja: 求闻, zh: 求闻, zh-hans: 求闻, zh-hant: 求聞, zh-cn: 求闻, zh-hk: 求聞, zh-tw: 求聞
wgUVS('求闻', '求聞'); // en: 求闻, ja: 求闻, zh: 求闻, zh-hans: 求闻, zh-hant: 求聞, zh-cn: 求闻, zh-hk: 求聞, zh-tw: 求聞
 
// 非MediaWiki命名空间的脚本可以通过mw.loader.using加载ext.gadget.i18n模块
mw.loader.using('ext.gadget.i18n').then((require) => {
const {content, localize, vary} = require('ext.gadget.i18n');
});
*/
 
})();