Olet luultavasti joskus nähnyt jossakin WordPress/WooCommerce -toteutuksessa napin, jossa on vääränkielinen teksti – tai artikkelien metatietoa, joissa lukee lukee “By” eikä “Kirjoittaja”? Ehkä tällainen on kerran tai kaksi piinannut sinuakin?
Hyvin laajalti käytetty apu (toimiva ja todella hyvä apu!) on esim. Loco translate -niminen lisäosa, jolla voi tehdä string-käännöksiä (string = merkkijono) lisäosien ja teemojen eri alueisiin.
Yksittäisiin tapauksiin on tosin olemassa täsmälääke, WordPressin coressa oleva gettext- filterhook.
Kopioi koodi lapsiteemasi functions.php:n jatkoksi.
/**
* @snippet Merkkijonojen muutokset gettextillä
* @author Jaakko Pöntinen - WPWoofi.com
* @testedwith WooCommerce 4.5.2
*/
// Aktivoidaan filter funktiolla
add_filter( 'gettext', 'mm_change_multiple_strings', 20 );
// Määritetään funktio
function mm_change_multiple_strings( $translated ) {
// Määritetään array, jossa listataan muutettavat stringit ja se, mikä tulee korvaavaksi. Muuta, poista tai kopioi lisää rivejä tarpeen mukaan - muutamia rivejä on syötetty esimerkin vuoksi.
$text = array(
'Näytä ostoskori' => 'Avaa kori',
'Laskutustiedot' => 'Tilaajan tiedot',
'Search Results for' => 'Hakutulokset',
'Laskutusosoite' => 'Tilaajan tiedot',
'(ei sis. alv.)' => 'alv0',
'You searched for' => 'Etsit tätä',
);
// Käsitellään yllä annetun arrayn mukaan
$translated = str_ireplace( array_keys($text), $text, $translated );
// Palautetaan käsitellyt tiedot
return $translated;
}
3 kommenttia artikkeliin ”Manuaalisia string-käännöksiä ilman lisäosaa”
Tää oli mahtava, kiitos! Muutama pätkä parilla saitilla vain ulkomaankieltä eikä viitsisi Loco Translatea sen takia asentaa.
Mites onnistuisi esim. tällä sivustolla https://poydalla.net/jainen-kuolema-suomen-talvisota/ näkyvän Shares tekstin kääntö? Tämä ei siihen purrut.
@kristian pitäis toimia kyllä ihan niin että lisäät Shares listaan ja käännöksen. Kannattaa ottaa huomioon että näissä yleensä pitää olla prikulleen oikein eli isoilla ja pienillä kirjaimilla on väliä.
Tämä pitäisi toimia:
‘Shares’ => ‘Jaot’,
Moi!
Jos tuo kyseinen tekstinpätkä ei ole siellä, missä se on julistettu, käännettäväksi asetettu niin sitä ei voi tällä keinolla muuttaa. Tätä voi ajatella niin, että jos jossakin artikkelitekstissä on sana “ankka”, niin gettext ei siihen pure, koska sitä tuskin on lisätty WP:n piiriin käännettäväksi merkkijonoksi.
Kiitos mielenkiinnosta aihetta kohtaan 🙂