Забыли пароль?
Запросите новый здесь.

Автор темы: Rush
ID темы: 311
Информация:
Тема содержит 22 сообщения, была просмотрена 3496 раз.  Имеются прикрепленные файлы.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Моды
 Распечатать тему
PHP-Fusion MultiLocale Mod - Мультиязычность сайта
Rush
По просьбам общественности настрочил с утреца мод, позволяющий юзерам и гостям переключать языки на сайте без головной боли с поддоменами.

PHP-Fusion MultiLocale Mod 0.4

Принцип работы:
1) в первую очередь для юзверов создано поле user_locale содержащее установленное на данный значение языка. по умолчанию пустое
2) на юзеров и гостей вешается кукис locale со значением языка по умолчанию либо значением $userdata['user_locale'] если оно установлено
3) в maincore.php константа LOCALESET принимает значение $_COOKIE['locale']
4) в прилагающейся примитивной панельке представлен пример интерфейса переключения языка. Выбираем язык -> Go! -> post запрос -> для юзеров обновляем значение в бд и обновляем кукис, для гостей только кукис. -> редирект на FUSION_REQUEST, также переданный постом, т.е. на страницу откуда был сделан запрос. Есть возможность реализации на жиге. Обычный пост в бэкэнд, где меняется значение в бд и обновляется кука, а потом просто происходит обновление страницы (просто необходимо для смены языка). Так просто убирается переход на infusions/locale_panel/locale_panel.php и обратно. -2 перехода = - время. но это в to do
5) также в профиле можно аналогичным образом менять язык сайта

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

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

Да и чуть не забыл про недостатки:
1) Контент который не имеет локали, т.е. новости, навигация и т.д. не переводится
2) необходимо для английской локали в глобал.пхп кодировку ставить вин-1251, иначе как ни странно кракозябры от русских непереведенных буковок

UPDATE1 Добавлена панелька на аяксе
Rush присоединено следующее:файл:
locale_mod.rar [25.35кБ / 259 Загрузки]

Изменил(а) Rush, 22.12.2010 16:59
 
Web
jikaka
поддержка в любом случае нужна...
ты для какой версии делал?
при замене файлов выдает ошибки:
Notice: Use of undefined constant iMEMBER - assumed 'iMEMBER' in Z:\home\test-v701.ru\www\maincore.php on line 259
Notice: Undefined index: user_locale in Z:\home\test-v701.ru\www\maincore.php on line 263

в самой панеле такую:
Warning: Wrong parameter count for array_unshift() in Z:\home\test-v701.ru\www\infusions\locale_panel\locale_panel.php on line 23

 
Web
Rush
версия 7.01.02

это нотисы, ща включу отображение и зафикшу, хотя работает все прекрасно и с ними)
 
Web
jikaka
в профиле:
Warning: Wrong parameter count for array_unshift() in Z:\home\test-v701.ru\www\includes\user_fields\user_locale_include.php on line 25

 
Web
Rush
для начала установи поле языки в админке, тогда половина исчезнет
 
Web
Rush
обновил архив. array_unshift() - неудаленный пережиток от образца user_fields
 
Web
jikaka
все тоже самое, ушла только ошибка с user_locale
остальные присутствуют
 
Web
Rush
не тот архив залил, ща норм должно быть
 
Web
jikaka
сейчас вроде норм...
но как сделать так, чтобы не было столько ошибок при установке?
и как быть с остальным контентом, который остается на другом языке?
 
Web
Rush
уточняй о каких ошибках говоришь. слил файлы, заменил и все.
ошибки могут вылазить до того как проинсталишь поле. можно все это дело оформить в полноценный мод с админкой.

а по поводу контента. в любом случае он сам себя не переведет, значит необходимо при добавлении новостей, статей и т.д. делать поля для различных языков и писать по отдельности. при переключении будет выводится необходимый язык. но тут придется очень много изменять в файлах движка, так можно и новую сборку сделать)
 
Web
jikaka
это понятно...
а каким образом это реализовано на других движках?
 
Web
Rush
вот так:

d.imagehost.org/t/0368/1_12.jpg
d.imagehost.org/t/0598/2_16.jpg
 
Web
Rush
да как-то иначе и никак. можно писать контент только на общепринятом английском)
 
Web
jikaka
я так понимаю, такую переключалку можно сделать и в админке фьюжика? по аналогии с панелью, которую ты сделал...
 
Web
Rush
ну само собой. можно сделать так:

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

или просто нахрен переделать весь двиг, так проще будет.
 
Web
jikaka
ag
 
Web
Rush
или можно сделать еще проще.
просто к примеру при добавлении новости сделать возможность выбора языка к которому она относится

table fusion_news
news_id 100
news_news blabla
news_desc blbablabla

table i18n_items
item_id 1
item_real_id 100
item_type N (news)
etc.

Но тогда будет путаница с идешниками. Если к примеру читаешь новость и переключив язык видишь то же самое. Ну бред короче
 
Web
Rush
вот кстати в соседней теме неплохой пример привели
http://basti2web.de/news.html
тоже вешается кука user_language, только там уже реализован перевод новостей и т.д. В конкретном сайте это проще реализовать, типо как под себя чтоле, подогнал и все.
Изменил(а) Rush, 22.12.2010 20:10
 
Web
jikaka
да, там хороший пример...
надо будет потестить...
 
Web
Rush
скачал, поковырял, слабовато. на сайте явно другой стоит, т.к. там всего 3 строчки в маинкор.пхп добавлено и панелька) и для более старой версии фьюжна

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

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум: