Management of the translatable texts 

Introduction

The Sage software packages using X3 technology manage the translatable texts at different levels and give access to the translation tools to manage the translations, both for the standard delivered languages and also languages not delivered as standard.

Three different tables in the database are used to manage these texts. These are the following:

  • The APLSTD table corresponds to a table of texts organized in chapters. A text in this table is identified by 3 numbers : a chapter number, the message number in the chapter and an optional message type. To access this type of message in the current language for the connection, the calculator can be used in the mess function with the following syntax :
    mess(message_number,chapter_number,message_type)
    This table is managed by the supervisor and accessed by the supervisor and the engine.
  • The ATEXTE table defines most messages linked to the dictionary (the titles of the fields that appear on the screens, for instance). A message of this type is simply identified by a number. To access a message of this type in the current connection language, it is possible to use the AFNC.TEXTE function in the calculator with the following syntax:
    Func AFNC.TEXTE(message_number)
    This table is managed by the supervisor.
  • the ATEXTRA table defines the translatable data stored in the tables. Such a text is identified by a key that includes the table in which the data associated with the text are managed, the code for the corresponding text and the key for the corresponding record.
    To access a message of this type in the current connection language, it is possible to use the AFNC.TEXTE function in the calculator with the following syntax:
    Func AFNC.TEXTRA(table_code, field_code, key_value_1, key_value_2)
    This table is mostly managed by the application developers, but some supervisor tables (the miscellaneous tables, for example) also use it.

The APLSTD table.

The APLSTD table is used to store:

  • the messages used by the engine for the different functions. The type of message is then equal to 0. Found here are notably the language keywords, the texts useful in certain functions (for instance, the names of the days of the week and the months of the year returned by the functions day$ and month$), as well as the error messages returned by the engine, or certain interface texts.
  • the messages used by the supervisor or application developments. The type of message is then equal to 1. In that case, a distinction is made between message chapters and local menus:
    • The message chapters contain messages linked to the application developments.
    • The local menus serve to manage the entries in the form of a combo-box or radio buttons, the choices displayed correspond to the different message for the chapter, and a correspondence is made between the field value entered and the rank of the message in the chapter.

The message management and the local menus is made in a dedicated function. A simple check box defines if the chapter is a local menu.

In order to make it possible for customization developers and people in charge of the localization to have available dedicated chapters, number ranges have been defined. The detail on these ranges can be found in the corresponding annex.

A local menu can in addition be parameterized by a user (in order to personalize the choices they make from a combo box). This is defined by a choice in the message chapter setup.

When a menu of this type can be parameterized, it is not updated during a revalidation of the folder, an installation of a new version or during the installation of a patch.

All the local menus and messages located in the ranges reserved for the specific/customizations and protected by the required activity codes can be updated with specific/custom patches and are safeguarded in the case of an update.

The ATEXTE table

The ATEXTE table is used to store the texts of the dictionary. These fields are numbered, and the principle is as follows:

  • Any standard text is identified by a number lower than 100,000 For a given software package, this number is intangible once assigned (it no longer changes and is safeguarded during an update).
  • Any specific text is identified by a number greater than 100,000 The numbers are automatically assigned as needed when specific/custom developments are carried out. They cannot be intangible, because a given number can exist in another folder. When a specific/custom development is transferred by patch, the texts and numbers are present in the patch. On integration, the text number is respected if this is possible, if not an automatic renumbering is carried out. Similarly, in case of a revalidation of a specific/custom folder in a context where there are 3 levels of folders, an automatic renumbering procedure can be launched (see the annex describing this functioning).

The ATEXTRA table

The ATEXTRA table serves to store the translatable texts associated with the records in which the titles must be varied as a function of the language. In the data dictionary, the fields that use this type of text use the data type whose code starts with AX.

A field declared with this type is not actually stored in the table, but is found in the ATEXTRA table, the lines identified by the code for the table, the field, the key for the record (and of course the language), which contains the text in question.

For example, in the case of a miscellaneous table (identified by a number, for example the number 23 and containing a code, for example the code COD), the key identifying the corresponding title (field LNGDES) for the FRAlanguage will be composed of the following elements:

ATABDIV,LNGDES,FRA,23,COD

All keys of this type can be entered in the screens and translated online thanks to a dedicated function.