問題1:
比如說我一個項(xiàng)目有多個應(yīng)用,怎么樣才能讓每個應(yīng)用的語言能分開來?多個應(yīng)用的語言包都放在一起感覺翻譯起來很不方便。
問題2:
語言包能不能在應(yīng)用的基礎(chǔ)上細(xì)分開,比如一個控制器一個語言文件?
webman沒有這個功能,需要自己實(shí)現(xiàn),歡迎做成插件發(fā)布到插件市場。
讀了Symfony\Translation包的部分源碼后,我已經(jīng)簡單實(shí)現(xiàn)了語言文件自動按應(yīng)用來加載的問題(不用每次調(diào)用trans都傳domain參數(shù)),但是想要按每個控制器一個語言文件,得要改源碼才行。
在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函數(shù)里,保持原來的trans('xx')的使用方法
插件的函數(shù)不需要放在 support/helpers.php里,自己定義一個helpers.php,新建配置plugin/xxx/xxx/autoload.php
return [
'files' => [
base_path() . '/vendor/xxx/xxx/src/helpers.php'
]
];
就自動加載進(jìn)去了。
xxx/xxx 是你插件項(xiàng)目的路徑。
非常感謝,經(jīng)過不少的嘗試,把我前面的lang函數(shù)做了些修改,現(xiàn)在語言文件已經(jīng)能按應(yīng)用,并按控制器來分開存放了,還沒學(xué)會寫插件,等有空了好好研究一下插件怎么寫