0

我有一些 JavaScript 变量,我在评级量表上输出,如下所示。

我现在想实现 Laravel 的本地化,因此在将变量输出到浏览器之前翻译它们。

我怎样才能做到这一点?我尝试如下,但它没有得到转换。

var ratingScale = {1: 'Terrible, 2: 'Poor', 3: 'Average', 4: 'Good', 5: 'Excellent'}; 

我想本地化变量 Terrible, Poor, Average,GoodExcellent.

我试过这个

var one = "<?php echo trans('form.one'); ?>";

var ratingScale = {1: one, 2: 'Poor', 3: 'Average', 4: 'Good', 5: 'Excellent'};

但是在浏览器上这是输出的<?php echo trans('form.one'); ?>

有人带我到这里吗?

4

3 回答 3

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')

请记住,这些变量是全局的。

于 2019-03-20T15:04:56.053 回答
0

试试下面的代码,如果你在刀片文件中它会工作。(你可以在刀片文件中移动你的js代码并尝试这个也可以工作)

var one = {{ trans('form.one') }};
于 2019-03-20T14:37:06.473 回答
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。

于 2019-03-20T14:08:57.847 回答