
Need a translator from Russian into other languages from the command line or address line, so I can use it right out of the system Eidos
Code: Select all
**********************************************************************************************************************************
******** Если текущим задан русский язык, то найти элемент диалога в русской языковой базе:
******** - если он найден, то просто вернуть его:
******** - если он не найден, то занести его в русскую языковую базу и вернуть его.
********
******** Если текущим задан не русский язык вернуть перевод элемента диалога на текущий язык:
******** - если элемент диалога есть в языковой базе данных текущего языка, то взять из нее;
******** - если элемента диалога нет в языковой базе данных текущего языка, то сдедать перевод и добавить в нее, и вернуть перевод
**********************************************************************************************************************************
FUNCTION L(mParInp)
RETURN mParInp
aLstr := DC_DataSave() // Сохранение вычислительной среды (открытые и текущие БД и индексы) в памяти
* DC_DataRest( aLstr ) // Восстановление вычислительной среды (открытые и текущие БД и индексы)
mISO639_1 = SUBSTR(FileStr('Language.txt'),1,2)
mNameLangDB = 'Lang_'+mISO639_1
IF .NOT. FILE('Lang_ru.dbf') // Перенести в начало системы
aStructure := { { "NumPP" , "N", 6, 0 }, ;
{ "TextOrig" , "C", 255, 0 }, ;
{ "TextTransl" , "C", 255, 0 }, ;
{ "NumbUses" , "N", 15, 0 }, ;
{ "Date" , "C", 10, 0 }, ;
{ "Time" , "C", 8, 0 } }
DbCreate( 'Lang_ru.dbf', aStructure )
CLOSE ALL
USE Lang_ru EXCLUSIVE NEW
INDEX ON TextOrig TO Lang_ru
ENDIF
***** Если текстовый элемент уже есть в русской языковой базе,
***** то просто увеличить счетчик его использований,
***** а если его нет, то добавить
CLOSE ALL
USE Lang_ru INDEX Lang_ru EXCLUSIVE NEW
mParOut = ALLTRIM(mParInp)
* SELECT Lang_ru;SET ORDER TO 1;T=DBSEEK(mParInp)
SELECT Lang_ru;INDEX ON TextOrig TO Lang_ru;T=DBSEEK(mParInp)
IF T
SET ORDER TO
mNumbUses = NumbUses+1
REPLACE NUMBUSES WITH mNumbUses // Число использований данного элемента интерфейса
ELSE // Добавить сообщение в русскую языковую базу
SET ORDER TO
APPEND BLANK // Накопление информации об использованных текстовых элементах интерфейса
REPLACE NumPP WITH RECNO()
REPLACE TEXTORIG WITH ALLTRIM(mParInp)
REPLACE TEXTTRANSL WITH ALLTRIM(mParInp)
REPLACE NUMBUSES WITH 1 // Число использований элемента интерфейса
REPLACE Date WITH DTOC(DATE())
REPLACE Time WITH TIME()
ENDIF
IF mISO639_1 <> 'Ru' // Текущим задан не русский русский язык
IF .NOT. FILE(mNameLangDB+'.dbf') // Перенести в начало системы
aStructure := { { "NumPP" , "N", 6, 0 }, ;
{ "TextOrig" , "C", 255, 0 }, ;
{ "TextTransl" , "C", 255, 0 }, ;
{ "NumbUses" , "N", 15, 0 }, ;
{ "Date" , "C", 10, 0 }, ;
{ "Time" , "C", 8, 0 } }
DbCreate((mNameLangDB), aStructure )
CLOSE ALL
USE (mNameLangDB) EXCLUSIVE NEW
INDEX ON TextOrig TO (mNameLangDB)
ENDIF
CLOSE ALL
USE (mNameLangDB) INDEX (mNameLangDB) EXCLUSIVE NEW
IF RECCOUNT() > 1 // Если языковая база не пустая
* SELECT (mNameLangDB);SET ORDER TO 1;T=DBSEEK(mParInp)
SELECT (mNameLangDB);INDEX ON TextOrig TO (mNameLangDB);T=DBSEEK(mParInp)
IF T
mParOut = ALLTRIM(TextTransl) // Если перевод найден, то возвратить его
ENDIF
ENDIF
ENDIF
* aLstr := DC_DataSave() // Сохранение вычислительной среды (открытые и текущие БД и индексы) в памяти
DC_DataRest( aLstr ) // Восстановление вычислительной среды (открытые и текущие БД и индексы)
RETURN mParOut