【问题标题】:Add and update language file array in Laravel在 Laravel 中添加和更新语言文件数组
【发布时间】:2019-11-07 05:59:29
【问题描述】:

我可以从这个函数中得到语言数组

$array = Lang::get('msg'); // return entire array
$text  = Lang::get('msg.success'); // return single item

$array = trans('msg'); // return entire array
$text = trans('msg.success'); // return single item

但现在我想从控制器向这个 msg.php 语言文件添加/更新一个新的键值。

我该怎么做?

我试过Lang::set(),但没有这样的辅助函数。

【问题讨论】:

  • 有一个Lang::addLines 方法,但它不会将其保存到文件中,只需将其添加到当前请求的当前语言环境的翻译中
  • 我必须管理(读/写/删除)文件。我怎样才能做到这一点?给我一些建议谢谢回复

标签: php laravel laravel-6


【解决方案1】:

我建议使用JSON-based translations in Laravel。 然后,每种语言都有一个 json 文件。例如,英语将存储在resources/lang/en.json。由于它只是一个 json 文件,您可以通过file_put_contents()json_encode() 轻松写入。

UPD:原来语言更改应该是每个用户的。然后解决方案是在数据库中有一个单独的表,它将保存字符串和 user_id。类似这样的伪代码:

function mytrans($string, $user_id) {
 if translation exists in the table for this user_id
    return translation
 else
    return trans(string);
}

【讨论】:

  • 我必须更改后端消息,例如验证消息。存在于validation.php 文件中。和其他自定义消息。我已经将 en.json/bn.json/hi.json 用于纯文本。但是当它是无效的返回消息时。
  • 那你为什么不能直接在validation.php文件里改呢?为什么需要通过 PHP 代码来做?
  • 在我的项目中,用户可以根据需要添加任意数量的语言,因此当添加新语言时,用户每次都必须在每个文件中进行更改——这不反感吗? .所以我想为用户提供完整的语言管理功能。用户更新他想要的消息
  • 那么你的解决方案是在数据库中有一个单独的表,它将与user_id一起保存字符串,你应该使用一个自定义函数首先检查该表,然后如果没有找到返回默认翻译通过trans()
【解决方案2】:

您可以使用包来管理语言。

https://github.com/barryvdh/laravel-translation-manager

非常好用,试试吧

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2011-12-07
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    相关资源
    最近更新 更多