1 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
我的假設(shè)是代碼不起作用是因?yàn)槟_本代碼是在 DOM 樹準(zhǔn)備好之前添加(并因此運(yùn)行)的。因此,它必須被包裝在一個window.onload
處理程序(或 jQuery 的$(document).ready();
)中。另外,為每種語言復(fù)制并粘貼 JS 代碼也不是很漂亮。有一個更干凈的解決方案:
將代碼放入 .js 文件中
使用 JS 對象來翻譯文本
將腳本排隊,然后使用
wp_localize_script()
它
像這樣: my_cart.js
window.onload = function () {
const cartBtn = document.querySelector('.cart button');
const formCart = document.querySelector('div.product.elementor form.cart');
var newBtn = document.createElement('a');
newBtn.innerHTML = "<h1>"+cart_localize.back_to_shop+"</h1>";
newBtn.classList.add('cart-custom-link');
newBtn.setAttribute("href", "/shop-uk/");
cartBtn.addEventListener('click', function() {
formCart.appendChild(newBtn);
console.log('click');
});
}
接下來,在 PHP 中,將腳本排入隊列,如下所示:
function load_localized_scripts() {
$cart_localize = array(
'back_to_shop' => 'Back to shop', // default
);
if (pll_current_language() == 'uk') {
$cart_localize['back_to_shop'] = 'Повернутися до магазину';
}
if (pll_current_language() == 'de') {
$cart_localize['back_to_shop'] = 'Zurück zum Shop';
}
wp_enqueue_script('my-cart', plugin_dir_url( __FILE__ ) . 'js/my_cart.js');
wp_localize_script('my-cart', 'cart_localize', $cart_localize);
}
add_action('wp_enqueue_scripts', 'load_localized_scripts');
該$cart_localize數(shù)組可以包含任意數(shù)量的標(biāo)簽鍵→值對=>文本翻譯。它被插入到名為函數(shù)第二個參數(shù)的 JavaScript 對象中wp_localized_script。然后,您可以使用 JS 在 JS 中訪問它c(diǎn)art_localize.key_name。
pll_register_string從技術(shù)上講,您還可以使用命名注冊 Polylang 字符串back_to_shop,并使用以下函數(shù)輕松插入您在語言 → 字符串翻譯下輸入的翻譯pll__():
$cart_localize['back_to_shop'] = pll__('back_to_shop');
我不會在這里完全介紹這一點(diǎn),因?yàn)槲也淮_定這是否符合您想要管理翻譯的方式。
- 1 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報