问题1: 比如说我一个项目有多个应用,怎么样才能让每个应用的语言能分开来?多个应用的语言包都放在一起感觉翻译起来很不方便。
问题2: 语言包能不能在应用的基础上细分开,比如一个控制器一个语言文件?
webman没有这个功能,需要自己实现,欢迎做成插件发布到插件市场。
好的,我要是解决了就考虑一下,多谢
读了Symfony\Translation包的部分源码后,我已经简单实现了语言文件自动按应用来加载的问题(不用每次调用trans都传domain参数),但是想要按每个控制器一个语言文件,得要改源码才行。 在support/helpers.php里添加: function lang(string $id, array $parameters = [], string $domain = null, string $locale = null) { if($domain === null) { $controller = strtolower(request()->controller); $domain = explode('\', $controller)[1]; }
return trans($id, $parameters, $domain, $locale);
} 使用的时候:lang('xxx')
或者把$domain的判断直接加到原来的trans函数里,保持原来的trans('xx')的使用方法
插件的函数不需要放在 support/helpers.php里,自己定义一个helpers.php,新建配置plugin/xxx/xxx/autoload.php
return [ 'files' => [ base_path() . '/vendor/xxx/xxx/src/helpers.php' ] ];
就自动加载进去了。 xxx/xxx 是你插件项目的路径。
非常感谢,经过不少的尝试,把我前面的lang函数做了些修改,现在语言文件已经能按应用,并按控制器来分开存放了,还没学会写插件,等有空了好好研究一下插件怎么写
webman没有这个功能,需要自己实现,欢迎做成插件发布到插件市场。
好的,我要是解决了就考虑一下,多谢
读了Symfony\Translation包的部分源码后,我已经简单实现了语言文件自动按应用来加载的问题(不用每次调用trans都传domain参数),但是想要按每个控制器一个语言文件,得要改源码才行。
在support/helpers.php里添加:
function lang(string $id, array $parameters = [], string $domain = null, string $locale = null)
{
if($domain === null)
{
$controller = strtolower(request()->controller);
$domain = explode('\', $controller)[1];
}
}
使用的时候:lang('xxx')
或者把$domain的判断直接加到原来的trans函数里,保持原来的trans('xx')的使用方法
插件的函数不需要放在 support/helpers.php里,自己定义一个helpers.php,新建配置plugin/xxx/xxx/autoload.php
就自动加载进去了。
xxx/xxx 是你插件项目的路径。
非常感谢,经过不少的尝试,把我前面的lang函数做了些修改,现在语言文件已经能按应用,并按控制器来分开存放了,还没学会写插件,等有空了好好研究一下插件怎么写