![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Я сделал мультиязыковую поддержку в программе по типу:
/locale/ru/файлы модулей /locale/de/файлы модулей и т.п. в файлах содержится примерно следующее: $lang['text']='текст'; ... Так вот. Языков поддержки много, а программа каждый день активно разрабатывается и усовершенствуется. Соответственно нужно менять эти языковые файлы, дополнять их. При написании каждого нового предложения вносить перевод в файлы всех языков - муторно. Может у кого есть какие-то идеи по автоматизации? Слышал, что вроде есть даже софт спец. для этого, но вроде по отзывам он довольно глючный и народ им не пользуется. Что посоветуете? |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
написать формочку, которая бы парсила файлики и можно было бы поменять или добавить запись сразу на всех языках.
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
Преводить по любому нужно в ручную, нужно только инфа каких ключей не хватает в других файлах. Поддерживаем один файл, где все изменения, например английский. Для такой проверки можно использовать и сам PHP, что бы самому не парсить это дело. Консольный скрипт иклюдит файл, перед этим в функции создаём локальный $lang. Достаём ключи(array_keys), смотрим расхождение с эталоном, по недостающим ключам опрашиваем юзера, либо считаем из файла, затем генерим модуль языка по новой.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
форма 1
читает все имеющиеся папки в /locale/ - ru - de - en - ... - china Кнопки - добавить язык - удалить язык при добавлении - создаём папку "язык" - переписывает из любой папки (или из шаблона) все $lang['text'] со значением =''; и потом выводим форму 3 Форма 2 - добавить значение показывает все $lang['text'] Кнопки - добавить значение - удалить значение при добавлении - поле имени нового значения - язык + поля самого значения ( по количеству папок) записываем новое значение во все папки форма 3 - редактирование языка после выбора языка - показываются все $lang['text'] - и их значения ------------------------ В папку с языком можно добавить файлик с описанием языка и отображать его содержание при редактированиях, да и вообще для наглядности ![]() ЗЫ не знаю ка насчёт понятности, но я сам понял ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Мне кажется более логичным хранить все значения в базе и потом переписывать файлы языков при изменении базы.
Добавлено @ 13:24 По крайней мере так вроде обрабатывать проще. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
Admin тоже верно, всё зависти от желания и возможностей
![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Может есть готовый софт? Лень писать свой редактор.
Есть еще такая вещь, как gettext и редактор к ней, но мне не нравится. |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
Admin, как вариант таблица типа
Добавлено @ 02:14 Когда надо делаешь ALTER TABLE и добавлешь столбец. Присоединённый файл ( Кол-во скачиваний: 9 ) ![]() |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Да, да.. В базе я хранить слова буду, чтобы можно было легче управлять. Но все же в конечном продукты слова должны браться из подключаемых файлов ИМХО, т.к. так думаю будет быстрее.
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
А в чём проблема сгенерить модуль по выборке из базы? Проверяем дату последней модиффикации таблицы и файла, если устарело, то обновляем модуль. Все остальные действя делаются в базе.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А что посоветуете хранить в качестве ключа?
$lang['ключ']='текст'; Хранить по идее там можно хоть даже текст на русском. Полный текст, полные предлложения... Хотя полные предложения и тексты невсегда можно туда записать. и все-таки, ключи наверное лучше основываясь на англ.яз делать... Добавлено @ 23:38 А если надо большой текст хранить, то делать так?
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
По идее ключём может быть любая последовательность байтов, ассоциативный массив это хеш таблица.
Да, heredoc как раз удобен для вставки больших текстов. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: нет Всего: 4 |
ИМХО. Я бы не стал юзать $lang['text'] = "text"; Взял бы файлик типа:
Не судите строго. ![]() Добавлено @ 07:09 Мол самая первая строка - название языка на языке, который сам язык. ![]() |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
InfMag тогда придётся грузить всё разом, к тому же еще и парсить
![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
InfMag плюс проблемы с фразами, предложениями, текстами.
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |