За последние 24 часа нас посетил 62941 программист и 1746 роботов. Сейчас ищет 791 программист ...

Смена языка через массив

Тема в разделе "PHP для новичков", создана пользователем deathnote, 30 мар 2012.

  1. deathnote

    deathnote Активный пользователь

    С нами с:
    5 май 2010
    Сообщения:
    7
    Симпатии:
    0
    Здравствуйте,

    помогите пожалуйста написать смену языка через массивы

    есть папка называется "language" в этой папке есть два файла, russ.ini и eng.ini в них написан перевод через массивы.

    на самом сайте есть две кнопки русс и енг, в тех местах где должен быть перевод идет обращения к тем массивам которые в файлах с переводом, если не чего не выбрана по умолчанию разгружается енг и еще работает через ссесию

    Спасибо
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    сегодня буря магнитная вроде была....последствия прям на лицо (читай на форум)
     
  3. deathnote

    deathnote Активный пользователь

    С нами с:
    5 май 2010
    Сообщения:
    7
    Симпатии:
    0
    не затруднит ссылку дать ?
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Если есть сессии, то в неё и запишите текущий выбранный язык.
    Ну а далее так, например:
    Код (PHP):
    1. <?php
    2. if($_SESSION['lang']=='ru'){
    3.   include 'russ.ini';
    4. }elseif($_SESSION['lang']=='en'){
    5.   include 'eng.ini';
    6. }
    7. //например, у вас в *.ini файлах $transl=array(тут ключи и значения-переводы);
    8. function w($str){
    9.   global $transl;
    10.   echo $transl[$str];
    11. }
    12. <p><?php w('about')?></p>
    Вызовет функцию "w", передаст строку "about", которая может быть ключом в массиве $transl, выведет результат на месте.
     
  5. deathnote

    deathnote Активный пользователь

    С нами с:
    5 май 2010
    Сообщения:
    7
    Симпатии:
    0
    а еще варианты будут ?
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Делал как-то на JS.
    Но по-любому нужно оставлять на местах перевода какие-то метки. Это либо ключи массива, либо константы.
     
  7. deathnote

    deathnote Активный пользователь

    С нами с:
    5 май 2010
    Сообщения:
    7
    Симпатии:
    0
    я раньше брал за основу из движка dle4 но куда то посеял я измененный вариант ..., мне та система смена языка очень понравилась, вот хотелось бы похожее найти, просто переделывать по новой уже как то влом ... )
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. require_once('lang/'.$config['site_lang'].'.php'); 

    =))
     
  9. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    ещё короче
    Код (Text):
    1. $config['site_lang']
    ;)
     
  10. deathnote

    deathnote Активный пользователь

    С нами с:
    5 май 2010
    Сообщения:
    7
    Симпатии:
    0
    ну это не то вообще ))))
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Почему, же не то, наоборот, то.
    Папка: language в ней файлы: "russ.ini" и "eng.ini".
    Тот самый $config['site_lang'].
    Код (PHP):
    1. $config=array('site_lang'=>'russ','admin_lang'=>'russ'); 
    И та самая проверка:
    Код (PHP):
    1. if(file_exists('проверить путь до директории/language/'.$config['site_lang'].'.ini'))
    2. {
    3.     require_once('проверить путь до директории/language/'.$config['site_lang'].'.ini');
    4. }else{echo'Добавьте файл '.$config['site_lang'].'.ini в папку language которая опять же может быть любая в конфиге';} 

    Или вам нужно, чтобы каждый пользователь под себя переключал!?
    Можно попробовать сессиями или кукисами. =)
     
  12. deathnote

    deathnote Активный пользователь

    С нами с:
    5 май 2010
    Сообщения:
    7
    Симпатии:
    0
    угу именно каждый пользователь, и конечно же через сессию