【发布时间】:2020-12-18 07:56:44
【问题描述】:
我一直在绞尽脑汁并在互联网上搜索了一段时间,但没有找到与我类似的解决方案(或案例),所以我转向这里的每个人:
我目前正在开发一个使用 gettext-extension 进行国际化的网站,目前它只计划用于英语和德语。 总而言之,我的翻译工作大部分时间都在工作,但对我来说有一个非常奇怪的问题,我似乎无法解决:
首先,一些代码/背景:
问题发生在通过 php 包含的页脚中,并且页脚包含一个小的侧导航:
<div class="nav fixed-bottom style-footer">
<div class="col-auto">
<a class="nav-link" href="./index.php?page=contact"><?php echo _("btn_contact"); ?></a>
</div>
<div class="col-auto">
<a class="nav-link" href="#"><?php echo _("btn_language"); ?></a>
</div>
<div class="col-auto">
<a class="nav-link" href="#"><?php echo _("btn_contact"); ?></a>
</div>
</div>
(我添加了“btn_language”作为测试,认为可能是整个文件无法正确翻译,但事实并非如此),页面也是用banner.php构建的, nav.php, content.php, footer.php 其中 content.php 动态更改/显示内容,其余部分始终显示/“静态”并固定在其位置(导航上方的标题在页脚上方的内容上方(固定到底部)浏览器窗口))
po-files 最初是通过 PoEdit 创建的,它正确识别并抓取了所有其他条目中的“btn_contact”条目,有问题的 po-Entry 如下所示:
德语:
#: includes/footer.php:3
msgid "btn_contact"
msgstr "Kontakt"
英语:
#: includes/footer.php:3
msgid "btn_contact"
msgstr "Contact"
现在,当我打开页面时,每个字符串都正确显示,除了来自 btn_contact 的字符串,甚至 btn_language 来自同一个文件 (footer.php) 并且这个 only 出现在德语中,当我切换到英语时,它正确显示“Contact”,而不是像切换到德语时那样显示“btn_contact”(如果不清楚,我会在底部添加两张显示英语和德语的图片)
我在我的 Windows 10 PC 上进行本地开发,使用 IIS 在我的 PC 上托管页面,同时在我的 PC 上工作,这在我的同事 Windows 10 PC 和他的 MacBook 上是一样的(都使用 XAMPP 托管) 我已经尝试删除 po 文件中的 btn_contact-Entry,我通过 PoEdit 删除并重新创建了德语翻译,清除了浏览器缓存(它发生在 Chrome、Edge(又名重新换皮的 Chrome)和 Firefox 中,都是最新的)等,删除并重写footer.php中的行,删除并重新安装IIS 我不知道我还能改变什么(inb4 这是一个超级简单的改变,我的笨蛋只是没有看到 atm) 如果我因为 Google-Fu 弱而错过了这个问题的解决方案,我深表歉意 如果需要其他代码部分进行澄清,我会在需要时添加它们
【问题讨论】:
-
你试过用英文文件替换德文文件,看看那个文件是否也适合你吗?这样你就可以推断出文件本身不是破坏的东西。如果可行,我会更改 btn_contact 的值,看看是否成立。如果可行,请检查您使用的字符编码。让我知道结果,我会帮你进一步调试。
-
我尝试更改值,但奇怪的是确实显示了当时正确的 btn_contact 术语,但是当我改回“Kontakt”时,它停留在测试条目。然后我尝试切换文件,这似乎完全破坏了一切。然后我一怒之下删除了整个语言目录(root/locales/locale code/LC_MESSAGES/main.po)并完全从头开始重做,它似乎出于某种原因(现在)工作
标签: php html internationalization gettext