我有一些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'); ?>
有人带领我来这里吗?
答案 0 :(得分:0)
您正在创建一个包含它的垃圾字符串。您可能想要做的是将转换结果输出为JSON或DOM属性中的数据属性。然后使用JavaScript提取这些变量。
DOM中的JSON
在您的刀片服务器输出中,在脚本标记内对翻译进行json_encoded。
例如example.blade.php
<script>
var ratingScale = {!! $ratingScale !!}
</script>
数据属性
在某些html元素中将字符串作为数据属性输出
例如example.blade.php
<form data-scale1="{{ratingScale[1]}}">
等
通过xhr / ajax调用服务器
axios.get('/ratingScales');
创建一个额外的端点以将这些翻译作为json检索。
答案 1 :(得分:0)
请尝试以下代码,如果您在刀片文件中,它将起作用。(您可以将您的js代码移到刀片文件中,也可以尝试)
var one = {{ trans('form.one') }};
答案 2 :(得分:0)
我要做的是像往常一样在刀片模板中包含这样的javascript文件:
@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')
请记住,这些变量是全局变量。