многоязычность

Bu-Bu

Любитель PHP
Автор оригинала: AmdY
ИМХО define для перевода - зло.
---------------------------------------
define('FAST','fast');
define('FAST','second');
echo FAST;
---------------------------------------
догадайся, что будет?
Смешной вы мужчина! Для кривых рук даже ложка - зло. А переменные присваивать можно пачками - HELP - к хелпу, FORM к форме и т.д.
 

AmdY

Пью пиво
Команда форума
админ загрузил страничку отсылки писем подписчику загрузился define('FIRST','fast');
отсылает письмо русскому подписчику define('FIRST','первый');
выскакивает ошибка
 

Bu-Bu

Любитель PHP
Автор оригинала: AmdY
админ загрузил страничку отсылки писем подписчику загрузился define('FIRST','fast');
отсылает письмо русскому подписчику define('FIRST','первый');
выскакивает ошибка
Я таким способом перевел уже не один мег инфы и ни одной ошибки. Смахивает на паранойю. И потом всегда можно заменить частный случай на аналогичный. Это все равно, что присваивать переменные типа $ereg или $elsi. Не вижу смысла в бессмыслицах. Define позволяет чекрыжить спецсимволы слешами и ежли надо написать в тексте $reg, то пишем \$reg и длина текста ограничена только воображением. Кроме того я делал конструкции типа define ('BLA-BLA',' Bla-bla '.HRU_HRU.' it is alright'); и все работало. Причем в HRU_HRU можно еще вставить конструкцию и т.д.
 

Angerslave

Новичок
Bu-Bu, ты не понял. Константа на то она и константа, что её нельзя переопределить. И если ты уже определил константу FIRST в английском языковом файле, то в русском код define('FIRST', 'первый') вызовет ошибку(попытка переопределения константы).
 

john.brown

просто кулибин
Bu-Bu
Проблема не в том, что нельзя что то дефинировать, а в том, что когда попытаешся по ходу загрузить другой язык, поимееш ерор :)
 

Bu-Bu

Любитель PHP
Автор оригинала: Angerslave
Bu-Bu, ты не понял. Константа на то она и константа, что её нельзя переопределить. И если ты уже определил константу FIRST в английском языковом файле, то в русском код define('FIRST', 'первый') вызовет ошибку(попытка переопределения константы).
Вот это новость конешна. Однако ж работает и замечательно. Куда-то вы не туда углубляетесь, братцы.
Клиент заходит на сайт, жмет русский флажок/ссылку/портрет Путина и вызывает себе в куку например это: $language = 1. Далее он ходит по сайту и общий файл config.php подключает персонально для нашего любопытного файл russian.inc.php. Это его выбор и о каких ошибках идет речь? В это время english.inc.php и т.д. лежат в папке как балласт, пока не зайдет другой господин и не запросит их. Недостаток только один, ежли товаришч не включит куки, но на это ему вешаем флажки на каждую страницу - пущай тренируется. И никаких конфликтов тут не может быть!
 

Angerslave

Новичок
Bu-Bu, тут рассматривается случай, когда нужно отображать контент на нескольких языках(например мылы разослать).
 

Армян

Новичок
файлы инк от файлов пхп чем-то кроме расширения отличаются? если есть линки дайте, ато все хелпы перерыл про это ничего нету!
 

AP

Новичок
Вот почитал тут... какие if и swich с выбором языка, зачем они вообще нужны?

PHP:
if(file_exist('/lang/'.$lang.'.lang.php')) 
  { 
 require_once '/lang/'.$lang.'.lang.php';  
} else{
  require_once '/lang/ru.lang.php';  
}

Таким образом при добавлении нового языка, придётся просто добавить файл в папку lang. А не лесть в код и разбираться где дефолты и свитчи в прошлый раз ставил....
 

Angerslave

Новичок
Я больше склоняюсь к использованию языкового класса. Скачал вчера i18n, вроде наворочено, пока только мельком глянул, не успел разобраться. Мож кто другими классами пользуется? Поделитесь впечатлениями.
 

Bu-Bu

Любитель PHP
Автор оригинала: Angerslave
Я больше склоняюсь к использованию языкового класса. Скачал вчера i18n, вроде наворочено, пока только мельком глянул, не успел разобраться. Мож кто другими классами пользуется? Поделитесь впечатлениями.
Во-во! Языковые файлы писать не хотим, а классы по 300 кило ставим - маразм! Смарти вообще для несчастных, кто головкой работать не хочет.
 

Angerslave

Новичок
Bu-Bu, я не к тому, что не хочу писать языковые файлы. Языковые файлы даже с i18n придётся заполнять. Просто я счас юзаю константы, но понял что это не очень хорошо. Поэтому ищу альтернативу. GetText мне почему-то не нравится... Кстати, это расширение на всех хостингах стоит?
 

john.brown

просто кулибин
На никсах кажись всех. А если виндовый сервак попадется, то , скорее всего нет. Его там отдельно ставить надо, и работает не совсем коректно...
Не нравится мне возня с *.po и *.mo файлами. ИМХО, геморой :) Делаю просто - файл переводов формата: Translation|Перевод
Потом простой синглетон класс переводчика, который подгружает файлы перевода модулей, разбирает их на массив, и вуаля - все происходит :)
 

Bu-Bu

Любитель PHP
Константы - не есть хорошо - почему же? Потому что лень правильно выбрать им имена и они периодически конфликтуют с PHP? А насчет простоты и классов. Что может быть проще одной строчки "include './russian.inc.php'? Тем более, что языковые файлы во всех случаях писать приходится. Неубедительно все это. Классы хороши для решения более глобальных задач, например для шаблонов, хотя в основном использую файлы с функциями - то же самое, только без заморочек. Просто люди идут по простому копированию чужих решений, которые удобны только "чужим" - они к этому привыкли. А когда возникает более простое и изящное решение - боятся, потому что в форуме написали по-другому. Вот и забит весь Рунет сайтами сплошь в ошибках и глюках, потому что их "писатели" воткнули нечто, а что - не подумали да и не поняли. А я пишу сайты незамысловатые, но ни одного глюка за 3 года в PHP, разве что случайно пропускал какой значок. Так что нужно идти от простого к сложному и не грузить себя и сервер лишней ерундой.
 
Сверху