Многоязычность ?

#
Re: Многоязычность ?
Spidertm писал(а):
как сделать тогда что бы половина из них была в меня русском, половина в английском сайте?
- никак. Понимаете, если вы организуете такую структуру, при которой все разделы на английском языке располагаются под разделом 12345.com/en/(например, 12345.com/en/news_eng/, 12345.com/en/about_eng/), а все разделы на русском - внутри раздела 12345.com/ru/(например, 12345.com/ru/news/, 12345.com/ru/about/), то все это делается в рамках ОДНОГО сайта на одной системе управления. Ведь домен у вас остается один и тот же - 12345.com - что для англоязычных разделов, что для русскоязычных. А указать один домен для разных сайтов в системе нельзя. Тем более нельзя для разных сайтов в системе указать в качестве их доменов подразделы одного из сайтов, например 12345.com/en/ или 12345.com/ru/.
Spidertm писал(а):
раздел у меня допустим русский так и будет, а англ нужно добавить /en создаю, в структуре  сайта, как мне привязать это к отдельному сайту
- повторюсь: такой возможности нет. Все это создается в структуре одного сайта.
Spidertm писал(а):
что бы карта сайта была отдельная для каждого из них
- при показе карты сайта методом ShowStructure в него можно передать параметр - идентификатор родительского раздела сайта, для которого будет построено меню.


#
Re: Re: Многоязычность ?
я понимаю. что то, что мне нужно организовать можно на двух системах и поддоменах, вид такой может не понравиться заказчику, весь вопрос в этом, а так самое простое решение конечно это поддомен
#
Re: Многоязычность ?
Spidertm писал(а):
организовать можно на двух системах
Да откуда вы ДВЕ системы взяли?
Повторяю еще раз - система нужна ОДНА!
И устанавливать ее тоже надо только ОДИН раз. В ту папку, которая является корневой для основного домена, например site.ru
А чтобы создать английскую версию вам нужно сделать следующее:
1. Создать поддомен en.site.ru который будет синонимом (алиасом) для site.ru и будет направлен на ту же папку, куда направлен домен site.ru
2. Создать в системе второй сайт, и указать для него доменом en.site.ru и получить для этого домена ключ.

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

Ну а на каждом сайте вы создаете свою структуру, инфосистемы, магазины и т.п. И все.
Заказов не беру. Консультирую редко.
#
Re: Многоязычность ?
а с пользователями как быть? многоязычность обычно не подразумевает разных пользователей сайта
получается нужно как то целиком копировать пользователей, писать регистрацию сразу во все базы...изменение данных и прочие операции...
#
Re: Многоязычность ?
h4mpy писал(а):
а с пользователями как быть? многоязычность обычно не подразумевает разных пользователей сайта
- если нужны одни и те же пользователи на разных сайтах в рамках одного экземпляра системы управления, то это можно реализовать программно. Для этого нужно переделать коды настроек типовых динамически страниц "Пользователи сайта" и "Интернет-магазин корзина". В них проверку возможности пользователя быть авторизованным осуществляет метод ValidUser класса SiteUsers. Сейчас в него при вызове не передается идентификатор сайта. В этом случае в коде этого метода проверяется принадлежность пользователя, запросившего авторизацию, текущему сайту. Если у вас на сайте будут пытаться авторизоваться пользователи, принадлежащие другим сайтам на системе, то они эту проверку не пройдут. И пользователи не смогут авторизоваться. Поэтому вам нужно заменить вызов этого метода на несколько его вызовов(по числу сайтов на вашей системе, у которых пользователи будут общими), и в каждый из этих вызовов обязательно передать идентификатор очередного сайта. Чтобы какая-нибудь из проверок сработала, и пользователь авторизовался на сайте.
#
Re: Многоязычность ?
так что с мультиязычностью?
я так понял для русской и английской версии надо использовать домен и поддомен
site.ru
en.site.ru
создать домен на хостинге не проблема
а где описан процес подключения и обслуживания такого сайта?
как будут языки переключаться?
хотелось бы увидеть несколько примеров реализации для анализа этих примеров с точки зрения продвижения, индексации, удобства в конце концов
#
Re: Многоязычность ?
так что с мультиязычностью?
я так понял для русской и английской версии надо использовать домен и поддомен
site.ru
en.site.ru
создать домен на хостинге не проблема
а где описан процес подключения и обслуживания такого сайта?
как будут языки переключаться?
хотелось бы увидеть несколько примеров реализации для анализа этих примеров с точки зрения продвижения, индексации, удобства в конце концов
#
Re: Многоязычность ?
люди, я конечно все понимаю, но зачем такие сложности?????
разные папки, разние версии сайта, мучения с переносом с одного сайта на другой...
чем вам возможности jQuery не устроили???

делов то - вывести куда нить кнопки с выбором языка, при первичной загрузке сайта вывести модальное окно, где человек сам выберет нужный ему язык (результат тем же jQuery засовываем в кукисы для дальнейшей работы), далее рассовываем по дивам с определенными классами на ваш выбор.. по умолчанию в css эти блоки позиционируем как релатив и делаем скрытыми... затем в тело хтмл добавляем простенький скрипт того же jQuery, которыйпосмотрит есть ли переменная языка, выбранная пользователем в кукисах, и если есть - выставит соответствующим дивам display:block (по умолчанию все блоки с текстами имеют display:none)... тут главное обработку засунуть именно в $(document).ready() а не в $(document).onload(), так как второй отрабатывается после ПОЛНОЙ загрузки документа со всеми картинками, видео и прочим тяжеловесным контентом... а вот первая (ready) отрабатывается когда уже загрузится дерево DOM, а вот картинки еще даже и не начали загружаться... в итоге у нас уже есть полная структура с которой мы уже и можем работать...

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

чуть позже на тестовом сервере повешу халяву, прикручу то что писал выше и поделюсь ссылкой если кому нужно..
#
Re: Многоязычность ?
ну вот, на скорую руку набросал (сейчас БЕЗ кукисов, посему после перезагрузки сбрасывается на русский язык... он же стоит по умолчанию на загрузку (кукисы не прицепил))..

итак, что мы имеем?
по ссылке http://medzhitovas.ru/news/qwerty/ выводится документ имеющий следующую структуру:
<div class="ru">HostCMS v. 5&nbsp;&mdash; удобная современная система управления сайтами. Управление сайтом, корректировка новостей, пресс-релизов производится с&nbsp;использование интуитивно-понятного интерфейса. Управлять сайтом очень просто&nbsp;&mdash; перейдите в&nbsp;центр администрирования и&nbsp;авторизируйтесь с&nbsp;использованием следующих данных: Пользователь: admin, Пароль: admin</div>
<div class="eng">HostCMS v. 5&nbsp;&mdash; comfortable modern content management system. Site management, updating news, press releases produced with the use of an intuitive interface. Manage your site very simple&nbsp;&mdash; go to the Administration Center and authorize using the following data: User: admin, password: admin</div>

как видите у нас по разным блокам раскидан один и тот же текст, но предназначающийся для разных языковых версий сайта.. в данном случае русская версия и английская... можно хоть десяток языковых версий для сайта сделать... это текст и он много трафика не сожрет...
далее идем в макет и немного правим его... а именно сразу под открывающимся тегом body вставляю такой код (он реализует вывод кнопок переключения языков):
<div style="position:fixed; top:0px; left: 50%;">
<input class="button" type="button" id="btn_ru" value="RU"><input class="button" type="button" id="btn_eng" value="ENG">
</div>

в итоге имеем следующее: две кнопки RU и ENG, по нажатию на которые должна меняться языковая версия сайта... (вы их можете у себя распологать где угодно и как угодно, у меня они вообще без дизайна и просто прикреплены к топу страницы.. сейчас ведь показываю только принцип)..

осталось сделать только одно - прикрутить код обрабатывающий все это:
<script type="text/javascript">
$(document).ready(function(){
   $("#btn_ru").click(function () {   
      $(".eng").css("display","none");
      $(".ru").css("display","block");
              
   });

   $("#btn_eng").click(function () {   
      $(".ru").css("display","none");
      $(".eng").css("display","block");
              
    });

  $(".ru").css("display","block");
   
});
</script>


тут все просто... при нажатии на кнопку RU мы скрываем блок с английским текстом и визуализируем блок с текстом русским.. при нажатии на ENG делаем наоборот.... ну и строкой
$(".ru").css("display","block");

задаем отображать русский блок по умолчанию...

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

далее его, скрипт, можно развивать и дальше - смена текста меню в зависимости от языка и прочее прочее прочее...
#
Re: Многоязычность ?
кстати можно и совсем без кукисов обойтись... и оставить определение языка за браузером... пусть сам смотрит какой язык стоит у человека и на основании этого делает выбор...

к примеру если модифицировать код, вместо
<script type="text/javascript">
$(document).ready(function(){
   $("#btn_ru").click(function () {  
      $(".eng").css("display","none");
      $(".ru").css("display","block");
              
   });

   $("#btn_eng").click(function () {  
      $(".ru").css("display","none");
      $(".eng").css("display","block");
              
    });

  $(".ru").css("display","block");
  
});
</script>

выставить
<script type="text/javascript">
$(document).ready(function(){

var lang = (navigator.language || navigator.systemLanguage || navigator.userLanguage).substr(0, 2).toLowerCase();

if (lang != 'ru') {
                $(".ru").css("display","none");
      $(".eng").css("display","block");
}
if (lang = 'ru') {
                $(".eng").css("display","none");
      $(".ru").css("display","block");
}

   $("#btn_ru").click(function () {   
      $(".eng").css("display","none");
      $(".ru").css("display","block");
              
   });

   $("#btn_eng").click(function () {   
      $(".ru").css("display","none");
      $(".eng").css("display","block");
    });
});
</script>


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

с ними я уже позже покажу как делается
Авторизация