0

在 Laravel 中分离语言文件的最佳逻辑是什么?

我即将从两个选择中做出决定。

首先是收集buttons.php中的所有应用程序按钮本地化字符串,links.php中的链接本地化字符串,placeholders.php中的占位符本地化字符串。

像这样 :

/resources
    /lang
        /en
            buttons.php
            links.php
            placeholders.php
        /es
            buttons.php
            links.php
            placeholders.php

其次是在单独的文件中为每个视图收集本地化字符串。

像这样 :

/resources
    /lang
        /en
            login_page.php
            sign_up.php
            home.php
        /es
            login_page.php
            sign_up.php
            home.php

在第一选择中,我最终会得到更少的语言文件,因为我将有大约 10 个文件。

在第二种选择中,我最终会得到大量语言文件,因为我将为项目中的每个视图都有一个 lang 文件。

哪个选择会更好?

4

2 回答 2

0

以我的经验,为所有 ui 提供一个翻译文件效果最好,按字母顺序对列表进行排序,这样您就不会有多个文件具有相同的翻译(例如:提交,可以在多个屏幕中使用)

于 2021-02-14T13:55:49.247 回答
0

所以,问题是:“哪种分离翻译/本地化文件的方法更好:按视图名称还是按元素名称?”

在我看来,按视图名称分隔是没有意义的。如果我制作 3 个视图(view_a、view_b、view_c),每个都有一个提交按钮,那么我en(英语)的本地化将不得不定义“提交”翻译 3 次。前任:

/resources
    /lang
        /en
            view_a.php // contains ["submit"=>"Submit form"]
            view_b.php // contains ["submit"=>"Submit form"]
            view_c.php // contains ["submit"=>"Submit form"]

这不是很干

让我们通过比较一些 github 上的开源 laravel 项目如何分离它们的本地化文件来看看:

在 Attendize/Attendize 中,每个模型都有本地化文件。他们还对常见/可重用元素进行了一些本地化,例如basic

例如,这个文件:https ://github.com/Attendize/Attendize/blob/develop/resources/lang/en/Order.php 定义了关于“订单”模型的东西的翻译。因此,如果我显示的消息说没有最近的订单,我会打电话给en.Order.no_recent_orders翻译成Looks like there are no recent orders.; 无论我从哪里调用它(从任何视图或任何控制器)

于 2021-02-14T14:03:53.613 回答