Регистрация
Вход через соцсети
Восстановление пароля

Английская версия сайта.

Новый топик
Страницы: 1  |  2
13.03.2007, 20:11
Ответить | Цитировать
zhilin
Жилин А.С.

Зарегистрирован:
2007-02-14
Сообщений: 108

Подскажите как лучше реализовать енг-версию, чтобы не создавать отдельный сайт для него. Желательно чтобы за одно редактирование заполнять и русские поля, и английские.
Поля создал, но как теперь выводить их на англ.версии, и сделать ссылки между ними, чтобы на любой странице можно было получать ее перевод одним кликом, и при этом иметь возможность остаться в этом языке.
13.03.2007, 20:42
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Возможен вариант - создай в сессии переменную которая будет отвечать за язык, и при выборе поля выбирай типа ${"f_" . $lang . "_Title"} и в шаблоне поля $f_Eng_Title и $f_Rus_Title а $lang должна быть или Eng или Rus

Но тут сразу будут грабли с индексацией поисковиками. Какой то язык не будет индексирован.


Вариант 2 примерно тоже самое но без сессии а везде передавать параметр ?lang=Rus например....


А вообще тема интересная, давай-те дискутировать!

Неткат - это просто!!!
14.03.2007, 11:53
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

ко всем ссылкам добавьте конструкцию
".opt($lang,opt_case($admin_mode,"&","?")."lang=en")."

если $lang остутствует, значит выводить русскую версию
если присутствует то выводить английскую
14.03.2007, 15:03
Ответить | Цитировать
zhilin
Жилин А.С.

Зарегистрирован:
2007-02-14
Сообщений: 108

h/z - замечательно. Теперь "?lang=en" передается всегда.
А как теперь выводить нужные поля, и можно ли сделать проверку на заполнение английских полей, и если они не заполнены - выводить ссылку на главную английскую сраницу.
14.03.2007, 15:47
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

ссылка переключения на русский
?".str_replace("lang=en","",$_SERVER["QUERY_STRING"])."

в шаблонах настройте вывод соответствующих языку полей
".opt_case($lang,$f_английское_поле,$f_русское_поле)."

".opt($lang && !$f_важное_английское_поле,"ваше предупреждение и ссылка")."
14.03.2007, 16:37
Ответить | Цитировать
zhilin
Жилин А.С.

Зарегистрирован:
2007-02-14
Сообщений: 108

Спасибо. Почти вышло. Возникла новая проблема - как перевести на английский формируемое меню
14.03.2007, 18:53
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

вы можете писать php код в макетах дизайна в поле для задания шаблонов навигации ..
просто укажите
if($lang){
одно содержимое макетов
}else{
другой макет для вывода меню
}

создайте в системных таблицах дополнительные поле "Английское название" для разделов
15.03.2007, 11:45
Ответить | Цитировать
zhilin
Жилин А.С.

Зарегистрирован:
2007-02-14
Сообщений: 108

А можно по-другому реализовать переключение на рус.версию?
Код:
?".str_replace("lang=en","",$_SERVER["QUERY_STRING"])."
- дает ссылку domen.ru/demo/demo.html?
Это работает, но криво - по сути это еще одна страница дублирующая урл без "?".
Как можно чисто отделить "domen.ru/demo/demo.html" от "domen.ru/demo/demo.html?lang=en"
15.03.2007, 12:15
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

".$current_sub[Hidden_URL].$current_cc[EnglishName].".html".opt(strlen(str_replace("lang=en","",$_SERVER["QUERY_STRING"]))>0,"?".str_replace("lang=en","",$_SERVER["QUERY_STRING"]))."

$_SERVER["QUERY_STRING"] - нужна чтобы:
1) в админке работало
2) листинги страниц работали
15.03.2007, 13:24
Ответить | Цитировать
zhilin
Жилин А.С.

Зарегистрирован:
2007-02-14
Сообщений: 108

Неправильно работает. На такой странице
http://www.domen.ru/demo/?lang=en
выводит такую ссылку
http://www.domen.ru/demo/demo.html
15.03.2007, 14:41
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

zhilin писал(а):
Неправильно работает.

я всего лишь отвечаю на ваши вопросы
zhilin писал(а):
Как можно чисто отделить "domen.ru/demo/demo.html" от "domen.ru/demo/demo.html?lang=en"


чтобы немного облегчить верстку макетов и прописывание ссылок
добавьте в настройки макета
Код:
$some_query_str = str_replace("lang=en","",$GLOBALS[parsed_url][query]);
$some_query_str = ( strlen($some_query_str)>0 && $some_query_str{0}!="&" ? "&".$some_query_str : $some_query_str );

//$GLOBALS[parsed_url][query] - содержит обработанную QUERY_STRING, после мод-рерайта и 404 ошибки
// если после удаления из QUERY_STRING строки с языком, QUERY_STRING все еще что-то содержит, то это "кое-что" будем передавать после "?"


переключение на русский:
Код:
".$current_sub[Hidden_URL].opt($cc_array[0] != $current_cc[Sub_Class_ID],$current_cc[EnglishName].".html").opt(strlen($some_query_str)>0,"?".$some_query_str)."


комментарии по порядку
$current_sub[Hidden_URL]
текущий урл, домен и папки

".opt($cc_array[0] != $current_cc[Sub_Class_ID],$current_cc[EnglishName].".html")."
если текущий шаблон является не первым в списке подключенных шаблонов (чаще всего шаблон только один подключен), то надо ссылаться к нему через keyword и html

opt(strlen($some_query_str)>0,"?".$some_query_str)
если после удаления из QUERY_STRING строки с языком, QUERY_STRING все еще что-то содержит, то это "кое-что" передадим дальше после символа "?"

переключение на английский:
Код:
?lang=en".$some_query_str."


это тоже поправьте чтобы не плодить lang=en в админке или на листингах страниц
ко всем ссылкам добавьте конструкцию:
Код:
".opt($lang,"?lang=en".$some_query_str."
198 196 2009-04-17 12:41:04 8909
Страницы: 1  |  2
Описание проекта