4

我有一个 laravel 应用程序,我有两种不同的语言。我的问题是我正在使用queued emails并且只使用默认语言,所以我尝试向默认语言数组添加新的键和值,以使我有可能在两种语言中使用。

问题是无法识别新键,这让我认为这是一种缓存情况,但我already clear the cache with artisan commands并继续这样做。

现在我删除了messages.php我的 lang 文件夹,它还考虑了旧的密钥。是缓存吗?我该如何解决?

我把它放在刀片中并适用于默认语言:

@lang('messages.'. $months->month)

接下来我添加新键,以便我可以使用相同的默认数组语言翻译成另一种语言并执行此操作:

@lang('messages.'. $months->month .'-en')

我的数组是这样的:

'Março' => 'Março', 
'Março-en' => 'March',

但它只识别第一个键。

谢谢

4

2 回答 2

1

缓存在队列中的语言文件,您只需要像这样重新启动队列:

php artisan queue:restart
于 2019-01-24T05:59:25.527 回答
0

我在一个正在从事的项目中遇到了类似的情况。我的问题是我假设在使用 __() 函数执行翻译时将使用 PHP 本地化定义(例如:resources/lang/en/auth.php)。

但事实证明,当有人设置这个项目时,他们这样做的方式是能够与前端共享翻译。为了做到这一点,这个人设置了一个新的工匠命令,它将编译那些 PHP 本地化定义的 JSON 等价物。不幸的是,当他们这样做时,他们选择使用 Laravel 也将使用的相同文件夹/文件名(例如:resources/lang/en.json)。

因为这已经完成了,所以每当我使用 __() 函数时,Laravel 都会从这些 JSON 文件而不是 PHP 文件中读取。这意味着只有在我首先删除这些 JSON 文件然后重新构建它们时才会反映更改。

最终,我更新了构建这些 JSON 文件的脚本。现在它们使用不同的名称创建,因此没有冲突。

于 2021-12-06T22:02:46.507 回答