2
votes

Comment utiliser @lang dans jQuery avec Laravel 5.5?

J'essaie de créer un champ de saisie dynamique qui donne un avertissement lorsqu'une valeur ne correspond plus à la valeur stockée dans la base de données. Je souhaite utiliser la localisation de Laravel @lang ('messages.error') ou {{__ ('messages.error')}} pour rendre ce message disponible pour les langues pour mon application.

Ma question est simple, comment l'utilisez-vous dans jQuery? J'ai trouvé la réponse difficile pour mon niveau d'expérience actuel, donc je me demande si quelqu'un ici connaît la réponse.

Code partiel:

<form action="" method="post">

    <div class="ibox float-e-margins">

        <div class="ibox-title">
            <h4>@lang('form.kvk')</h4>
        </div>

        <div class="ibox-content">
            <div class="form-group{{ $errors->has('kvk') ? ' has-error' : '' }}">
                <label for="kvk">@lang('form.kvk')<span class="redFont">*</span></label>
                <input type="text" class="form-control" name="kvk" id="kvk" value="{{ ( $errors->has('kvk') ? old('kvk') : ( $debtor != NULL ? $debtor->kvk : old('kvk') ) ) }}">
            </div>
        </div>

        {{-- Remains empty if no error --}}
        <div id="noMatchKvk"></div>

    </div>

</form>

<script>

/* added after answer
var kvk = '{{ __("add/customer/messages.noMatchKvk") }}';
*/

    $('#kvk').keyup().on('change', function() {
        // If the value is no longer equal to the DB
        if ( $('#kvk').val() != '{{ $debtor->kvk }}' ) {
            $('#noMatchKvk').html('<span class="help-block"><strong>' + kvk + '</strong></span>');
        }
        // If the value remains the same
        if ( $('#kvk').val() == '{{ $debtor->kvk }}' ) {
            $('#noMatchKvk').html('');
        }
    });

</script>

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<title></title>

PS. J'ai cherché partout, mais je n'ai pas trouvé la réponse. Cependant, je pose peut-être la mauvaise question.

Merci d'avance! :)

EDIT + Solution

Je n'ai pas mentionné que les messages se trouvaient dans un autre dossier dans le fr répertoire . La raison pour laquelle cela a échoué était parce que je n'arrêtais pas de mentionner l'itinéraire avec des points (.), Alors que j'aurais dû faire des barres obliques (/). J'ai édité ma question.

Je suppose que c'était une erreur de débutant, merci à tous ceux qui ont répondu! Et merci @Theodoros Alexopoulos pour votre réponse


1 commentaires

Avez-vous rencontré cette page lors de la recherche? pineco.de/using-laravels-localization-js


4 Réponses :


4
votes
<script type="text/javascript">

    var something = @json( __('file.variable') );

</script>
The script should be inside your bladeThen use the variable as you like

2 commentaires

Il peut être plus sûr de faire var something = @json (__ ('file.variable')); . Une chaîne de traduction contenant ' cassera le code ci-dessus.


C'est en fait correct, je n'y ai pas pensé, merci de l'avoir signalé



0
votes

Je pense que vous devez conserver l'appel @lang ou {{}} à l'intérieur des guillemets simples JS:

var message = "{{ __('messages.noMatchKvK') }}";

$('#noMatchKvk').html('<span class="help-block"><strong>' + message + '</strong></span>');

Cela, ou vous pouvez définir la valeur de {{__ ("messages.noMatchKvk")}} sur une variable et l'utiliser directement dans votre code:

$('#noMatchKvk').html('<span class="help-block"><strong>{{ __("messages.noMatchKvk") }}</strong></span>');


0 commentaires

1
votes

Utilisez cette balise dans les scripts PAS dans le fichier .js, vous pouvez alors utiliser la variable à l'intérieur des balises de script ou dans .js

 <script>
 var v1 = '{{ @lang('file.value') }}';

$('#kvk').keyup().on('change', function() {
    // If the value is no longer equal to the DB
    if ( $('#kvk').val() != '{{ $debtor->kvk }}' ) {
        $('#noMatchKvk').html('<span class="help-block"><strong>' + v1 + '</strong></span>');
    }
    // If the value remains the same
    if ( $('#kvk').val() == '{{ $debtor->kvk }}' ) {
        $('#noMatchKvk').html('');
    }
});


0 commentaires

0
votes

Dans laravel 8, vous pouvez utiliser @lang sans aucune parenthèse comme celle-ci

<script type="text/javascript">

    var message = "@lang('file.variable')";

</script>


0 commentaires