我正在开发一个简单的发票插件,我将用它为我的客户创建发票。工作插件可以在这里找到:
https://github.com/dingo-d/invoice-create-plugin
现在我基本上已经完成了。您可以创建发票,设置所有内容,然后在发票中单击下载,您将在
pdf
插件中的文件夹。
这张pdf是英文的,因为我是用英文写的。但我也创造了一个克罗地亚人.mo
和.po
翻译。
我的想法是,我可以选择创建pdf文件的语言。
我搜索了一下,只发现了这个:https://stackoverflow.com/questions/9225380/using-gettext-to-translate-an-email-inside-an-ajax-call
但我真的不知道怎么用这个。
我应该使用setlocale()
在创建我的pdf之前,还是?如果我已经.mo
文件可用吗?所有字符串都是可翻译的ofc。
这能做到吗?
EDIT
到目前为止,这些措施奏效了:
将整个管理语言设置为克罗地亚语,会影响插件和生成的pdf。
这是一个很糟糕的解决方案,因为每次我想发布pdf时都需要更改语言。
挂钩到locale
滤器
add_filter( \'locale\', \'mbd_change_locale\', 10 );
function mbd_change_locale() {
return \'hr_HR\';
}
这也会影响一切。
我有没有办法在AJAX调用中使用这个过滤器来更改语言环境并强制转换?
最合适的回答,由SO网友:dingo_d 整理而成
通过添加解决
if ( isset( $_POST[\'language\'] ) ) { // Input var okay.
add_filter( \'locale\', \'mbd_set_my_locale\' );
/**
* Set locale based on the $_POST choice.
*
* @param string $locale Locale code.
* @return string Selected locale code.
*/
function mbd_set_my_locale( $locale ) {
$language = sanitize_text_field( wp_unslash( $_POST[\'language\'] ) ); // Input var okay.
if ( \'hr\' === $language ) {
$locale = \'hr\';
} else {
$locale = \'en\';
}
return $locale;
}
}
在初始化主插件类之前。