Laravel 语言文件分离逻辑

问题描述

在 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 文件。

哪个选择会更好?

解决方法

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

,

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

在我看来,按视图名称分隔是没有意义的。如果我创建 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.;无论我从哪里调用它(从任何视图或任何控制器)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...