<MyRusakov.ru />

Написание лайфхаков на Python

Написание лайфхаков на Python

Данный курс научит Вас автоматизировать самые разные задачи на языке Python, благодаря чему Вы сэкономите на рутине тысячи и тысячи часов своей жизни. Курс состоит из 20 примеров в различных областях: файлы и директории, медиа-файлы, Интернет, Web-мастеринг, Unreal Engine. Каждый пример упрощает ту или иную задачу в своей области, при этом каждый из них создаётся прямо на Ваших глазах и тщательно комментируется.

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

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

Подпишитесь на мой канал на 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 и в сессию занести значение и усе.

Ответить

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