Laravel 对 JavaScript 变量的本地化

问题描述 投票:0回答:4

我有一些 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'); ?>

有人带我到这里吗?

laravel laravel-5.1 laravel-localization
4个回答
0
投票

你正在创建一个包含它的垃圾字符串。您可能想要做的是将翻译输出为 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。


0
投票

试试下面的代码,如果你在 blade 文件中,它会起作用。

var one = {{ trans('form.one') }};
    

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

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


0
投票
你可以使用这个包:

https://github.com/mralgorithm2000/laravel-js-lang

有了这个包,你可以在 JavaScript 中以相同的语法使用 __() laravel 函数

© www.soinside.com 2019 - 2024. All rights reserved.