|
|
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Всем здравствуйте! Скоро понадобится реализовать многоязычность в проекте на VFP9. Как это лучше сделать? Т.е. Будет необходимость вводить и хранить данные на разных языках (данные хранятся на MSSQL), а так-же отображение данных, причем в форме отображать сразу несколько языков. Читал предыдущие темы, но четкого плана действий не сложилось. Как я понял, есть три пути развития: 1. Взять какой нибуть UNICOD-шрифт и задавать FontCharSet на Textbox 2. Брать отдельные шрифты на каждый объект 3. Использовать какой нибудь ActiveX Может кто-то уже делал подобные изыскания - поделитесь пожалуйста :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 11:26 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
ГурантМожет кто-то уже делал подобные изыскания - поделитесь пожалуйста :) Пытались делать (очень много проблем, которые частично решаются)... После нескольких недель "мучений" пришлось отказаться, благо что MS .NET 2.0 вышел к тому времени - все быстренько сделали на .NET... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:27 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
ГурантВсем здравствуйте! Скоро понадобится реализовать многоязычность в проекте на VFP9. Как это лучше сделать? Т.е. Будет необходимость вводить и хранить данные на разных языках (данные хранятся на MSSQL), а так-же отображение данных, причем в форме отображать сразу несколько языков. Читал предыдущие темы, но четкого плана действий не сложилось. Как я понял, есть три пути развития: 1. Взять какой нибуть UNICOD-шрифт и задавать FontCharSet на Textbox 2. Брать отдельные шрифты на каждый объект 3. Использовать какой нибудь ActiveX Может кто-то уже делал подобные изыскания - поделитесь пожалуйста :) В С++ это реализуется через многоязычную таблицу сообщений в ресурсах (String Table). В Фоксе, я так думаю, можно все сообщения/надписи/строки поместить в таблицу следующей структуры: APP_Messages (Message_id,lang_id,message_String) &&(типы данных выберете на свой вкус) Примерное наполнение таблицы: Код: plaintext 1. 2. 3. 4. 5. Сообщения в форму из таблицы помещаются по ключу: (код сообщения+код языка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:30 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
> Сообщения в форму из таблицы помещаются по ключу: (код сообщения+код > языка) т.е. при загрузке формы (в некотором методе) делаем пробежку по всем объектам и св-ву Caption (или какое там у кого есть) присваиваем нужный язык - походу долго все это будет 2 автору 1го письма - информация в БД тоже будет храниться на нескольких я зыках ?? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 16:15 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий Message_id lang_id message_String 00001 00419 Добро пожаловать 00002 00409 Good bye! 00001 00409 Welcome 00002 00419 До свидания!!! где 00419 - идентификатор русского языка, 00409 - идентификатор английского языка Сообщения в форму из таблицы помещаются по ключу: (код сообщения+код языка) OffTop: Скажи, пожалста, какому стандарту принадлежат вот эти вот коды и где бы поглядеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 05:51 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar 2 автору 1го письма - информация в БД тоже будет храниться на нескольких я зыках ?? Posted via ActualForum NNTP Server 1.4 Да. По запросу, SP будет возвращать курсор с соответствующим языком. Проблема в его адекватном отображении и/или редактировании. Чисто техническая проблема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 09:44 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Kruchinin Pahan Станислав С...кий Message_id lang_id message_String 00001 00419 Добро пожаловать 00002 00409 Good bye! 00001 00409 Welcome 00002 00419 До свидания!!! где 00419 - идентификатор русского языка, 00409 - идентификатор английского языка Сообщения в форму из таблицы помещаются по ключу: (код сообщения+код языка) OffTop: Скажи, пожалста, какому стандарту принадлежат вот эти вот коды и где бы поглядеть? Вообще-то я это привел для примера... Но сами значения эти я взял из винды: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard layont\DosKeybCodes\ и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard layonts\ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 09:48 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Со труктурой базы я и сам смогу разобраться Меня интересует чисто механическое отображение данных на разных языках Например: Фразу на немецком языке (со всеми ихними заморочками) как отобразить в текстбоксе? Задать FontCharSet = 238 (Central European) или этого не достаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 17:06 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Hi Гурант Сейчас в моем проекте тоже стоит задача поддержки многоязычности, т.к. проект предпологает разработку серийного продукта для распостранения по Миру. Работая в одной ИТ фирме, видел как они реализовали это - очень неудобно. В основе лежат text файлы, для каждого языка в отдельности. Каждый объект обращается к нему по адресу n-byte, и забирает оттуда текст. Работает быстро, но обслуживать эти файлы - не удобно. Сейчас же, решение вижу таким: есть текстовые файлы, для каждого языва в отдельности, со структурой: Insert Save Cancel Delete Reply Forward Contact Date Start Date End Далее, при старте программы, после выбранного языка, этот файл импортируется в DBF или курсор. Дальше уже возможностей каждому хватит... =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 13:13 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
авторвидел как они реализовали это - очень неудобно Я не видел ни одной "удобной" реализации. Это для разработчика всегда - гемор. Для Caption по числовому коду - без проблем. А вот для сообщений... Где-то встречал решение, когда в качестве ключа использовалась фраза на основном (английском скажем) языке. В данном случае информативность сильно повышается (надеюсь не за счёт производительности). А ваша широкая структура губит производительность фокса на корню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 22:48 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
CyvА ваша широкая структура Прошу сдесь подробней =) CyvДля Caption по числовому коду - без проблем. Вот, как я и говорил, что бы отредактировать этот файл, где в качестве номера позиции используется n-byte - очень сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 01:37 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
2 Cyv Автор VFP Desktop - это я (псевдоним из моей предыдущей темы, используемый для анонимности) =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 11:42 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
авторпосле выбранного языка, этот файл импортируется в DBF или курсор А как это подружить с приватными сессиями данных? Загружать для каждой сессии это добро как-то расточительно :). Хотя встречались и такие решения. Лучше уж сразу в глобальный массив или объект. По поводу приведённой выше "структуры" - это поля или записи? Если поля, то есть уверенность, что их количество конечно? Если записи, то всё нормально, ключём выступает фраза на "главном" языке, как я уже писАл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 14:59 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
CyvА как это подружить с приватными сессиями данных? Загружать для каждой сессии это добро как-то расточительно :). не для поста, а для моей темы Desktop vs Web based =) Cyv- это поля или записи? позиции, то бишь записи совершенно верно, ключем будет - номер записи =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 20:38 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Недавно реализовал двуязычный проект на FoxPro 9.0 Довольно большая база данных, поддерживающая судостроительную САПР. Действительно, в Fox’e нет штатных средств локализации, как VC и Borland’e. Пришлось их придумать. Весь интерфейс вынес в одну таблицу со структурой: <имя модуля> <имя программы/формы> <идентификатор фразы> <Русский вариант> <Анлг. В-т> Далее во всех формах, программах, библиотеках были найдены фразы языка и помещены в эту таблицу. Далее все найденные фразы были заменены на их идентификаторы. Сами эти идентификаторы в программе являются переменными, получающими свои значения в головном модуле, перед их появлением в интерфейсе. Получилось порядка 2000 фраз на весь проект. Значения фраз загружаются в зависимости от переменной языка, хранимой в Реестре Windows – практически мгновенно. Для сбора фраз из исходного русского проекта, последующего сопровождения таблицы интерфейса пришлось сделать специальный редактор, на Fox’e, конечно. В формы FoxPro (в окно Properties) идентификаторы фраз вставляются с префиксом ‘=’. Например: =Fraza001 В Design Time такой Caption не виден. Это с непривычки неудобно. В Run Time, когда значения идентификаторов фраз определяются, тайное становится явным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 15:41 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Андрей КВ Design Time такой Caption не виден. Это с непривычки неудобно. Это очень просто решается. Caption= Whatever you need Name="Fraza001" А в Init формы уже заменяем все Caption соответствующими значаниями из таблицы для Name=XXX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 15:54 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Да, забыл сказать, где-то в FoxTalk была статья на тему многоязычных интерфейсов... Посморите в Интернете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 17:53 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
авторВ Design Time такой Caption не виден. Это с непривычки неудобно Это для тебя - "неудобно". А для человека, который не дай бог будет это сопровождать - беда. В дизайне всё должно быть на "основном" языке, для прочего - добавить свойство и метод для подмены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 18:48 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
авторЭто для тебя - "неудобно". А для человека, который не дай бог будет это сопровождать - беда. В дизайне всё должно быть на "основном" языке, для прочего - добавить свойство и метод для подмены. Не видны фразы в дизайне только после первой загрузки проекта. После первого прогона (в дизайне), когда все переменные инициализируются (они - глобальные переменные), всё становится видно, причём на нужном языке. Т.о. никаких проблем при сопровождении - редактируй таблицу интерфейса и наблюдай изменения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 08:18 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
А вот мой способ удобен в design time и при обслуживании "языковых" файлов =) Просто прописываем значение по умолчанию в свойство Caption - для удобного ориентирования в design time. А в метод Init что-то типа: lcReturnText = GetText(n) ... this.Caption = lcReturnText где n - номер записи в курсоре, в который при запуске программы импортировался текстовый файл соответствующий выбранному языку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 09:21 |
|
||
|
Многоязычность в VFP
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы, но я спрашивал про режим редактирования. Т.е. Как в TextBox отобразить слово на немецком языке при 1251, да еще адекватно его редактировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 12:16 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34650752&tid=1589034]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
76ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 421ms |

| 0 / 0 |
