mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
I18n settings (#4416)
* dot abapGit i18n_langs * rewrite dot abapgit (better design) * settings * linter fix * review fixes Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
6dac984acc
commit
47dae10ab0
|
@ -76,6 +76,14 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
|
||||||
METHODS set_requirements
|
METHODS set_requirements
|
||||||
IMPORTING
|
IMPORTING
|
||||||
it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt.
|
it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt.
|
||||||
|
|
||||||
|
METHODS get_i18n_langs
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_langs) TYPE string.
|
||||||
|
METHODS set_i18n_langs
|
||||||
|
IMPORTING
|
||||||
|
iv_langs TYPE string.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA: ms_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit.
|
DATA: ms_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit.
|
||||||
|
@ -89,6 +97,13 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
|
||||||
IMPORTING iv_xml TYPE string
|
IMPORTING iv_xml TYPE string
|
||||||
RETURNING VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit.
|
RETURNING VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit.
|
||||||
|
|
||||||
|
CLASS-METHODS decode_i18n_langs_string
|
||||||
|
IMPORTING
|
||||||
|
iv_langs TYPE string
|
||||||
|
iv_skip_master_lang TYPE spras OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_langs) TYPE zif_abapgit_dot_abapgit=>ty_langs_tt.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -137,6 +152,35 @@ CLASS ZCL_ABAPGIT_DOT_ABAPGIT IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD decode_i18n_langs_string.
|
||||||
|
|
||||||
|
" This should go as an util to TEXTS/i18n class
|
||||||
|
|
||||||
|
DATA lt_langs_str TYPE string_table.
|
||||||
|
DATA lv_master_lang_iso TYPE laiso.
|
||||||
|
FIELD-SYMBOLS <lv_str> LIKE LINE OF lt_langs_str.
|
||||||
|
FIELD-SYMBOLS <lv_lang> LIKE LINE OF rt_langs.
|
||||||
|
|
||||||
|
IF iv_skip_master_lang IS NOT INITIAL.
|
||||||
|
lv_master_lang_iso = cl_i18n_languages=>sap1_to_sap2( iv_skip_master_lang ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
SPLIT iv_langs AT ',' INTO TABLE lt_langs_str.
|
||||||
|
LOOP AT lt_langs_str ASSIGNING <lv_str>.
|
||||||
|
CONDENSE <lv_str>.
|
||||||
|
<lv_str> = to_upper( <lv_str> ).
|
||||||
|
IF <lv_str> IS NOT INITIAL AND ( lv_master_lang_iso IS INITIAL OR <lv_str> <> lv_master_lang_iso ).
|
||||||
|
APPEND INITIAL LINE TO rt_langs ASSIGNING <lv_lang>.
|
||||||
|
<lv_lang> = <lv_str>.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
" TODO: maybe validate language against table, but system may not have one?
|
||||||
|
" TODO: maybe through on lang > 2 symbols ?
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize.
|
METHOD deserialize.
|
||||||
|
|
||||||
DATA: lv_xml TYPE string,
|
DATA: lv_xml TYPE string,
|
||||||
|
@ -183,6 +227,18 @@ CLASS ZCL_ABAPGIT_DOT_ABAPGIT IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_i18n_langs.
|
||||||
|
|
||||||
|
DATA lt_langs TYPE zif_abapgit_dot_abapgit=>ty_langs_tt.
|
||||||
|
|
||||||
|
lt_langs = decode_i18n_langs_string(
|
||||||
|
iv_langs = ms_data-i18n_langs
|
||||||
|
iv_skip_master_lang = ms_data-master_language ).
|
||||||
|
CONCATENATE LINES OF lt_langs INTO rv_langs SEPARATED BY ','.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_master_language.
|
METHOD get_master_language.
|
||||||
rv_language = ms_data-master_language.
|
rv_language = ms_data-master_language.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -285,6 +341,18 @@ CLASS ZCL_ABAPGIT_DOT_ABAPGIT IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD set_i18n_langs.
|
||||||
|
|
||||||
|
DATA lt_langs TYPE zif_abapgit_dot_abapgit=>ty_langs_tt.
|
||||||
|
|
||||||
|
lt_langs = decode_i18n_langs_string(
|
||||||
|
iv_langs = iv_langs
|
||||||
|
iv_skip_master_lang = ms_data-master_language ).
|
||||||
|
CONCATENATE LINES OF lt_langs INTO ms_data-i18n_langs SEPARATED BY ','.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD set_requirements.
|
METHOD set_requirements.
|
||||||
ms_data-requirements = it_requirements.
|
ms_data-requirements = it_requirements.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -7,11 +7,11 @@ CLASS ltcl_dot_abapgit DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS
|
||||||
METHODS:
|
METHODS:
|
||||||
identity FOR TESTING
|
identity FOR TESTING
|
||||||
RAISING zcx_abapgit_exception,
|
RAISING zcx_abapgit_exception,
|
||||||
ignore FOR TESTING.
|
ignore FOR TESTING,
|
||||||
|
i18n FOR TESTING.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
CLASS ltcl_dot_abapgit IMPLEMENTATION.
|
CLASS ltcl_dot_abapgit IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD identity.
|
METHOD identity.
|
||||||
|
@ -101,4 +101,33 @@ CLASS ltcl_dot_abapgit IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD i18n.
|
||||||
|
|
||||||
|
DATA lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
|
||||||
|
|
||||||
|
lo_dot = zcl_abapgit_dot_abapgit=>build_default( ).
|
||||||
|
lo_dot->ms_data-master_language = 'E'.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_dot->ms_data-i18n_langs
|
||||||
|
exp = '' ).
|
||||||
|
|
||||||
|
lo_dot->set_i18n_langs( 'en , de, es' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_dot->ms_data-i18n_langs
|
||||||
|
exp = 'DE,ES' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_dot->get_i18n_langs( )
|
||||||
|
exp = 'DE,ES' ).
|
||||||
|
|
||||||
|
lo_dot->ms_data-i18n_langs = `en , DE, es `.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_dot->get_i18n_langs( )
|
||||||
|
exp = 'DE,ES' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -8,9 +8,13 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC.
|
||||||
END OF ty_requirement .
|
END OF ty_requirement .
|
||||||
TYPES:
|
TYPES:
|
||||||
ty_requirement_tt TYPE STANDARD TABLE OF ty_requirement WITH DEFAULT KEY .
|
ty_requirement_tt TYPE STANDARD TABLE OF ty_requirement WITH DEFAULT KEY .
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
ty_langs_tt TYPE STANDARD TABLE OF laiso WITH DEFAULT KEY.
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_dot_abapgit,
|
BEGIN OF ty_dot_abapgit,
|
||||||
master_language TYPE spras,
|
master_language TYPE spras,
|
||||||
|
i18n_langs TYPE string,
|
||||||
starting_folder TYPE string,
|
starting_folder TYPE string,
|
||||||
folder_logic TYPE string,
|
folder_logic TYPE string,
|
||||||
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
||||||
|
|
|
@ -29,6 +29,7 @@ CLASS zcl_abapgit_gui_page_sett_repo DEFINITION
|
||||||
BEGIN OF c_id,
|
BEGIN OF c_id,
|
||||||
dot TYPE string VALUE 'dot',
|
dot TYPE string VALUE 'dot',
|
||||||
master_language TYPE string VALUE 'master_language',
|
master_language TYPE string VALUE 'master_language',
|
||||||
|
i18n_langs TYPE string VALUE 'i18n_langs',
|
||||||
starting_folder TYPE string VALUE 'starting_folder',
|
starting_folder TYPE string VALUE 'starting_folder',
|
||||||
folder_logic TYPE string VALUE 'folder_logic',
|
folder_logic TYPE string VALUE 'folder_logic',
|
||||||
ignore TYPE string VALUE 'ignore',
|
ignore TYPE string VALUE 'ignore',
|
||||||
|
@ -71,7 +72,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REPO IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
@ -121,6 +122,10 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
iv_label = 'Main Language'
|
iv_label = 'Main Language'
|
||||||
iv_hint = 'Main language of repository (cannot be changed)'
|
iv_hint = 'Main language of repository (cannot be changed)'
|
||||||
iv_readonly = abap_true
|
iv_readonly = abap_true
|
||||||
|
)->text(
|
||||||
|
iv_name = c_id-i18n_langs
|
||||||
|
iv_label = 'Serialize translations (experimental LXE approach)'
|
||||||
|
iv_hint = 'Comma separate 2-letter iso lang codes e.g. "de,es,..." - should not include main language'
|
||||||
)->radio(
|
)->radio(
|
||||||
iv_name = c_id-folder_logic
|
iv_name = c_id-folder_logic
|
||||||
iv_default_value = zif_abapgit_dot_abapgit=>c_folder_logic-prefix
|
iv_default_value = zif_abapgit_dot_abapgit=>c_folder_logic-prefix
|
||||||
|
@ -167,6 +172,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
METHOD read_settings.
|
METHOD read_settings.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
|
lo_dot TYPE REF TO zcl_abapgit_dot_abapgit,
|
||||||
ls_dot TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit,
|
ls_dot TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit,
|
||||||
lv_language TYPE t002t-sptxt,
|
lv_language TYPE t002t-sptxt,
|
||||||
lv_ignore TYPE string,
|
lv_ignore TYPE string,
|
||||||
|
@ -178,7 +184,8 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
<lv_ignore> TYPE string.
|
<lv_ignore> TYPE string.
|
||||||
|
|
||||||
" Get settings from DB
|
" Get settings from DB
|
||||||
ls_dot = mo_repo->get_dot_abapgit( )->get_data( ).
|
lo_dot = mo_repo->get_dot_abapgit( ).
|
||||||
|
ls_dot = lo_dot->get_data( ).
|
||||||
|
|
||||||
" Repository Settings
|
" Repository Settings
|
||||||
SELECT SINGLE sptxt INTO lv_language FROM t002t
|
SELECT SINGLE sptxt INTO lv_language FROM t002t
|
||||||
|
@ -190,6 +197,9 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
mo_form_data->set(
|
mo_form_data->set(
|
||||||
iv_key = c_id-master_language
|
iv_key = c_id-master_language
|
||||||
iv_val = |{ ls_dot-master_language } ({ lv_language })| ).
|
iv_val = |{ ls_dot-master_language } ({ lv_language })| ).
|
||||||
|
mo_form_data->set(
|
||||||
|
iv_key = c_id-i18n_langs
|
||||||
|
iv_val = lo_dot->get_i18n_langs( ) ).
|
||||||
mo_form_data->set(
|
mo_form_data->set(
|
||||||
iv_key = c_id-folder_logic
|
iv_key = c_id-folder_logic
|
||||||
iv_val = ls_dot-folder_logic ).
|
iv_val = ls_dot-folder_logic ).
|
||||||
|
@ -259,6 +269,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
|
|
||||||
lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ).
|
lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ).
|
||||||
lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ).
|
lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ).
|
||||||
|
lo_dot->set_i18n_langs( mo_form_data->get( c_id-i18n_langs ) ).
|
||||||
|
|
||||||
" Remove all ignores
|
" Remove all ignores
|
||||||
lt_ignore = lo_dot->get_data( )-ignore.
|
lt_ignore = lo_dot->get_data( )-ignore.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user