【问题标题】:Lumen fails to change localeLumen 无法更改语言环境
【发布时间】:2015-07-06 11:25:00
【问题描述】:

我几乎全新安装了 Lumen。

我有一个POST 路由,它通向一个控制器。在请求中,我发送带有字符串值的lang 参数。

public function form(Request $request)
{
    if ($request->has('lang')) {
        app('config')->set('app.locale', $request->input('lang'));
    }
    return view('form');
}

我的/resources/lang/ 文件夹中还有一个名为bg 的文件夹。在这个文件夹中,我有一个简单的文件,它有一个数组,就像在resources/lang/en/validation.php 中一样 - 称为static.php

在我显示的视图中,我有几行说:

<input type="text" name="email" value="" class="input-default" placeholder="{{trans('static.enter_email')}}"/>

我在resources/lang/... 的这些语言文件中设置的文本已正确显示,在显示表单之前我无法更改语言环境。

例如,如果在我的 dotenv 文件中设置:

APP_LOCALE=en

并加载视图,resources/lang/en/static.php 中的字符串已加载。 如果我将APP_LOCALE 更改为bg 并再次加载视图,我会从resources/lang/bg/static.php 获取字符串。

我想要的只是在渲染视图之前设置语言环境,这似乎不适用于我上面提供的代码(在我的控制器中)。

我在官方网站上也找不到任何关于 Lumen 本地化的信息,但我想它支持这样的,因为 trans() 正在工作。

【问题讨论】:

  • 不应该是 $app('config') 而不是 app('config') 吗?
  • Shouldn't it be $app('config') not app('config')你想说什么?

标签: php lumen


【解决方案1】:

您在加载后更改配置,这没有效果。要在运行时更改语言环境,请在应用实例上使用 setLocale() 方法:

app()-&gt;setLocale($request-&gt;input('lang'));

编辑

第一个答案似乎只适用于 Laravel。要在运行时使用 Lumen 更改语言环境,请使用:

app('translator')-&gt;setLocale($request-&gt;input('lang'));

【讨论】:

  • 你确定这个方法存在于 Lumen 中吗?因为我收到此错误:Call to undefined method Laravel\Lumen\Application::setLocale()
  • 你是对的。我只是假设它也适用于 Lumen。对于那个很抱歉。我已经用新信息更新了我的答案。
  • 感谢它现在有效!显然,Lumen 的文档对 Laravel 新手开发者并不友好。
  • bootstrap/app.php 中,我添加了app('translator')-&gt;setLocale('fr');,但这不适用于 Lumen 5.1。如何解决?
  • 我的 lumen api 项目中有 20 多种语言,每种语言有 50 多个文件,每个文件有 100 多个标签/消息要翻译。您能否建议我如何通过命令行或任何简单的方法翻译所有语言的所有文件,而不是一个一个地手动更改语言文件。非常感谢。期待听到你的声音。
【解决方案2】:

在运行时更改语言环境取决于框架。 您可以使用外观或辅助功能:

对于流明

Lang::setLocale('lang');

app('translator')->setLocale('lang');

对于 Laravel

App::setLocale('lang');

app()->setLocale('lang');

【讨论】:

  • 我使用的是 Lumen 8.0 版本,app('translator')-&gt;setLocale('en'); 帮我设置了英文。谢谢亲爱的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多