|
|
|
(PHP+MySQL) Многоязычный интерфейс. Кто как делает?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Появилась необходимость сделать сайт на нескольких языках. Скрипты понятно, можно поместить в разные каталоги, например "rus", "eng" и т.д. В БД должны храниться описания товаров, заказы на эти товары, письма от клиентов и т.д. Предполагаю, что можно в таблицах сделать дополнительные поля на разных языках. Какие могут возникунуть проблемы, например, с кодировками? Какие есть еще варианты? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 11:01 |
|
||
|
(PHP+MySQL) Многоязычный интерфейс. Кто как делает?
|
|||
|---|---|---|---|
|
#18+
Как вариант, можно создать доп. таблицу (Language), в которой будут храниться возможные языковые версии: lang_id lang_name1 русский2 английский3 ... Затем, если у вас есть к примеру публикации на различных языках, то структура таблиц, может быть примено следующего вида: Код: plaintext 1. 2. 3. art_name - название статьи art_content - ее содержание lang_id - языковая версия статьи (внешний ключ таблицы Language) В итоге, когда требуется вывести список статей на английском языке, то следует выполнить следующий запрос: Код: plaintext 1. Что касается вывода "системных сообщений"/"подсказок"/"подписей к формам" и т.д., то можно написать класс Language, который в зависимости от используемого языка, будет читать соответствующую спецификацию (определения "подсказок" и т.п.) всех сообщений и выводить их на сайте. Пример спецификации диалога "загрузки картинок" для русскоязычного сайта может быть таким: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Тогда диалог загрузки будет выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Надеюсь, что идея понятна :). Правда повторюсь, что все это только "как вариант". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 11:29 |
|
||
|
(PHP+MySQL) Многоязычный интерфейс. Кто как делает?
|
|||
|---|---|---|---|
|
#18+
BaginКакие могут возникунуть проблемы, например, с кодировками?Насчет кодировок ничего сказать не могу, т.к. это уже особенности той СУБД, с которой Вы работаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 11:31 |
|
||
|
(PHP+MySQL) Многоязычный интерфейс. Кто как делает?
|
|||
|---|---|---|---|
|
#18+
Примерно понятно. Думал проще будет, но не учел системные сообщения. Вот только: Код: plaintext 1. 2. 3. art_name - название статьи art_content - ее содержание lang_id - языковая версия статьи (внешний ключ таблицы Language) думаю что уникальным должен быть не art_id, т.к. одна и та же статья, может быть на разных языках, а должна быть уникальной связка art_id + lang_id, ну и еще одно поле - просто идентификатор записи id. Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 12:05 |
|
||
|
(PHP+MySQL) Многоязычный интерфейс. Кто как делает?
|
|||
|---|---|---|---|
|
#18+
Baginдумаю что уникальным должен быть не art_id, т.к. одна и та же статья, может быть на разных языках, а должна быть уникальной связка art_id + lang_id, ну и еще одно поле - просто идентификатор записи id. ;)) Эт для Вас статья будет одна и та же , а для СУБД - это совершенно разные записи! :) Поэтому art_id вполне подходит на роль первичного ключа, который однозначно идентифицирует статью в таблице. А lang_id - это "свойство" статьи. Хотя... "хозяин - барин", имхо дело ваше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 12:19 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33144678&tid=1478045]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
84ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 415ms |

| 0 / 0 |
