Laravel编辑本地化

时间:2016-11-28 10:34:27

标签: php laravel laravel-5.2

我正在尝试为翻译编辑创建后端。严格来说,我想让用户在resources / lang / [en | it | es | pt] /something.php中编辑数组

在开始用fread / fwrite编写意大利面条代码之前我想知道是否有一些Laravel方法可以做到。

2 个答案:

答案 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包管理本地化。