【问题标题】:Laravel's localization on JavaScript VariablesLaravel 对 JavaScript 变量的本地化
【发布时间】:2019-03-20 13:58:31
【问题描述】:

我有一些 JavaScript 变量,我按如下所示的等级量表输出。

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

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

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

我想本地化变量 TerriblePoorAverageGoodExcellent

我试过了

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

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

但是在浏览器上这是输出&lt;?php echo trans('form.one'); ?&gt;

有人带我到这里吗?

【问题讨论】:

  • 你在哪个文件中写这个js代码? .js 还是 .php?
  • @joy 在外部 JS 文件中

标签: laravel laravel-5.1 laravel-localization


【解决方案1】:

您正在创建一个包含它的文字字符串。您可能想要做的是将翻译输出为 DOM 中某处的 json 或数据属性。然后用 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。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我所做的就是像往常一样在我的刀片模板中包含这样的 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')
      

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

      【讨论】:

        猜你喜欢
        • 2017-01-08
        • 2022-01-05
        • 2013-02-13
        • 1970-01-01
        • 2018-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        相关资源
        最近更新 更多