Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ?Многоязычность сайта 
V
    Опции темы
KVA
Дата 14.4.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 18.11.2009

Репутация: нет
Всего: 1



Есть файл en_lang.php:
Код

<?
$start= "New";
?>


Сама страничка main.html:
Код

    <?php include('http://localhost/en_lang.php')?>
    <html>

    <head>

    </head>
    
    <body bgcolor='#ccee99'>
    <input type="submit" id="idprev" value="<?=$start?>" >
    </body>
    </html>

Сервер Apache.
Почему в кнопке не отображается название New? Нужно для поддержки многоязычности сайта.
PM MAIL   Вверх
нуп
Дата 14.4.2010, 12:51 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



Код

define("_NEW","New");

Вот так делай.
Код

 <input type="submit" id="idprev" value="<? echo _NEW;?> "> 

PM MAIL   Вверх
MoLeX
Дата 14.4.2010, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

<?php include('http://localhost/en_lang.php')?>

 smile

Добавлено через 31 секунду
нуп, какая черт разница? константа, массив или переменная?

Добавлено через 2 минуты и 8 секунд
KVA, рекомендую использовать массив:
Код

<?php
$lang['start']= "New";
?>


Код

<?php include('en_lang.php');?>
<html>
<head>
</head>
    
<body bgcolor='#ccee99'>
<input type="submit" id="idprev" value="<?=$lang['start'];?>" >
</body>
</html>



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
нуп
Дата 14.4.2010, 12:58 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



Чтобы путоницы небыло  smile 
PM MAIL   Вверх
krundetz
Дата 14.4.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(KVA @  14.4.2010,  12:45 Найти цитируемый пост)
<?php include('http://localhost/en_lang.php')?>

возможно поэтому

у вас где лежит en_lang.php? и когда возникала проблема?

Добавлено через 2 минуты и 28 секунд
Цитата(нуп @  14.4.2010,  12:58 Найти цитируемый пост)
Чтобы путоницы небыло

а вы в курсе что в php не рекомендуется объявлять константы начинающиеся с подчеркивания, как раз для того чтобы небыло путанице с системными константами?

Добавлено через 5 минут и 25 секунд
Цитата(MoLeX @  14.4.2010,  12:54 Найти цитируемый пост)
KVA, рекомендую использовать массив:

мне больше всего нравиться подход когда есть функция локализации в которую передается текст и если для данной локализации есть его определение оно подставляется


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 14.4.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(нуп @  14.4.2010,  12:58 Найти цитируемый пост)
Чтобы путоницы небыло

а она будет. по крайней мере надо давать какое то ключевое слово


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
KVA
Дата 14.4.2010, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 18.11.2009

Репутация: нет
Всего: 1



Цитата

KVA, рекомендую использовать массив:
Код

<?php
$lang['start']= "New";
?>


Код

<?php include('en_lang.php');?>
<html>
<head>
</head>
    
<body bgcolor='#ccee99'>
<input type="submit" id="idprev" value="<?=$lang['start'];?>" >
</body>
</html>



Открываю через сервер эту html, а на кнопке написано <?=$lang['start'];?>. Или я что-то не догоняю?
PHP использую впервые, т.к. работаю с javascript, но не нашла решения через него для многоязычности интерфейса.

Добавлено через 4 минуты и 31 секунду
Цитата

у вас где лежит en_lang.php? и когда возникала проблема?

en_lang.php, main.html лежат в папке htdocs сервера.

Цитата

мне больше всего нравиться подход когда есть функция локализации в которую передается текст и если для данной локализации есть его определение оно подставляется

А можно мини-пример, но полностью рабочий, чтоб потом применить у себя smile .

Это сообщение отредактировал(а) KVA - 14.4.2010, 13:34
PM MAIL   Вверх
Guedda
Дата 14.4.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(KVA @  14.4.2010,  13:33 Найти цитируемый пост)
Открываю через сервер эту html, а на кнопке написано <?=$lang['start'];?>. Или я что-то не догоняю?

В странице html php-код не будет выполняться. Измените расширение у файла на .php, или в .htaccess допишите, чтобы html воспринимался как сценарий php (не рекомендуется).


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
KVA
Дата 14.4.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 18.11.2009

Репутация: нет
Всего: 1



Исправила расширение на  .php. 
В итоге, если открываем через сервер, то отображается код страницы.
Если открываем просто как файл через браузер на кнопке написано <?=$lang['start'];?>.

PM MAIL   Вверх
bars80080
Дата 14.4.2010, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



что-то вы как-то советы даёте, что ничего не понятно

прежде всего надо было дать http://phpfaq.ru/paths
и пояснить, что http:// - это урл для доступа к внешним ресурсам. а подключать нужно файлы сидящие на сервере. путь же файловой системы начинается с С:// либо просто drectory/subdirectory - в nix
PM MAIL WWW   Вверх
krundetz
Дата 14.4.2010, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Guedda @  14.4.2010,  13:46 Найти цитируемый пост)
(не рекомендуется)

почему, кем и где?
Цитата(KVA @  14.4.2010,  13:52 Найти цитируемый пост)
Если открываем просто как файл через браузер на кнопке написано <?=$lang['start'];?>.

ну так так и должно быть браузер ведь не является php интерпретатором
Цитата(bars80080 @  14.4.2010,  14:03 Найти цитируемый пост)
что-то вы как-то советы даёте, что ничего не понятно

зря ты так.  ТС не обозначил того что файл у него находиться на том же сервере, а функция include позволяет доступ и к внешним ресурсам. Я вот подумал что ТС перенес работающий код на рабочий сервер и он у него из за этого перестал работать обращаясь к локальной адресу, поэтому и спросил.
Цитата(krundetz @  14.4.2010,  13:05 Найти цитируемый пост)
у вас где лежит en_lang.php? и когда возникала проблема?

но что то не увидел ответа от ТС.


Это сообщение отредактировал(а) krundetz - 14.4.2010, 21:06


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
skyboy
Дата 14.4.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Guedda @  14.4.2010,  12:46 Найти цитируемый пост)
В странице html php-код не будет выполняться.

зависит от конфига apache. может и в html обрабатываться. а может и в РНР-файлах не работать. надо проверять конфиг, да.
Цитата(krundetz @  14.4.2010,  20:03 Найти цитируемый пост)
ТС не обозначил того что файл у него находиться на том же сервере, а функция include позволяет доступ и к внешним ресурсам

комментарий: за работоспособность подключения удаленных файлов отвечает директива allow_url_include(что, насколько мне известно, обычно блокируется), плюс сервер, где этот скрипт хранится, должен отдавать исходный код скрипта, а не выполнять его(как обычно конфигурируются НТТР-сервера). сочетание такого, "само собой"  возникшее, маловероятно. если бы кто-то специально такое настраивал, он был бы в курсе, как все это работает, я считаю.
PM MAIL   Вверх
Sanchezzz
  Дата 15.4.2010, 06:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Языкововой файлы хранить в папке и подрубить их и складовать с основнм массивом 


Код

global $lang_; $lang_ = array();

// Загрузка языка
function LoadMessage($file){
    global $lang_;
    if(file_exists(str_replace('//','/',$file)) ){
            include str_replace('//','/',$file);
            if(isset($lang))
                $lang_ = array_merge($lang_ , $lang );
            else return false;
                 return true;
            }
    return false;
}

// Получить языковое значение
function GetMessage($str){global $lang_;    return (isset($lang_)) ? $lang_[$str] : $str;}

// Выдает какой язык сейчас используется.
function GetLanguage(){    return (isset($_SESSION['lang']) and $_SESSION['lang']!='') ?  $_SESSION['lang']  : 'ru';}


function SetLanguage($id = 'ru'){$_SESSION['lang']  = 'ru'; return true;}



Создаем файл "lang.php" с массивом 
Код

$lang[news] = 'Нoвости';
$lang[contacts] = 'Контакты';


Пример 
Код

LoadMessage($_SERVER['DOCUMENT_ROOT'] . "/lang/" .GetLanguage() . "/lang.php"  ); #    /lang/ru/lang.php
print GetMessage('news') ; 

Такой метод подходит для переводка кородких слов или предлажений.

Для контента нужно делать файлы или иметь в бд заполненную верссию под нужный язык. GetLanguage() и SetLanguage в помощь.
акой язык.



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
maxipub
Дата 15.4.2010, 09:15 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Цитата(MoLeX @  14.4.2010,  12:54 Найти цитируемый пост)
какая черт разница? константа, массив или переменная?

Ну если значение переменной ни где не изменяется, его лучше присваивать константе. А для удобства их можно начинать с "LNG_":
LNG_START
LNG_SITE_TITLE
...

Ну и константы чуть более экономичны, меньше места в памяти занимают.

ЗЫ: а вообще я сам на массивах делаю. smile 


Цитата(KVA @  14.4.2010,  12:45 Найти цитируемый пост)
<?=$start?>

Лучше выводить через echo, иначе ваша конструкция, в зависимости от настроек конкретного сервера, может стать нерабочей, хоть она мне и самому симпатична. smile 
PM MAIL   Вверх
MoLeX
Дата 15.4.2010, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(maxipub @  15.4.2010,  09:15 Найти цитируемый пост)
Ну и константы чуть более экономичны, меньше места в памяти занимают.

 smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.