Verfasste Forenbeiträge

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)
  • Komisch das dass bei mir dann nicht klappt wenn ich im Frontend die Sprache via Polylang ändere….

    Beispiel: Wenn Deutsch als Sprache eingestellt ist und Du – warum auch immer – das in niederländisch als Text für die Bezeichnung schreiben willst

    Ja der Nutzer des Plugins will halt die Texte selbst ändern können – und zwar in beiden Sprachen DE und EN im Bezug auf Polylang /WPML.

    Grüße Michael

    Ok im Code sehe ich aber nichts bzgl. Polylang, das geht nicht in meine Kopf das bei dir die Eingaben auch Mehrsprachig sind.

    Zum Verständnis:

    add_infos_to_tec_settings[fs_bezeichnung_events_link] wäre ohne das der Admin was ändert Standard More Events.

    More Events hast du wohl in den mo – po Files definiert / übersetzt, korrekt?

    Wenn der Nutzer im Frontend nun die Sprache im Frontend ändert wird der String in der richtigen Sprache ausgegeben, korrekt?

    Soweit so klar.

    Was passiert wenn der Admin bei den Plugin Einstellungen add_infos_to_tec_settings[fs_bezeichnung_events_link] den Wert davon ändert – als Beispiel?

    Was ist dann mit der Übersetzung des Wertes?

    Warum WPML – gute Frage aber Polylang unterstützt ja die selben Funktionen quasi oder?
    Also viele was ich so gelesen hab…

    Grüße, Michael

    OK alles klar aber ich glaube du verstehst mich falsch – oder aber du sagtest ja du hast dich mit Polylang nicht wirklich beschäftigt – du weist es auch nicht 🙂

    https://imgur.com/ySsFW7W

    Hier mal ein Bild aus den Settings eines anderes Plugins.

    Hier muss man für beide Sprachen die Texte extra definieren.

    Diese sind im Quellcode festgelegt:

    function wf_cookieconsent_get_options($language = null) {
    
      $options = get_option('wf_cookieconsent_options');
      if (!$language) $language = wf_get_language();
    
      $data = array(
        'wf_cookietext' => empty($options[$language]['wf_cookietext']) ? null : $options[$language]['wf_cookietext'],
        'wf_dismisstext' => empty($options[$language]['wf_dismisstext']) ? null : $options[$language]['wf_dismisstext'],
        'wf_linktext' => empty($options[$language]['wf_linktext']) ? null : $options[$language]['wf_linktext'],
        'wf_linkhref' => empty($options[$language]['wf_linkhref']) ? null : $options[$language]['wf_linkhref'],
        'wf_position' => empty($options['wf_position']) ? 'bottom' : $options['wf_position'],
        'language' => $language
      );
    
      switch ($data['language']) {
    
        case 'de':
          if (empty($data['wf_cookietext'])) $data['wf_cookietext'] = "Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden. ";
          if (empty($data['wf_dismisstext'])) $data['wf_dismisstext'] = "OK";
          if (empty($data['wf_linktext'])) $data['wf_linktext'] = "Weitere Informationen";
          break;
    
        case 'it':
          if (empty($data['wf_cookietext'])) $data['wf_cookietext'] = "I cookie ci aiutano ad erogare servizi di qualità. Utilizzando i nostri servizi, l'utente accetta le nostre modalità d'uso dei cookie.";
          if (empty($data['wf_dismisstext'])) $data['wf_dismisstext'] = "OK";
          if (empty($data['wf_linktext'])) $data['wf_linktext'] = "Ulteriori informazioni";
          break;
    
        case 'fr':
            if (empty($data['wf_cookietext'])) $data['wf_cookietext'] = "Les cookies nous permettent de vous proposer nos services plus facilement. En utilisant nos services, vous nous donnez expressément votre accord pour exploiter ces cookies.";
            if (empty($data['wf_dismisstext'])) $data['wf_dismisstext'] = "OK";
            if (empty($data['wf_linktext'])) $data['wf_linktext'] = "En savoir plus";
            break;
    
        case 'nl':
            if (empty($data['wf_cookietext'])) $data['wf_cookietext'] = "Cookies helpen ons bij het leveren van onze diensten. Door gebruik te maken van onze diensten, gaat u akkoord met ons gebruik van cookies.";
            if (empty($data['wf_dismisstext'])) $data['wf_dismisstext'] = "OK";
            if (empty($data['wf_linktext'])) $data['wf_linktext'] = "Meer informatie";
            break;
    
        case 'fi':
            if (empty($data['wf_cookietext'])) $data['wf_cookietext'] = "Evästeet auttavat meitä palvelujemme toimituksessa. Käyttämällä palvelujamme hyväksyt evästeiden käytön.";
            if (empty($data['wf_dismisstext'])) $data['wf_dismisstext'] = "Selvä";
            if (empty($data['wf_linktext'])) $data['wf_linktext'] = "Lisätietoja";
            break;
    
    		case 'hu':
            if (empty($data['wf_cookietext'])) $data['wf_cookietext'] = "A weboldalon cookie-kat használunk, amik segítenek minket a lehető legjobb szolgáltatások nyújtásában. Weboldalunk további használatával jóváhagyja, hogy cookie-kat használjunk.";
            if (empty($data['wf_dismisstext'])) $data['wf_dismisstext'] = "OK";
            if (empty($data['wf_linktext'])) $data['wf_linktext'] = "További információk";
            break;
    
        default:
            if (empty($data['wf_cookietext'])) $data['wf_cookietext'] = "Cookies help us deliver our services. By using our services, you agree to our use of cookies.";
            if (empty($data['wf_dismisstext'])) $data['wf_dismisstext'] = "Got it";
            if (empty($data['wf_linktext'])) $data['wf_linktext'] = "Learn more";
            break;
      }
      return $data;
    }

    Dann wären da noch Funktionen wie:

    if (!function_exists('wf_get_languages')) {
    
    	function wf_get_languages() {
    		$languages = array();
    		//get all languages from polylang plugin https://wordpress.org/plugins/polylang/
    		global $polylang;
    		if (function_exists('PLL')) {
    			// for polylang versions > 1.8
    			$pl_languages = PLL()->model->get_languages_list();
    		} else if (isset($polylang)) {
    			// for older polylang version
    			$pl_languages = $polylang->model->get_languages_list();
    		}
    		if (isset($pl_languages)) {
    			// iterate through polylang language list
    			foreach ($pl_languages as $pl_language) {
    				$languages[] = $pl_language->slug;
    			}
    		} else if(function_exists('icl_get_languages')) {
    			//get all languages with icl_get_languages for wpml
    			$wpml_languages = icl_get_languages('skip_missing=0');
    			foreach ($wpml_languages as $wpml_language) {
    				$languages[] = !empty($wpml_language['language_code']) ? $wpml_language['language_code'] : $wpml_language['code'];
    			}
    		}
    		else {
    			//return wp get_locale() - first 2 chars (en, it, de ...)
    			$languages[] = substr(get_locale(),0,2);
    		}
    		return $languages;
    	}
    
    }

    Diese Strings des Plugins erscheinen zwar auch nicht in den String Translations aber naja besser als nix.

    Hier noch ein Link Codeseitig https://wpml.org/documentation/support/translation-for-texts-by-other-plugins-and-themes/

    Hallo,

    ich hätte natürlich auf das alte Thema geantwortet – dieses wurde aber geschlossen daher konnte ich nicht mehr antworten.

    Gut habe verstanden das Polylang nichts mit der Grundsätzlichen Spracheinstellung von WordPress zu tun hat.

    Es ist eben so das bei meinen Plugin der Admin Texte festlegen/verändern kann.

    Als Beispiel: Dies ist ein Text

    Das kann der über die Plugin Einstellungen machen via Textarea.

    Mein Problem ist nun, durch das dass der Benutzer diese Texte verändern kann – kann ich diese ja nicht in den mo bzw. po files definieren/übersetzen.

    Wie gesagt die Texte die „statisch“ per __(’string‘, ‚textdomain‘); definiert sind werden korrekt übersetzt – auch wenn ich bei Polylang die Sprache ändere.

    Aber die Texte die der Benutzers selbst festlegen kann – wie übersetze ich diese?

    Ich muss sagen das diese Texte bei der Plugin Installation gesetzt werden sozusagen Standard Texte.
    Diese würde ich gerne übersetzen.

    Dazu jemand einen Tipp?

    Grüße und schönen Sonntag,
    Michael

    mlfactory

    (@mlfactory)

    Hmm nun habe ich ein neues Problem.

    Habe sowohl die mo als auch die po files sowohl für DE als auch für EN erstellt.

    Das komische nun: Wenn ich im WordPress Backend unter Allgemein die Sprache auf Deutsch ändere erhalte ich bei load_plugin_textdomain als Wert 1 zurück.

    Sobald ich im Backend die WP Sprache auf Englisch ändere – erhalte ich bei load_plugin_textdomain nichts zurück bzw. laut meinem Code im ersten Post eben das die mo Datei nicht geladen werden kann.
    Bei Deutsch wird die Datei geladen.

    Verstehe ich gar nicht.

    Du eventuell eine Idee?

    Grüße

    EDIT:

    Hmm ok ein Problem war en_US gewählt in WordPress aber erstellt en_EN.

    Ein Problem besteht aber nun noch.

    Im Backend erhalte ich eine 1 als Wert zurück, allerdings im Frontend nicht und das nur bei Englisch.

    Was kann da sein?

    EDIT 2:

    Ok es wird jeweils nur im Backend die Sprachdatei geladen (Bei beiden Sprachen).
    Hmm komisch.

    • Diese Antwort wurde geändert vor 12 Monaten von mlfactory.
    • Diese Antwort wurde geändert vor 12 Monaten von mlfactory.
    mlfactory

    (@mlfactory)

    Ach eins eventuell noch kurz.

    Wegen der .pot Datei.

    Die erstellt poedit nicht automatisch , korrekt?

    Ich erhalte nur .mo und .po

    Grüße

    mlfactory

    (@mlfactory)

    Alles klar – wirklich vielen dank für deine Hilfe – soweit ist alles klar.

    Hab da zu kompliziert gedacht – es ist bei meinem Plugin halt auch so das die Texte die im Plugin vorkommen durch den Admin der Seite geändert werden können.
    Daher hatte ich da irgendwie ein Verständnisproblem.

    Ich arbeite einfach mal weiter und sehe ob ich es verstanden habe 🙂

    Grüß und dir ein schönes Wochenende,
    Michael

    mlfactory

    (@mlfactory)

    Hallo,

    hmm okay verstehe – ein bisschen zumindest 😀

    Sprich wenn ich die mo und po Files für DE und EN erstelle wird je nachdem welche Sprache der Benutzer bei den WordPress Einstellungen wählt diese Sprache für das Plugin gewählt und ausgegeben, korrekt?

    Okay gut soweit.

    Ich hätte aber eben gerne das wie bei anderen Plugins (ob jetzt WPML oder bei Polylang) die Texte des Plugins je nach gewählter Sprache ausgegeben werden.
    Wie gehe ich da am besten vor?

    Ich habe mir den Link natürlich schon angeschaut.
    Auch alles zu load_plugin_textdomain und sogut alle Themen in Foren dazu die existieren würde ich behaupten.

    Grüße, Michael

    mlfactory

    (@mlfactory)

    Hallo Hans-Gerd,

    danke für deine Antwort.

    Also Polylang brauche ich nicht unbedingt – es geht eher darum, dass die User meines Plugins die Strings/Texte gerne bequem ändern würden.

    Habe nun rausgefunden das geht mit Loco Translate.

    PoEdit nutze ich bereits – damit habe ich die beiden Dateien erstellt .po & .mo.

    Ich bin etwas verwirrt da bei vielen Plugins ja dabei steht „Polylang ready“ etc. was ist damit gemeint?
    Auch finde ich Strings anderer Plugins unter String Translations.

    Aktueller Stand:

    Unter Loco Translate -> Plugins erscheint mein Plugin.

    Habe ein paar Texte sowohl in DE als auch in EN definiert.

    Wenn ich nun aber im Backend oder Frontend die Sprache wechsle werden die Texte nicht übersetzt.

    Ich weiß ist schwierig so aus der Ferne dazu was zu sagen…

    Danke für deine Hilfe,
    Michael

    EDIT:

    Was ich gerade noch gesehen habe ist diese Meldung:

    No translation template for the "testplugin" text domain

    Google findet dazu leider nichts.

    • Diese Antwort wurde geändert vor 12 Monaten von mlfactory.
    mlfactory

    (@mlfactory)

    EDIT:

    versucht hab ich auch das:

    add_action( 'init', 'plugin_name_load_plugin_textdomain' ); 
    
    function plugin_name_load_plugin_textdomain() {
    	$domain = 'translationtest';
    
    	$loaded= load_plugin_textdomain( $domain, FALSE, basename( dirname( __FILE__ ) ) . '/' );
    if ( ! $loaded ){
    echo "<hr/>";
    echo "Error: the mo file was not found! ";
    //exit();
    }else{
    echo "<hr/><strong>Debug info</strong>:<br/>";
    echo "WPLANG: ". WPLANG;
    echo "<br/>";
    echo "translate test: ". __('Some text','translationtest');
    //exit();
    }	
    }

    $loaded gibt 1 zurück trotzdem erscheint unter Polylang nichts vom Plugin.

    Grüße

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)