我正在尝试为翻译编辑创建后端。严格来说,我想让用户在resources / lang / [en | it | es | pt] /something.php中编辑数组
在开始用fread / fwrite编写意大利面条代码之前我想知道是否有一些Laravel方法可以做到。
答案 0 :(得分:2)
您可能希望使用某个程序包执行此任务。我用这个: https://github.com/barryvdh/laravel-translation-manager
这是一个管理Laravel翻译文件的软件包。它不会取代翻译系统,只会将php文件导入/导出到数据库,并通过Web界面使其可编辑。
答案 1 :(得分:2)
我根据Alexey Mezenin提出的类内容找到了一个解决方案,就像我的第一个想法一样使用var_export。我不想安装整个系统来管理我的翻译,因为我正在编写自己的后端。我的解决方案如下(并且像魅力一样:)
public function saveTranslations(Request $request, $key) {
$locales = LaravelLocalization::getSupportedLocales();
foreach ($locales as $l => $lang) {
${"array_$l"} = Lang::get('recipes', [], $l);
${"array_$l"}[$key] = $request->$l;
uksort(${"array_$l"}, "strnatcasecmp");
$path = \App::langPath() . '/' . $l . '/recipes.php';
$output = "<?php\n\nreturn " . var_export(${"array_$l"}, true) . ";\n";
$f = new Filesystem();
$f->put($path, $output);
}
return redirect(LaravelLocalization::getCurrentLocale() . '/admin/translations');
}
它的工作方式基本上与laravel-translation-manager(https://github.com/barryvdh/laravel-translation-manager/blob/master/src/Manager.php#L140)相似,但具有自定义逻辑。
通过mcamara / laravel-localization包管理本地化。