webentwicklung-frage-antwort-db.com.de

Datumsangabe in eine andere Sprache/Schrift ändern?

Bisher konnte ich die Nummern von Datum und Uhrzeit (in ein Nummern- und Datumssystem einer anderen Sprache wie Khmer) für jeden Beitrag mit einem Skript wie dem folgenden in meiner functions.php ändern:

function KhmerNumDate ($text) {
$text = str_replace('1', '១', $text);
$text = str_replace('2', '២', $text);
$text = str_replace('3', '៣', $text);
$text = str_replace('4', '៤', $text);
$text = str_replace('5', '៥', $text);
$text = str_replace('6', '៦', $text);
$text = str_replace('7', '៧', $text);
$text = str_replace('8', '៨', $text);
$text = str_replace('9', '៩', $text);
$text = str_replace('0', '០', $text); 
return $text;
}


add_filter('date', 'KhmerNumDate');
add_filter('the_date', 'KhmerNumDate');
add_filter('the_time', 'KhmerNumDate');

Aber jetzt funktioniert es nicht - ist mein Code gut? Unterscheidet sich der Code aufgrund des von mir verwendeten Themas (ich verwende derzeit ein modifiziertes untergeordnetes Thema von Twenty-Twelve)?

2
Nathan

Es stellte sich heraus, dass es an der Art und Weise lag, wie das Thema Twenty Twelve funktioniert (in dem Bemühen, die Übersetzung zu vereinfachen ...).

Das Datum für Posts in Twenty Twelve wird von einer Funktion in functions.php mit dem Namen twentytwelve_entry_meta() erstellt.

Um die Zahlen im Datum zu ersetzen/zu übersetzen, suche ich die Zeile mit $date= in der Funktion twentytwelve_entry_meta() (oder repliziere vorzugsweise die Funktion twentytwelve_entry_meta() in einer untergeordneten Datei functions.php wie ich):

$date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s" pubdate>%4$s</time></a>',
        esc_url( get_permalink() ),
        esc_attr( get_the_time() ),
        esc_attr( get_the_date( 'c' ) ),
        esc_html( get_the_date() )

    );

    //my added code - the_curlang() is used with the xili-language plugin, it returns the current language of the page

$languagedate = the_curlang();

if ( $languagedate == 'km_kh' ) {
$date = str_replace('1', '១', $date);
$date = str_replace('2', '២', $date);
$date = str_replace('3', '៣', $date);
$date = str_replace('4', '៤', $date);
$date = str_replace('5', '៥', $date);
$date = str_replace('6', '៦', $date);
$date = str_replace('7', '៧', $date);
$date = str_replace('8', '៨', $date);
$date = str_replace('9', '៩', $date);
$date = str_replace('0', '០', $date); 
}

Dann sieht alles super aus!

Ich bin kein großer Programmierer, daher ist mein Code möglicherweise nicht die beste Option, aber es funktioniert zumindest.

2
Nathan

Bitte versuchen Sie es so:

Ändern Sie Datum, Datum, Uhrzeit zu Datum, Datum, Uhrzeit.

function KhmerNumDate ($text) {
    $text = str_replace('1', '១', $text);
    $text = str_replace('2', '២', $text);
    $text = str_replace('3', '៣', $text);
    $text = str_replace('4', '៤', $text);
    $text = str_replace('5', '៥', $text);
    $text = str_replace('6', '៦', $text);
    $text = str_replace('7', '៧', $text);
    $text = str_replace('8', '៨', $text);
    $text = str_replace('9', '៩', $text);
    $text = str_replace('0', '០', $text); 
    return $text;
    }


add_filter('get_date', 'KhmerNumDate');
add_filter('get_the_date', 'KhmerNumDate');
add_filter('get_the_time', 'KhmerNumDate');
3
haksrun

Ich möchte vorschlagen, eine in Wordpress integrierte Funktion für Ihre speziellen Anforderungen zu verwenden, nämlich date_i18n($date_format, $time, $gmt) . Übergeben Sie einfach das Format php date() und die timestamp und Wordpress zeigt das Datum in Ihrer Sprache an (Sprache in wp-config.php definiert).

Beispiel von der Codexseite:

echo date_i18n(get_option('date_format') ,strtotime("11/15-1976")); 
1
Ahmad M