如何触发核心WPLANG,让主题被激活时自动设置语言?

时间:2013-11-04 作者:Mayeenul Islam

我正在为Bānglāblog帖子开发一个主题,它将获得GNU许可。我今天就日历小部件的翻译提出了一些问题,得到了一个comment 说:

我只是想知道Bangla translation?

s_ha_dum\'s answer 我想我可以做一个可以翻译的主题。然后我可以翻译我的主题所需的所有文本。我遵循:

  1. Internationalizing And Localizing Your WordPress Theme
    作者:Konstantinos Kouratoras和mdash;WP。粉碎杂志。comTranslating Your Theme
    -罗伯特·特雷西(Robert Treacy)和麦达斯(mdash);WP。塔斯普卢斯。com
现在我制作了一个完整的可翻译主题,当我更改WPLANG 到我的语言中wp-config.php. 但除了这一步,整个过程都是自动的。所以,如果这一步可以自动进行,那对我来说就太好了。

我想放置一个过滤器,可以钩住WPLANG并覆盖bn_BD 例如:

define(\'WPLANG\', \'bn_BD\');
当主题被激活时。

因此,我可以简单地说:“安装主题,它会为您做一切。您不需要访问您的cPanel来更改wp-config.php.“我已经阅读了WPSE线程Trigger language change in Wordpress, 但如果你现在明白了,我就走上了另一条路。

那么,这有可能吗?

2 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

是的,从toscho\'s Answer 来自WPSE线程。只是引用他的话。使用Filter:Locale, 挂钩您的功能:

add_filter( \'locale\', \'wpse_52419_toscho_change_language\' );

function wpse_52419_toscho_change_language( $locale ) {
    return \'bn_BD\';
}
将代码放入functions.php.

SO网友:Mark Kaplun

不可能完全按照你的要求去做define() php中的常量,不能重新定义/重写该值。但您尝试执行的操作并不是必需的,该常量被定义为本地化WordPress安装的一部分,因此对于运行本地化WordPress的用户,它已经存在,并且设置正确。

有一种边缘情况是,人们希望他们的管理和前端使用不同的语言,并且需要覆盖lang设置的能力,但他们有插件/代码片段,作为主题作者,你不应该担心这一点。

你所做的将阻止你的主题在英语和孟加拉网站以外的任何网站上使用。你为什么要这样限制它呢。

结束

相关推荐

get_posts() and filters

我为添加了自定义筛选函数the_posts 在插件中筛选。add_filter(\'the_posts\', \'posts_filter\'); function posts_filter() { … } 这在主循环中运行得很好,这意味着帖子会按照我在posts_filter 作用但我正在打电话get_posts() 在ajax请求中获取一些帖子。在那里,过滤器不起作用。query_posts() 或自定义wp_query 不要工作太多。所以问题是:我如何才能在主循环旁获得按the_p