За последние 24 часа нас посетили 19587 программистов и 1603 робота. Сейчас ищут 884 программиста ...

сайт с несколькими языками

Тема в разделе "PHP для новичков", создана пользователем alekslkta, 27 июл 2009.

  1. alekslkta

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

    С нами с:
    12 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    Добрый день, уважаемые. Я не очень силён в PHP, потому такой вопрос. Подскажите пожалуйста, как можно реализовать сайт на нескольких языках? Примерно я понимаю суть, т.е. в индексе , происходит выбор языка в зависимости от этого на следующих страницах, в местах где текст вызываются переменные , которые находятся в соответствующих папках выбранного языка. Но вот реализация пока неизвестна. Может подскажите где искать, а может сможете на простейшем примере обяснить. Спасибо заранее.
     
  2. kas1e

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

    С нами с:
    6 апр 2009
    Сообщения:
    280
    Симпатии:
    0
    -- rus.php

    PHP:
    1. <?php
    2. $word[0] = 'привет';
    3. $word[1] = 'мир';
    4. $word[2] = 'Это тест русского языка';
    5. ?>
    -- eng.php

    PHP:
    1. <?php
    2. $word[0] = 'hello';
    3. $word[1] = 'world';
    4. $word[2] = 'This is a test of the english language';
    5. ?>

    -- index.php

    PHP:
    1. <?php
    2. $lang = array(0 => 'rus', 1 => 'eng');
    3. include($lang[rand(0,1)].'.php');
    4. echo $word[0].', '.$word[1].'!<br>'.$word[2];
    5. ?>
     
  3. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Это один из простейших способов :), но ечли Вы планируете делать админку для языков, то этот способо не самый удачиный.
    Иногда вместо массива используют список констант.

    eng.php
    PHP:
    1. <?php
    2. define('HELLO', 'Hello');
    3. ?>
    rus.php
    PHP:
    1. <?php
    2. define('HELLO', 'Здравствуйте');
    3. ?>
    index.php
    PHP:
    1. <?php
    2. include($_GET['lang'] == 'eng' ? 'eng' :'rus') .'.php';
    3.  
    4. echo HELLO;
    5. ?>
     
  4. alekslkta

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

    С нами с:
    12 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    Нет, админки не будет. Всё достаточно прсто. :) Спасибо большое за скрипт. Последний вопрос опять же из-за неопытности, каким образом происходит выбор языка, имеется ввиду кодирование. Например, если у меня выбор происходит с помощью

    HTML:
    1.  
    2. <a href="takaja to stranica jazika"> <img src = "flag_rus.png"></a>
    3.  
    т.е. как этот пхп параметр всативть в ссылку? Большое спасибо.
     
  5. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    HTML:
    1. <a href="mypage.php?lang=rus"><img src="flag_rus.png" alt="По-русски" /></a>
     
  6. alekslkta

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

    С нами с:
    12 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    Огромнейшее спасибо neverlose!!!!
     
  7. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    я делал так,

    1. если чел зашел впервые - берем дефолтный язык
    2. если чел заходил и сменил язык то была создана кука с тем языком т.е. при последующих заходах будет тот язык который он выбрал
    3. есть к примеру два файла (rus.lng, eng.lng)

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

    $lang = array (
    'index_title' => "Титулка",
    'index_buttom' => "Кнопка",
    )';

    and so on...

    а пользуешься

    echo $lang['index_title'];

    ИМХО просто и удобно...
     
  8. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Если зашел впервые, то берем из настроек браузера (HTTP_ACCEPT_LANGUAGE), если такого нет, то тогда язык по-умолчанию.
     
  9. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    AlexGousev

    хм.. кстати да)) так правильней...
     
  10. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Ещё можно и страну определять по IP :) и в зависимости от этого выставлять подходящий язык.
     
  11. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Очень неудобно, когда в зависимости от моей страны за меня выбирается язык.
    Зеркало проекта, расположенное на ближайших ко мне серверах — да, но язык должен выбираться МАКСИМУМ по языку браузера.
    Есть проекты, вроде Facebook, где сделан выбор языка именно по браузеру.

    Хотя был случай, когда я был в Германии: браузером я пользуюсь интуитивно, т.е мне плевать на язык.
    Решил зайти на Facebook к себе, раз — главная страница на немецком языке с их "Willkommen".
    Как-то до ужаса непривычно, когда за тебя выбирают язык.
    В США этой разницы, право сказать, не чувствуется (вот что значит унификация).

    Поэтому, лучше всего определение языка делать по браузеру, чем по географическому положению.
    Хотя иногда это и приводит к некоторым неожиданным моментам, вроде Facebook, но, зато, меньше шансов прогадать.
    Ведь в большинстве случаев посетитель выбирает тот язык браузера, носителем которого он является.
     
  12. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Я дал это просто, как альтернативу, а приоритеты над выбором языка можете выставлять, как Вам угодно :).
     
  13. Megamozg

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

    С нами с:
    14 май 2010
    Сообщения:
    3
    Симпатии:
    0
    Чтобы сохранять язык при переходе по сайту заноси его в сессию, а в начале проверяй если переменной такой в сессии нет то ставь дефолт, если есть и она соответсвует одному из языков то бери нужный язык.
     
  14. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Megamozg
    Ничё посвежее откопать не смог?
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    имхо лучше хранить в куках, а файлы с языками раскидать по разным директориям =) и делать инклуд.

    Это если на тракторе. А я думаю, ради многоязыкового сайта можно и замутить с БД. БД для текста самое то.
     
  16. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    igordata
    И ты туда же? Ничего что год уже прошел?)
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Апельсин
    ничего =)
    по поиску частенько люди шарятся. в яндексе в том же.
     
  18. Петр

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

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    А что, идея про gettext никому не пришла в голову за это время?
     
  19. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Петр
    Советовали мне както эту штуковину. Но как по мне - для небольших фраз и надписей - лучше из констант брать.