- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Очень интересует, как лучше сделать несколько версий сайт. (английская, французская, русская...)
Возник вопрос по производительности, что лучше делать создавать страницу, а потом весь код сайта облачить в 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
но это дело творчества, и если действительно ресурсы занимает и если сайт большой