Podczas tłumaczenia strony, dość często można napotkać problemy w postaci napisów umieszczonych bezpośrednio w szablonie, o ile nie jest to problem, aby zamknąć wszystkie napisy w funkcji _e(”) , tak gorzej jest, gdy w niektórych miejscach, widnieją napisy generowane dynamicznie poprzez javascripta.
Całe szczęście, istnieje pewien sposób, który pomoże uporać się z tym problemem.
Aby teksty w javascripcie stały się widoczne dla wordpressa, musimy zarejestrować pożądane napisy w functions.php, robimy to w taki sposób:
$translation_array = array(
'colorSelected’ => __( 'Guld-färgade’, 'plugin-domain’ ),
'choosenQuantity’ => __(’Ändra’, 'plugin-domain’),
'currency’ => __(’Kr’, 'plugin-domain’),
);
Rejestrujemy array’a, w którym wartość po lewej to jest nazwa, do której będziemy mogli sie odwołać w javascripcie, a po prawej stronie dajemy słowo, które chcemy dodać do tłumaczenia.
Gdy już zarejestrujemy wszystkie słowa które chcemy przetłumaczyć, wystarczy tylko dodać linijkę lokalizującą skrypt:
wp_localize_script( 'create_label’, 'objectName’, $translation_array );
Gdzie pierwsza wartość, to jest nazwa zarejestrowanego skryptu, tego, do którego chcemy dołączyć tłumaczenia.
Drugą wartością, jest zmienna, do której będziemy się odnosić w naszym pliku javascript, a trzecia wartość, to array z naszymi tłumaczeniami.
Teraz gdy mamy już wszystko gotowe w naszym pliku functions.php, idziemy do naszego skryptu, po czym uzyskujemy tłumaczenie, odwołując się do zarejestrowanych wcześniej zmiennych.
Czyli: jeżeli chcę podmienić dany string w javascripcie, np. na pierwszą wartość w naszym arrayu (Guld-färgade), wystarczy że wpiszemy objectName.colorSelected.
Jeżeli zamkniemy sobie powyższą linijkę w console.log(), konsola powinna nam zwrócić wartość którą zdefiniowaliśmy wcześniej w functions.php, czyli: Guld-färgade