Замена функции в wp-language.php
- JawsIk : 6 марта, 2007 Раздел: Новости блога и мои
- | Просмотров 542 всего, 2 сегодня.
Здравствуйте уважаемые читатели!
Недавно в очередной раз настраивая и доделывая свой блог я решил сделать так, чтобы все надписи были на русском языке. Сначала я думал зайти в шаблон и поменять там, но потом обнаружил для себя, что в Wordpress в версии 2.0.9 от есть файл wp-language.php . Этот файл как раз и отвечает за перевод всех надписей. Использование этого файла заключалось в том, что шаблоны остаются прежними (т.е. в них можно вообще ничего не менять на русские надписи). Файл же wp-language в себе содержит массив пар (Английское словосочетание => Русский Перевод). Естественно проглядывая и находя надписи на английском языке, я стал добавлять такими парами в вышеуказанный файл. В конце концов я «перевёл» весь свой шаблон и на этом можно было бы остановиться. Но я решил кое что изменить в своём шаблоне и для этого установил другую тему шаблона (в которой видел нужную мне фичу). Как я уже говорил выше «в шаблоне можно ничего не менять (что касаемо перевода)», а он сам при наличии пары, переведётся. Как раз такое случилось с новым шаблоном, но я заметил, что перевелось не всё.
Так как я был уже в азарте этого дела, я решил быстренько добавить несколько пар значений в «наш любимый файл» и был очень сильно разочарован тем фактом, что большинство таких значений у меня уже было. Да, да, я правильно заполнил эти пары, но проблема была в регистре. Я увидел, что придётся под каждый шаблон добавлять не только новые значения, но и старые, потому что надписи «(more...)» и «(More...)» для функции в файле wp-language.php, были совершенно разными фразами. Я провёл небольшой анализ и выяснил, что порядка 70% надписей, содержащихся в новоустановленной теме шаблона уже есть, но их регистр (где-то на букву, где то на начальные буквы и т.п.) не совпадает.
Делать же повторно проделанную работу не хотелось и поэтому я решил попытаться изменить саму функцию преобразования. Начал из далека (решил использовать ещё один массив (копию) всех значений и копию массива ключей. Но, в конце концов обнаружил в документации (у меня оффлайн функции на русском языке с сайта php.net) новые для себя функции, которые позволили написать новую, да при этом ещё и сократить код.
Итак если вас тоже не устраивает данный порядок вещей вы можете использовать мою функцию. Работает она хорошо. Багов не обнаружено, но если что свисните - исправлю. Итак, откройте файл wp-language.php и перейдите вниз (после массива пар). Там всего одна функция. Я предлагаю заменить её на эту:
function tolang($t) {
global $to_languages;
$at=strtolower(trim($t));
$to_languages = array_change_key_case($to_languages, CASE_LOWER);
(array_key_exists( $at, $to_languages ))? $tr=$to_languages[$at] : $tr=$t;
return $tr;
}
P.s. Некоторые наверное скажут, но как же так, ведь не всегда нужно использовать такую функцию. Ведь иногда люди хотят, чтобы у них были надписи например большими буквами «БЛОГ ГЛАВНАЯ НОВОСТИ» и т.п. или например вообще хотят, чтобы отображалось на английском языке «HOME MISC INTERNET». Для таких моментов, как и раньше нужно править сами пары значений массива. Если вам нужна какая-либо надпись заглавными буквами, а она обычными, то зайдите в файл и поменяйте. Если вы хотите, чтобы какая либо надпись отображалась на английском языке, ну так зайдите и убейте эту пару значений. Всё просто, а главное то, что теперь надписи «permalink» и «pErMaLiNk» всегда переведутся в «Постоянная ссылка».
Удачи вам!
JawsIk © Март 2007
Милый друг, не скучай! Комментарий оставляй!