未安装插件翻译,但...字符串被翻译了!

时间:2020-10-13 作者:macl

我有一个很长时间的网站Recent Tweets Widget. 这个插件是作为主题的一部分出现的,而在那一天,它包含了翻译。采购订单和。法语的mo文件。我以前没有注意到这一点。

但最近我发现,表示推特年龄的字符串(x天/月前,等等)被翻译成西班牙语,这是网站的主要语言。我已经确认了the translated strings are not in the .po files, 既不来自插件,也不来自站点翻译。所以我假设它们来自外部站点。我不知道事情发生的确切日期。

挖掘这个奇怪之处,我发现现在可以在http://translations.wordpress.org. 在这个网站上,上面提到的插件已经存在,有8个翻译(西班牙语的翻译特别糟糕)。我猜测WP可能会通过RESTAPI或类似的方式从站点恢复此翻译。但我在代码中找不到对此的任何特定调用。

我想知道\\uuu()函数现在是否能够恢复给定文本域的外部翻译,或者以问题的形式:what could be the possible sources for this "ghost" translation? 提前谢谢。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

是的,最近的推特小部件是众多插件中的一个,它们的翻译是通过这些插件来管理的translate.wordpress.org, 这意味着在安装插件时(*记住,安装和激活是不同的),WordPress(在你的网站上)会自动下载插件的语言包(.po.mo 文件)。wordpress。org,然后将翻译文件存储在WordPress languages目录中,默认为wp-content/languages.

但WordPress只有在以下位置找到核心/站点语言包时才会这样做wp-content/languages/<locale>.mo (参见get_available_languages()), 在您的情况下,这应该是正确的-例如,您可以在以下位置找到MO文件wp-content/languages/es_ES.mo.

对于插件,下载的语言包保存到wp-content/languages/plugins/<locale>.<mo|po>; 例如,文本域位于recent-tweets-widget, 您可以找到西班牙语(西班牙)的翻译(es_ES) 在中:

  • wp-content/languages/plugins/recent-tweets-widget-es_ES.mo
  • wp-content/languages/plugins/recent-tweets-widget-es_ES.powp-content/languages/plugins 目录优先于插件目录中的目录-通常通过load_plugin_textdomain() — 因此,以最近的Tweets小部件为例,如果您同时拥有这两个小部件wp-content/languages/plugins/recent-tweets-widget-es_ES.mowp-content/plugins/recent-tweets-widget/languages/recent-tweets-widget-es_ES.mo, 前者将自动加载,并代替后者使用。

    Hence, I believe that MO file is the source of that "ghost" translation. :)

    (如果您的站点的区域设置为es_ES, 但即使没有,也要尝试寻找其他西班牙地区。然后尝试重命名文件,例如。<locale>.mo.bak, 并查看;“幽灵”;翻译仍然存在。)

    最后但并非最不重要的一点是,当插件deleted (而不是简单地停用),WordPress还将删除wp-content/languages/plugins, <因此,如果您希望编辑这些文件/翻译,请记住这一点。

    Further Reading

相关推荐

Error on update translation

我在本地主机(WAMP)上安装了以我当前语言(pt\\U BR)编写的新版本WordPress。登录后,WordPress告诉我存在翻译更新。我单击进行更新,出现以下消息:Atualizando traduções de WordPress (pt_BR)… O pacote não pôde ser instalado. PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature 翻