Laravel Lang :: get()的多次替换

时间:2014-03-23 00:29:07

标签: api laravel localization

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

我计划将我的语言整合到其他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,但遗憾的是它不起作用。这有什么解决方案吗?或者我唯一能做的就是逐个获取每个语言行,这样替换的东西就可以了( 顺便说一下,它的工作原理是这样的,但它看起来并不好,因为它会创造这么多请求 )。

1 个答案:

答案 0 :(得分:0)

我这样解决了:

/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);
}

那就是它! :)