补充主题静态资源与归档模板
This commit is contained in:
1 parent
1268a55dd0
commit
3247db7ed1
265 files changed
+59174
No files matched your search
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* AKSRT Frontend Translate — 前端即时翻译
|
||||
*
|
||||
* 渐进增强,默认关。通过 Settings 启用后,
|
||||
* 在语言切换 Widget 中添加"翻译本页"按钮,
|
||||
* 使用浏览器原生翻译或自定义翻译 API。
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var config = (window.aksrtData && window.aksrtData.translate) || {};
|
||||
if (!config.enabled) return;
|
||||
|
||||
/**
|
||||
* 触发浏览器原生翻译(Chrome/Edge 内置)
|
||||
*/
|
||||
function triggerBrowserTranslate(targetLang) {
|
||||
// Chrome/Edge 有内置翻译功能
|
||||
if (document.querySelector('.goog-te-banner-frame') || document.querySelector('#goog-gt-tt')) {
|
||||
return; // 已经在翻译中
|
||||
}
|
||||
|
||||
// 尝试使用 Google Translate Element
|
||||
if (window.google && window.google.translate) {
|
||||
new google.translate.TranslateElement({
|
||||
pageLanguage: config.sourceLang || 'zh-CN',
|
||||
includedLanguages: targetLang || '',
|
||||
layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
|
||||
autoDisplay: false,
|
||||
}, 'aksrt-translate-container');
|
||||
return;
|
||||
}
|
||||
|
||||
// 动态加载 Google Translate
|
||||
var script = document.createElement('script');
|
||||
script.src = '//translate.google.com/translate_a/element.js?cb=aksrtTranslateInit';
|
||||
document.head.appendChild(script);
|
||||
|
||||
window.aksrtTranslateInit = function () {
|
||||
if (!window.google || !window.google.translate) return;
|
||||
new google.translate.TranslateElement({
|
||||
pageLanguage: config.sourceLang || 'zh-CN',
|
||||
includedLanguages: targetLang || config.targetLang || 'en',
|
||||
layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
|
||||
autoDisplay: false,
|
||||
}, 'aksrt-translate-container');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建翻译容器和按钮
|
||||
*/
|
||||
function init() {
|
||||
// 检查是否有语言切换 Widget
|
||||
var langWidget = document.querySelector('.aksrt-lang-switch, [data-aksrt-lang-switch]');
|
||||
if (!langWidget && !config.showButton) return;
|
||||
|
||||
// 创建隐藏的翻译容器
|
||||
var container = document.createElement('div');
|
||||
container.id = 'aksrt-translate-container';
|
||||
container.style.cssText = 'position:fixed;top:-9999px;left:-9999px;visibility:hidden;';
|
||||
document.body.appendChild(container);
|
||||
|
||||
// 如果配置了显示按钮,在语言切换 Widget 旁添加
|
||||
if (config.showButton && langWidget) {
|
||||
var btn = document.createElement('button');
|
||||
btn.type = 'button';
|
||||
btn.className = 'aksrt-translate-btn';
|
||||
btn.innerHTML = '<i class="fas fa-language"></i> 翻译本页';
|
||||
btn.addEventListener('click', function () {
|
||||
triggerBrowserTranslate(config.targetLang || 'en');
|
||||
btn.textContent = '翻译中...';
|
||||
btn.disabled = true;
|
||||
});
|
||||
langWidget.appendChild(btn);
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', init);
|
||||
})();
|
||||
Reference in new issue
Block a user