Frage

Ich benutze die Larwellenlokalisierung, um zwei verschiedene Sprachen bereitzustellen.Ich habe alle Pfad-Sachen eingerichtet, und myDomain.com/de/bla liefert Englisch und speichert die Session-Variable "EN" und myDomain.com/he/bla liefert Hebräisch und speichert die "Er" -Ssitzereivariable.Ich kann jedoch keinen anständigen Weg herausfinden, um einen Sprachvermittlungslink bereitzustellen.Wie würde das funktionieren?

War es hilfreich?

Lösung

Ich habe mein Problem gelöst, indem ich dieses in Routes.php:

dem vor dem Filter fügst:

generasacodicetagpre.

Andere Tipps

Dies ist ein Beitrag, den ich ursprünglich auf den Laravel-Foren gepostet habe, aber vielleicht wird es jemandem helfen, also poste ich hier auch hier.

Ich hatte Probleme mit dem Aufbau eines Easy-Sprachschalters für meine App, und die Info in den Foren, in denen ein bisschen alte (einige Beiträge), sodass ich diesen einfachen Code machte, der es supereasy macht, die Sprache auf Ihrem zu ändern App in der Fliege.

Ich habe die Sprachzeichenfolgen in meiner Ansichten wie folgt:

generasacodicetagpre.

Und ich bekomme die Sprachen mit einer URL, ich denke, das ist der beste Weg, auch für SEO und für Links, die die Menschen teilen. Beispiel:

generasacodicetagpre.

ok, also war das Problem, dass ich eine einfache Möglichkeit wollte, die Sprache in der Fliege zu ändern, ohne sich mit Sitzungen und Keksen durcheinander zu machen. Heres, wie ich es gemacht habe:

Erstellen Sie eine Bibliothek in Ihrem Bibliotheksordner mit dem Namen chooselang.php

Inserieren Sie diesen Code innen:

{{ __('languagefile.the_language_string'); }}

Danach sind Sie bereit, Ihre URL-Switcher-URL zu erhalten: s erzeugt. Fügen Sie sie einfach hinzu, während Sie andere Klingenverbindungen verwenden.

Beispiel Wie erzeugt man Links für finnisch, schwedisch und englisch (mit Klinge)

generasacodicetagpre.

Das oben genannte generiert URL: s, die immer auf der aktuellen Seite sind, und ändern Sie den Lang Slug auf die gewünschte. Auf diese Weise ändert sich die Sprache in den gewünschten, und der Benutzer bleibt natürlich auf derselben Seite. Die Standardsprachen-Slug wird niemals der URL hinzugefügt.

erzeugte URLs sehen so etwas aus:

generasacodicetagpre.

ps. Die Links sind besonders nützlich, wenn Sie sie Ihrer Master-Vorlagendatei hinzufügen.

Sie könnten eine Route zum Hand-Sprachwechsel haben, zum Beispiel:

Route::get('translate/(:any)', 'translator@set');

kann dann in der generationstabelletagcode-Aktion in der generationspoDicetagcode-Steuerung die Sitzung ändern, abhängig von dem über die URL übergebenen Sprachcode.

Sie können auch die Konfigurationseinstellung unter Verwendung von

ändern

set

controller Beispiel - translate.php

generasacodicetagpre.

Nur für zukünftige Benutzer, wenn Sie das Paket zur Lokalisierung verwenden möchten, gibt es ein tolles Paket auf https://github.com/mcamara/Laravel-Lokalisierung .das ist einfach zu installieren und hat viele Helfer.

Diese Frage kommt immer noch in der Google-Suche, also hier ist die Antwort, wenn Sie Larravel 4 oder 5 verwenden, und McAMARA / LARAVELLOCALIZIERUNG.

generasacodicetagpre.

Beachten Sie, dass dieses Beispiel Flags anzeigt (in öffentlicher / IMG / Flags / {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{`will ...

fyi.Die Dokumentation von McAMARA / LARAVELLOCALIZIERUNG hat Beispiele und viele Helfer, also schauen Sie durch die Dokumentation auf GitHub.( https://github.com/mcamara/Laravel-Lokalisierung )

Versuchen Sie es mit Sitzung.Etwas so:

Controller:

generasacodicetagpre.

in route.php:

generasacodicetagpre.

I've been doing it like this:

$languages = Config::get('lang.languages'); //returns array('hrv', 'eng')

$locale = Request::segment(1); //fetches first URI segment

//for default language ('hrv') set $locale prefix to "", otherwise set it to lang prefix
if (in_array($locale, $languages) && $locale != 'hrv') {
    App::setLocale($locale);
} else {
    App::setLocale('hrv');
    $locale = null;
}

// "/" routes will be default language routes, and "/$prefix" routes will be routes for all other languages
Route::group(array('prefix' => $locale), function() {

    //my routes here

});

Source: http://forumsarchive.laravel.io/viewtopic.php?pid=35185#p35185

What I'm doing consists of two steps: I'm creating a languages table which consists of these fields:

id | name | slug

which hold the data im gonna need for the languages for example

1 | greek | gr

2 | english | en

3 | deutch | de

The Language model I use in the code below refers to that table.

So, in my routes.php I have something like:

//get the first segment of the url
$slug = Request::segment(1);   
$requested_slug = "";

//I retrieve the recordset from the languages table that has as a slug the first url segment of request
$lang = Language::where('slug', '=', $slug)->first();

//if it's null, the language I will retrieve a new recordset with my default language
$lang ? $requested_slug = $slug :  $lang = Language::where('slug', '=', **mydefaultlanguage**')->first();

//I'm preparing the $routePrefix variable, which will help me with my forms
$requested_slug == ""? $routePrefix = "" : $routePrefix = $requested_slug.".";

//and I'm putting the data in the in the session
Session::put('lang_id', $lang->id);
Session::put('slug', $requested_slug);
Session::put('routePrefix', $routePrefix );
Session::put('lang', $lang->name);

And then I can write me routes using the requested slug as a prefix...

Route::group(array('prefix' =>  $requested_slug), function()
{
    Route::get('/', function () {
        return "the language here is gonna be: ".Session::get('lang');
    });

    Route::resource('posts', 'PostsController');
    Route::resource('albums', 'AlbumsController');
});

This works but this code will ask the database for the languages everytime the route changes in my app. I don't know how I could, and if I should, figure out a mechanism that detects if the route changes to another language.

Hope that helped.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top