HTML in __ () oder _e () Sprachübersetzungszeichenfolge

Was ist der richtige Ansatz zum Erstellen von Übersetzungszeichenfolgen?

Beispielsweise,

echo __( 'Hello ' . $first . ' you owe me money.' ); echo __( '

Top: ' . $t_margin . '

' . '

Bottom: ' . $b_margin . '

' )

Ist es in Ordnung, die Strings und / oder HTML hinzuzufügen oder sollte es zuerst getan werden und dann durch Übersetzung wie:

 $html = '

Top: ' . $t_margin . '

' . '

Bottom: ' . $b_margin . '

'; echo __( $html );

Solutions Collecting From Web of "HTML in __ () oder _e () Sprachübersetzungszeichenfolge"

Es gibt ein zweites Argument in der function __() . Es sollte auf die Domain eingestellt werden, die Sie für Ihr Plugin oder Theme verwenden. In den folgenden Beispielen verwende ich 'text_domain' . Ihre Domain-Zeichenfolge sollte eindeutig sein. Es sollte nicht mit einer anderen Domain-Zeichenfolge übereinstimmen. Wenn Sie kein Argument für eine Textdomäne verwenden 'default' der WordPress-Domänenname als 'default' . Siehe den Link für weitere Details.

Verwenden Sie immer die Zeichenfolge ( 'text_domain' ). Verwenden Sie niemals eine Variable, function oder Konstante mit der Zeichenfolge darin. Die meisten (alle?) Übersetzungsprogramme sehen es nicht ohne die Zeichenkette dort.

Dein Code:

 echo __( 'Hello ' . $first . ' you own me money.' ); 

Fügen Sie keine Variablen in die Zeichenfolge ein.

Ein besserer Weg:

 echo sprintf( __( 'Hello %s you own me money.', 'text_domain' ), $first ); 

Oder nur:

 printf( __( 'Hello %s you own me money.', 'text_domain' ), $first ); 

Der Platzhalter %s teilt dem menschlichen Übersetzer mit, dass dort eine Zeichenfolge eingefügt wird. Verwenden Sie %d für Zahlen. Es gibt auch andere Platzhalter .

(Dieser Satz ist grammatikalisch falsch Englisch. Verwenden Sie entweder 'Hello %s, you owe me money.' Oder 'Hello %s, you own my money.' Abhängig von der Bedeutung, die Sie beabsichtigten.)


Dein Code:

 $html = '

Top: ' . $t_margin . '

' .

Bottom: ' . $b_margin . '

';

Übersetzen Sie nicht HTML. Es ist in jeder Sprache dasselbe.

Ein besserer Weg:

 $html = sprintf( '

%s

%s

', __( 'Top: ', 'text_domain' ) . $t_margin, __( 'Bottom: ', 'text_domain' ) . $b_margin );

Oder brich es in mehrere Zeilen auf:

 $html = sprintf( '

%s

%s

', __( 'Top: ', 'text_domain' ) . $t_margin, __( 'Bottom: ', 'text_domain' ) . $b_margin );

Wenn es nicht offensichtlich ist, was Top und Bottom sind, könnten Sie _x() , um den Kontext dieser Begriffe zu erklären.


Sie können andere Übersetzungsfälle hier finden: Internationalisierung: Sie machen es wahrscheinlich falsch

Ich werde das Problem der Variablen in der Zeichenkette nicht ansprechen, da dies bereits gesagt wurde.

Sie möchten, dass Ihre Zeichenfolge statisch bleibt, was bedeutet, dass sich der Inhalt nicht ändert. Sie möchten auch unnötiges HTML aussparen.

 __( '

Hello World!

' ); __( '

Hello World!

' );

Das oben Genannte nimmt zwei Reihen in Ihrer Tabelle für das, was im Wesentlichen der gleiche Text ist. Sie können wie folgt umgeschrieben werden:

 '

' . __( 'Hello World!' ) . '

' '

' . __( 'Hello World!' ) . '

'

Reduziere es auf eine einzelne Zeile.

Manchmal ist HTML im Text unvermeidlich. Nimm zum Beispiel:

 __( 'You currently owe %s dollars' ); 

Da Sprachen grammatikalisch sind, würde das Teilen des Textes Probleme für den Übersetzer verursachen.

Faustregel. HTML- Textformatierung Tags Mitte Satz sind OK. Sätze, die mit HTML beginnen und enden, verschwenden nur Platz.