# 海外 - 相关 SDK
- 国际化组件
i18next
- 上报组件
- cookie 管理组件
- 视频播放器(多语言)
- 通用页脚组件
- 游戏内 MSDK
# 国际化组件 i18next
通过 url 的语言参数 lang
确定当前语言,例如 https://goldenspatula.com/act/a20241011testplugin/?lang=th
提示
若是每种语言对应一个 html 请看 多语言区分html
<script src="https://goldenspatula.com/plugins/i18next/i18next.min.js"></script>
<script>
// 读取 url 参数
const queryParams = new URLSearchParams(location.search)
// 获取浏览器默认语言
const browserLang = (navigator.language || navigator.userLanguage).split('-')[0]
// 临时语言
const tempCurLang = queryParams.get('lang') || browserLang
// 所有语言
const LANG_LIST = ['en', 'zh', 'th']
// 判断当前语言,优先级:url lang 参数 -> 浏览器语言 -> 默认语言 en
const currentLang = LANG_LIST.includes(tempCurLang) ? tempCurLang : LANG_LIST[0]
// 初始化翻译工具
i18next.init({
lng: currentLang, // 当前语言
fallbackLng: "en", // 回退语言
resources: langResources, // 翻译文件
}, (err) => {
if (err) return console.error(err);
// 执行 html 中的翻译
document.querySelectorAll("[data-t]").forEach((element) => {
const key = element.getAttribute("data-t");
element.textContent = i18next.t(key);
});
});
// 定义翻译方法 $t
const $t = (key) => i18next.t(key);
console.log('测试脚本的翻译 $t:', $t("description"));
</script>
翻译文件 langResources
格式可查看 通用模板
html 中翻译的文案写法:
通过标签内 data-t
属性承载翻译的 key,标签内不需要写内容,会自动填上翻译好的文案进去
<!-- 翻译测试 在标签中用 data-t 属性承载翻译的 key -->
<h1 data-t="title"></h1>
<p data-t="description"></p>
<div><span data-t="Please choose a login method."></span></div>
# 上报方法
JKsendReportData('中文信息', 'English')
<a href="javascript:void(0);" onclick="JKsendReportData('中文信息', 'English')">测试上报</a>
# 上报组件引入(无 cookie 组件时)
<script src="https://goldenspatula.com/plugins/report/index.js"></script>
<script>
// 读取 url 参数
const queryParams = new URLSearchParams(location.search)
// 初始化上报
new OverseasReport({
id: 'a20241011testplugin', // 项目名称
channel: queryParams.get('media_channel') // 渠道,如需统计不同渠道的数据,通过 url 参数 media_channel 来区分
})
</script>
# 上报组件 和 cookie 组件一起使用
<script>
// 读取 url 参数
const queryParams = new URLSearchParams(location.search)
</script>
<!-- 上报组件引入 -->
<script src="https://goldenspatula.com/plugins/report/index.js"></script>
<!-- cookie 管理插件引入,必须加上 type="module" 标识模块化加载此脚本 -->
<script type="module">
import('https://goldenspatula.com/plugins/cookie/index.min.js').then(() => {
let OReport = null
// 初始化 cookie 管理组件
new OverseasCookieConsent((flag) => {
console.log('cookie偏好分析:', flag)
// 控制是否上报
JKReportConfig.open = flag
// 数据上报一定要放在 cookie 组件初始化之后
if (!OReport && flag) {
// 如果还没初始化上报 且 允许上报,则执行一次初始化
OReport = new OverseasReport({
id: 'a20241011testplugin', // 项目名称
channel: queryParams.get('media_channel') // 渠道,如需统计不同渠道的数据,通过 url 参数 media_channel 来区分
})
}
})
})
</script>
# 打开 cookie 管理弹窗
CookieConsent.showPreferences()
# 视频播放器(多语言)
跟国内一样可以使用 SuperPlayer, 注意:必须实现播放器多语言
引入处理播放器多语言的 js
<script src="https://goldenspatula.com/plugins/playerLang/index.js"></script>
在初始化 new window.SuperPlayer
之前调用 handlePlayerLanguage
执行翻译,需传入当前语言
// 处理播放器多语言
handlePlayerLanguage(lang)
// 播放器初始化
const player = new window.SuperPlayer({
// ...
ctrlConfig: { disableFakeFullscreen: true } // 需要加上此属性
})
# 通用页脚组件
<body>
<!-- 页脚容器 -->
<div id="footer-container"></div>
<!-- 页脚组件引入 -->
<script src="https://goldenspatula.com/plugins/footer/index.js"></script>
<script>
// 初始化页脚,传入当前语言
new FooterComponent('footer-container', currentLang);
</script>
</body>
# 游戏内 MSDK
使用方法与国内 游戏内MSDK 一致,但不包含分享功能,海外网页分享
注意:改为引入海外 MSDK 链接
<script src="https://goldenspatula.com/plugins/ingame/index.js"></script>