我有一些 JavaScript 变量,我在评分表上输出,如下所示。
我现在想实现 Laravel 的本地化,因此在将变量输出到浏览器之前翻译变量。
我怎样才能做到这一点?我试过如下但它没有得到转换。
var ratingScale = {1: 'Terrible, 2: 'Poor', 3: 'Average', 4: 'Good', 5: 'Excellent'};
我想本地化变量
Terrible
、Poor
、Average
、Good
和Excellent
。
我试过这个
var one = "<?php echo trans('form.one'); ?>";
var ratingScale = {1: one, 2: 'Poor', 3: 'Average', 4: 'Good', 5: 'Excellent'};
但是在浏览器上这是输出
<?php echo trans('form.one'); ?>
有人带我到这里吗?
你正在创建一个包含它的垃圾字符串。您可能想要做的是将翻译输出为 json 或 DOM 中某处的数据属性。然后用 JavaScript 获取这些变量。
DOM 中的 JSON
在你的刀片输出中,json_encoded 翻译,在脚本标签内。
例如例子.blade.php
<script>
var ratingScale = {!! $ratingScale !!}
</script>
数据属性
在一些 html 元素中将字符串作为数据属性输出
例如例子.blade.php
<form data-scale1="{{ratingScale[1]}}">
等
通过 xhr / ajax 调用服务器
axios.get('/ratingScales');
创建一个额外的端点以将这些翻译检索为 json。
试试下面的代码,如果你在 blade 文件中,它会起作用。
var one = {{ trans('form.one') }};
@extends('adminlte::layouts.app')
@section('htmlheader_title')
Viajes en curso
@stop
@section('links')
@include('zendesk.widget')
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" type="text/css" href="{{ asset('/css/app_adminlte_custom.css') }}"/>
<script type="text/javascript" src="{{ asset('/js/bower_components/jquery/dist/jquery.min.js') }}"></script>
<script type="text/javascript" src="{{ asset('/js/sweetalert.min.js') }}"></script>
<script type="text/javascript" src="{!! asset('js/app/trips.js') !!}"></script>
@stop
@section('notifications_menu')
@include('app.partials.notifications_menu')
@stop
........ big etc ....
但是,在某些时候我从这个刀片文件本身初始化我需要的变量:
@section('extra-js')
<script type="text/javascript">
var myTranslatedTitle = {{ trans('whatever') }};
var numAcceptedTrips = {{ $numAcceptedTrips }};
</script>
@yield('extra-js')
请记住这些变量是全局的。