This code sample can be used to create a glossary by using Google Cloud Cloud Translation API (v3).
A glossary is a custom dictionary that the Cloud Translation API (v3) uses to consistently translate business's domain-specific terminology.
Make sure a glossary file is prepared and uploaded to a Cloud Storage bucket in the same Google Cloud project. For more information about preparing a glossary file, see Creating and using glossaries (Advanced).
For a comprehensive collection of code samples for the SAP BTP edition of ABAP SDK for Google Cloud, see the code sample repository on GitHub.
For a comprehensive collection of code samples for the on-premises or any cloud edition of ABAP SDK for Google Cloud, see the code samples repository on GitHub.
Code sample
SAP BTP edition
" --------------------------------------------------------------------
"  Copyright 2024 Google LLC                                         -
"                                                                    -
"  Licensed under the Apache License, Version 2.0 (the "License");   -
"  you may not use this file except in compliance with the License.  -
"  You may obtain a copy of the License at                           -
"      https://www.apache.org/licenses/LICENSE-2.0                   -
"  Unless required by applicable law or agreed to in writing,        -
"  software distributed under the License is distributed on an       -
"  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      -
"  either express or implied.                                        -
"  See the License for the specific language governing permissions   -
"  and limitations under the License.                                -
" --------------------------------------------------------------------
CLASS zcl_cs_create_glossary DEFINITION
  PUBLIC FINAL
  CREATE PUBLIC.
  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.
ENDCLASS.
CLASS ZCL_CS_CREATE_GLOSSARY IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    "Data decalarations
    DATA lv_p_projects_id  TYPE string.
    DATA lv_p_locations_id TYPE string.
    DATA ls_input          TYPE /goog/cl_translation_v3=>ty_022.
    TRY.
        " Open HTTP Connection
        " Pass the configured client key, TRANSLATE_DEMO is used as example, replace it with actual value
        DATA(lo_translate) = NEW /goog/cl_translation_v3( iv_key_name = 'TRANSLATE_DEMO' ).
        " Derive project id from the object
        lv_p_projects_id  = lo_translate->gv_project_id.
        " Set a location id, 'us-central1' is used as example, replace it with actual value
        lv_p_locations_id = 'us-central1'.
        " Pass a display name. The value passed below is an example, replace it with actual value
        ls_input-display_name = 'Finance Term Glossary EN to ES'.
        " Source language in BCP-47 format. The value passed below is an example, replace it with actual value
        ls_input-language_pair-source_language_code = 'en-US'.
        " Target language in BCP-47 format. The value passed below is an example, replace it with actual value
        ls_input-language_pair-target_language_code = 'es-ES'.
        " Complete name of glossary has following format:
        " projects/<PROJECT_ID>/locations/<LOCATION_ID>/glossaries/<GLOSSARY_ID>
        " The value used for GLOSSARY ID is an example, replace it with actual value.
        CONCATENATE 'projects/'
                     lo_translate->gv_project_id
                     '/locations/us-central1/glossaries/'
                     'FI_GLOSSARY_EN_ES'
                    INTO ls_input-name.
       " TODO: Pass the complete path of glossary file which is stored in GCS bucket
       " ls_input-input_config-gcs_source-input_uri =
        " Call API method
        lo_translate->create_glossaries( EXPORTING iv_p_projects_id  = lv_p_projects_id
                                                   iv_p_locations_id = lv_p_locations_id
                                                   is_input          = ls_input
                                         IMPORTING es_output         = DATA(ls_output)
                                                   ev_ret_code       = DATA(lv_ret_code)
                                                   ev_err_text       = DATA(lv_err_text)
                                                   es_err_resp       = DATA(ls_err_resp) ).
        IF /goog/cl_http_client=>is_success( lv_ret_code ).
          " This returns a long running operation id as glossary creation is adhoc
          " You can use the LRO ID to poll to check the status of the operation (SUCCESS Or FAILURE)
          out->write( | LRO ID:{ ls_output-name }| ).
        ELSE.
          out->write( | Error occurred: { lv_err_text }| ).
        ENDIF.
        " Close HTTP Connection
        lo_translate->close( ).
      CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
        lv_err_text = lo_sdk_excp->get_text( ).
        out->write( |Exception occurred: { lv_err_text } | ).
    ENDTRY.
  ENDMETHOD.
ENDCLASS.
On-premises or any cloud edition
**********************************************************************
*  Copyright 2023 Google LLC                                         *
*                                                                    *
*  Licensed under the Apache License, Version 2.0 (the "License");   *
*  you may not use this file except in compliance with the License.  *
*  You may obtain a copy of the License at                           *
*      https://www.apache.org/licenses/LICENSE-2.0                   *
*  Unless required by applicable law or agreed to in writing,        *
*  software distributed under the License is distributed on an       *
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      *
*  either express or implied.                                        *
*  See the License for the specific language governing permissions   *
*  and limitations under the License.                                *
**********************************************************************
REPORT zr_create_glossaries.
"Data declarations
DATA: lv_p_projects_id  TYPE string,
      lv_p_locations_id TYPE string,
      ls_input          TYPE /goog/cl_translation_v3=>ty_022.
TRY.
    "Open HTTP Connection
    "Pass the configured client key - TRANSLATE_DEMO is used an example, replace it with actual value.
    DATA(lo_translate) = NEW /goog/cl_translation_v3( iv_key_name = 'TRANSLATE_DEMO' ).
    "Populate required parameters
    "Derive project id from the object
    lv_p_projects_id  = lo_translate->gv_project_id.
    "Set a location id, 'us-central1' is used as example, replace it with actual value.
    lv_p_locations_id = 'us-central1'.
    "Pass a display name, the value passed below is an example, replace it with actual value
    ls_input-display_name = 'Finance Term Glossary EN to ES'.
    "Source language in BCP-47 format. The value passed below is an example, replace it with actual value
    ls_input-language_pair-source_language_code = 'en-US'.
    "Target language in BCP-47 format. The value passed below is an example, replace it with actual value
    ls_input-language_pair-target_language_code = 'es-ES'.
    "Complete name of glossary has following format:
    "projects/<PROJECT_ID>/locations/<LOCATION_ID>/glossaries/<GLOSSARY_ID>
    "The value used for GLOSSARY ID is an exmaple, replace it with actual value
    CONCATENATE 'projects/'
                 lo_translate->gv_project_id
                 '/locations/us-central1/glossaries/'
                 'FI_GLOSSARY_EN_ES'
                 INTO ls_input-name.
    "TODO: Pass the complete path of glossary file which is stored in GCS bucket
    "ls_input-input_config-gcs_source-input_uri =
    "Call API method
    CALL METHOD lo_translate->create_glossaries
      EXPORTING
        iv_p_projects_id  = lv_p_projects_id
        iv_p_locations_id = lv_p_locations_id
        is_input          = ls_input
      IMPORTING
        es_output         = DATA(ls_output)
        ev_ret_code       = DATA(lv_ret_code)
        ev_err_text       = DATA(lv_err_text)
        es_err_resp       = DATA(ls_err_resp).
    IF /goog/cl_http_client=>is_success( lv_ret_code ).
      "This returns a long running operation id for the job that is scheduled for glossary creation
      "You can use the LRO ID to poll and check the status of the operation
      WRITE: 'LRO ID:', ls_output-name.
    ELSE.
      MESSAGE lv_err_text TYPE 'E'.
    ENDIF.
    "Close HTTP Connection
    lo_translate->close( ).
  CATCH /goog/cx_sdk INTO DATA(lo_exception).
    MESSAGE lo_exception->get_text( ) TYPE 'E'.
ENDTRY.