Internationalization of modules (GLS)
For your module to work in any HCL Informix® locale, you must implement your module so that it is internationalized. That is, the module must not make any assumptions about the locale in which it will execute.
Server only: A C UDR inherits the server-processing
locale as its current processing locale. The database server dynamically
creates a server-processing locale for a particular session when a
client application establishes a connection. The database server uses
the client locale, database locale, the server locale, and information
from the client application to determine the server-processing locale.
For more information about how the database server determines the
server-processing locale, see the HCL®
Informix® GLS User's Guide.
Client only: A client LIBMI application
performs its I/O tasks in the client locale. Any database requests
that the application makes execute on the database server in the server-processing
locale.
This section provides the following information about how to internationalize a C UDR and the support that the provides for internationalized UDRs.
An internationalized C UDR must handle the following GLS considerations.
| GLS consideration for an internationalized UDR | function |
|---|---|
| What considerations must the C UDR take when copying character data? | None |
| How can the C UDR access GLS locales? | HCL® Informix® GLS function library |
| How does the UDR handle code-set conversion? | mi_get_string(), mi_put_string() HCL® Informix® GLS function library |
| How does the UDR handle locale-specific end-user formats? | mi_date_to_string(), mi_decimal_to_string(), mi_interval_to_string(), mi_money_to_string(), mi_string_to_date(), mi_string_to_decimal(), mi_string_to_interval(), mi_string_to_money() |
| How can the C UDR access internationalized exception messages? | mi_db_error_raise() |
| How can the C UDR access internationalized tracing messages? | GL_DPRINTF, gl_tprintf() |
| How do opaque-type support functions handle locale-sensitive data? | mi_get_string(), mi_put_string() |
| How to you obtain names of the different locales from within a C UDR? | mi_client_locale(), mi_get_connection_info() |
For more information about how to handle these GLS considerations within a C UDR, see the section on database servers in the HCL® Informix® GLS User's Guide.