我有一个双语网站,可以在wp config中设置WPLANG之前测试cookie。php,所有文本国际化等。
我的一个问题是,通知电子邮件是用当前用户的语言发送的,而不是收件人的语言。因此,如果user1以英语发表评论,而user2以西班牙语使用网站,但以蹩脚的英语回复,则user1收到的评论通知电子邮件将以西班牙语发送。
我为每个用户存储了一个语言首选项,因此我打算自定义电子邮件的发送方式,以便它首先检查收件人的语言。
那么,问题来了。
下面是从pluggable中的wp\\u notify\\u posauthor()中提取的一个示例行。使用gettext调用构造电子邮件的php:
$notify_message = sprintf( __( \'New comment on your post "%s"\' ), $post->post_title ) . "\\r\\n";
我希望继续使用这种基于gettext的方法。
但这意味着在构建电子邮件之前立即临时切换语言环境设置,然后立即将其切换回原来的位置。
[编辑]阅读核心文件我想我最好将其描述为在发送电子邮件之前卸载文本域,然后在需要时重新加载。为了优化,我可以专门为要加载和卸载的通知消息创建一个文本域子集,而不是整个站点的文本域,当然,在发送多个通知时,可以按语言将要发送的消息分组
这是a)有意义的,b)可能的,和c)明智的吗?
因为另一种方法是将gettext放在这里,在php中同时包含两个(最终是所有)语言版本,并根据我的语言测试相应地构建电子邮件字符串。