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