Extend logic to detect BCP47 languages (#6986)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Albert Mink 2024-07-22 14:28:16 +02:00 committed by GitHub
parent d8afb7bf42
commit f9bd01021d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 52 additions and 5 deletions

View File

@ -112,6 +112,15 @@ CLASS zcl_abapgit_filename_logic DEFINITION
RAISING
zcx_abapgit_exception.
CLASS-METHODS get_lang_and_ext
IMPORTING
iv_filename TYPE string
EXPORTING
ev_lang TYPE laiso
ev_ext TYPE string
RAISING
zcx_abapgit_exception.
ENDCLASS.
@ -184,7 +193,7 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
DATA lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
CLEAR: ev_lang, ev_ext.
CLEAR: es_item, ev_lang, ev_ext.
lo_dot = zcl_abapgit_dot_abapgit=>build_default( ).
file_to_object(
@ -195,8 +204,12 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
IMPORTING
es_item = es_item ).
FIND FIRST OCCURRENCE OF REGEX 'i18n\.([^.]{2})\.([^.]+)$' IN iv_filename
SUBMATCHES ev_lang ev_ext ##SUBRC_OK.
get_lang_and_ext(
EXPORTING
iv_filename = iv_filename
IMPORTING
ev_lang = ev_lang
ev_ext = ev_ext ).
ENDMETHOD.
@ -358,4 +371,38 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
iv_ext = iv_ext ).
ENDMETHOD.
METHOD get_lang_and_ext.
DATA lt_filename_elements TYPE string_table.
DATA lv_langu_bcp47 TYPE string.
DATA lv_sap1 TYPE sy-langu.
SPLIT iv_filename AT '.' INTO TABLE lt_filename_elements.
READ TABLE lt_filename_elements INDEX lines( lt_filename_elements ) INTO ev_ext.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Could not derive file extension of file { iv_filename }| ).
ENDIF.
READ TABLE lt_filename_elements WITH KEY table_line = `i18n` TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
READ TABLE lt_filename_elements INDEX ( sy-tabix + 1 ) INTO lv_langu_bcp47.
IF sy-subrc = 0.
lv_sap1 = zcl_abapgit_convert=>language_bcp47_to_sap1( lv_langu_bcp47 ).
ev_lang = zcl_abapgit_convert=>language_sap1_to_sap2( lv_sap1 ). " actually it is to_upper( ISO-639 )
" to not break existing PO file implementations
IF ev_ext = `po`.
ev_lang = to_lower( ev_lang ).
ENDIF.
ENDIF.
ENDIF.
IF ev_lang IS INITIAL.
CLEAR ev_ext.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -451,7 +451,7 @@ CLASS ltcl_run_checks IMPLEMENTATION.
exp = 'ZPROGRAM'
act = ls_item-obj_name ).
cl_abap_unit_assert=>assert_equals(
exp = 'en'
exp = 'EN'
act = lv_lang ).
cl_abap_unit_assert=>assert_equals(
exp = 'properties'

View File

@ -54,7 +54,7 @@ CLASS ltcl_objects_files IMPLEMENTATION.
APPEND INITIAL LINE TO lt_files ASSIGNING <ls_files>.
<ls_files>-filename = 'zlf.prog.i18n.es.po'.
APPEND INITIAL LINE TO lt_files ASSIGNING <ls_files>.
<ls_files>-filename = 'zlf.prog.i18n.cz.other'.
<ls_files>-filename = 'zlf.prog.i18n.cs.other'.
" object type and name are upper case
ls_item-obj_type = 'PROG'.