|
|
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."
|