【问题标题】:Multiple replacement for Laravel Lang::get()Laravel Lang::get() 的多次替换
【发布时间】:2014-03-23 00:29:06
【问题描述】:

抬起头来!我正在使用 Laravel 4

我打算将我的语言集成到 rest api 形式中。这样,与当前集成的其他网站就可以获取他们应该加载的语言。

示例语言文件

.....
'greetings' => 'Welcome :name for giving as a time!',
'prompt'    => 'Don't forget to verify your email address :emailaddress before proceeding',
.....

情景:

当用户更改当前站点的语言环境时,集成站点调用 api 语言并根据当前站点的当前语言环境加载正确的语言。

顺便说一句,集成站点不想为当前站点做语言环境的事情,所以这就是为什么当前站点进行调整,并且集成站点仅提供带有修复措辞的修复模板。

所以我的问题是:

  • 创建一个只返回语言的 json 响应的 API

我解决了这个问题,并且能够为该语言制作一个 API。

// API URL:
/language/integrated_site_language
....
// it will return a json string
{'greetings':'Welcome :name for giving as a time!','prompt':'Don't forget to verify your email address :emailaddress before proceeding'}

但我似乎遇到了一个新问题。语言中有一些替换。像 :name:emailaddress。我尝试通过替换 tru GET,但遗憾的是它不起作用。有什么解决办法吗?或者我唯一能做的就是逐个获取每个语言行,以便替换的东西可以工作(顺便说一句,它以这种方式工作,但似乎不好,因为它会创建很多请求)。

【问题讨论】:

    标签: api laravel localization


    【解决方案1】:

    我是这样解决的:

    /language/integrated_site_language/?params[path.to.the.specific.line|replacementKey]=value
    

    所以我把它放在负责输出 json lang 的控制器上的代码中

    $params = \Input::get('params', []);
    if (empty($params))
    {
        return \Lang::get('myprofile.'.$path, $params);
    }
    else
    {
        // get first the language
        $lang = \Lang::get('myprofile.'.$path);
        foreach ($params as $key => $value) {
            // get the path and the replacemnt key
            @list($path, $replacementKey) = explode('|', $key);
            if (!empty($path))
            {
                $line = array_get($lang, $path);
                if (!empty($replacementKey))
                {
                    $line = str_replace(':'.$replacementKey, $value, $line);
                }
                array_set($lang, $path, $line);
            }
        }
        return \Response::json($lang);
    }
    

    就是这样! :)

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 2015-07-01
      • 1970-01-01
      • 2015-05-19
      • 2011-07-24
      • 2019-02-08
      • 2013-11-14
      • 2011-03-18
      • 2015-03-15
      相关资源
      最近更新 更多