【问题标题】:Laravel - How to Clear cache of array languageLaravel - 如何清除数组语言的缓存
【发布时间】:2019-03-30 04:52:12
【问题描述】:

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

问题是不识别新键,让我认为这是缓存情况,但我 already clear the cache with artisan commands 并继续相同。

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

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

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

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

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

我的数组是这样的:

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

但它只识别第一个键。

谢谢

【问题讨论】:

  • 您是否重新启动了队列工作程序以获取代码更新?
  • 这是在共享主机中,所以我有这个: $schedule->command('queue:work --timeout=60 --tries=1')->everyMinute(); @user3242861
  • 这将产生无穷无尽的队列工作者,而你没有机会控制他们。
  • 那么解决方案是什么? @Namoshek
  • 除了明显的获得适当的托管解决方案,恐怕我无法真正帮助您。

标签: php laravel laravel-blade laravel-queue laravel-localization


【解决方案1】:

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

php artisan queue:restart

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-04
      • 2016-09-18
      • 2019-10-14
      • 2018-11-01
      • 2021-05-22
      • 2020-01-24
      • 2015-05-23
      • 1970-01-01
      相关资源
      最近更新 更多