Xwab
Форумыnavigate_nextПрограммирование на PHP

Многоязычный скрипт.
Сообщения
haos

Как зделать неско языков у скрипта не делая все его файлы на другом языке.
Мож можна в одном файле написать весь перевод?
Как лучше,кто что посоветует?)

08 Янв 2011, 18:52
OZ_

haos, тексты вынеси в массив или в объект или в xml-файл или в другой удобный тебе формат.
И подключай/парси файл, в котором есть нужная в данный момент локализация.

08 Янв 2011, 18:58
Framework

Ставим задачу - сделать наш сайт понятным для других иностранных пользователей. Для этого нам потребуется сделать несколько несложных действий.
Пусть у нас ленгпаки(языки) хранятся в папке /lang/
Языковые файлы вида ru.php, en.php, de.php...
Примерный состав файла ru.php:
<?php
// by DarveL
// ru.php
$lang['reg'] = 'Регистрация';
$lang['exit'] = 'Выход';
$lang['hello'] = 'Привет мир!';
?>

Примерный состав файла en.php:
<?php
// by DarveL
// en.php
$lang['reg'] = 'Registration';
$lang['exit'] = 'Exit';
$lang['hello'] = 'Hello world!';
?>

Теперь просканируем директорию на наличие языковых пакетов и выставим пользователю в соответствии с этим языковой пакет.
$mas = scandir($_SERVER['DOCUMENT_ROOT'].'/lang/'); // тут массив
// если данные есть в куках или сессии
if(!isset($_SESSION['lang']) or !in_array($_SESSION['lang'].'.php', $mas))
{
if(isset($_COOKIE['lang']) and in_array($_COOKIE['lang'].'.php', $mas))

{
$lang = $_COOKIE['lang'];
}
else{
// можно записать данные например в куки
setcookie("lang", $lang, time()+3600*60*24*30, "/", "example.com");
if(!preg_match("/[?a-zA-Z0-9]*/", $_POST['lang'])) $_POST['lang'] = 'ru' / для тех, у кого фобии
if(in_array($_POST['lang'].'.php', $mas)) $lang = $_POST['lang'];
else $lang = 'ru'; // по умолчанию
}
$_SESSION['lang'] = $lang; запишем ему в сессию это значение

// и теперь в любом месте можем подключать
// например так
}
include_once $_SERVER['DOCUMENT_ROOT'].'/lang/'.$_SESSION['lang'].'.php';

Для выбора языка делаете простую html форму, тут легко сообразить.
Способ применения:
echo $lang['hello'].'';
echo 'Вы можете кликнуть сюда: '.$lang['reg'].'';
----------------------
http://wapstory.org/blogs/webcoding/90
------------------------
Я прочитал и делаю именно так

08 Янв 2011, 19:00
M0rbid

WMS_ITACHI, скандир только лишнее. Это нужно делать один раз, при добавлении/удалении пака

08 Янв 2011, 19:03
haos

Благодарю)

08 Янв 2011, 19:05
suhonok

Обсуждали уже, к стате метод дарвела не лучший, даже обратно

08 Янв 2011, 20:10
Sceptic

suhonok, "А" вижу, а где "Б"?

08 Янв 2011, 20:13
suhonok

http://xwab.mobi/forum/topic17923

08 Янв 2011, 21:03
Vynderkind

смотри как в джоне зделать

08 Янв 2011, 22:17
Ninja

Как будет лучше? Парсить ini файл или инклудить php файл с массивом?

10 Янв 2011, 23:34
Ответить на тему