1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Laravel Translation. Wie am besten?

  • PixelPatron
  • 6. August 2024 um 19:25
  • Erledigt
  • PixelPatron
    20
    PixelPatron
    github.com/pixelpatron90
    Reaktionen
    164
    Punkte
    4.049
    Beiträge
    718
    Einträge
    3
    • 6. August 2024 um 19:25
    • #1

    Grüsse meine lieben,

    wollte mal wissen von denjenigen die mit Laravel arbeiten wie ihr das mit der Translation umsetzt.

    Was ist eher geeignet?

    @lang('Ich schreibe meinen Text einfach so!')

    @lang('base.ich_schreibe_meinen_text_so')

    Der Grund warum ich frage ist ich würde gerne die Möglichkeit nutzen und meine Übersetzungen in der Datenbank verwalten. Mit dem gedachte Spatie Plugin haut er mir raus das der Key zu lange ist wenn ich Variante 1 nutze. Variante 2 ist mir einfach zu aufwendig. Bei variante 1 kann ich einfach schreiben und gut ist ..

    bin gespannt

    :red_heart:

    pixelpatron-100000?style=for-the-badge&logo=X&logoColor=white&labelColor=000000&color=FF0000 pixel_patron-100000?style=for-the-badge&logo=Discord&logoColor=white&labelColor=000000&color=FF0000 pixelpatron90-100000?style=for-the-badge&logo=GitHub&logoColor=white&labelColor=black&color=FF0000

    https://evarioo.eu/

  • Zur hilfreichsten Antwort springen
  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.768
    Trophäen
    2
    Beiträge
    1.411
    • 6. August 2024 um 21:22
    • #2
    Code
    {{ $t('form.save') }}

    Zu Blade Zeiten aber wäre es @lang('user.save') geworden, was dann einfach "Speichern" oder "Save" in Englisch wäre.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • PixelPatron
    20
    PixelPatron
    github.com/pixelpatron90
    Reaktionen
    164
    Punkte
    4.049
    Beiträge
    718
    Einträge
    3
    • 6. August 2024 um 22:24
    • #3

    Okay und wie merkst du dir das alles? Oder hast du nen Plugin das dir die String später in eine json setzt? :grinning_squinting_face:

    pixelpatron-100000?style=for-the-badge&logo=X&logoColor=white&labelColor=000000&color=FF0000 pixel_patron-100000?style=for-the-badge&logo=Discord&logoColor=white&labelColor=000000&color=FF0000 pixelpatron90-100000?style=for-the-badge&logo=GitHub&logoColor=white&labelColor=black&color=FF0000

    https://evarioo.eu/

  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.768
    Trophäen
    2
    Beiträge
    1.411
    • 7. August 2024 um 20:21
    • #4

    Ich bekomme die als Autovervollständigung angezeigt, ähnliches gibt es auch für zB VS Code (war Teil des Laravel Paketes), ansonsten ja es ist eine riesige JSON Datei bei mir :grinning_squinting_face:

    Sollte ich mal eine Möglichkeit finden das anders zu lösen, ist das auf alle Fälle etwas das ich tun werde.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • PixelPatron
    20
    PixelPatron
    github.com/pixelpatron90
    Reaktionen
    164
    Punkte
    4.049
    Beiträge
    718
    Einträge
    3
    • 7. August 2024 um 20:38
    • #5

    Ah. und warum nutzt du mittlerweile wieder t() statt @lang?

    pixelpatron-100000?style=for-the-badge&logo=X&logoColor=white&labelColor=000000&color=FF0000 pixel_patron-100000?style=for-the-badge&logo=Discord&logoColor=white&labelColor=000000&color=FF0000 pixelpatron90-100000?style=for-the-badge&logo=GitHub&logoColor=white&labelColor=black&color=FF0000

    https://evarioo.eu/

  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.768
    Trophäen
    2
    Beiträge
    1.411
    • 7. August 2024 um 21:25
    • Hilfreichste Antwort
    • #6

    In Blade Templates würde/verwende ich weiterhin @lang, das ist nur kein Blade Template :grinning_face_with_smiling_eyes:

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • PixelPatron 7. August 2024 um 21:30

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • PixelPatron
    20
    PixelPatron
    github.com/pixelpatron90
    Reaktionen
    164
    Punkte
    4.049
    Beiträge
    718
    Einträge
    3
    • 8. August 2024 um 22:01
    • #7

    Ich verstehe nur nicht warum das json bei mir so wie es bei dir aussieht nicht funktionieren mag:

    Code
    {
    "name": "Das geht!",
    "form": {
    "lastName": "Nachname",
    "name": "Name"
    }
    }

    Wobei es nur verschachtelt nicht geht ..

    pixelpatron-100000?style=for-the-badge&logo=X&logoColor=white&labelColor=000000&color=FF0000 pixel_patron-100000?style=for-the-badge&logo=Discord&logoColor=white&labelColor=000000&color=FF0000 pixelpatron90-100000?style=for-the-badge&logo=GitHub&logoColor=white&labelColor=black&color=FF0000

    https://evarioo.eu/

  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.768
    Trophäen
    2
    Beiträge
    1.411
    • 9. August 2024 um 06:08
    • #8

    Mal eben nachgeschaut und nein, bei JSON wird kein Nested unterstützt :) .

    Meine JSON Dateien sind auch ausschließlich für das Frontend gedacht.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • PixelPatron
    20
    PixelPatron
    github.com/pixelpatron90
    Reaktionen
    164
    Punkte
    4.049
    Beiträge
    718
    Einträge
    3
    • 9. August 2024 um 12:41
    • #9
    Zitat von Syntafin

    Mal eben nachgeschaut und nein, bei JSON wird kein Nested unterstützt :) .

    Ich habe eine Lösung gefunden die auch wunderbar mit nested arbeitet. Poste sobald ich etwas Zeit finde die Lösung für Laravel 11 :)

    Lösung für Laravel Lang JSON nested Files:

    1) Erstelle eine Translator Klasse unter app/Translation/Translator.php

    Folgender Inhalt für Translator.php
    PHP
    <?php
    
    namespace App\Translation;
    
    use Illuminate\Support\Arr;
    use Illuminate\Translation\Translator as BaseTranslator;
    
    class Translator extends BaseTranslator
    {
        /**
         * @param $key
         * @param array $replace
         * @param $locale
         * @param $fallback
         *
         * @return array|string|null
         */
        public function get($key, array $replace = [], $locale = null, $fallback = true)
        {
            $results = parent::get($key, $replace, $locale, $fallback);
    
            // If the key does not contain nested translation
            // or the result did not return the key back, then it's okay
            if (!str_contains($key, '.') || $results !== $key) {
                if (is_array($results)) {
                    return $key;
                }
    
                return $results;
            }
    
            $locale = $locale ?: $this->locale;
            $line = Arr::get($this->loaded['*']['*'][$locale], $key);
    
            // Handle fallback to default language
            if (!isset($line) && $fallback && !empty($this->getFallback()) && $locale !== $this->getFallback()) {
                $this->load('*', '*', $this->getFallback());
                $line = Arr::get($this->loaded['*']['*'][$this->getFallback()], $key);
            }
    
            return $this->makeReplacements($line ?: $key, $replace);
        }
    }
    Alles anzeigen

    2) Hänge die Klasse in app/Providers/AppServiceProvider.php an

    Folgender Inhalt für AppServiceProvider.php
    PHP
    <?php
    
    // top code
    
    public function boot(): void
        {
            $this->app->extend('translator', function ($service, $app) {
                $translator = new Translator($service->getLoader(), $service->getLocale());
                $translator->setFallback($service->getFallback());
    
                return $translator;
            });
        }
        
    // bottom code
    Alles anzeigen

    Jetzt kannst du mit

    Code
    {{ __('nested.key') }}

    oder

    Code
    @lang('nested.key')

    deine Übersetzungen in deiner Laravel App abrufen. Beachte das du deine Lang Files nun zb als de.json speicherst.

    Code
    {
    	"form": {
    		"label": {
    			"lastName": "Last name",
    			"firstName": "First Name"
    		}
        },
    }

    pixelpatron-100000?style=for-the-badge&logo=X&logoColor=white&labelColor=000000&color=FF0000 pixel_patron-100000?style=for-the-badge&logo=Discord&logoColor=white&labelColor=000000&color=FF0000 pixelpatron90-100000?style=for-the-badge&logo=GitHub&logoColor=white&labelColor=black&color=FF0000

    https://evarioo.eu/

    4 Mal editiert, zuletzt von PixelPatron (9. August 2024 um 17:54)

  • Informatik-Forum
    4
    Informatik-Forum
    YOUR ♥ FOR TECH
    Punkte
    105
    Beiträge
    21
    • 9. August 2024 um 19:18
    • #10

    evarioo hat das Thema gepusht.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern