Při překladu WordPress šablony narazíme na problém, jak se vypořádat se skloňováním slova “komentář” při zobrazení počtu komentářů. Oproti angličtině má totiž čeština o jeden možný tvar víc.
Tam kde si angličtina vystačí s No comments, one comment a more comments potřebuje čeština tyto tvatry: “Žádný komentář”, “1 komentář”, “2 komentáře”, “5 komentářů”.
Problém je právě s těmi dvěma komentáři. Způsobů jak tento problém při překladu obejít je jistě více. Já vám představím dva. Jeden je opravdu obezličkou, druhý je propracovanější.
Chytrý překlad
Pro překlad počtu komentářů nám slouží parametry funkce comments_popup_link(). Využití této funkce použité v defaultní šabloně WordPress 2.9:
comments_popup_link('No Comments »', '1 Comment »', '% Comments »');
Jak je vidět, můžeme napřekládat bez problému zobrazení pro žádný komentář i jeden komentář, ale poté máme problém s 2,3,4 a nebo více komentáři. Zvolíme ‘% komentářů” nebo ‘% komentáře’? Ani jedna volba není ta správná. Po troše přemýšlení můžeme naše dilema vyřešit dvojtečkou.
comments_popup_link('Žádné komentáře »', '1 Komentář »', 'Komentářů: % »');
Jednoduché, ovšem těžko říct, jak moc elegantní řešení to je.
Využití hooku
Při tomto řešení využijeme toho, že funkce comments_number() zpřístupňuje hook comments_number. Na tento hook pověsíme vlastní funkci, přidávající hodnotu pro počet komentářů v rozpětí od 2 do 4, včetně krajních hodnot.
Stačí vložit následující kód do souboru functions.php:
function czech_comments_number($output, $number){ if ( $number > 1 && $number <= 4) $output = str_replace('%', number_format_i18n($number), '% Komentáře'); return $output; } add_action('comments_number', 'czech_comments_number', 10, 2);
A to poté bude fungovat v kombinaci s voláním funkce commnets_popup_link() z vaší šablony, kde si napřekládáte text pro počet komentářů 0, 1 a více jak 4:
comments_popup_link('Žádné komentáře »', '1 komentář »', '% komentářů »');
Je možné, že naše šablona někde využívá funkci comments_number() přímo, v tom případě i ji budem volat se tejnými parametry jako funci comments_popup_link a i tato funkce vrátí kýžený výsledek.
Reference:
http://codex.wordpress.org/Function_Reference/comments_popup_link
http://core.trac.wordpress.org/browser/tags/3.0.3/wp-includes/comment-template.php
http://codex.wordpress.org/Function_Reference/comments_number