Локализация Laravel на переменных JavaScript - PullRequest
0 голосов
/ 20 марта 2019

У меня есть некоторые переменные 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'); ?>

Кто-нибудь ведет меня сюда?

Ответы [ 3 ]

0 голосов
/ 20 марта 2019

Попробуйте этот код ниже, он будет работать, если вы находитесь в блейд-файле. (Вы можете переместить свой js-код в блейд-файл и попробовать это, и он будет работать)

var one = {{ trans('form.one') }};
0 голосов
/ 20 марта 2019

Что я делаю, так это включаю такой файл 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')

Просто помните, что эти переменные являются глобальными.

0 голосов
/ 20 марта 2019

Вы создаете литеральную строку, содержащую это. Что вы, вероятно, хотели бы сделать, это вывести переводы в виде json или data-атрибутов где-нибудь в DOM. Затем возьмите эти переменные с помощью JavaScript.

JSON в DOM

В вашем блейд-выходе 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.

...