neluzhin
@neluzhin

Как правильно сделать локализацию сайта?

Здравствуйте!

Пока только учусь и создаю сайт, который хотелось бы иметь на двух языках: на русском и английском. Поскольку я только учусь, я бы не хотел пока прибегать к готовым решениям (вроде 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')
// и так далее
);


Сначала я думал сделать это через БД, но мне показалось, что это может отразиться на скорости загрузки сайта. Да и на Хабре когда-то читал в статье, где рассказывалось об оптимизации скорости загрузки сайта.

Язык забивается в сессию, а определяется он через заголовок браузера.

Так вот. Прошу прощение за большое количество текста и перехожу к вопросам:
  1. Насколько хороша моя реализация? Что стоило бы изменить, пока не поздно? Очень боюсь что-то сделать не так и в будущем всё это переписывать...
  2. Как это будет влиять на поисковые системы? Будут ли англоязычные пользователи видеть в поисковой выдаче сайт на английском языке, а русскоязычные - на русском?


Спасибо.
  • Вопрос задан
  • 4391 просмотр
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
w999d
@w999d
Web-developer
читайте
php.net/gettext
php.net/setlocale

// не хотел пока прибегать к готовым решениям (вроде Gettext)
ух, не заметил ) но по личному же опыту скажу - если будете писать свое - уйдет куча времени, а толку будет мало. вы знаете особенности всех языков мира? значит решение будет заточено только на пару известных вам языков, и шишек набьете море.

по поводу языка из браузера - лучше предлагать переход на версию с этим языком, а сайт сделать в обоих версиях доступным всем. так более гуманнее (у меня, к примеру, система на английском) и дружелюбнее к ботам.

ну и стоит разделять интерфейс и контент. контент скорее всего будет различаться сильнее, чем кажется, поэтому может быть удобно не делать перевод каждой строки в базе/заводить поля, а использовать отдельную базу, либо фильтровать записи по отдельному полю с пометкой локали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы