Форум » [x]Harbour » Смена языка в Харборе » Ответить

Смена языка в Харборе

Andrey: Что то непонятное с русским и украинским языком в Харборе. Или я что-то неправильно делаю. Не восстанавливается язык через функции. Немецкий восстанавливается, а русский или украинский - НЕТ ! Почему ? [pre2]********* Call from: MAIN(72) --> test_lang2.prg восстанавили язык uk UA1251 hb_SetCodepage()= UA1251 hb_CdpSelect() = UA1251 hb_LangSelect() = uk.DEWIN hb_langName() = Harbour Language: uk.DEWIN Ukrainian (??????????) hb_langMessage()= uk.DEWIN hb_langErrMsg(1)= ?????????? ???????? 1) ??????, 2) ?????, 3) ????????, 4) ???????, 5) ???????, 6) ???????, 7) ??????, 8) ???????, 9) ????????, 10) ???????, 11) ????????, 12) ???????, 1) ??????, 2) ?????????, 3) ????????, 4) ??????, 5) ??????, 6) ?'??????, 7) ??????, [/pre2] Вот код примера - [more][pre2] /* * MINIGUI - Harbour Win32 GUI library Demo * * Смена языка */ #define _HMG_OUTLOG #include "hmg.ch" REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866 // русский язык REQUEST HB_CODEPAGE_UA1251, HB_CODEPAGE_UA866 // украинский язык REQUEST HB_LANG_BEWIN // белорусский язык REQUEST HB_CODEPAGE_DEWIN // немецкий язык ///////////////////////////////////////////////////////////////////////// Function Main Local cLog, tTime := HB_DATETIME(), cTime := HB_TTOC( tTime ) Local p1,p2 cLog := _SetGetLogFile( "test_lang2.log" ) fErase( cLog ) ? REPL("=",20) + " Start [ " + cTime + " ] " + REPL("=",20) ? MiniGuiVersion() SET CODEPAGE TO GERMAN SET LANGUAGE TO GERMAN // запоминаем cSetCP := hb_SetCodepage() cSelCdp := hb_CdpSelect() cLngSel := Hb_LangSelect() p1 := SUBSTR(cLngSel,1,2) p2 := SUBSTR(cLngSel,4) ? ProcNL() ? myGetLang() SET LANGUAGE TO RUSSIAN SET CODEPAGE TO RUSSIAN ? "*********",ProcNL(), "сменили язык на ", hb_LangSelect() // восстанавливаем язык // https://github.com/Petewg/harbour-core/wiki/hb_L hb_LangSelect(p1) hb_SetCodepage(cSetCP) hb_CdpSelect(cSelCdp) ? "*********",ProcNL(), "восстанавили язык", p1, p2 ? myGetLang() ? REPL("-",60) //SET LANGUAGE TO RUSSIAN //SET CODEPAGE TO RUSSIAN SET CODEPAGE TO UKRAINIAN // аналог hb_SetCodepage( "UA1251" ) SET LANGUAGE TO UKRAINIAN // аналог hb_CdpSelect( "UA1251" ) ? "*********",ProcNL(), "сменили язык на ", hb_LangSelect() ? myGetLang() // запоминаем cSetCP := hb_SetCodepage() cSelCdp := hb_CdpSelect() cLngSel := Hb_LangSelect() p1 := SUBSTR(cLngSel,1,2) p2 := SUBSTR(cLngSel,4) SET CODEPAGE TO GERMAN SET LANGUAGE TO GERMAN ? "*********",ProcNL(), "сменили язык на ", hb_LangSelect() ? myGetLang() // восстанавливаем язык // https://github.com/Petewg/harbour-core/wiki/hb_L ? "*********",ProcNL(), "восстанавили язык", p1, p2 hb_LangSelect(p1) hb_SetCodepage(cSetCP) hb_CdpSelect(cSelCdp) ? myGetLang() ? REPL("=",20) + " End [ " + HMG_TimeMS( tTime ) + " ] " + REPL("=",20) ShellExecute( 0, "Open", cLog,,, 1 ) Return Nil //////////////////////////////////////////////////////////////// FUNCTION myGetLang() // Какой язык ? LOCAL cMsg, nI cMsg := SPACE(3)+"hb_SetCodepage()= " + hb_SetCodepage() + ";" cMsg += SPACE(3)+"hb_CdpSelect() = " + hb_CdpSelect() + ";" cMsg += SPACE(3)+"hb_LangSelect() = " + hb_LangSelect() + ";" cMsg += SPACE(3)+"hb_langName() = " + hb_langName() + ";" cMsg += SPACE(3)+"hb_langMessage()= " + hb_langMessage() + ";" cMsg += SPACE(3)+"hb_langErrMsg(1)= " + hb_langErrMsg(1) + ";;" FOR nI := 1 TO 12 cMsg += HB_NtoS(nI) + ") " + LOWER( NTOCMONTH( nI ) ) + ", " NEXT cMsg += ";" FOR nI := 1 TO 7 cMsg += HB_NtoS(nI) + ") " + LOWER( NTOCDOW( nI ) ) + ", " NEXT cMsg := AtRepl( ";", cMsg, CRLF ) RETURN cMsg /////////////////////////////////////////////////////////////////// FUNCTION ProcNL(nVal) DEFAULT nVal := 0 RETURN "Call from: " + ProcName( nVal + 1 ) + "(" + ; hb_ntos( ProcLine( nVal + 1 ) ) + ") --> " + ; ProcFile( nVal + 1 )[/pre2][/more]

Ответов - 2

gfilatov2002: Andrey пишет: я что-то неправильно делаю. Да Andrey пишет: Не восстанавливается язык через функции. Попробуй исправленный пример ниже [pre2] /* * MINIGUI - Harbour Win32 GUI library Demo * * Смена языка */ #define _HMG_OUTLOG #include "minigui.ch" REQUEST HB_CODEPAGE_RU1251 //, HB_CODEPAGE_RU866 // русский язык REQUEST HB_CODEPAGE_UA1251 // , HB_CODEPAGE_UA866 // украинский язык //REQUEST HB_LANG_BEWIN // белорусский язык REQUEST HB_CODEPAGE_DEWIN // немецкий язык ///////////////////////////////////////////////////////////////////////// Function Main Local cLog, tTime := HB_DATETIME(), cTime := HB_TTOC( tTime ) Local p1,p2 cLog := _SetGetLogFile( "test_lang2.log" ) fErase( cLog ) ? REPL("=",20) + " Start [ " + cTime + " ] " + REPL("=",20) ? MiniGuiVersion() SET CODEPAGE TO GERMAN SET LANGUAGE TO GERMAN // запоминаем cSetCP := hb_SetCodepage() cSelCdp := hb_CdpSelect() cLngSel := Hb_LangSelect() p1 := SUBSTR(cLngSel,1,2) p2 := SUBSTR(cLngSel,4) ? ProcNL() ? myGetLang() SET LANGUAGE TO RUSSIAN SET CODEPAGE TO RUSSIAN ? "*********",ProcNL(), "сменили язык на ", hb_LangSelect() // восстанавливаем язык // https://github.com/Petewg/harbour-core/wiki/hb_L hb_LangSelect(p1,p2) hb_SetCodepage(cSetCP) hb_CdpSelect(cSelCdp) ? "*********",ProcNL(), "восстанавили язык", p1, p2 ? myGetLang() ? REPL("-",60) //SET LANGUAGE TO RUSSIAN //SET CODEPAGE TO RUSSIAN SET CODEPAGE TO UKRAINIAN // аналог hb_SetCodepage( "UA1251" ) SET LANGUAGE TO UKRAINIAN // аналог hb_CdpSelect( "UA1251" ) ? "*********",ProcNL(), "сменили язык на ", hb_LangSelect() ? myGetLang() // запоминаем cSetCP := hb_SetCodepage() cSelCdp := hb_CdpSelect() cLngSel := Hb_LangSelect() p1 := SUBSTR(cLngSel,1,2) p2 := SUBSTR(cLngSel,4) SET CODEPAGE TO GERMAN SET LANGUAGE TO GERMAN ? "*********",ProcNL(), "сменили язык на ", hb_LangSelect() ? myGetLang() // восстанавливаем язык // https://github.com/Petewg/harbour-core/wiki/hb_L ? "*********",ProcNL(), "восстанавили язык", p1, p2 hb_LangSelect(p1,p2) hb_SetCodepage(cSetCP) hb_CdpSelect(cSelCdp) ? myGetLang() ? REPL("=",20) + " End [ " + HMG_TimeMS( tTime ) + " ] " + REPL("=",20) ShellExecute( 0, "Open", cLog,,, 1 ) Return Nil //////////////////////////////////////////////////////////////// FUNCTION myGetLang() // Какой язык ? LOCAL cMsg, nI cMsg := SPACE(3)+"hb_SetCodepage()= " + hb_SetCodepage() + ";" cMsg += SPACE(3)+"hb_CdpSelect() = " + hb_CdpSelect() + ";" cMsg += SPACE(3)+"hb_LangSelect() = " + hb_LangSelect() + ";" cMsg += SPACE(3)+"hb_langName() = " + hb_langName() + ";" cMsg += SPACE(3)+"hb_langMessage()= " + hb_langMessage() + ";" cMsg += SPACE(3)+"hb_langErrMsg(1)= " + hb_langErrMsg(1) + ";;" FOR nI := 1 TO 12 cMsg += HB_NtoS(nI) + ") " + LOWER( NTOCMONTH( nI ) ) + ", " NEXT cMsg += ";" FOR nI := 1 TO 7 cMsg += HB_NtoS(nI) + ") " + LOWER( NTOCDOW( nI ) ) + ", " NEXT cMsg := AtRepl( ";", cMsg, CRLF ) RETURN cMsg /////////////////////////////////////////////////////////////////// FUNCTION ProcNL(nVal) DEFAULT nVal := 0 RETURN "Call from: " + ProcName( nVal + 1 ) + "(" + ; hb_ntos( ProcLine( nVal + 1 ) ) + ") --> " + ; ProcFile( nVal + 1 )[/pre2]

Andrey: gfilatov2002 пишет: Попробуй исправленный пример ниже Спасибо БОЛЬШОЕ ! Ошибся в параметрах и посчитал что нужно передавать только один параметр.



полная версия страницы