这是我最初在 laravel 论坛上发布的帖子,但可能对其他人有帮助,所以我也将其发布在这里。
我在为我的应用程序构建一个简单的语言切换器时遇到了一些麻烦,而且论坛上的信息有点旧(一些帖子),所以我制作了这段简单的代码,它可以让你在你的应用程序上更改语言变得超级容易即时应用。
我的视图中的语言字符串如下:
{{ __('languagefile.the_language_string'); }}
我得到带有 URL 的语言,我认为这是最好的方式,它也有利于 seo 和人们共享的链接。示例:
www.myapp.com/fi/support (Finnish)
www.myapp.com/en/support (English)
www.myapp.com/sv/support (Swedish)
好的,所以问题是我想要一种简单的方法来即时更改语言,而不必弄乱会话和 cookie。以下是我的制作方法:
在您的库文件夹中创建一个名为 chooselang.php
的库
在里面插入这段代码:
class Chooselang extends HTML {
/**
* Generate a Language changer link.
*
* <code>
* // Generate a link to the current location,
* // but still change the site langauge on the fly
* // Change $langcode to desired language, also change the Config::set('application.language', 'YOUR-LANG-HERE')); to desired language
* // Example
* echo Chooselang::langslug(URI::current() , $langcode = 'Finnish' . Config::set('application.language', 'fi'));
* </code>
*
* @param string $url
* @param string $langcode
* @param array $attributes
* @param bool $https
* @return string
*/
public static function langslug($url, $langcode = null, $attributes = array(), $https = null)
{
$url = URL::to($url, $https);
if (is_null($langcode)) $langcode = $url;
return '<a href="'.$url.'"'.static::attributes($attributes).'>'.static::entities($langcode).'</a>';
}
}
在此之后,您就可以生成您的 url 切换器 URL:s。只需像添加任何其他 Blade 链接一样添加它们。
示例如何生成芬兰语、瑞典语和英语的链接(使用 Blade)
{{ Chooselang::langslug(URI::current() , $langcode = 'Fin' . Config::set('application.language', 'fi')); }}
{{ Chooselang::langslug(URI::current() , $langcode = 'Swe' . Config::set('application.language', 'sv')); }}
{{ Chooselang::langslug(URI::current() , $langcode = 'Eng' . Config::set('application.language', 'en')); }}
上面将生成始终在当前页面上的 URL:s,并将 lang slug 更改为您想要的。这样,语言就会更改为您想要的语言,并且用户自然会停留在同一页面上。默认语言 slug 永远不会添加到 url。
生成的 url 看起来像:
<a href="http://localhost/laravel/public/support">Fin</a>
<a href="http://localhost/laravel/public/sv/support">Swe</a>
<a href="http://localhost/laravel/public/en/support">Eng</a>
PS。如果您将这些链接添加到您的主模板文件中,这些链接将特别有用。