我正在制作一个双语应用。我为每个使用相同的路由,但我对两种语言使用不同的视图。每当我想重定向到我希望通过RefCell
的路线时。在我传递use std::cell::RefCell;
use std::rc::Rc;
#[derive(Debug)]
struct Foo {
i: i32,
}
impl Foo {
fn get(&self) -> i32 {
self.i
}
fn incr(&mut self) {
self.i += 1
}
}
fn retry<O, N>(mut operation: O, mut notify: N) -> i32
where
O: FnMut() -> i32,
N: FnMut() -> (),
{
operation();
notify();
operation()
}
fn something(f: &mut Foo) {
let f_rc = Rc::new(RefCell::new(f));
let f_weak = Rc::downgrade(&f_rc);
let operation = || {
// f.get()
let cell = f_weak.upgrade().unwrap();
let f = cell.borrow();
f.get()
};
let notify = || {
// f.incr();
let cell = f_weak.upgrade().unwrap();
let mut f = cell.borrow_mut();
f.incr();
};
retry(operation, notify);
println!("{:?}", f_rc);
}
fn main() {
let mut f = Foo { i: 1 };
something(&mut f);
}
的地方,我想从视图中获取当前的区域设置值,然后将其传递给路径。请帮忙。
答案 0 :(得分:23)
试试这个。它将在您的应用程序中设置区域设置
Config::get('app.locale')
编辑:
要在刀片中使用此功能,请使用以下内容,以回显刀片中的当前区域设置。
{{ Config::get('app.locale') }}
如果你想在它周围的刀片中做一个if条件,它就会变成,
@if ( Config::get('app.locale') == 'en')
{{ 'Current Language is English' }}
@elseif ( Config::get('app.locale') == 'ru' )
{{ 'Current Language is Russian' }}
@endif
获取当前区域设置
app()->getLocale()
答案 1 :(得分:0)
首先创建一个区域设置路由和控制器:
Route::get('/locale/{lang}', 'LocaleController@setLocale')->name('locale');
class LocaleController extends Controller
{
public function setLocale($locale)
{
if (array_key_exists($locale, Config::get('languages')))
{
Session::put('app_locale', $locale);
}
return redirect()->back();
}
}
现在,您可以轻松地在每个页面中进行检查:
$locale = app()->getLocale();
$version = $locale == 'en' ? $locale . 'English' : 'Bangla';