在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文件。
哪种选择更好?
发布于 2021-02-14 21:55:49
根据我的经验,所有ui都有一个翻译文件效果最好,按照字母顺序对列表进行排序,这样就不会有多个文件具有相同的翻译(例如: Submit,它可以在多个屏幕中使用)
发布于 2021-02-14 22:03:54
因此,问题是:“哪种方法分离翻译/本地化文件更好:按视图名还是按元素名?”
在我看来,按视图名称分隔是没有意义的。如果我创建了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定义了关于“订单”模型的东西的翻译。因此,如果我显示的消息表明没有最近的订单,我将只调用转换为Looks like there are no recent orders.的en.Order.no_recent_orders;无论我从哪里调用它(从任何视图或从任何控制器)
https://stackoverflow.com/questions/66195946
复制相似问题