Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Мультиязычность на сайте
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Мультиязычность на сайте

Страниц (2): [1] 2 »
 

1. leon1993 - 01 Июня, 2011 - 12:26:04 - перейти к сообщению
Привет всем, программисты. Посоветуйте что нибудь, как можно организовать многоязычность на сайте с помощью php&mysql напримере 2-х языков английского и русского
2. dropoff - 01 Июня, 2011 - 12:32:16 - перейти к сообщению
что именно будет на разных языках? контет или контент и шаблон?
готового решения вы не получите. Так как под каждый скрипт нужно свое писать. Индивидуальная тема достаточно.
Как вариант только советы по организации этого всего.
3. vlados - 01 Июня, 2011 - 12:54:05 - перейти к сообщению
Раньше можно было это сделать с гугл транслейт апи, но его к концу года закроют Меланхолия
А так тупо создай две таблицы одна с русским друга с иностранным контентом.
4. leon1993 - 01 Июня, 2011 - 12:57:11 - перейти к сообщению
dropoff пишет:
контет или контент и шаблон?
как бы и то и то на английском
(Добавление)
dropoff пишет:
Как вариант только советы по организации этого всего.
вот как раз бы и хотелось именно про организацию всего этого что нибудь получить
5. OrmaJever - 01 Июня, 2011 - 13:19:06 - перейти к сообщению
mysql сюда запрегать не нужно, это уменьшит скорость работы.
Создать папку lang в неё ложить файлы с языками
ru.php
Спойлер (Отобразить)

eng.php
Спойлер (Отобразить)

Зачем создать файл для выбора языка (например lang.php)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. switch($_GET['lang']) :
  3.    default: include('lang/ru.php'); break;
  4.    case 'ru': include('lang/ru.php'); break;
  5.    case 'eng': include('lang/eng.php'); break;
  6. endswitch;
  7. ?>

Ну и например в индексе
Спойлер (Отобразить)

index.php?lang=ru
index.php?lang=eng

Так же можно переделать под cookie, сесии и тд.
6. vlados - 01 Июня, 2011 - 13:19:18 - перейти к сообщению
leon1993 тупо создай две таблицы одна с русским друга с иностранным контентом.
7. dropoff - 01 Июня, 2011 - 13:23:37 - перейти к сообщению
для шаблона конечно файлы языковые.
А для контента, писать дефолтный язык в сессию и при выборке контента из базу уже по сессии определять что там юзер выбрал за язык.
8. leon1993 - 01 Июня, 2011 - 13:23:38 - перейти к сообщению
OrmaJever пишет:
....
спасибо дружище, ток не пойму мне надо будет же где то подключить файл для выбора языка со switch чтобы пользователь мог выбрать, а как его подключать, что можно просто с помощью include или require_once?
9. OrmaJever - 01 Июня, 2011 - 13:38:16 - перейти к сообщению
leon1993 в любом файле подключайте в начале
10. dropoff - 01 Июня, 2011 - 13:38:34 - перейти к сообщению
ставим язык по умолчанию ru
define('CURRENT_LANG', 'ru');

далее пишем в сессию дефолтный язык
if (empty($_SESSION['lang']))
{
$_SESSION['lang'] = CURRENT_LANG;
}

В свитч добавить. если например в кейс ru
то
$_SESSION['lang'] = 'ru';

а при выборке из БД уже
SELECT * FROM news WHERE ... lang = '".$_SESSION['lang']."';.....

файл
rеquire('path_to_lang_dir/'.$_SESSION['lang']'.php');

как-то так может?
11. leon1993 - 01 Июня, 2011 - 13:42:21 - перейти к сообщению
dropoff пишет:
ставим язык по умолчанию ru
define('CURRENT_LANG', 'ru');

далее пишем в сессию дефолтный язык
if (empty($_SESSION['lang']))
{
$_SESSION['lang'] = CURRENT_LANG;
}

В свитч добавить. если например в кейс ru
то
$_SESSION['lang'] = 'ru';

а при выборке из БД уже
SELECT * FROM news WHERE ... lang = '".$_SESSION['lang']."';.....
что то мне кажется это как то не то, но может я не прав... вариант OrmaJever помоему самое то что надо
12. dropoff - 01 Июня, 2011 - 13:46:23 - перейти к сообщению
так язык текущий будет лежать в сессии и по нему делать выбору.
т.е. будет сохранен за юзером его выбранный язык.

ну это в связке с примером OrmaJever.

т.е. вместо

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. switch($_GET['lang']) :
  3.    default: include('lang/ru.php'); break;
  4.    case 'ru': include('lang/ru.php'); break;
  5.    case 'eng': include('lang/eng.php'); break;
  6. endswitch;
  7. ?>


делаем
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. switch($_GET['lang']) :
  3.    default: $_SESSION['lang'] = CURRENT_LANG; break;
  4.    case 'ru': $_SESSION['lang'] = 'ru'; break;
  5.    case 'eng': $_SESSION['lang'] = 'eng'; break;
  6. endswitch;
  7. ?>


а файл уже так
rеquire('path_to_lang_dir/'.$_SESSION['lang']'.php');

Единственный момент - сессия умрет.
По этому наверное лучше в куки писать.
13. leon1993 - 01 Июня, 2011 - 13:52:22 - перейти к сообщению
dropoff пишет:
...
а ну если так то да, от души!
(Добавление)
dropoff пишет:
...Единственный момент - сессия умрет.
не понятно почему?
14. dropoff - 01 Июня, 2011 - 14:01:58 - перейти к сообщению
тут
http://www.php.su/functions/?cat=session

сессия умирает когда юзера закрывает браузер или через какое-то время (есл иэто все не настроить конечно)

а кука пишется в браузер юзера.

на портале информации много...
15. OrmaJever - 01 Июня, 2011 - 14:03:17 - перейти к сообщению
dropoff вот так нужно
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $_SESSION['lang'] = isset($_SESSION['lang']) ? $_SESSION['lang'] : 'ru';
  3. switch($_SESSION['lang']) :
  4.    default: include('lang/ru.php'); break;
  5.    case 'ru': include('lang/ru.php'); break;
  6.    case 'eng': include('lang/eng.php'); break;
  7. endswitch;
  8. ?>

 

Powered by ExBB FM 1.0 RC1