我有一个很长时间的网站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? 提前谢谢。
最合适的回答,由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.po
此外,应该注意的是,自WordPress 4.6以来wp-content/languages/plugins
目录优先于插件目录中的目录-通常通过load_plugin_textdomain()
— 因此,以最近的Tweets小部件为例,如果您同时拥有这两个小部件wp-content/languages/plugins/recent-tweets-widget-es_ES.mo
和wp-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