From 1b6b2ba911b64eaa8aacbb4c5681496ceafefcb0 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 29 Mar 2013 19:32:41 +0100 Subject: [PATCH] 2013-03-29 19:31 UTC+0100 Viktor Szakats (harbour syenar.net) * utils/hbmk2/hbmk2.prg + better match algrorithm for finding .hbl translation modules f.e. "es_AR" will fall back to "es", than fall back to whichever dialect is present. "es" will also be matched to "es_*" when "es" not present. ! now able to load languages Harbour doesn't even know about * utils/hbmk2/hbmk2.hbp * utils/hbmk2/po/hbmk2.el_GR.po -> utils/hbmk2/po/hbmk2.el.po * utils/hbmk2/po/hbmk2.es_PE.po -> utils/hbmk2/po/hbmk2.es.po * utils/hbmk2/po/hbmk2.hu_HU.po -> utils/hbmk2/po/hbmk2.hu.po * utils/hbmk2/po/hbmk2.it_IT.po -> utils/hbmk2/po/hbmk2.it.po % renamed to use short language code for languages that are unlikely to have multiple dialects implemented. We can branch out new dialects anytime as needed. (I'm still pending on Spanish. Please answer on the forum whether to have separate es_PE, es_AR and else.) --- ChangeLog.txt | 19 +++++ utils/hbmk2/hbmk2.hbp | 2 +- utils/hbmk2/hbmk2.prg | 72 +++++++++++-------- .../hbmk2/po/{hbmk2.el_GR.po => hbmk2.el.po} | 0 .../hbmk2/po/{hbmk2.es_PE.po => hbmk2.es.po} | 0 .../hbmk2/po/{hbmk2.hu_HU.po => hbmk2.hu.po} | 0 .../hbmk2/po/{hbmk2.it_IT.po => hbmk2.it.po} | 0 7 files changed, 64 insertions(+), 29 deletions(-) rename utils/hbmk2/po/{hbmk2.el_GR.po => hbmk2.el.po} (100%) rename utils/hbmk2/po/{hbmk2.es_PE.po => hbmk2.es.po} (100%) rename utils/hbmk2/po/{hbmk2.hu_HU.po => hbmk2.hu.po} (100%) rename utils/hbmk2/po/{hbmk2.it_IT.po => hbmk2.it.po} (100%) diff --git a/ChangeLog.txt b/ChangeLog.txt index f68996e292..7672f50db8 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,25 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2013-03-29 19:31 UTC+0100 Viktor Szakats (harbour syenar.net) + * utils/hbmk2/hbmk2.prg + + better match algrorithm for finding .hbl translation modules + f.e. "es_AR" will fall back to "es", than fall back to + whichever dialect is present. "es" will also be matched + to "es_*" when "es" not present. + ! now able to load languages Harbour doesn't even know about + + * utils/hbmk2/hbmk2.hbp + * utils/hbmk2/po/hbmk2.el_GR.po -> utils/hbmk2/po/hbmk2.el.po + * utils/hbmk2/po/hbmk2.es_PE.po -> utils/hbmk2/po/hbmk2.es.po + * utils/hbmk2/po/hbmk2.hu_HU.po -> utils/hbmk2/po/hbmk2.hu.po + * utils/hbmk2/po/hbmk2.it_IT.po -> utils/hbmk2/po/hbmk2.it.po + % renamed to use short language code for languages + that are unlikely to have multiple dialects implemented. + We can branch out new dialects anytime as needed. + (I'm still pending on Spanish. Please answer on the + forum whether to have separate es_PE, es_AR and else.) + 2013-03-29 18:17 UTC+0100 Viktor Szakats (harbour syenar.net) * utils/hbmk2/po/hbmk2.en_US.po -> utils/hbmk2/po/hbmk2.en.po * tuning language IDs diff --git a/utils/hbmk2/hbmk2.hbp b/utils/hbmk2/hbmk2.hbp index b683f31a22..c343c5275f 100644 --- a/utils/hbmk2/hbmk2.hbp +++ b/utils/hbmk2/hbmk2.hbp @@ -22,7 +22,7 @@ hbmk2.prg po/hbmk2.%{hb_lng}.po -hbl=hbmk2.%{hb_lng}.hbl --lng=el_GR,es_PE,hu_HU,it_IT,pt_BR +-lng=el,es,hu,it,pt_BR # not using these together with .rc input, because some compilers (mingw) # do not support multiple .rc inputs diff --git a/utils/hbmk2/hbmk2.prg b/utils/hbmk2/hbmk2.prg index 695cca903e..c4984a7063 100644 --- a/utils/hbmk2/hbmk2.prg +++ b/utils/hbmk2/hbmk2.prg @@ -1471,7 +1471,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit hbmk[ _HBMK_lPause ] := lPause hbmk[ _HBMK_nLevel ] := nLevel - SetUILang( hbmk[ _HBMK_cUILNG ] := GetUILang() ) + SetUILang( hbmk, GetUILang() ) IF Empty( aArgs ) ShowHeader( hbmk ) @@ -1540,7 +1540,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit CASE Left( cParamL, 7 ) == "-build=" ; hbmk[ _HBMK_cBUILD ] := StrTran( hb_DirSepToOS( SubStr( cParam, 8 ) ), hb_ps() ) CASE Left( cParamL, 6 ) == "-build" ; hbmk[ _HBMK_lStopAfterHarbour ] := .T. CASE Left( cParamL, 8 ) == "-credits" ; hbmk[ _HBMK_lStopAfterHarbour ] := .T. - CASE Left( cParamL, 6 ) == "-lang=" ; SetUILang( hbmk[ _HBMK_cUILNG ] := SubStr( cParam, 7 ) ) + CASE Left( cParamL, 6 ) == "-lang=" ; SetUILang( hbmk, SubStr( cParam, 7 ) ) CASE Left( cParamL, 4 ) == "-shl" ; hbmk[ _HBMK_lShowLevel ] := .T. CASE Left( cParamL, 7 ) == "-width=" @@ -13748,10 +13748,6 @@ STATIC PROCEDURE __hbshell( cFile, ... ) ENDIF #endif - /* Set CP and language */ - - SetUILang( GetUILang() ) - /* Save originals */ hbsh[ _HBSH_cDirBase ] := hb_DirBase() @@ -13761,6 +13757,10 @@ STATIC PROCEDURE __hbshell( cFile, ... ) hbmk := hbsh[ _HBSH_hbmk ] := hbmk_new( .T. ) + /* Set CP and language */ + + SetUILang( hbmk, GetUILang() ) + /* Help */ IF HB_ISSTRING( cFile ) @@ -13771,7 +13771,7 @@ STATIC PROCEDURE __hbshell( cFile, ... ) CASE cParamL == "-help" .OR. cParamL == "--help" .OR. ; cParamL == "-h" .OR. cParamL == "-?" - SetUILang( hbmk[ _HBMK_cUILNG ] := GetUILang() ) + SetUILang( hbmk, GetUILang() ) ShowHeader( hbmk ) ShowHelp( hbmk, .T. ) RETURN @@ -13779,7 +13779,7 @@ STATIC PROCEDURE __hbshell( cFile, ... ) CASE cParamL == "-longhelp" .OR. cParamL == "--longhelp" .OR. ; cParamL == "-hh" .OR. cParamL == "-??" - SetUILang( hbmk[ _HBMK_cUILNG ] := GetUILang() ) + SetUILang( hbmk, GetUILang() ) ShowHeader( hbmk ) ShowHelp( hbmk, .T., .T. ) RETURN @@ -13804,7 +13804,7 @@ STATIC PROCEDURE __hbshell( cFile, ... ) hbmk[ _HBMK_lMarkdown ] := .T. - SetUILang( hbmk[ _HBMK_cUILNG ] := GetUILang() ) + SetUILang( hbmk, GetUILang() ) ShowHeader( hbmk ) ShowHelp( hbmk, .T., .T. ) RETURN @@ -15479,9 +15479,13 @@ STATIC FUNCTION GetUILang() RETURN StrTran( cLNG, "_", "-" ) -STATIC PROCEDURE SetUILang( cUILNG ) +STATIC PROCEDURE SetUILang( hbmk, cUILNG ) - LOCAL tmp + LOCAL aLang + LOCAL cLang + LOCAL cFileName + LOCAL cFile + LOCAL aFile /* Setup input CP of the translation */ hb_cdpSelect( "UTF8EX" ) @@ -15495,21 +15499,35 @@ STATIC PROCEDURE SetUILang( cUILNG ) /* Configure language */ IF cUILNG == "en" hb_i18n_Set( NIL ) - hb_langSelect( cUILNG ) + hb_langSelect( hbmk[ _HBMK_cUILNG ] := cUILNG ) ELSE - tmp := ; - hb_DirSepAdd( hb_DirBase() ) + ; - _SELF_NAME_ + ; - "." + ; - StrTran( cUILNG, "-", "_" ) + ; - ".hbl" - IF hb_i18n_Check( tmp := hb_MemoRead( tmp ) ) - hb_i18n_Set( hb_i18n_RestoreTable( tmp ) ) - hb_langSelect( cUILNG ) - ELSE - hb_i18n_Set( NIL ) - hb_langSelect( "en" ) - ENDIF + aLang := AAddNew( { cUILNG }, Left( cUILNG, 2 ) ) + AAdd( aLang, Left( cUILNG, 2 ) + "*" ) + FOR EACH cLang IN aLang + #define _LANG_TO_HBL( cLang ) hb_DirSepAdd( hb_DirBase() ) + _SELF_NAME_ + "." + StrTran( cLang, "-", "_" ) + ".hbl" + IF "*" $ cLang + IF Empty( aFile := Directory( _LANG_TO_HBL( cLang ) ) ) + cFileName := NIL + ELSE + cFileName := aFile[ 1 ][ F_NAME ] + cLang := StrTran( SubStr( hb_FNameExt( hb_FNameName( cFileName ) ), 2 ), "_", "-" ) + ENDIF + ELSE + cFileName := _LANG_TO_HBL( cLang ) + ENDIF + IF ! Empty( cFileName ) .AND. ; + hb_i18n_Check( cFile := hb_MemoRead( cFileName ) ) + hb_i18n_Set( hb_i18n_RestoreTable( cFile ) ) + BEGIN SEQUENCE WITH {| oError | Break( oError ) } + hb_langSelect( hbmk[ _HBMK_cUILNG ] := cLang ) + END /* SEQUENCE */ + EXIT + ELSEIF cLang:__enumIsLast() + hb_i18n_Set( NIL ) + hb_langSelect( hbmk[ _HBMK_cUILNG ] := "en" ) + EXIT + ENDIF + NEXT ENDIF RETURN @@ -15600,9 +15618,7 @@ STATIC PROCEDURE ShowHeader( hbmk ) ENDIF Eval( hbmk[ _HBMK_bOut ], cText ) - IF !( hbmk[ _HBMK_cUILNG ] == "en" ) .AND. ; - !( hbmk[ _HBMK_cUILNG ] == "en-GB" ) .AND. ; - !( hbmk[ _HBMK_cUILNG ] == "en-US" ) + IF !( Lower( Left( hbmk[ _HBMK_cUILNG ], 2 ) ) == "en" ) cTrsText := hb_i18n_gettext_noop( "Translation (%1$s): (add your name here)" ) cTrsTextI := I_( cTrsText ) IF !( cTrsText == cTrsTextI ) .AND. ! Empty( cTrsTextI ) diff --git a/utils/hbmk2/po/hbmk2.el_GR.po b/utils/hbmk2/po/hbmk2.el.po similarity index 100% rename from utils/hbmk2/po/hbmk2.el_GR.po rename to utils/hbmk2/po/hbmk2.el.po diff --git a/utils/hbmk2/po/hbmk2.es_PE.po b/utils/hbmk2/po/hbmk2.es.po similarity index 100% rename from utils/hbmk2/po/hbmk2.es_PE.po rename to utils/hbmk2/po/hbmk2.es.po diff --git a/utils/hbmk2/po/hbmk2.hu_HU.po b/utils/hbmk2/po/hbmk2.hu.po similarity index 100% rename from utils/hbmk2/po/hbmk2.hu_HU.po rename to utils/hbmk2/po/hbmk2.hu.po diff --git a/utils/hbmk2/po/hbmk2.it_IT.po b/utils/hbmk2/po/hbmk2.it.po similarity index 100% rename from utils/hbmk2/po/hbmk2.it_IT.po rename to utils/hbmk2/po/hbmk2.it.po