| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Управление мультиязыковой поддержкой |
| Автор: Wowa 2.2.2005, 03:51 |
| Я сделал мультиязыковую поддержку в программе по типу: /locale/ru/файлы модулей /locale/de/файлы модулей и т.п. в файлах содержится примерно следующее: $lang['text']='текст'; ... Так вот. Языков поддержки много, а программа каждый день активно разрабатывается и усовершенствуется. Соответственно нужно менять эти языковые файлы, дополнять их. При написании каждого нового предложения вносить перевод в файлы всех языков - муторно. Может у кого есть какие-то идеи по автоматизации? Слышал, что вроде есть даже софт спец. для этого, но вроде по отзывам он довольно глючный и народ им не пользуется. Что посоветуете? |
| Автор: Secandr 2.2.2005, 09:11 |
| написать формочку, которая бы парсила файлики и можно было бы поменять или добавить запись сразу на всех языках. |
| Автор: Sardar 2.2.2005, 12:21 |
| Преводить по любому нужно в ручную, нужно только инфа каких ключей не хватает в других файлах. Поддерживаем один файл, где все изменения, например английский. Для такой проверки можно использовать и сам PHP, что бы самому не парсить это дело. Консольный скрипт иклюдит файл, перед этим в функции создаём локальный $lang. Достаём ключи(array_keys), смотрим расхождение с эталоном, по недостающим ключам опрашиваем юзера, либо считаем из файла, затем генерим модуль языка по новой. |
| Автор: Gold Dragon 2.2.2005, 13:15 |
| форма 1 читает все имеющиеся папки в /locale/ - ru - de - en - ... - china Кнопки - добавить язык - удалить язык при добавлении - создаём папку "язык" - переписывает из любой папки (или из шаблона) все $lang['text'] со значением =''; и потом выводим форму 3 Форма 2 - добавить значение показывает все $lang['text'] Кнопки - добавить значение - удалить значение при добавлении - поле имени нового значения - язык + поля самого значения ( по количеству папок) записываем новое значение во все папки форма 3 - редактирование языка после выбора языка - показываются все $lang['text'] - и их значения ------------------------ В папку с языком можно добавить файлик с описанием языка и отображать его содержание при редактированиях, да и вообще для наглядности ЗЫ не знаю ка насчёт понятности, но я сам понял |
| Автор: Wowa 2.2.2005, 13:23 |
| Мне кажется более логичным хранить все значения в базе и потом переписывать файлы языков при изменении базы. Добавлено @ 13:24 По крайней мере так вроде обрабатывать проще. |
| Автор: Sardar 2.2.2005, 13:40 |
| Admin тоже верно, всё зависти от желания и возможностей |
| Автор: Wowa 2.2.2005, 14:01 |
| Может есть готовый софт? Лень писать свой редактор. Есть еще такая вещь, как gettext и редактор к ней, но мне не нравится. |
| Автор: HalkaR 6.2.2005, 02:12 |
| Admin, как вариант таблица типа Добавлено @ 02:14 Когда надо делаешь ALTER TABLE и добавлешь столбец. |
| Автор: Wowa 6.2.2005, 03:44 |
| Да, да.. В базе я хранить слова буду, чтобы можно было легче управлять. Но все же в конечном продукты слова должны браться из подключаемых файлов ИМХО, т.к. так думаю будет быстрее. |
| Автор: Sardar 6.2.2005, 14:49 |
| А в чём проблема сгенерить модуль по выборке из базы? Проверяем дату последней модиффикации таблицы и файла, если устарело, то обновляем модуль. Все остальные действя делаются в базе. |
| Автор: Wowa 24.2.2005, 23:36 | ||
| А что посоветуете хранить в качестве ключа? $lang['ключ']='текст'; Хранить по идее там можно хоть даже текст на русском. Полный текст, полные предлложения... Хотя полные предложения и тексты невсегда можно туда записать. и все-таки, ключи наверное лучше основываясь на англ.яз делать... Добавлено @ 23:38 А если надо большой текст хранить, то делать так?
|
| Автор: Sardar 25.2.2005, 02:06 |
| По идее ключём может быть любая последовательность байтов, ассоциативный массив это хеш таблица. Да, heredoc как раз удобен для вставки больших текстов. |
| Автор: InfMag 14.4.2005, 07:08 | ||
ИМХО. Я бы не стал юзать $lang['text'] = "text"; Взял бы файлик типа:
Не судите строго. Добавлено @ 07:09 Мол самая первая строка - название языка на языке, который сам язык. |
| Автор: Sardar 14.4.2005, 11:26 |
| InfMag тогда придётся грузить всё разом, к тому же еще и парсить |
| Автор: Wowa 14.4.2005, 12:55 |
| InfMag плюс проблемы с фразами, предложениями, текстами. |
| Автор: Iurie 15.4.2005, 14:00 |
| Privet vsem, izvinite cto pishu latynschimi bucvami. U menea esti drugaia mysli, no ea ne znaiu nascolico ato horosho, no ea dumaiu cto OK. Naprimer bereo tablitzu v cotorom sohroneaiutsea v BD i v zavisimosti ot vybronovo iazyca vseo ato zapisyvaiem v sesiu i esli meneaietsea iazyc to opeatje obrosheaiemsea c baze, i tagda prosto priideotsea sopostaviti nujnyi text i v nujnom meste. Ea delaiu ctota v atom rode, no ea ne garantiruiu scorosty raboty vashego site. Ea dumaiu cto ato horo shaia ideia. |
| Автор: Sardar 15.4.2005, 15:57 |
| Кеширование инфы в сессии идея хорошая, для прав, настроек и т.п. А вот зачем текста со всего сайта закладывать в сессию...? Никогда не знаешь на какую страницу пойдёт юзер в следующий раз |
| Автор: AntonioBanderaz 1.5.2005, 03:30 |
| А вот я бы вообще define'ом сделал... |