我正在构建的网站上包含双语功能。研究我已经使用显示/隐藏方法的选项,因为我知道与切换字符串相比,这对 SEO 更好。由于我还在学习,我现在也想坚持使用 javascript。我已经阅读了 StackOverflow 中的几篇文章,但到目前为止还没有找到解决方案。
下面的方法适用于我创建的一个简单的测试文件,但是一旦我尝试在网站上实现它,它就会显示两种语言onload以及单击按钮时的语言。我现在只处理菜单和页面的标题——也许我需要处理这些更具体的元素?
我的 HTML
(…)
<ul id="navlinks">
<li><a href="index.html">Home</a></li>
<li class="lang-de"><a href="angebot.html">Angebot</a></li>
<li class="lang-eng"><a href="angebot.html" class="thispage">Services</a></li>
<li class="lang-de"><a href="wer_wir_sind.html" class="thispage">Über Uns</a></li>
<li class="lang-eng"><a href="wer_wir_sind.html">About Us</a></li>
<li class="thispage lang-de"><a href="beispiele.html">Beispiele</a></li>
<li class="thispage lang-eng"><a href="beispiele.html">Beispiele</a></li>
<li class="lang-de"><a href="rezensionen.html">Rezensionen</a></li>
<li class="lang-eng"><a href="rezensionen.html">Reviews</a></li>
<li class="lang-de"><a href="contact.php">Kontakt</a></li>
<li class="lang-eng"><a href="contact.php">Contact</a></li>
</ul>
(…)
<input type="button" value="Display Page in English" id="translate">
(…)
<script type="text/javascript" src="js/translate.js"></script>
Run Code Online (Sandbox Code Playgroud)
我的 JavaScript
var trans_button = document.getElementById("translate");
var de = document.querySelectorAll(".lang-de"); //get all German text blocks …Run Code Online (Sandbox Code Playgroud) 我正在了解 i18next,但当Trans我尝试使用链接时却给了我谜语。到目前为止,一切都与 t{} 配合良好(我正在 React \xe2\x80\x93 JSX 中工作):
这是几乎可以工作的代码(我尝试过的其他方法根本不起作用):
\n<p className="button"><Trans i18nkey="home.p3" components={{ MyLink: <a href=\'beispiele.html\'>link</a> }}/>{t(\'home.p3\')}</p>\nRun Code Online (Sandbox Code Playgroud)\nJSON:\nde:
\n{\n (\xe2\x80\xa6)\n "home": {\n (\xe2\x80\xa6)\n "p3": "Durchst\xc3\xb6bern Sie unsere <5>Beispiele</5>.",\n (\xe2\x80\xa6)\n\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nzh:
\n{\n (\xe2\x80\xa6)\n "home": {\n (\xe2\x80\xa6)\n "p3": "View <MyLink>samples</MyLink> of our work.",\n (\xe2\x80\xa6)\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n这就是我初始化 i18next 的方式:
\ni18next\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // init i18next\n // for …Run Code Online (Sandbox Code Playgroud)