Support » Themes » WP 6.0.1 Wie po-/mo-Sprachdateien einem Twenty Twenty-Two Child Theme zuordnen?

  • Gelöst znac

    (@znac)


    Ziel
    Ich möchte die Übersetzungen für die

    msgid "Name"
    de_DE: msgstr "Name"
    tr_TR: msgstr "İsim"

    die in den Sprachdateien

    de_DE.mo
    de_DE.po
    tr_TR.mo
    tr_TR.po

    im Verzeichnis \wp-content\languages vorhanden sind, ändern.

    versuchter Lösungsweg
    @hage hat mir in dem Thread WP 6.0.1 Kommentartexte in de/tr ändern und Feld ausblenden die Idee gegeben, mit PoEdit die Sprachdateien anzupassen. Ich überlegte in meiner Naivität, zwei Sprachdateien mit PoEdit zu generieren, in der nur ausschließlich die Übersetzungen für die msgid „Name“ vorhanden sind. Diese dann anschließend dem Child-Theme mitzugeben. Jedoch klappt es irgendwie nicht. Da ich immer mal wieder Knöpfe auf den Augen habe, nachfolgend der von mir versuchte Lösungsweg, der jedoch nicht funktioniert hat:

    1. Schritt
    Habe in meinem Child-Theme-Verzeichnis \wp-content\themes\adimlarim\ ein neues Verzeichnis namens „languages“ generiert.

    2. Schritt
    Hab jeweils die Original-de_DE.po bzw. tr_TR.po mit Notepad+++ geöffnet und alle meines Erachtens nach unnötigen Zeilen gelöscht und im zuvor erstelltes Verzeichnis kopiert:

    # Translation of WordPress - 6.0.x - Development in German
    # This file is distributed under the same license as the WordPress - 6.0.x - Development package.
    msgid ""
    msgstr ""
    "PO-Revision-Date: 2022-07-18 19:50:09+0000\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "Plural-Forms: nplurals=2; plural=n != 1;\n"
    "X-Generator: GlotPress/4.0.0-alpha.1\n"
    "Language: de\n"
    "Project-Id-Version: WordPress - 6.0.x - Development\n"
    
    #: wp-includes/comment-template.php:2370
    #: wp-includes/js/dist/block-library.js:37720
    #: wp-includes/js/dist/block-library.js:44706
    #: wp-includes/js/dist/edit-post.js:7757 wp-includes/js/dist/edit-site.js:10432
    #: wp-includes/js/dist/edit-site.js:12915
    #: wp-includes/js/dist/reusable-blocks.js:363 wp-admin/edit-form-comment.php:49
    #: wp-admin/includes/class-wp-application-passwords-list-table.php:29
    #: wp-admin/includes/class-wp-debug-data.php:1122
    #: wp-admin/includes/class-wp-debug-data.php:1217
    #: wp-admin/includes/class-wp-users-list-table.php:371
    #: wp-admin/includes/template.php:482 wp-admin/user-edit.php:407
    #: wp-admin/includes/class-wp-ms-users-list-table.php:198
    msgid "Name"
    msgstr "Hier der überarbeitete Name: Benutzername"

    3. Schritt
    Habe aus den zuvor bearbeiteten po-Dateien mit Hilde von PoEdit mo-Dateien generiert.

    4. Schritt
    Habe auch die mo-Dateien ins \wp-content\themes\adimlarim\languages\ Verzeichnis kopiert.

    5. Schritt
    Die functions.php ergänzte ich mit dem load_child_theme_textdomain-Aufruf:

    <?php
    /*** Child-Theme registrieren und in Warteschlange stellen ***/
    function ZNAC_enqueue_styles() {
        wp_enqueue_style( 'child-style', 
    		get_stylesheet_uri(),
            array( 'parenthandle' ), 
            wp_get_theme()->get('Version')
        );
    }
    add_action( 'wp_enqueue_scripts', 'ZNAC_enqueue_styles' );
    
    /*** IP-Speicherung bei Kommentaren verhindern ***/
    function ZNAC_remove_comment_ip( $comment_author_ip ) { return ''; }
    add_filter( 'pre_comment_user_ip', 'ZNAC_remove_comment_ip' );
    
    /*** Standard-Kommentarfelder entfernen ***/
    /*** folgende Standardfelder gibt es: author, email, url, cookies ***/
    function ZNAC_delete_comment_field($fields){
        if(isset($fields['url'])) unset($fields['url']);
        if(isset($fields['cookies'])) unset($fields['cookies']);
    	return $fields;
    }
    add_filter('comment_form_default_fields', 'ZNAC_delete_comment_field');
    
    // Load translation files from your child theme instead of the parent theme
    function ZNAC_load_child_language_files() {
        load_child_theme_textdomain( 'adimlarim', get_stylesheet_directory() . '/languages' );
    }
    add_action( 'after_setup_theme', 'ZNAC_load_child_language_files' );
    ?>

    in der style.css meines Child-Themes ist für $domain folgender Eintrag Text Domain: adimlarim.

    Frage
    Was mache ich falsch?
    oder
    Geht das gar nicht so wie ich es mir vorstelle?
    oder
    …?

    
    ### wp-core ###
    
    version: 6.0.1
    site_language: de_DE
    user_language: de_DE
    timezone: Europe/Berlin
    permalink: /%postname%/
    https_status: true
    multisite: false
    user_registration: 0
    blog_public: 1
    default_comment_status: open
    environment_type: production
    user_count: 2
    dotorg_communication: true
    
    ### wp-paths-sizes ###
    
    wordpress_path: /www/htdocs/w01bbc56/XYZ.de
    wordpress_size: 53,26 MB (55847180 bytes)
    uploads_path: /xxx/XYZ.de/wp-content/uploads
    uploads_size: 0,00 B (0 bytes)
    themes_path: /xxx/XYZ.de/wp-content/themes
    themes_size: 6,35 MB (6662310 bytes)
    plugins_path: /xxx/XYZ.de/wp-content/plugins
    plugins_size: 26,06 MB (27326559 bytes)
    database_size: 1,74 MB (1820963 bytes)
    total_size: 87,41 MB (91657012 bytes)
    
    ### wp-active-theme ###
    
    name: adimlarim (adimlarim)
    version: 0.1
    author: EGO
    author_website: https://XYZ.de/
    parent_theme: Twenty Twenty-Two (twentytwentytwo)
    theme_features: core-block-patterns, post-thumbnails, responsive-embeds, editor-styles, html5, automatic-feed-links, block-templates, widgets-block-editor, wp-block-styles, editor-style
    theme_path: /xxx/XYZ.de/wp-content/themes/adimlarim
    auto_update: Deaktiviert
    
    ### wp-parent-theme ###
    
    name: Twenty Twenty-Two (twentytwentytwo)
    version: 1.2
    author: WordPress-Team
    author_website: https://de.wordpress.org/
    theme_path: /xxx/XYZ.de/wp-content/themes/twentytwentytwo
    auto_update: Deaktiviert
    
    ### wp-plugins-active (7) ###
    
    Advanced Custom Fields: version: 5.12.3, author: Delicious Brains, Automatische Aktualisierungen deaktiviert
    Antispam Bee: version: 2.11.1, author: pluginkollektiv, Automatische Aktualisierungen deaktiviert
    Gallery Custom Links: version: 2.1.1, author: Jordy Meow, Automatische Aktualisierungen deaktiviert
    Lightbox for Gallery & Image Block: version: 1.11, author: Johannes Kinast <johannes@travel-dealz.de>, Automatische Aktualisierungen deaktiviert
    TranslatePress - Multilingual: version: 2.3.5, author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban, Automatische Aktualisierungen deaktiviert
    WPS Hide Login: version: 1.9.6, author: WPServeur, NicolasKulka, wpformation, Automatische Aktualisierungen deaktiviert
    Yoast SEO: version: 19.6, author: Team Yoast, Automatische Aktualisierungen deaktiviert
    
    ### wp-plugins-inactive (1) ###
    
    WP Mail SMTP: version: 3.5.2, author: WPForms, Automatische Aktualisierungen deaktiviert
    
    ### wp-media ###
    
    image_editor: WP_Image_Editor_Imagick
    imagick_module_version: 1690
    imagemagick_version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
    imagick_version: 3.4.4
    file_uploads: File uploads is turned off
    post_max_size: 200M
    upload_max_filesize: 200M
    max_effective_size: 200 MB
    max_file_uploads: 20
    imagick_limits: 
    	imagick::RESOURCETYPE_AREA: 31 GB
    	imagick::RESOURCETYPE_DISK: 1.84467440737E+19
    	imagick::RESOURCETYPE_FILE: 786432
    	imagick::RESOURCETYPE_MAP: 31 GB
    	imagick::RESOURCETYPE_MEMORY: 16 GB
    	imagick::RESOURCETYPE_THREAD: 8
    imagemagick_file_formats: 3FR, 3G2, 3GP, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, JBG, JBIG, JNG, JNX, JPE, JPEG, JPG, JPS, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
    gd_version: 2.2.5
    gd_formats: GIF, JPEG, PNG, WebP, BMP, XPM
    ghostscript_version: 9.50
    
    ### wp-server ###
    
    server_architecture: Linux 5.4.0-121-generic x86_64
    httpd_software: Apache
    php_version: 7.4.30 64bit
    php_sapi: fpm-fcgi
    max_input_variables: 10000
    time_limit: 30
    memory_limit: 256M
    max_input_time: 60
    upload_max_filesize: 200M
    php_post_max_size: 200M
    curl_version: 7.68.0 OpenSSL/1.1.1f
    suhosin: false
    imagick_availability: true
    pretty_permalinks: true
    htaccess_extra_rules: false
    
    ### wp-database ###
    
    extension: mysqli
    server_version: 10.5.16-MariaDB-1:10.5.16+maria~focal-log
    client_version: mysqlnd 7.4.30
    max_allowed_packet: 67108864
    max_connections: 500
    
    ### wp-constants ###
    
    WP_HOME: undefined
    WP_SITEURL: undefined
    WP_CONTENT_DIR: /xxx/XYZ.de/wp-content
    WP_PLUGIN_DIR: /xxx/XYZ.de/wp-content/plugins
    WP_MEMORY_LIMIT: 256M
    WP_MAX_MEMORY_LIMIT: 256M
    WP_DEBUG: false
    WP_DEBUG_DISPLAY: true
    WP_DEBUG_LOG: false
    SCRIPT_DEBUG: false
    WP_CACHE: false
    CONCATENATE_SCRIPTS: undefined
    COMPRESS_SCRIPTS: undefined
    COMPRESS_CSS: undefined
    WP_ENVIRONMENT_TYPE: Nicht definiert
    DB_CHARSET: utf8
    DB_COLLATE: undefined
    
    ### wp-filesystem ###
    
    wordpress: writable
    wp-content: writable
    uploads: writable
    plugins: writable
    themes: writable
    

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Moderator Bego Mario Garde

    (@pixolin)

    OK, das ist … umfangreich. 😀

    Drei Gedanken dazu:

    1. Loco Translate
      Wenn du eine Änderung an einem Theme oder Plugin vornimmst, wird diese Änderung mit den neuen Dateien überschrieben. Das gilt auch für die Übersetzungen, die im Plugin-/Theme-Verzeichnis oder unter wp-content/languages, wp-content/languages/plugins und wp-content/languages/themes gespeichert werden, wenn du unter Dashboard > Aktualisierungen ein Update der Übersetzungsdateien machst.

      Das Plugin Loco Translate kann dazu genutzt werden, eigene Übersetzungen von Themes und Plugins anzulegen. Damit diese Übersetzungen nicht überschrieben werden, nutzt Loco Translate ein eigenes Verzeichnis wp-content/languages/loco.

    2. Um einen einzelnen Begriff zu ändern, möchtest du vielleicht nicht ein zusätzliches Plugin verwenden. Hier reicht es, wenn du mit einer kleinen Funktion in die Übersetzung eingreifst, um eine einzelne Zeichenkette zu ändern. Beispiel:
      add_filter( 'gettext', 'meine_uebersetzung', 10, 3 );
      function meine_uebersetzung( $translated, $original, $domain ) {
          if ( $original == 'Leave a comment' 
            && $domain == 'twentytwentytwo' 
            && get_locale() == 'tr_TR') {
              $translated = 'İsim';
          }
      
          return $translated;
      } 

      Das lässt sich mit einem PHP-Switch auch auf mehrere Zeichenketten ausweiten. Zu beachten ist allerdings, dass der gettext-Filter eine große Auswirkung auf die Performance der Website haben kann, besonders wenn keine Text-Domain angegeben wird und WordPress bei jedem Webseitenaufruf alle Sprachdateien durchgeht.

    3. Der Weg, um eine Übersetzung zu erstellen, ist üblicherweise:
    • Plugin/Theme erstellen und dabei die Übersetzungsfunktionen verwenden. Wichtig ist die Angabe einer Textdomain, damit du mehrdeutige Worte wie (Garten-) und (Kredit-)Bank unterschiedlich übersetzen kannst.
    • Die Übersetzungsfunktionen werden mit gettext ausgelesen und in einem Übersetzungstemplate (.pot – Portable Object Template) zusammengefasst. Das geht auch mit POEdit.
    • Mit Hilfe des Templates werden Übersetzungen erstellt und als Sprachdatei nach dem Muster awesomeplugin-xx_XX.po gespeichert, wobei awesomeplugin der Textdomain des Themes/Plugins entspricht und xx_XX die Locale angibt, z.B. tr_TR für Türkisch in der Türkei.
      Zusätzlich zum „Portable Object“ (.po) legt POEdit eine maschinenlesbare Version an, xx_XX-awesomeplugin.mo (Machine readable Object). Die Dateien können entweder im Verzeichnis languages des Themes/Plugins oder im Verzeichnis wp-content/languages/{themes|plugins} gespeichert werden.

    Ich habe diesen Vorgang beschrieben, weil du dir durch die Automatisierung die mühsamen und fehleranfälligen Schritte einer manuellen Erzeugung der Datei ersparst.

    Thread-Starter znac

    (@znac)

    @pixolin, Danke erstmal für Deine Rückmeldung.

    zu Punkt 1 von Dir

    Wenn du eine Änderung an einem Theme oder Plugin vornimmst, wird diese Änderung mit den neuen Dateien überschrieben.

    Da ich das ja nicht will, verwende ich ein Child-Theme.

    Das Plugin Loco Translate kann dazu genutzt werden, eigene Übersetzungen von Themes und Plugins anzulegen.

    Vielleicht habe ich Dich missverstanden, aber ich will ja nicht ein Theme oder Plugin übersetzen, sondern in meinem Child-Theme, einige der von WordPress zur Verfügung gestellten msgid’s der Sprachdateien.

    zu Punkt 2 von Dir

    Um einen einzelnen Begriff zu ändern, möchtest du vielleicht nicht ein zusätzliches Plugin verwenden.

    Je weniger Plugins umso besser, ist meine Überzeugung, denn alle müßten irgendwie ja gewartet und bei einem WordPress-Update immer wieder geprüft werden.

    /*** Standard-Kommentarfelder entfernen ***/
    /*** folgende Standardfelder gibt es: author, email, url, cookies ***/
    function ZNAC_delete_comment_field($fields){
        if(isset($fields['url'])) unset($fields['url']);
        if(isset($fields['cookies'])) unset($fields['cookies']);
    	return $fields;
    }
    add_filter('comment_form_default_fields', 'ZNAC_delete_comment_field');
    
    /*** Standard-Kommentarfeld Name ändern ***/
    function ZNAC_edit_comment_field( $fields ) {
    	// Ideegeber: https://wordpress.org/support/topic/customizing-comment-form/
    	// benötigte Variablen initialisieren, teilweise
    	// aus wp-includes\comment-template.php abgekupfert
    	$req 				= get_option( 'require_name_email' );
    	$commenter    	 	= wp_get_current_commenter();
    	$html5    			= current_theme_supports( 'html5', 'comment-form' );
    	$required_attribute	= ( $html5 ? ' required' : ' required="required"' );
    	$required_indicator	= ' <span class="required" aria-hidden="true">*</span>';
    
    	// Eingabe für den Namen anpassen
    	// die Vorgaben aus dem Original-Template 
    	// wp-includes\comment-template.php entnommen
    	// modifiziert und hiermit überschrieben
    	$fields['author'] = '<p class="comment-form-author">' . '<label for="author">' . __( 'User Nickname' ) . ( $req ? $required_indicator : '' ) . '</label>' . '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" maxlength="245"' . ( $req ? $required_attribute : '' ) . ' /></p>';
        return $fields;
    }
    add_filter( 'comment_form_default_fields', 'ZNAC_edit_comment_field' );

    Diese Lösung habe ich derzeit im Einsatz, aber ich möchte schon einige msgid’s ändern. Deshalb würde ich einen solchen Weg durch Zuordnung einer Child-Theme-spezifischen-Sprachdatei bevorzugen. Aber wenns nicht geht, dann gehts nicht. Ist dieser Ansatz von mir nicht umsetzbar?

    zu Punkt 3 von Dir
    Hört sich sehr kompliziert an.

    Plugin/Theme erstellen und dabei die Übersetzungsfunktionen verwenden.

    Die „Übersetzungsfunktion“, gibt es hierzu weitere Informationen?

    • Diese Antwort wurde geändert vor 1 Monat von znac.
    Moderator Bego Mario Garde

    (@pixolin)

    Ich würde es anders machen, als du es geschildert hast aber es ist völlig OK, wenn du einen anderen Weg gehen möchtest. Meine Antwort ist nur ein Vorschlag.

    Zur Übersetzung von Plugins findest du hier Informationen:
    Plugin Internationalization

    Für Themes gibt es das ebenfalls:
    Theme Internationalization

    Ein Beispiel für eine Übersetzungfunktion, die return 'User nickname'; ersetzen soll:

    __( 'User nickname', 'awesomeplugin' );

    Hier ruft __( ) die Übersetzungsfunktion auf,
    'User nickname' ist die Zeichenkette, die Übersetzt werden soll und
    'awesomeplugin' ist die Text-Domain.

    Die Textdomain gibt einen Sprachbereich an, in dem der Begriff übersetzt werden soll. Ein Plugin, dass sich mit Bleistiften beschäftigt, wird „Lead“ mit „Blei“ übersetzen, während ein Karriereportal mit „Lead“ eher das (An)führen eines Teams meint.
    (Dokumentation der Funktion: https://developer.wordpress.org/reference/functions/__/)

    Moderator Bego Mario Garde

    (@pixolin)

    Noch ein paar Sätze zu deiner Antwort:

    Da ich das ja nicht will, verwende ich ein Child-Theme.

    Du verwendest ein Child-Theme, weil du die Übersetzung ändern möchtest, nicht weil du an der Gestaltung Änderungen vornehmen willst. Kann man so machen, ich halte es aber „semantisch“ nicht für den richtigen Weg.

    … ich will ja nicht ein Theme oder Plugin übersetzen, sondern in meinem Child-Theme, einige der von WordPress zur Verfügung gestellten msgid’s der Sprachdateien.

    Die Sprachdateien sind das Output eines Übersetzungsprogramms und es ist eigentlich nicht Sinn der Sache, diese Dateien manuell zu ändern. Das ist wie gesagt mühsam und fehleranfällig. Aber ja, es funktioniert. Wenn du das so machen möchtest …

    Je weniger Plugins umso besser, ist meine Überzeugung, denn alle müßten irgendwie ja gewartet und bei einem WordPress-Update immer wieder geprüft werden.

    Ja … und nein. Ich empfehle lieber „nur soviele Plugins wie nötig“. Nicht jedes Plugin wirkt sich auf die Performance aus, die Wartung ist (bei automatisierter Aktualisierung) überschaubar und es gibt einfach komplexe Funktionalitäten, die ich nicht mit ein, zwei Zeilen Code selber darstellen kann. Besser ein gut entwickeltes Plugin verwenden, als selber viel Zeit in eine eigene Entwicklung zu setzen, die nur unvollständig an das Plugin heranreicht.

    Hört sich sehr kompliziert an.

    Für Plugin- und Theme-Entwickler ist die Internationalisierung zumindest so komplex, dass wir auf Portalen für kommerziell Produkte immer wieder Themes und Plugins finden, die nicht einmal Übersetzungsfunktionen verwenden. Das ist dann für uns oft unbrauchbar.
    Tatsächlich brauchst du meistens nur eine handvoll Übersetzungsfunktionen und POEdit ist leicht zu bedienen, um dann ein Theme oder Plugin zu übersetzen. Ich habe nur versucht, den Prozess umfassend zu beschreiben und wollte ausdrücken, dass die .po und .mo-Dateien ein automatisch generiertes Output sind, nichts was du selber in einem Programmiereditor tippst.

    Thread-Starter znac

    (@znac)

    Supi, Danke Dir für die Links @pixolin, werde mich versuchen reinzulesen.

    Da ich das ja nicht will, verwende ich ein Child-Theme.

    Du verwendest ein Child-Theme, weil du die Übersetzung ändern möchtest, nicht weil du an der Gestaltung Änderungen vornehmen willst. Kann man so machen, ich halte es aber „semantisch“ nicht für den richtigen Weg.

    Ich hatte meine Spielwiese platt gemacht und setze jetzt sukzessive meine Seite auf. Derzeit ist zwar noch nichts am Layout von Twenty Twenty-Two geändert, die Gesaltung soll sich aber auch ändern – ist also von mir nicht als ein Child-Theme nur für Übersetzungs-Änderungen gedacht – nur langsam ernährt sich das Murmeltier.

    Ich setze diesen Beitrag als gelöst. Sollte ich eine Lösung umsetzen können, so werde ich hier noch mal diese nachhalten.

    In diesem Sinne WordPress-Freunde

    • Diese Antwort wurde geändert vor 1 Monat von znac.
    Thread-Starter znac

    (@znac)

    @pixolin die Links für

    Zur Übersetzung von Plugins findest du hier Informationen:
    Plugin Internationalization

    Für Themes gibt es das ebenfalls:
    Theme Internationalization

    sind nicht gesetzt – deshalb hier:
    Theme Internationalization
    What is Internationalization?
    How to Internationalize Your Plugin

    Auch noch interessant wäre:
    Wie man ein WordPress-Theme (oder -Plugin) übersetzt: .POT-, .PO- und .MO-Dateien

    • Diese Antwort wurde geändert vor 1 Monat von znac.
    • Diese Antwort wurde geändert vor 1 Monat von znac.
    Moderator Bego Mario Garde

    (@pixolin)

    Sorry, da ist beim Einfügen der Links etwas schiefgelaufen.
    Ich meinte folgende Links:

    Plugin I18n

    Theme I18n

    Thread-Starter znac

    (@znac)

    Weitere interessante Links:
    User:Skippy/Creating POT Files
    Child Themes: Internationalization

    • Diese Antwort wurde geändert vor 1 Monat von znac.
Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)