Laravel 4如何选择随机语言字符串?

时间:2014-03-22 14:50:28

标签: php laravel laravel-4

我正在使用Laravel 4,我正在创建一个身份验证应用。我陷入了一个我想要实现的非常小的功能,但对我来说它是必需的。当用户登录时,我想从我的语言文件中显示“问候”的随机数组,如“Howdly,username”或“Hey there,username”等。有什么方法可以做到吗?

我尝试过类似的东西:

{{ array_rand(trans('en.greetings') }}

但它会显示为每个字符串指定的变量(例如hey_there应该是“Hey there”)

我的阵列:

"greetings" => array(
    "howdly"            => "Howdly",
    "hello"             => "Hello",
    "hello_there"       => "Hello there",
    "hey"               => "Hey",
    "arr"               => "Arr"
),

3 个答案:

答案 0 :(得分:1)

每次都可以随机播放数组并打印第一个索引

//I am creating an array here, but you could assign whatever
$greetings = array(
"howdly"            => "Howdly",
"hello"             => "Hello",
"hello_there"       => "Hello there",
"hey"               => "Hey",
"arr"               => "Arr"
);

shuffle($greetings);
echo reset($greetings); //will print the first value, you can return it or assgn it to a variable etc

答案 1 :(得分:1)

我有类似的用例,我必须将随机字符串返回给用户。我正在使用Laravel 5,这就是我解决它的方法。您的语言文件可能如下所示:

return[
    "greeting_1"=>"myString 1",
    "greeting_2"=>"myString 2",
    "greeting_3"=>"myString 3",
];

added a custom helper到我的应用程序并编写了一个帮助方法来随机选择响应。我的方法如下:

function getRandomPrompt($key,$params=array()){
    $key=explode(".",$key);
    if(count($key)!= 2)
        throw new Exception("Invalid language key format");
    $file=$key[0];
    $msgKey=$key[1];
    //Get all the keys of the file
    $keys_from_file=Lang::get($file);
    //Filter all the prompts with this key
    foreach ($keys_from_file as $file_key=>$value){
        $key_parts=explode("_",$file_key);
        if(($key_parts[0])!==$msgKey)
            unset($keys_from_file[$file_key]);
    }
    $selected_key=array_rand($keys_from_file);
    if(count($keys_from_file)>=1)
        return Lang::get($file.".".$selected_key,$params);
    else
        return($file.".".$msgKey);
}

此帮助程序只查找所有可能的键,并随机返回一个字符串。您还可以将参数数组传递给它。现在,只要您想要一个字符串,就可以通过调用getRandomPrompt("filename.greeting")

来获取它

答案 2 :(得分:0)

正在寻找类似的东西,但最终我找到了另一个解决方案。

在您的lang文件中:

return [
    'String',
    'Thong',
    'Underwhere?',
];

您的刀片解决方案:

{{ __('messages')[array_rand(__('messages'))] }}