- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Очень интересует, как лучше сделать несколько версий сайт. (английская, французская, русская...)
Возник вопрос по производительности, что лучше делать создавать страницу, а потом весь код сайта облачить в ob_start, затем в переменную и в конце использовать str_raplace($lang[%], $lang['ru'], $site); по базе типа:
$lang['%'][] = '%slovo1%';
$lang['ru'] = 'слово1';
$lang['en'] = 'word1';
$lang['%'][] = '%slovo1%';
$lang['ru'] = 'слово1';
$lang['en'] = 'word1';
а в самом документе просто например писать так %privetstvie%, %opisanie%
ИЛИ лучше сделать функцию, типа
function lang($s) {
globals $multi;
$r['slovo1']['ru'] = 'slovo1';
$r['slovo1']['en'] = 'slovo1';
$r['slovo2']['ru'] = 'slovo2';
$r['slovo2']['en'] = 'slovo2';
return $r[$s][$multi];
}
и вызывать функцию в самом php документе, echo $lang('slovo1');
насчёт выигрышности, str_replace возможно выигрывает, ну можно в конце ещё потом пробелы лишние удалить, табы и другой мусор, который только для удобства программиста, так же мне удобнее это так как использую memcache. А вот насчёт производительности, это ведь получает функция будет оббегать весь документ при каждом запросе пользователя.
Очень волнует вопрос производительности, прошу помочь.
Сайт посещают около 40-50тыс хостов/день.
Сделайте шаблонизатор и кеширование.
А так, устройте замеры с str_replace и без, и сравните результаты.
Шаблонизатор считаю не нужным.
Для кеширования использую memcache.
Насчёт замеров понятно, т.е. ответа конкретно сразу здесь не известно?
я придумал такой вариант:
если этих значений $word[34] = 'вперёд'; будет порядка 2000 и текст будет занимать порядка 2-10Мб то это будет не красиво??
можно сделать, например, для каждой страниц файлы (всего страниц 30-50)
show.tpl.php
скриптом обновлять...
cделать таблицу с id и data
этот массив сериализировать в json и поставить в data с id который соответсвует show.tpl
а запрос минималистический будет
десериализируем с json в php
php не будет тратить лишние ресурсы постоянно на инициализацию этого массива (если он не маленький), а будет все время очень быстро десериализовать
1) $array в smatry отправляется
2) или $from_db_json прямо на станицу в js и там распарсить
Я не использую шаблонизатор.
Текст в переменных будет не большой, там больше всего будут заголовки, краткие описания чего-либо.
Тематика сайта музыка, поэтому много чего-то там переводить не нужно, а вот комментарии или биографии, они будут уже доставаться из базы с пометкой для определенного языка.
Что значит будет оббегать весь документ? Вы фигачите всё в буфер и потом находите подстроку и меняете ее? :) Ну это бред полный. Сами же сказали, что у вас только меню и прочие элементы будут переведены.
Если у вас целиком сайт многоязычный, тогда вот вам:
http://www.debian.org/doc/manuals/intro-i18n/
http://en.wikipedia.org/wiki/Internationalization_and_localization
http://www.gnu.org/software/gettext/
http://php.net/manual/en/book.gettext.php
:-D
Только вот этих переменных ведь будет многовато, как минимум сотня, вот мне и интересно, что будет лучше, заносить всю страницу в буфер а потом str_replace или переменными доставать, там где это необходимо.
я делаю так:
3 файла с названиями ru.php en.php ua.php в каждом файле массив вида
$_LANG=array(
'title'=>'ololo',
'text'=>'ololo'
);
далее в зависимости от языка который в сессии тащится
include 'ololo/'.$_SESSION['lang'].'.php';
дальше echo $_LANG['title']
Только вот этих переменных ведь будет многовато, как минимум сотня, вот мне и интересно, что будет лучше, заносить всю страницу в буфер а потом str_replace или переменными доставать, там где это необходимо.
А там где это не необходимо, вы будете специальную разметку делать мол это слово не пререводим? :) Пример:
"На этом сайте находится информация о новых автомобилях".
У вас есть на сайте в конфиге переводов $['lang']['en']['информация'] = 'information';
Что вы получите после str_replace?
"На этом сайте находится information о новых автомобилях".
А изначально предполагалось, что будет переводиться только пункт меню "Информация".
Юрать из буфера и прогонять через str_replace - очень криво. Хотите перевести меню и прочией "стандартные" вещи на вашем сайте - используйте описанный мной способ. Хотите полную англо-франко-русскоязычную версию - переводите каждый декст, смотрите в зависимости от страны/сессионной куки какой язык используется и отдавайте пользователю текст.
а не проще и эту инфу загнать в БД? И из нее уже дергать нужный язык и подставлять.
К примеру создать таблицы:
en_text
ru_text
ua_text
и вписать туда всё... да хоть через "|". Потом наряду со всей информацией дергать текст из БД, дробить через explode и подставлять просто нужный элемент массива.
Перечитал, в общем похоже на решение ТС, только не на файлах
если сайт большой, и если текст на сайте занимает окло 10М + еще англйиский 10М всего 20М
хранит это в памяти, разве красиво? (судя по пописанию темы автором "производительность")
можно поставить в таблицу каждую страниц...
ну и можно в виде json поставить
отправлять этот json (структуру(ы)) на клиент и там на js распарсить, чтобы не тратить ресурсы щаблонизатора или php скрипта (если без шалонизатора) ...
или еще можно memchache
но это дело творчества, и если действительно ресурсы занимает и если сайт большой