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

dtmax

Guest
Многоязычность

Hi, All!

Меня интересует, какие у кого есть идеи реализации многоязычности на
php-сайте.

Сам пока вижу 2 пути.
1) создавать словари для каждого языка, например
---
$hello="Hello in english"
---
$hello="Привет по-русски"
---
И в зависимости от языка, в котором посетитель смотрит сайт, показывать ему
нужный текст. Достоинсва: легко добавить новый язык. Недостатки: путаница,
если сайт большой; неудобство в редактировании - возможно в тектсте нужны
вкрапления HTML.
2) использовать в темплитах функцию типа
showText($english_text,$russian_text). Достоинства - все под рукой, смотришь
в шаблон страницы, меняешь что надо. Недостатки - более громоздкий код в
шаблонах; трудно добавить новый язык.


Может, есть какие-то более прогрессивные идеи?
Посоветуйте, плз, или дайте ссылки на примеры других реализаций.

Макс.
 

SeazoN

Guest
gettext (RTFM)

на ПХП, на Perl, на Cи

Естественно его использование для гуестбука необосновано
 

Tronyх

Новичок
dtmax:
А что ты хочешь переводить? Элементы дизайна(менюшку например)? Или сам контент?
Если "менюшку", то ИМХО лучше с файлами и путаницы тут нет ни какой.
Если контент то ИМХО лучше создавать две ветки сайта.:)
 

choumak

Guest
Ха... а я знаю, и текста всего на страницу. Используй Гугли для поиска.

Я дооолгооо искал, но нашел!
 

dtmax

Guest
Автор оригинала: Tronyх
dtmax:
А что ты хочешь переводить? Элементы дизайна(менюшку например)? Или сам контент?
Если "менюшку", то ИМХО лучше с файлами и путаницы тут нет ни какой.
Если контент то ИМХО лучше создавать две ветки сайта.:)
У меня написан движок на ПХП (движок, как я его понимаю, это набор правил по каким пишется сайт, и некоторые утилитки для удобства, например проверка переменных и ролей пользователя автоматом, и тд и тп...) Вот в него я хочу "зашить" многоязычность, т.е. определить для себя еще одно правило. Потому что надоело каждый раз решать по-новой. Насчет двух веток сайта - тоже вариант, я один раз так делал. Но хочется чего-то лучшего...

Seazon: спасибо, после того, как отправил тему в форум, ребята в itc подсказали про gettext (я про него раньше не знал, а сейчас уже потестил у себя). RTFM IMHO в этом случае не подходит, так как доку я на ночь не читаю, и не знал, что такой путь есть. Поэтому, собственно и спрашивал...
 

Tronyх

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

SeazoN

Guest
ну насчёт темплэйтов вроде разобрались....

значит тебе нужен разноязычный контент.

Ну тогда набирай парочку:
контент менеджер - переводчик.
Контент заносится на одном из языков
и уведомляется переводчик.

Это будет программа или человек.
(Человек всегда лучше переведёт)
 

hperborei

Guest
я делал массив в котором лежали все слова и выражения....вернее два массива - рус... енг...
потом по выбору клиента обращаемся к одному из нихююююсоответственно номер элемента мы знаем, а 11рус=11енг.....всё :)
 

Frol

Новичок
2hperborei
И так часть массива тоскать с собой просто так, за красивые глазки?
 

Grey

Guest
Автор оригинала: hperborei
я делал массив в котором лежали все слова и выражения....вернее два массива - рус... енг...
потом по выбору клиента обращаемся к одному из нихююююсоответственно номер элемента мы знаем, а 11рус=11енг.....всё :)
когда рус и енг это легко, а если например нужен ещё и румынский, или другой которого нет в 1251?!
 

Sirius

PHP+MySQL=LOVE
Я использую тот же метод, но:
1. Распредели массивы рус и енг по разным файлам
2. Используй только одну букву для оптимальности, я юзаю например $w[11].
3. Разделяй ланг файлы юзера и файлы админа, используй разные массивы. Можно разделять и побольше файлов на 5-6.
4. Используй объявление типа:
$w=array(
'Hello', // 0
'Welcome', // 1
'Good bye' // 2
);

так быстрее.
 

Grey

Guest
Автор оригинала: tony2001
менять кодировку выдаваемых страниц соответственно языку.
не получится, на странице может быть информация на 2 языках...
Единственное до чего пока додумался это переводить некоторые символы в UTF-8, а страницу выводить в 1251.
 

Sirius

PHP+MySQL=LOVE
Сразу на 2-х - но это уже не проблема пхп 0- всё что можно сделать на html - можно спокойно генерить на пхп
 

Venom

Guest
эээ, если тебе нужно, чтобы на странице были данные с радикально разными кодировками (напр. рус и китайский), то бери и делай для "дополнительного" языка свой "парсер", который будет переводить несоответствующие символы в вид &230; - отдельную страницу, в которой указан основной чарсет и формой для ввода "другого языка". Должно сработать, как напр. если я впишу сюда мессаг на латышском: Esat sveicinвti visu tautоbu php-koderi!
 

Venom

Guest
Не-а, не сработало! А почему? Потому что в сырцах этой страницы не указано meta charset=1251 или KOI. Мотай на ус.
 
Сверху