多语言能不能按应用来分开设置

一条材

问题1:
比如说我一个项目有多个应用,怎么样才能让每个应用的语言能分开来?多个应用的语言包都放在一起感觉翻译起来很不方便。

问题2:
语言包能不能在应用的基础上细分开,比如一个控制器一个语言文件?

922 1 0
1个回答

walkor

webman没有这个功能,需要自己实现,欢迎做成插件发布到插件市场。

  • 一条材 2022-06-01

    好的,我要是解决了就考虑一下,多谢

  • 一条材 2022-06-02

    读了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')的使用方法

  • walkor 2022-06-02

    插件的函数不需要放在 support/helpers.php里,自己定义一个helpers.php,新建配置plugin/xxx/xxx/autoload.php

    return [
        'files' => [
            base_path() . '/vendor/xxx/xxx/src/helpers.php'
        ]
    ];

    就自动加载进去了。
    xxx/xxx 是你插件项目的路径。

  • 一条材 2022-06-02

    非常感谢,经过不少的尝试,把我前面的lang函数做了些修改,现在语言文件已经能按应用,并按控制器来分开存放了,还没学会写插件,等有空了好好研究一下插件怎么写

年代过于久远,无法发表回答
🔝