Laravel编辑本地化

4

我想创建一个用于翻译编辑的后端。更确切地说,我希望允许用户编辑resources/lang/[en|it|es|pt]/something.php 中的数组。

在开始使用fread/fwrite编写混乱代码之前,我想知道是否有某种Laravel方式来实现它。


我想最好使用专用类和数据库来工作,而不是直接编辑文件,特别是如果您要依赖用户输入的话。 - Rolf Pedro Ernst
你为什么认为这是更可取的呢?我不想改变翻译机制,我只想允许用户在不需要修改 PHP 文件的情况下更改翻译值。我考虑使用 var_export 来解决问题,但我想知道是否有更好的方法。 - g4b0
2个回答

2

您可能需要使用一些软件包来完成此任务。我会使用这个: https://github.com/barryvdh/laravel-translation-manager

这是一个用于管理Laravel翻译文件的软件包。它不会替换翻译系统,只会将php文件导入/导出到数据库,并通过Web界面使其可编辑。


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 包管理的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接