Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Переменные в PHP и HTML (локализация) (http://forum.oszone.net/showthread.php?t=274146)

Алексей Zn 17-12-2013 07:21 2273630

Переменные в PHP и HTML (локализация)
 
Здравствуйте.
Раньше сайт был на одном языке и было все в файлах PHP, теперь приходится добавлять несколько языков (на выбор пользователя), это значит заменять фразы в PHP на переменные, но ума не приложу как это все оформить...
Например имеем такую часть кода:
PHP код:

$now_hours date('G');
if(
$now_hours<8)
{
    
$xxxx 'Доброй ночи!';
}
elseif(
$now_hours<12 && $now_hours>=
{
    
$xxxx 'Доброе утро!';
}
elseif(
$now_hours>=12 && $now_hours<17)
{
    
$xxxx 'Добрый день!';
}
elseif(
$now_hours>=17 && $now_hours<=23)
{
    
$xxxx 'Добрый вечер!';
}
$content str_replace('{xxxx}'$xxxx);
print 
$content

Где, далее переменная {xxxx} вставляется в шаблон и выводит приветствие. Так вот как в этом коде заменить фразы Доброй ночи!, Доброе утро!, Добрый день!, Добрый вечер!, на переменные, что бы они подхватывались с языкового файла, скажем ru.php?
Покажите, пожалуйста пример.
Спасибо.

Pavluha 21-12-2013 23:45 2276515

Для начала нужно определиться, как вы будете узнавать, какой язык предпочитает пользователь. Можно сделать разными путями, но самый удобный -- это через куки.

Далее, если нужно поменять только эти 4 фразы, можно обойтись так (показано для первого примера):

PHP код:

$userlang $_COOKIE['userlang'];

$now_hours date('G');
if(
$now_hours<8)
{
    if(
$userlang='ru')
    {
     
$xxxx 'Доброй ночи!';
    }
    else if (
$userlang='en')
    {
      
$xxxx 'Good night!'
    
}
}
..........................

$content str_replace('{xxxx}'$xxxx);
print 
$content

Но если надо перевести на другой язык весь сайт, то нужно делать так:
1. Создаём папку language или localizations и в неё кидаем файлы с именами типа ru.php, en.php и тому подобное.
2. В этих файлах будут храниться фразы для вашего сайта (желательно делать так, в виде массива):
PHP код:

<?
/*Английская локализация (en.php)*/
$message['good_night'] = 'Good night!';
$message['good_morning'] = 'Good morning!';
......................
?>

PHP код:

<?
/*Русская локализация (ru.php)*/
$message['good_night'] = 'Доброй ночи!';
$message['good_morning'] = 'Доброе утро!';
......................
?>

3. В самом коде программы делать так:

PHP код:

$userlang $_COOKIE['userlang'];
include(
'localization/'.$userlang);
$now_hours date('G'); 
if(
$now_hours<8

    
$xxxx $message['good_night']; 

elseif(
$now_hours<12 && $now_hours>=)  

    
$xxxx $message['good_morning'];  

elseif(
$now_hours>=12 && $now_hours<17

    
$xxxx $message['good_aftenoon'];

elseif(
$now_hours>=17 && $now_hours<=23

    
$xxxx $message['good_evening']; 

$content str_replace('{xxxx}'$xxxx); 
print 
$content

Конечно, данный код нужно еще доработать (например, если такого языка не существует, выводить на русском или английском). И, к примеру, использовать require вместо инклуда, но необходимо тогда просчитать все возможные ошибки.

P. S. Если думаете, что сами не справитесь, а код сайта всему миру показывать не хотите, могу помочь за символическую плату (пишите в лс).


Время: 06:58.

Время: 06:58.
© OSzone.net 2001-