Problém s printf() a překladem __()

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Problém s printf() a překladem __()

Zvolené téma obsahuje celkem 2 odpovědi. Do diskuze (2 účastníci) se naposledy zapojil uživatel  sjiamnocna a poslední změna je stará 7 let.

Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (z celkem 3)
  • Autor
    Příspěvky
  • #3125

    sjiamnocna
    Participant
    Web

    Ahoj. Před pár dny jsem se pustil do zkoušení překladu přes POedit. Prográmek je super, hned všechno aktualizuje a vyhledává, ale já jsem napsal funkci printf s překladem a jednou proměnnou (ve funkci):

    printf(__('Archive of %s category'),single_cat_title());, a vyšlo mi z toho toto: ČlánkyArchive of category, s překladem “Archive of %s category” -> “Archiv kategorie %s”. Vůbec to nechápu, protože když mám v patičce printf(__('<a href="%1$s">Theme</a> by <a href="%2$s">Sjiamnocna</a>','bluelime'), esc_url('http://www.sjiaphoto.g6.cz/blue-lime/'), esc_url('http://www.sjiaphoto.g6.cz/')); tak to funguje i s překladem. Zkoušel jsem i %s přepsat za normální %1$s ale se stejným výsledkem… Nevíte kde dělám chybu?

    _______________________

    Tak zřejmě je to tím, že je to funkce pro vypisování a ne pro zpracování, takže musím najít nějakou alternativu – nevíte o něčem?

    #15224

    admin
    Keymaster
    Web

    Ano, funkce single_cat_title() nevrací v defaultním nastavení příslušnou hodnotu, ale přímo ji zobrazuje, což je v tomto případě problém. Můžete ale využít druhý parametr $display a použít funkci takto:

    single_cat_title( '', false );

    Dalším způsobem je ponechat funkci single_cat_title() v současné podobě a místo printf() použít funkci sprint().

    Ten druhý příklad funguje právě proto, že funkce esc_url() vrací hodnotu, ale nezobrazuje ji. A čísla u proměnných, např. %1$s slouží pouze k očíslování pořadí proměnných, pokud jich je v nějakém řetězci více…

    #15225

    sjiamnocna
    Participant
    Web

    Jsem se v tom chvíli vrtal, a pak jsem na to přišel, ale nevěděl jak udělat, aby to vracelo v požadovaném formátu

    ALE prozměnu mi to teď vypisuje Anglickou verzi hlášky… já chci hlášku z cs_CZ ne z toho co tam mám napsaný v AJ. Zajímavý, že ostatní to překládá, jen todle ne (textdomain je zadaný na 100% správně)

Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (z celkem 3)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.