基于WPML的菜单按钮翻译:求JS/PHP最简实现方案
解决方案:翻译按钮文字(基于WPML语言后缀)
PHP 最简实现(推荐)
利用WPML内置函数直接获取当前语言,后端渲染文本,避免前端闪烁且更可靠:
<div class="nav-button"> <a href="#" class="button"> <svg ...></svg> <span><?php echo icl_get_current_language() === 'ru' ? 'Связаться с нами' : 'Contact Us'; ?></span> </a> </div>
如果需要扩展多语言,可改用映射数组:
<?php $contactLabels = [ 'en' => 'Contact Us', 'ru' => 'Связаться с нами', // 可添加其他语言代码对应文本 ]; $lang = icl_get_current_language(); $label = $contactLabels[$lang] ?? $contactLabels['en']; ?> <div class="nav-button"> <a href="#" class="button"> <svg ...></svg> <span><?php echo $label; ?></span> </a> </div>
JS 最简实现(前端动态替换)
通过解析当前URL路径判断语言,动态修改按钮文本:
const contactTextEl = document.querySelector('.nav-button .button span'); const path = window.location.pathname; // 匹配俄语路径后缀 if (path.startsWith('/ru/')) { contactTextEl.textContent = 'Связаться с нами'; } // 多语言扩展版 /* const textMap = { '/en/': 'Contact Us', '/ru/': 'Связаться с нами' }; for (const [langPath, text] of Object.entries(textMap)) { if (path.startsWith(langPath)) { contactTextEl.textContent = text; break; } } */
优先推荐PHP方案:后端直接渲染目标文本,不会出现前端加载时的原文本闪烁问题,且WPML的语言检测函数比前端解析URL更准确。
内容的提问来源于stack exchange,提问作者Yaroslav
相关产品推荐
相关产品推荐

