Laravel 5.4:基于 JSON 的语言文件

发布时间 作者

Laravel 5.4: JSON Based Language Files image

在 Laravel 中,我们收到最多的请求之一就是引入对多语言 Web 应用程序的更好支持。市面上已经存在一些包,它们为 Laravel 添加了一些不错的功能,可以更好地处理多语言项目的要求,但是构建这类应用程序时最让人头疼的问题之一就是管理翻译键。

在以前的 Laravel 版本中,可以使用 trans()trans_choice() 辅助函数插入翻译后的行。

trans('auth.verification_number_instructions')

然后,您必须在项目支持的每种语言中都包含该键的翻译。因此,对于英语,您需要有一个名为 resources/lang/en/auth.php 的文件,内容如下

<?php
 
return [
'auth.verification_number_instructions' => 'Please enter your 4-digit verification number:'
];

对于小型项目,翻译键的数量有限,所以管理起来并不难。然而,对于大型项目来说,想出易于理解和记忆的翻译键是一件非常痛苦的事情。因此,Laravel 5.4 附带了一个新的翻译辅助函数

__("Please enter your 4-digit verification number:")

这个新函数将查找一个 resources/lang/en.json 文件,对其进行解码,并根据应用程序当前语言返回相应的翻译值。JSON 文件如下所示

{"Please enter your 4-digit verification number:": "men fadlak adkhel raqam al tareef"}

这个新功能将允许开发人员在编写应用程序时使用简单的语言行,并将管理翻译的需求推迟到后期。

至于我们为什么使用 JSON 文件,是因为 JSON 易于人类和计算机软件阅读。我们认为,将翻译存储在 JSON 中将为包开发者创造更好的工具来处理应用程序翻译。

将参数传递给翻译器

使用 __() 方法,您可以像在以前的 Laravel 版本中一样将参数传递给翻译器

__(
"Hello :name, you have :unread messages",
['name' => $user->name, 'unread' => $notifications->count]
)

这里的新东西是,即使没有找到语言行,也会进行参数替换。这意味着您甚至不必为应用程序的主语言构建翻译文件。因此,在上面的示例中,即使没有 en.json 文件,方法的输出也将类似于

你好 Mohamed,你有 23 条消息。

Blade 中的翻译行

在 5.4 版本中,Laravel 引入了对 @trans blade 指令的一个新增强功能,您可以执行以下操作。

@trans(['name' => $user->name, 'unread' => $notifications->count])
Hello :name, you have :unread messages.
@endtrans

我们认为这种语法可以确保长翻译行的可读性更好。

Mohamed Said photo

Web 开发人员和 Laravel 核心贡献者

Cube

Laravel 新闻通讯

加入 40k+ 其他开发者,绝不错过新的技巧、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

无妥协

Joel 和 Aaron,来自 No Compromises 播客的两名经验丰富的开发人员,现在可以为您的 Laravel 项目雇佣。 ⬧ 固定费用 7500 美元/月。 ⬧ 没有冗长的销售流程。 ⬧ 没有合同。 ⬧ 100% 返款保证。

无妥协
Kirschbaum logo

Kirschbaum

提供创新和稳定性,以确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行旧版本的 Laravel?即时、自动化的 Laravel 升级和代码现代化,以保持应用程序的新鲜感。

Shift
Bacancy logo

Bacancy

只需 2500 美元/月,即可为您的项目配备一名经验丰富的 Laravel 开发人员,拥有 4-6 年的经验。获得 160 小时的专业知识和 15 天的无风险试用。立即安排电话!

Bacancy
Lucky Media logo

Lucky Media

立即获得 Lucky - Laravel 开发的理想选择,拥有超过十年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel 电子商务

Laravel 的电子商务。一个开源包,将现代无头电子商务功能的强大功能带到 Laravel。

Lunar: Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 招聘网站

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit:Laravel SaaS 启动工具包

SaaSykit 是一个 Laravel SaaS 启动工具包,它包含运行现代 SaaS 所需的所有功能。支付、漂亮结帐、管理面板、用户仪表板、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 启动工具包
Rector logo

Rector

您无缝升级 Laravel、降低成本和加速创新的合作伙伴,助力企业取得成功

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解灵活、现代的 MongoDB 数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的无依赖性输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

在 Laravel 应用程序中添加 Swagger UI

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包在 Laravel 应用程序中添加评论

阅读文章