Здравствуйте!
Пока только учусь и создаю сайт, который хотелось бы иметь на двух языках: на русском и английском. Поскольку я только учусь, я бы не хотел пока прибегать к готовым решениям (вроде Gettext) - личный опыт, как мне кажется, пойдет на пользу, хотя бы в первом проекте.
Реализовано это через приведенную ниже функцию. Если английский текст отсутствует, то выведется русский; а если отсутствует и русский, то выведется ошибка:
function __locale($class) {
if (isset($locale[$class][$_SESSION['language']]) && strlen($locale[$class][$_SESSION['language']]) > 0) {
return $locale[$class][$_SESSION['language']];
}
elseif (isset($locale[$class][0]) && strlen($locale[$class][0]) > 0) {
return $locale[$class][0];
}
else { return 'locale error '.$class; }
}
Где $locale - это переменная, которая находится в файле-локализации:
$locale = array(
'index.menu.home' => array('Главная', 'Home'),
'index.menu.regi' => array('Регистрация', 'Registration'),
'index.menu.login' => array('Вход', 'Login')
// и так далее
);
Сначала я думал сделать это через БД, но мне показалось, что это может отразиться на скорости загрузки сайта. Да и на Хабре когда-то читал в статье, где рассказывалось об оптимизации скорости загрузки сайта.
Язык забивается в сессию, а определяется он через заголовок браузера.
Так вот. Прошу прощение за большое количество текста и перехожу к вопросам:
- Насколько хороша моя реализация? Что стоило бы изменить, пока не поздно? Очень боюсь что-то сделать не так и в будущем всё это переписывать...
- Как это будет влиять на поисковые системы? Будут ли англоязычные пользователи видеть в поисковой выдаче сайт на английском языке, а русскоязычные - на русском?
Спасибо.