Automatische Übersetzung von Custom User Roles im Child Theme

  • Hallo Leute

    Ich hoffe ich bin in diesem Forum richtig.
    Ich bin am programmieren eines Child-Themes. In diesem erstelle ich eine eigene Benutzerrolle. Diese möchte ich nun wie die Standard Benutzerrollen übersetzbar machen.
    Weiss irgendjemand eine Möglichkeit dafür? Habe Google schon bemüht und außer, dass man jede getText Funktion durch eine eigene Funktion laufen lässt nichts gefunden. (http://wordpress.stackexchange.com/questions/1415…stom-user-roles)

    Liebe Grüße
    DesignerThan

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Okay. "Basic contributer" kann ich aber ersetzen durch irgendwas oder? Wenn ja, hab ich bei dieser Funktion, das Problem, dass er beim erstellen des Benutzers abruft in welcher Sprache der Blog ist und dann dies übersetzt und speichert. Doch dies wird nur beim anlegen gemacht. Wenn ich nun aber die Sprache umstelle, wird es nicht geändert. Bin ich da richtig?
    Also so war es bei meinem Versuch. Ich habe halt den Benutzer beim ändern des Themes angelegt und auch wieder gelöscht. Wenn ich es im init-hook mache könnte es funktionieren, allerdings legt er dann den Benutzer die ganze Zeit neu an, was eigentlich auch nicht der Sinn ist.

  • Du kannst Basic Contributor austauschen, klar. Und die Übersetzung müsste sich auch beim ändern der Sprache ändern, sofern passende Sprachfiles vorhanden sind.

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Also ich habe es nun probiert. Wenn ich das Theme anlege, macht er es richtig. Dann wird die Benutzerrolle entsprechend der Sprache erstellt. Wenn ich nun aber danach die Sprache ändere, bleibt trotzdem noch die welche er beim Erstellen verwendet hat. Die Sprachfiles sind richtig und funktionieren.

    Falls es hilft, hier ein Link zu einem Git-repository: https://designerThan@bitbucket.org/designerThan/h…child-theme.git

    Danke auf jeden Fall schon mal für die Hilfe.

  • Bau in Dein Theme irgendwo [FONT=courier new]_e( 'Basic Contributor', 'deine-text-domain' );[/FONT] ein, und schau Dir an, was dann je nach Sprache ausgegeben wird. Wo/wie änderst Du denn die Sprache?

  • Hab ich schon. Dies funktioniert auch. Also zumindest die Übersetzung.
    Mir geht es darum, dass im Back End unter Benutzer dieser dann übersetzt wird. Die Sprache stelle ich in den Einstellungen um und zwar immer zwischen Deutsch und Englisch.

  • Evtl. wird [FONT=courier new]deine-text-domain[/FONT] im Backend nicht korrekt geladen? Bau die Testausgabe mal ins Backend ein, z.B. via [FONT=courier new]add_action( 'admin_footer', ..[/FONT]

  • In [FONT=courier new]functions.php[/FONT] Deines Themes:

    PHP
    add_action('admin_footer', 'my_admin_footer_function');
    function my_admin_footer_function() {
        echo '<p>This will be inserted at the bottom of admin page</p>';
        _e( 'Basic Contributor', 'deine-text-domain' );
    }

    Siehe auch hier.

  • Vielen Dank.
    Also dort funktioniert es einwandfrei. Soweit ich das im Quellcode von Wordpress feststellen konnte, werden z.B. die Benutzerrollen in den DropDown-Menüs unter Benutzer aus der Datenbank geladen. Das würde soweit ich es verstanden habe bedeuten, dass ich meine eigene Benutzerrolle erst bei der Ausgabe übersetzen kann, wie es auch im Quellcode gemacht wird, da sie ja nur in Englisch in der Datenbank ist.

  • Hm, grade in einem Kundenwebsite (WordPress 4.7.2) nachgesehen, dort bleibt die Übersetzung einer "custom" Benutzerrolle im Backend auch bei Änderung der Benutzersprache oder Websitesprache tatsächlich so, wie sie systemweit bei Installation des Plugins (das diese Benutzerrolle erzeugt hat) gesetzt war.

    Hatte das anders in Erinnerung, ggf. war das bei früheren WordPress Versionen mal anders, kann mich aber auch täuschen. Evtl. auch ein Bug in WordPress, müsste man im core genauer nachvollziehen.

  • Okay. Ich bin gestern bis halb Elf gesessen hab mir den Core angeschaut. Beim Aufruf der Benutzerrollen für das oben genannte Dropdown-Menü ruft er eine Funktion auf und diese wieder ruft dann die Funktion für die Übersetzung auf. Siehe Link: https://wpseek.com/function/translate_user_role/
    Nun weiß ich aber nicht ob dies auch für die Custom rols geht und auch nicht wie ich es ausprobieren sollte. Das einzige was ich gefunden habe, was meiner Meinung nach funktionieren kann ist der Link im Eingangspost. Dort wird einfach jeder Aufruf der GetText-Funktion noch durch eine eigene gejagt um mit dieser festzustellen ob es jetzt meine Domain ist oder nicht und diese wenn ja zu übersetzen. Dies finde ich aber ist eher eine gebastelte Lösung und auch nicht wirklich performant.

  • Hab kurz im Core nachgeschaut wie sie es machen...hier ein Beispiel:

  • Ja soweit ich es sehe, ist es dasselbe Problem wie bei mir. Da es dafür aber scheinbar keine schnelle Lösung geben wird, werde ich mir einfach so etwas überlegen müssen.
    Danke für eure Hilfe.

  • Poste Deine Überlegungen gern auch dort im Ticket, das hilft dann wiederum anderen weiter...

    Könntest einstweilen auch die genannte "bbPress Version" übernehmen, wie immer auch die funktioniert ;-)

    Einmal editiert, zuletzt von b3317133 (3. Februar 2017 um 17:54)

Jetzt mitmachen!

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