[Закрыть]
 
popoff.donetsk.ua
Где власть проста, Там честен и народ. Где власть сложна, Там и народ хитёр. /Дао Де Цзин/
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Программирование на PHP - Мультиязычность в движке для портала

Мультиязычность в движке для портала

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
Heximal
Дмитрий Лиховцев
Мар, 2005
Сообщений: 2
Heximal url://forum.message:234
Мультиязычность в движке для портала

Доброго времени суток, Юрий.

У меня есть один вопрос по поводу Вашего движка для портала. Он касается мультиязычности. Способ организации документов на разных языках я понял, но мне очень интересно каким образом сделано само отображение текста на разных языках. В описании написано: «Перевод сообщений производится вызовом функции m()», но вот как работает эта функция я пока не понял. Т.е. каким образом поддерживаются символы национальных алфавитов? Или вообще целые языки, вроде арабского или китайского? Это касается как хранения в БД, так и самого вывода.

Заранее очень благодарен за ответ.

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:235

каким образом сделано само отображение текста на разных языках.

Т.е. каким образом поддерживаются символы национальных алфавитов?

Или вообще целые языки, вроде арабского или китайского?

В случае, если в базе данных есть перевод сообщения на текущий язык, то это сообщение просто читается из базы данных и выводится как есть. Если сообщение на другом языке, то производится преобразование в html-entities. Кадому языку соответсвует своя кодировка. Преобразование производится функцией cms_set_encoding библиотеки cms и основано на использовании функций iconv и utf2html, описанной в библиотеке http.utf2html. Поддержка национальных символов, таким образом, сводится либо а) к испольозвании кодировки, соответствующей текущему языку либо б) переводом в html-entities, если на одной странице требуется показать символы в разных кодировках. Для арабского и китайского языков нужно использовать кодировку utf-8.

Это касается как хранения в БД, так и самого вывода.


Каждому языку соответствует некоторая кодировка. Эта кодировка задается администратором. В базе данных все сообщения хранятся в кодировке, соотвествующей кодировке языка.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Heximal
Дмитрий Лиховцев
Мар, 2005
Сообщений: 2
Heximal url://forum.message:247
<quote><...><p>переводом в html-entities, если на одной странице требуется показать символы в разных кодировках. Для арабского и китайского языков нужно использовать кодировку utf-8.</p></quote><br /><br /><p>А каким образом определяется, что введёный текст содержит символы в разных кодировках? Т.е. если текст на русском, а есть ещё вставки на арабском. Как я понял, внутри Ваша система поддерживает три кодировки win-1251, koi8-r и utf8. Т.е. если весь текст введён на арабском, то он будет отображаться с помощью utf8, а маленькие кусочки русского в win-1251?</p><quote><p>Каждому языку соответствует некоторая кодировка. Эта кодировка задается администратором. В базе данных все сообщения хранятся в кодировке, соотвествующей кодировке языка.</p></quote><br /><br /><p>Таким образом, администратор ассоциирует каждый язык с какой-либо кодировкой. А существует ли данная (т.е. фактически любая) кодировка внутри системы и каким образом определяется язык текста и текст переводится в нужную кодировку?</p><system>~~~~~ 14 Мар 2005, 22:10 ~~~~~</system><br /><p>После обзора Вашей системы, для меня появился довольно большой вопрос, каким образом обеспечивается реальная поддержка многоязычности? Как, независимо от того, на каком языке вводится текст, он отображается нормально? И можно ли сделать так, чтобы для каждого нового языка, будь то немецкий, французский, китайский или арабский, не приходилось создавать отдельные новые записи/куски кода. Чтобы всё работало через единую библиотеку (модуль). Как я понял, у Вас это реализовано полностью. Основные два языка (ru & en), в данном случае, используют win-1251 и koi8-r, а все остальные utf8?</p>
popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:248

А каким образом определяется, что введёный текст содержит символы в разных кодировках? Т.е. если текст на русском, а есть ещё вставки на арабском.

У меня введенный текст (по идее) не может содержать в себе символы в разных кодировках. Но на одной странице могут появиться слова в разных кодировках. Самый яркий пример: ссылки на разные языки, каждая из ссылок написана на своем языке. Менее очевидные - если мы смотрим страницу на русском, а перевода некоторого сообщения на русский язык нет; тогда показывается перевод на другой язык. Следует помнить, что на одной странице отображается множество слов, фраз, текстов.

я понял, внутри Ваша система поддерживает три кодировки win-1251, koi8-r и utf8.

Внутри никакие кодировки не прошиты. Как администратор задаст, так и будет.

Т.е. если весь текст введён на арабском, то он будет отображаться с помощью utf8, а маленькие кусочки русского в win-1251?

Текст отображается в текущей кодировке, которая зависит от текущего языка. Если кодировка языка сообщения не совпадает с кодировкой текущего языка, то сообщение конвертирутся в html-entities.

Таким образом, администратор ассоциирует каждый язык с какой-либо кодировкой.


да

А существует ли данная (т.е. фактически любая) кодировка внутри системы и каким образом определяется язык текста и текст переводится в нужную кодировку?


Язык введенного сообщения определяется текущим языком. Если нужно ввести сообщение на другом языке, то нужно переключить текущий язык.

После обзора Вашей системы, для меня появился довольно большой вопрос, каким образом обеспечивается реальная поддержка многоязычности?

Что Вы имеете в виду под словом «Реальная»?

Как, независимо от того, на каком языке вводится текст, он отображается нормально?

Текст отображается в текущей кодировке, которая зависит от текущего языка. Если кодировка языка сообщения не совпадает с кодировкой текущего языка, то сообщение конвертирутся в html-entities

Это не является ответом?

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

В текущей версии не требуется создавать никакие новые куски кода при добавлении нового языка.

Чтобы всё работало через единую библиотеку (модуль).


Все работает через одну библиотеку.

Основные два языка (ru & en), в данном случае, используют win-1251 и koi8-r, а все остальные utf8?


У меня нет «основных» и «всех остальных» языков. Все языки равнозначны. Правда, среди всех языков выбирается один, который используется в случае, если текущий язык не выбран (текущий язык по умолчанию).

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Ответ не возможен
Вход
Поиск[?]:
Программное обеспечение любой сложности
koins.com.ua