<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHP программист &#187; рабочие будни</title>
	<atom:link href="http://blog.xyz.net.ua/tag/%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d0%b5-%d0%b1%d1%83%d0%b4%d0%bd%d0%b8/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xyz.net.ua</link>
	<description>блог программиста</description>
	<lastBuildDate>Fri, 02 Dec 2011 10:45:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Автоматический выбор необходимой пользователю языковой версии сайта на PHP</title>
		<link>http://blog.xyz.net.ua/2011/01/10/php_select_user_language/</link>
		<comments>http://blog.xyz.net.ua/2011/01/10/php_select_user_language/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 17:32:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/?p=133</guid>
		<description><![CDATA[Сегодня появилась задача сделать для сайта, на котором используется интерфейс на двух языках, сделать автоматическое определение системного языка у пользователя. Чтобы пользователю сходу отдавать интерфейс на нужном ему языке. В связи с этим набросал туториал с примером этого функционала. Немного теории. Я выбрал самый простой вариант определения языка у пользователя (есть и сложные), но не [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня появилась задача сделать для сайта, на котором используется интерфейс на двух языках, сделать автоматическое определение системного языка у пользователя. Чтобы пользователю сходу отдавать интерфейс на нужном ему языке.<br />
В связи с этим набросал туториал с примером этого функционала.</p>
<p><span id="more-133"></span></p>
<p><strong>Немного теории.</strong></p>
<p>Я выбрал самый простой вариант определения языка у пользователя (есть и сложные), но не самый надежный (хотя абсолютно надежных вариантов не существует).<br />
У каждого браузера есть поддержка локализаций (это то, на каком языке интерфейс браузера у вас). У FireFox локализация выставляется в меню &laquo;Инструменты-&gt;Дополнения-&gt;Локализации&raquo;, в Opera в меню &laquo;Настройки-&gt;Общие настройки-&gt;Основные-&gt;Язык&raquo;, в остальных ищите сами. Так вот наша задача узнать какой язык выставлен у пользователя, и согласно этому языку отдавать необходимую версию сайта.<br />
У себя я сделал так, что если у пользователя выставлена русская, украинская или белорусская локализация, то отдавать ему русскую версию сайта, в противном случае отдавать английскую. Значение локализации браузера хранится в строке <strong>$_SERVER["HTTP_ACCEPT_LANGUAGE"]</strong>, эту строку мы и будем проверять (учтите, что в этой строке через запятую могут быть указаны разные локализации, нам же важно только самое первое значение &#8212; оно имеет высший приоритет). Но проверять значение этой строки мало, могут быть ситуации, когда пользователю надо другую языковую версию сайта, например, он иностранец, сидящий в русском интернет кафе, и ему нужна англоязычная версия сайта, не смотря на русскую локализацию браузера. Этому пользователю при первой загрузке отдаем версию согласно его локализации, но далее, если он вручную на сайте выберет другую, более приемлемую ему версию сайта, то надо его выбор запомнить, и больше не навязывать ему то, от чего он ушел. Поэтому выбор пользователя мы будем сохранять в куках при помощи <strong>setcookie();</strong> и далее проверять не сохранен ли выбор пользовательских языковых предпочтений в куках, если сохранен, то отдавать ему согласно его предпочтений до тех пор, пока эти предпочтения не поменяются.</p>
<p><strong>А теперь практика.</strong></p>
<p>Если теория ясна, то написать код не составит проблем, но для примера делюсь своим вариантом с комментариями.</p>
<p><code>{code type=PHP}<br />
// действие с проверкой языка и установкой куки языка проводим только на странице index.php<br />
if (strpos($_SERVER["REQUEST_URI"], "/index.php") or (substr($_SERVER["REQUEST_URI"], -1)  == "/")) {</p>
<p>	// если вход произведен без указания языка<br />
	if (!$_GET['lang']) {</p>
<p>		// то проверяем, может язык указан в куках, если нет, то то смотрим локализацию браузера<br />
		if (!$_COOKIE['lang']) {</p>
<p>			$b_lang = explode(",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);</p>
<p>			// если локализация русская или украинская или белорусская, то считаем, что пользователю необходимо отдавать русскую версию сайта.<br />
			if (($b_lang[0] == "ru") or ($b_lang[0] == "be") or ($b_lang[0] == "ru-UA")) $lang = "rus";</p>
<p>			// при всех остальных локализациях отдаем английскую версию<br />
			else $lang = "eng";</p>
<p>		}</p>
<p>		// если язык уже указан в куках, то его и используем в системе<br />
		else $lang = $_COOKIE['lang'];<br />
	}</p>
<p>	// если страница запрошена с указанием языка, то этот язык и используем в системе, и запоминаем его в куку<br />
	else {<br />
		$lang = $_GET['lang'];<br />
		setcookie("lang", $lang, time()+30758400, "/");<br />
	}</p>
<p>}<br />
{/code}</code></p>
<p>На выходе в переменной <strong>$lang</strong> получаем рабочее значение языка &#8212; <strong>rus</strong> или <strong>eng</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2011/01/10/php_select_user_language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>сайт Crimea GP</title>
		<link>http://blog.xyz.net.ua/2010/04/15/crimea-grand-prix/</link>
		<comments>http://blog.xyz.net.ua/2010/04/15/crimea-grand-prix/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 08:22:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Текущая работа]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/?p=103</guid>
		<description><![CDATA[На прошлой неделе запустили новый проект. Это сайт крымской мото-трассы Crimea GP. Серверная часть: PHP, mySQL. Клиентская: XHTML, CSS, jQuery.]]></description>
			<content:encoded><![CDATA[<p>На прошлой неделе запустили новый проект. Это сайт крымской мото-трассы <a href="http://www.crimeagp.com" target="_blank">Crimea GP</a>.</p>
<p><a href="http://blog.xyz.net.ua/wp-content/uploads/2010/04/screen.jpg"><img src="http://blog.xyz.net.ua/wp-content/uploads/2010/04/screen-182x300.jpg" alt="" title="screen" width="182" height="300" class="aligncenter size-medium wp-image-104" /></a></p>
<p>Серверная часть: PHP, mySQL.<br />
Клиентская: XHTML, CSS, jQuery.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2010/04/15/crimea-grand-prix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu</title>
		<link>http://blog.xyz.net.ua/2009/10/19/ubuntu/</link>
		<comments>http://blog.xyz.net.ua/2009/10/19/ubuntu/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 08:50:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/?p=68</guid>
		<description><![CDATA[После недолгих колебаний решил снова вернуться на Ubuntu linux. Пользовался им несколько лет назад, когда не было безлимитного интерента, и тогда это было конкретным мучением, приходилось тяжелые пакеты или искать на дисках, или же обходиться без них. Сейчас с безлимиткой &#8212; это совсем другое дело.]]></description>
			<content:encoded><![CDATA[<p>После недолгих колебаний решил снова вернуться на Ubuntu linux. Пользовался им несколько лет назад, когда не было безлимитного интерента, и тогда это было конкретным мучением, приходилось тяжелые пакеты или искать на дисках, или же обходиться без них.<br />
Сейчас с безлимиткой &#8212; это совсем другое дело. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2009/10/19/ubuntu/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>getfreunde.de</title>
		<link>http://blog.xyz.net.ua/2009/09/11/getfreunde-de/</link>
		<comments>http://blog.xyz.net.ua/2009/09/11/getfreunde-de/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 09:06:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Текущая работа]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/?p=48</guid>
		<description><![CDATA[Отверстал целую серию макетов для сайта getfreunde.de Теперь постепенно эти макеты внедряются на сайте. Оригинальные макеты верстки есть тут: 1 2 3 4 5 и т.д.]]></description>
			<content:encoded><![CDATA[<p>Отверстал целую серию макетов для сайта <a href="http://getfreunde.de" target="_blank">getfreunde.de</a></p>
<p><img class="aligncenter size-full wp-image-49" title="getfreunde" src="http://blog.xyz.net.ua/wp-content/uploads/2009/09/f_4a70a9dee4f6d.jpg" alt="getfreunde" width="300" height="375" /></p>
<p>Теперь постепенно эти макеты внедряются на сайте. Оригинальные макеты верстки есть тут: <a href="http://portfolio.xyz.net.ua/getfreunde/" target="_blank">1</a> <a href="http://portfolio.xyz.net.ua/getfreunde/page_1.html" target="_blank">2</a> <a href="http://portfolio.xyz.net.ua/getfreunde/page_2.html" target="_blank">3</a> <a href="http://portfolio.xyz.net.ua/getfreunde/page_3.html" target="_blank">4</a> <a href="http://portfolio.xyz.net.ua/getfreunde/index_logon.html" target="_blank">5</a> и т.д.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2009/09/11/getfreunde-de/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CruClub</title>
		<link>http://blog.xyz.net.ua/2009/09/11/cruclub/</link>
		<comments>http://blog.xyz.net.ua/2009/09/11/cruclub/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 08:55:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Текущая работа]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/?p=43</guid>
		<description><![CDATA[Сверстал новый макет для сайта cruclub: Рабочий макет верстки пока что лежит тут: http://portfolio.xyz.net.ua/cruclub]]></description>
			<content:encoded><![CDATA[<p>Сверстал новый макет для сайта cruclub:</p>
<p><img class="aligncenter size-full wp-image-44" title="cruclub_2" src="http://blog.xyz.net.ua/wp-content/uploads/2009/09/cruclub_2.jpg" alt="cruclub_2" width="300" height="348" /></p>
<p>Рабочий макет верстки пока что лежит тут: <a href="http://portfolio.xyz.net.ua/cruclub" target="_blank">http://portfolio.xyz.net.ua/cruclub</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2009/09/11/cruclub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ponyal.ru</title>
		<link>http://blog.xyz.net.ua/2009/05/07/ponyalru/</link>
		<comments>http://blog.xyz.net.ua/2009/05/07/ponyalru/#comments</comments>
		<pubDate>Thu, 07 May 2009 06:14:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Текущая работа]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/?p=30</guid>
		<description><![CDATA[Сверстал два маленьких сайтика ponyal.ru и ponyala.ru.]]></description>
			<content:encoded><![CDATA[<p>Сверстал два маленьких сайтика <a href="http://www.ponyal.ru" target=_blank>ponyal.ru</a> и <a href="http://www.ponyala.ru" target=_blank>ponyala.ru</a>.</p>
<p><a href="http://www.ponyal.ru" target=_blank><img src="http://blog.xyz.net.ua/wp-content/uploads/2009/05/ponyal.jpg" alt="ponyal" title="ponyal" width="300" height="326" class="aligncenter size-full wp-image-32" /></a></p>
<p><a href="http://www.ponyala.ru" target=_blank><img src="http://blog.xyz.net.ua/wp-content/uploads/2009/05/ponyala.jpg" alt="ponyala" title="ponyala" width="300" height="315" class="aligncenter size-full wp-image-31" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2009/05/07/ponyalru/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CAMC</title>
		<link>http://blog.xyz.net.ua/2009/05/06/camc/</link>
		<comments>http://blog.xyz.net.ua/2009/05/06/camc/#comments</comments>
		<pubDate>Wed, 06 May 2009 12:28:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Текущая работа]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/?p=13</guid>
		<description><![CDATA[Еще одна работа этой недели. www.moderntruck.com.ua. Переверстаны некоторые части, на внтуренних страницах добавил пролистывание изображений в шапке. Делалось это посредством изменения alpha(opacity) между слоями (об этом скоро выйдет небольшой туториал)]]></description>
			<content:encoded><![CDATA[<p>Еще одна работа этой недели. <a href="http://moderntruck.com.ua" target=_blank>www.moderntruck.com.ua</A>.<br />
Переверстаны некоторые части, на внтуренних страницах добавил пролистывание изображений в шапке. Делалось это посредством изменения alpha(opacity) между слоями (об этом скоро выйдет небольшой туториал)</p>
<p><a href="http://www.moderntruck.com.ua" target=_blank><img src="http://blog.xyz.net.ua/wp-content/uploads/2009/05/camc.jpg" alt="camc" title="camc" width="300" height="466" class="aligncenter size-full wp-image-14" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2009/05/06/camc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stimmen</title>
		<link>http://blog.xyz.net.ua/2009/05/06/stimmen/</link>
		<comments>http://blog.xyz.net.ua/2009/05/06/stimmen/#comments</comments>
		<pubDate>Wed, 06 May 2009 12:23:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Текущая работа]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/2009/05/06/stimmen/</guid>
		<description><![CDATA[Сдал на этой неделе. Сайт для небольшой испанской студии. Их дизайн, моя верстка и движок. Использовалось: jQuery, mod_rewrite, iepngfix, ну и всё остальное из стандартного набора.]]></description>
			<content:encoded><![CDATA[<p>Сдал на этой неделе.<br />
Сайт для небольшой испанской студии. Их дизайн, моя верстка и движок.<br />
Использовалось: jQuery, mod_rewrite, iepngfix, ну и всё остальное из стандартного набора.</p>
<p><a href="http://www.stimmendiestimmen.com/index.php"><img src="http://blog.xyz.net.ua/wp-content/uploads/2009/05/stimmen.jpg" alt="stimmen" title="stimmen" width="300" height="251" class="aligncenter size-full wp-image-10" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2009/05/06/stimmen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Христианская галерея</title>
		<link>http://blog.xyz.net.ua/2009/05/06/hristianskaya-galereya/</link>
		<comments>http://blog.xyz.net.ua/2009/05/06/hristianskaya-galereya/#comments</comments>
		<pubDate>Wed, 06 May 2009 08:11:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Текущая работа]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://blog.xyz.net.ua/2009/05/06/hristianskaya-galereya/</guid>
		<description><![CDATA[На этой недели дошли руки до того, чтобы немного переписать движок для сайта c-gallery.org.ua Переделал галерею, новая юзает jQuery + lightbox.]]></description>
			<content:encoded><![CDATA[<p>На этой недели дошли руки до того, чтобы немного переписать движок для сайта <a href="http://c-gallery.org.ua" target="_blank">c-gallery.org.ua</a><br />
Переделал галерею, новая юзает jQuery + lightbox.</p>
<p><a href="http://c-gallery.org.ua"><img src="http://blog.xyz.net.ua/wp-content/uploads/2009/05/c-gallery.jpg" alt="Христианская галерея" title="Христианская галерея" width="300" height="220" class="size-full wp-image-4" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xyz.net.ua/2009/05/06/hristianskaya-galereya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

