Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управление мультиязыковой поддержкой, когда языков интерфейса программы много 
:(
    Опции темы
Wowa
  Дата 2.2.2005, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Я сделал мультиязыковую поддержку в программе по типу:
/locale/ru/файлы модулей
/locale/de/файлы модулей
и т.п.

в файлах содержится примерно следующее:

$lang['text']='текст';
...


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

Слышал, что вроде есть даже софт спец. для этого, но вроде по отзывам он довольно глючный и народ им не пользуется.

Что посоветуете?
PM WWW   Вверх
Secandr
Дата 2.2.2005, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: нет
Всего: 39



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


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Sardar
Дата 2.2.2005, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Преводить по любому нужно в ручную, нужно только инфа каких ключей не хватает в других файлах. Поддерживаем один файл, где все изменения, например английский. Для такой проверки можно использовать и сам PHP, что бы самому не парсить это дело. Консольный скрипт иклюдит файл, перед этим в функции создаём локальный $lang. Достаём ключи(array_keys), смотрим расхождение с эталоном, по недостающим ключам опрашиваем юзера, либо считаем из файла, затем генерим модуль языка по новой.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Gold Dragon
Дата 2.2.2005, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 1
Всего: 71



форма 1
читает все имеющиеся папки в /locale/
- ru
- de
- en
- ...
- china

Кнопки
- добавить язык
- удалить язык

при добавлении
- создаём папку "язык"
- переписывает из любой папки (или из шаблона) все $lang['text'] со значением ='';

и потом выводим форму 3

Форма 2 - добавить значение
показывает все $lang['text']

Кнопки
- добавить значение
- удалить значение

при добавлении
- поле имени нового значения
- язык + поля самого значения ( по количеству папок)

записываем новое значение во все папки

форма 3 - редактирование языка
после выбора языка
- показываются все $lang['text']
- и их значения

------------------------
В папку с языком можно добавить файлик с описанием языка и отображать его содержание при редактированиях, да и вообще для наглядности smile


ЗЫ
не знаю ка насчёт понятности, но я сам понял smile Надеюсь на мысли натолкнул


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Wowa
Дата 2.2.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Мне кажется более логичным хранить все значения в базе и потом переписывать файлы языков при изменении базы.
Добавлено @ 13:24
По крайней мере так вроде обрабатывать проще.
PM WWW   Вверх
Sardar
Дата 2.2.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Admin тоже верно, всё зависти от желания и возможностей smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Wowa
Дата 2.2.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Может есть готовый софт? Лень писать свой редактор.


Есть еще такая вещь, как gettext и редактор к ней, но мне не нравится.
PM WWW   Вверх
HalkaR
Дата 6.2.2005, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Admin, как вариант таблица типа
Добавлено @ 02:14
Когда надо делаешь ALTER TABLE и добавлешь столбец.

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  table.JPG
PM MAIL   Вверх
Wowa
Дата 6.2.2005, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Да, да.. В базе я хранить слова буду, чтобы можно было легче управлять. Но все же в конечном продукты слова должны браться из подключаемых файлов ИМХО, т.к. так думаю будет быстрее.
PM WWW   Вверх
Sardar
Дата 6.2.2005, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



А в чём проблема сгенерить модуль по выборке из базы? Проверяем дату последней модиффикации таблицы и файла, если устарело, то обновляем модуль. Все остальные действя делаются в базе.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Wowa
Дата 24.2.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



А что посоветуете хранить в качестве ключа?
$lang['ключ']='текст';

Хранить по идее там можно хоть даже текст на русском. Полный текст, полные предлложения... Хотя полные предложения и тексты невсегда можно туда записать.


и все-таки, ключи наверное лучше основываясь на англ.яз делать...

Добавлено @ 23:38
А если надо большой текст хранить, то делать так?

Код

$lang['ключ']=<<<HTML
большой текст
HTML;


PM WWW   Вверх
Sardar
Дата 25.2.2005, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



По идее ключём может быть любая последовательность байтов, ассоциативный массив это хеш таблица.

Да, heredoc как раз удобен для вставки больших текстов.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
InfMag
Дата 14.4.2005, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



ИМХО. Я бы не стал юзать $lang['text'] = "text"; Взял бы файлик типа:
Код

Название языка
Hello|Привет|
I'm|Я|
You|Ты|

Не судите строго. smile
Добавлено @ 07:09
Мол самая первая строка - название языка на языке, который сам язык. smile
PM   Вверх
Sardar
Дата 14.4.2005, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



InfMag тогда придётся грузить всё разом, к тому же еще и парсить smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Wowa
Дата 14.4.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



InfMag плюс проблемы с фразами, предложениями, текстами.
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1203 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.