<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Как сделать мультиязычный сайт

Как сделать мультиязычный сайт

Наверняка, Вы видели сайты, которые сделаны на нескольких языках. Это очень хорошо, поскольку количество трафика может резко возрасти, а это резко возрастающий доход. Поэтому серьёзно задумайтесь о мультиязычности, а вот, как сделать мультиязычный сайт, я постараюсь сейчас объяснить.

Вообще, существует множество способов сделать сайт на нескольких языках, однако, я приведу, на мой взгляд, самый простой и универсальный способ. Первым делом необходимо создать ini-файлы с языковыми константами. Например, такой:

HELLO=Привет

Пусть этот файл называется "ru.ini". Теперь создадим файл для английского языка:

HELLO=Hello

Этот файл мы назовём "en.ini". Теперь нам нужно как-то определять, какой язык хочет пользователь. Для этого есть GET-параметры, в котором мы передаём код языка (допустим, "ru" или "en"). Далее мы в зависимости от значения GET-параметра, берём нужный файл и выводим языковую константу, а значение подставится автоматически. Чтобы стало понятно, привожу код:

<?php
  $lang = isset($_GET["lang"])? $_GET["lang"]: "ru"; //Берём значение GET-параметра, либо, если его нет, то устанавливаем русский
  $array = parse_ini_file($lang.".ini"); //Открываем соответствующий языковой файл
  echo $array["HELLO"]; //Выводим значение языковой константы
?>

Как Вы уже догадались, будет выведено "Привет", если передано значение "ru", либо "Hello", если передано значение "en". Разумеется, вместо GET-параметров Вы можете использовать, например, сессию. Всё очень просто, а уже эту готовую базу, можно использовать и успешно применять в огромных проектах.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (51):

brussens brussens 26.01.2012 01:20:30

мне кажется сессии удобнее использовать

Ответить

Admin Admin 27.01.2012 14:10:54

Я тоже так думаю, но почему-то GET-параметры чаще используются для мультиязычности.

Ответить

MrArman MrArman 21.02.2017 01:04:35

Так таким способом когда переходишь на другую страницу, становится снова стандарт. Как сделать чтобы все сохранялось пока не изменить язык?

Ответить

pplayer pplayer 20.03.2016 10:55:22

а как быть с мета тегами в слуае если урл один и тот же, ведь поисковики считают страницу ../ru и .../en разными а если с куки то они просто не просканируют старницы с другими языками, или я чего о не знаю?

Ответить

lion337 lion337 26.01.2012 17:42:32

Можно ли в базе хранить английские тексты, и вытягивать их когда надо?

Ответить

Trust Trust 27.01.2012 13:53:16

Алексей! Вы должны боротся за каждый килобайт информации! Так будут экономичнее расходоватся ресурсы вашей системы.

Ответить

Admin Admin 27.01.2012 14:10:06

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

Ответить

ankalitkin ankalitkin 02.02.2012 22:00:43

А что будет быстрее, isset или array_key_exists? Я обычно работаю со вторым, у меня получается вот так: $var = array_key_exists("var",$get)?$_GET["var"]:NULL;

Ответить

Admin Admin 02.02.2012 22:04:04

Не знаю, какая быстрее, но я привык к isset(), как к более универсальной.

Ответить

Shareed2k Shareed2k 08.03.2012 10:03:07

а как создать меню для пользеватиля чтоб он мог выберать из списка язык для сайта ?

Ответить

Admin Admin 08.03.2012 11:43:23

Создайте обычное меню на HTML, где просто вставьте ссылки с соответствующими GET-запросами.

Ответить

Shareed2k Shareed2k 08.03.2012 16:17:41

?lang=en спасибо

Ответить

Shareed2k Shareed2k 10.03.2012 14:23:23

а как переводить (заменять) большие тексты? нопримкр который хрониться в базе даных и 4ерез GET-параметры вывести

Ответить

Admin Admin 10.03.2012 14:26:29

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

Ответить

Dante5 Dante5 24.09.2012 00:51:22

как сделать чтобы .ini вытаскивались к примеру из папки lang

Ответить

Admin Admin 24.09.2012 11:42:40

Всё точно так же, просто пиписываете ещё и адрес. "нужный_адрес".$lang.".ini"

Ответить

Dante5 Dante5 24.09.2012 16:03:04

ставил только выдает ошибку вот пример че не так делаю $array = parse_ini_file("leang"$lang.".ini"); где-leang имя папки где лежат файлы папка в корне вот ошибка Parse error: syntax error, unexpected T_VARIABLE in Z:\home\invest\www\index.php on line 3

Ответить

Admin Admin 24.09.2012 18:33:46

Точку Вы не поставили между строкой и переменной $lang

Ответить

Dante5 Dante5 24.09.2012 19:20:37

сделал вот так заработало("leang/".$lang.".ini");

Ответить

Dante5 Dante5 26.09.2012 23:49:13

можно ли сделать чтобы автоматом определяло если СНГ трафика то руский остальные английский

Ответить

Admin Admin 27.09.2012 13:38:34

Можно по IP адресу определять страну и сразу выставлять нужные настройки. http://myrusakov.ru/php-ip-user.html

Ответить

Grammaton Grammaton 13.11.2012 14:29:03

Не подскажите почему код неработает если языковые файлы ini сохранены в формате UTF-8?То есть вообще например ничего не выводит? Если сохранять в Ansi то работает... Ведь это немаловажно для мультиязычности.

Ответить

Admin Admin 13.11.2012 14:33:57

Ваш сайт должен быть в одной кодировке. Нельзя делать так, чтобы в одном месте был UTF-8, а где-нибудь в другом месте ANSI.

Ответить

Grammaton Grammaton 13.11.2012 14:54:45

Так и есть сайт в UTF-8! На сайте прописано <meta http-equiv="Content-Type" content="text/html; charset=utf-8">. Но это все равно не работает то есть вообще ничего не выводит! Если ini сохранить в Ansi а сайт оставить в кодировке UTF-8 то тогда выводит кракозябры. Если сайт в ANSI и ini файл Ansi тогда нормально. Если сайт в UTF-8 и файл ini в UTF-8 тогда вообще ничего не выводит. Тестировал на разных машинах в разных браузерах в разных веб-серверах везде делает, как описано выше. Как быть?

Ответить

Admin Admin 13.11.2012 14:56:23

http://myrusakov.ru/php-encoding-problems.html

Ответить

Grammaton Grammaton 13.11.2012 15:03:36

Все ясно! В приведенной Вами ссылке была вторая причина. ini файл нужно сохранить как "Преобразовать в UTF-8 без BOM". Спасибо!

Ответить

neve4 neve4 30.11.2012 20:04:43

Я сейчас делаю социалку, и пока что 3 языка, но я храню все в отдельном файле в переменных или масивах. Подскажите может лучше переделать на .ini???

Ответить

Admin Admin 30.11.2012 20:06:50

Лучше переделать на ini.

Ответить

neve4 neve4 30.11.2012 20:34:45

это будет безопасней???

Ответить

Admin Admin 30.11.2012 20:39:46

Причём тут безопасность? Это будет логичнее с точки зрения грамотного кода.

Ответить

neve4 neve4 30.11.2012 20:40:55

спасибо, буду переделывать.

Ответить

Maksimchik Maksimchik 06.12.2012 00:00:32

Михаил, тема понравилась. Но есть еще важный вопрос. Вить большинство сайтов (форумы,блоги) используют мультиязычность. Очень важным элементом является то что выбранный язык всегда хранится в адресе страницы и так на какую либо страницу. Пример: http://mysite.com/ru/ или http://mysite.com/?lang=ru или http://mysite.com/index.php?lang=ru Мне не обязательно знать как делать ЧПУ (потом разберусь). А вот как постоянно хранить переменную в ссылке, вот это меня ооочень волнует!

Ответить

Admin Admin 06.12.2012 04:24:23

Можно записывать в cookie язык и не менять его до тех пор, пока пользователь не выберет другой язык. Тогда в каждой ссылке держать язык необязательно.

Ответить

Maksimchik Maksimchik 06.12.2012 09:57:50

До этого как ни странно, я уже давно догодался. А вот если я хочу показать тему человеку, и отправляю ему ссылу (допустим на русскоязычный форум). Но в ссылке не указан выбранный язык, т.е. русский. И человек по стандарту попадает на английский форум. Например: http://mysite.ru/index.php?lang=ru&post=1 http://mysite.ru/index.php?post=1 В данном примере разные страницы. Т.е допустим что у этого сайта стандартный АНГЛийский язык. Человек нажимая по первой ссылке перейдет туда, куда этого хочет тот который дал ему эту ссылку. А нажатие по второй ссылке приведет его на какую то английскую тему. И будет что то: - А чо там все на англ? - Та не, у меня всё на русском. - Та не ври. Ну в общем я думаю вы поняли меня что мне надо методом GET передавать выбранную языковую часть сайта.

Ответить

Admin Admin 06.12.2012 17:39:23

Можно по IP определять, какой у человека язык. Или ставить язык по умолчанию, а если в GET что-то указано, то брать его.

Ответить

Dante5 Dante5 24.04.2013 17:59:46

Одскажите как экранировать к примеру апостроф в eu.ini да еще если в предложение получается предлог on вылетает ошибка экранировать таким способом /' или /on получается но слеш тоже тогда появляется в предложении

Ответить

Dante5 Dante5 24.04.2013 18:26:03

Все решение нашол "'" и "on"

Ответить

analitic analitic 07.05.2013 20:06:57

Здравствуйте, Михаил Русаков, посвятите пожалуйста видео урок как создаются многоязычные сайты, так как информация на ваше сайте не совсем понятна. Не очень понятно куда нужно вставлять эти тексты и куда. С уважением Евгений Голубев.

Ответить

Admin Admin 07.05.2013 21:34:59

http://myrusakov.ru/php-how-study.html

Ответить

ganjar ganjar 20.09.2013 22:14:08

Простое решение мультиязычности - http://sli.su

Ответить

Knower Knower 01.10.2013 15:48:35

А как насчет СЕО? Будут эти файлы ini просканированны поисковиками как контент?

Ответить

Admin Admin 01.10.2013 21:05:38

Если сделать ссылки на различные языки, то всё будет проиндексировано.

Ответить

ilyadenisovid ilyadenisovid 18.10.2013 06:36:39

Михаил, вот у Google есть приложение для перевода текста прямо на сайте, например есть статья, она сразу же переводится при просьбе пользователя, это лучше, чем то, что у Вас?

Ответить

Admin Admin 18.10.2013 11:33:38

Перевод от Google ужасен, как и у любого другого автоматического переводчика.

Ответить

mihailow79 mihailow79 23.01.2014 13:52:29

Помогите пожалуйста сделать навигацию на этот код более 12 страниц т.е что-то типа этого (<< [Первая] < [Предыдущая] 1 2 3 4 5 6 7 8 9 10 [Следующая] > [Последняя] >>)сайт kulturanevel.ru <div align="center"> <p><a href="index.html" title="" class="стиль57">1 </a><a href="indexdek.html" title="" class="стиль57">2</a> <a href="indexnoyabr.html" title="" class="стиль57">3</a> <a href="indexokt.html" title="" class="стиль57">4</a> <a href="indexavg.html" title="" class="стиль57">5</a> <a href="indexiul.html" title="" class="стиль57">6</a> <a href="indexiun.html" title="" class="стиль57">7</a> <a href="index0.html" title="" class="стиль57">8</a> <a href="index1.html" title="" class="стиль57">9</a> <a href="index2.html" title="" class="стиль57">10</a> <a href="index3.html" title="" class="стиль57">11</a> <a href="index4.html" title="" class="стиль57">12</a></p> </div> ПОМОГИТЕ ПОЖАЛУЙСТА!

Ответить

tikkiwiki tikkiwiki 23.01.2014 14:01:56

Владимир, добрый день, на нашем сайте есть статья по данной тематике: http://myrusakov.ru/php-page-navigation.html

Ответить

mihailow79 mihailow79 23.01.2014 14:17:17

Можно ли в этот код вставить (ПЕРВАЯ) (ПРЕДЫДУЩАЯ) (СЛЕДУЮЩАЯ)(ПОСЛЕДНЯЯ) если будет к примеру 20 страниц, сможет ли этот код работать. (<< [Первая] < [Предыдущая] 1 2 3 4 5 6 7 8 9 10 [Следующая] > [Последняя] Сейчас там просто ссылки на странички.

Ответить

tikkiwiki tikkiwiki 31.01.2014 10:51:23

Владимир, нет конечно

Ответить

soul soul 23.09.2016 17:53:49

А есть что-то подобное для организации мультиязычности в JAVA скриптах? Например если скрипт выводит информацию или что-то запрашивает у пользователя, то это также должно быть на языке страницы. Можно конечно массив констант выводить в скрытом поле страницы, а скрипт будет вытаскивать нужные значения, но это грабли... Может есть более изящное решение

Ответить

FlixTheBro FlixTheBro 25.09.2016 19:22:05

Сделал всё как надо и добавил ссылку вида ?lang=en. При обновлении страницы всё нормально, но при переходе на другую устанавливается русский. Как избавиться от этого? Я даже буду согласен на постоянное отражение переменных в адресе типа mysite.ru/index.php?lang=en Так же проблема в том, что если не устанавливать значение GET параметра или перейти на url вида ?lang=god и любой другой не существующий, то весь текст на сайте пропадает совсем. Как установить язык по-умолчанию чтобы этого небыло? Помогите пожалуйста Может использовать куки?

Ответить

antonT39 antonT39 11.12.2016 23:06:47

FlixTheBro потому, что условие неправильное(он буде искать любое значение файла которое вводишь, а так как нету god.ini отсюда и пустой текст), надо ещё дописать && $_GET['lang']==en и в сессию занести значение и усе.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.