Clase wxLocale
La clase wxLocale encapsula todas las configuraciones dependientes del lenguaje y es una generalización del concepto de localización de C.
Nota: Se sabe que esta clase tiene varios problemas en macOS: en primer lugar, es imposible cambiar la configuración regional de la interfaz de usuario de la aplicación después de iniciarla en esta plataforma, por lo que el uso de esta clase no afecta a los controles y cuadros de diálogo nativos. Además, las versiones de macOS entre 11.0 y 12.2 inclusive se ven afectadas por un error cuando el cambio de la configuración regional de C puede romper la visualización de los menús de la aplicación. Debido a esto, se recomienda utilizar wxUILocale en lugar de esta clase para las aplicaciones destinadas a macOS.
En wxWidgets esta clase gestiona la configuración regional actual. También inicializa y activa el objeto wxTranslations que gestiona los catálogos de mensajes.
Para obtener una lista de los idiomas soportados, ver los valores del enumerado wxLanguage. Estas constantes pueden utilizarse para especificar el idioma en wxLocale::Init y son devueltas por wxLocale::GetSystemLanguage.
Nota de wxPerl: En wxPerl no se puede utilizar el nombre de función '_', por lo que el módulo Wx::Locale puede exportar gettext y gettext_noop con cualquier nombre.
# this imports gettext ( equivalent to Wx::GetTranslation # and gettext_noop ( a noop ) # into your module use Wx::Locale qw(:default); # .... # use the functions print gettext( "Panic!" ); button = Wx::Button-new( window, -1, gettext( "Label" ) );
Si se necesita traducir muchas cadenas, entonces añadir gettext( ) alrededor de cada una es una tarea larga ( por eso se introdujo _( ) ), así que simplemente hay que elegir un nombre más corto para gettext:
use Wx::Locale 'gettext' = 't', 'gettext_noop' = 'gettext_noop'; # ... # use the functions print t( "Panic!!" ); # ...
Funciones miembro
wxLocale()
wxLocale::wxLocale()
Este es el constructor por defecto y no hace nada para inicializar el objeto: Init() debe ser usado para hacer eso.
wxLocale()
wxLocale::wxLocale( int language, int flags = wxLOCALE_LOAD_DEFAULT )
Ver Init() para la descripción de los parámetros.
wxLocale()
wxLocale::wxLocale( const wxString & name, const wxString & shortName = wxEmptyString, const wxString & locale = wxEmptyString, bool bLoadDefault = true )
Ver Init() para la descripción de los parámetros.
La llamada a esta función tiene varios efectos secundarios globales que debe comprender: en primer lugar, se cambia la configuración regional de la aplicación - hay que tener en cuenta que esto afectará a muchas funciones estándar de la biblioteca C como printf() o strftime(). En segundo lugar, este objeto wxLocale se convierte en la nueva configuración regional global actual para la aplicación, por lo que todas las llamadas posteriores a wxGetTranslation() intentarán traducir los mensajes utilizando los catálogos de mensajes para esta configuración regional.
~wxLocale()
virtual wxLocale::~wxLocale()
El destructor, al igual que el constructor, también tiene efectos secundarios globales: la configuración regional previamente establecida se restaura y los cambios descritos en la documentación de Init() se revierten.
AddCatalog()
bool wxLocale::AddCatalog(const wxString & domain)
Llama a wxTranslations::AddCatalog(const wxString&).
AddCatalog()
bool wxLocale::AddCatalog( const wxString & domain, wxLanguage msgIdLanguage )
Llama a wxTranslations::AddCatalog(const wxString&, wxLanguage).
AddCatalog()
bool wxLocale::AddCatalog( const wxString & domain, wxLanguage msgIdLanguage, const wxString & msgIdCharset )
Llama a wxTranslations::AddCatalog(const wxString&, const wxString&).
Obsoleto: Esta sobrecarga no debería usarse más ya que msgIdCharset es simplemente ignorado, por favor omitirla.
AddCatalogLookupPathPrefix()
static void wxLocale::AddCatalogLookupPathPrefix(const wxString & prefix)
AddLanguage()
static void wxLocale::AddLanguage(const wxLanguageInfo & info)
Añade un idioma personalizado definido por el usuario a la base de datos de idiomas conocidos.
Esta base de datos se utiliza junto con la primera forma de Init().
FindLanguageInfo()
static const wxLanguageInfo* wxLocale::FindLanguageInfo(const wxString & locale)
Esta función se puede utilizar para encontrar la estructura de descripción de idioma para la configuración regional dada, especificada como un código de idioma ISO de dos letras (por ejemplo, "pt"), un código de idioma seguido del código de país ("pt_BR") o una descripción de idioma completa, legible por humanos ("Portugués_Brasil").
Devuelve la información para el idioma dado o nullptr si este idioma es desconocido. Hay que tener en cuenta que incluso si el puntero devuelto es válido, el programa que llama no debe borrarlo.
GetCanonicalName()
wxString wxLocale::GetCanonicalName() const
Devuelve la forma canónica del nombre de la configuración regional actual.
La forma canónica es la que se utiliza en los sistemas UNIX: es una cadena de dos o cinco letras en formato xx o xx_YY, donde xx es el código ISO 639 del idioma e YY es el código ISO 3166 del país. Algunos ejemplos son "en", "en_GB", "en_US" o "fr_FR". Esta forma se utiliza internamente cuando se buscan catálogos de mensajes. Comparar con GetSysName().
GetHeaderValue()
wxString wxLocale::GetHeaderValue( const wxString & header, const wxString & domain = wxEmptyString ) const
LLama a wxTranslations::GetHeaderValue().
GetInfo()
static wxString wxLocale::GetInfo( wxLocaleInfo index, wxLocaleCategory cat = wxLOCALE_CAT_DEFAULT )
Obtiene los valores del dato dependiente de la localización dada.
Esta función devuelve el valor de la opción específica de la localización especificada por el índice dado.
Parámetros
- index
- Uno de los elementos del enum wxLocaleInfo.
- cat
- La categoría a utilizar con el índice dado o wxLOCALE_CAT_DEFAULT si el índice sólo puede aplicarse a una única categoría.
Valor de retorno
El valor de la opción o una cadena vacía si la función falló.
GetLanguage()
int wxLocale::GetLanguage() const
Devuelve la constante wxLanguage del idioma actual.
Hay que tener en cuenta que se puede llamar a esta función sólo si se utilizó la forma de Init() que toma el argumento wxLanguage.
GetLanguageCanonicalName()
static wxString wxLocale::GetLanguageCanonicalName(int lang)
Devuelve el nombre canónico (ver GetCanonicalName()) del idioma dado o una cadena vacía si este idioma es desconocido.
Ver GetLanguageInfo() para un comentario sobre el significado especial de wxLANGUAGE_DEFAULT.
GetLanguageInfo()
static const wxLocaleInfo* wxLocale::GetLanguageInfo(int lang)
Devuelve un puntero a la estructura wxLocaleInfo que contiene información sobre el idioma dado o nullptr si este idioma es desconocido.
Hay que tener en cuenta que incluso si el puntero devuelto es válido, el programa que llama no debe borrarlo.
Ver AddLanguage() para la descripción de wxLanguageInfo. Al igual que con Init(), wxLANGUAGE_DEFAULT tiene un significado especial si se pasa como argumento a esta función y en este caso se utiliza el resultado de GetSystemLanguage().
GetLanguageName()
static wxString wxLocale::GetLanguageName(int lang)
Devuelve el nombre en inglés del idioma dado o una cadena vacía si este idioma es desconocido.
Ver GetLanguageInfo() para un comentario sobre el significado especial de wxLANGUAGE_DEFAULT.
GetLocale()
const wxString& wxLocale::GetLocale() const
Devuelve el nombre de la configuración regional tal y como se pasó al constructor o a Init().
Se trata de un nombre completo, legible por humanos, por ejemplo "English" o "French".
GetName()
const wxString& wxLocale::GetName() const
Devuelve el nombre abreviado actual de la configuración regional (tal y como se dio al constructor o a la función Init()).
GetOSInfo()
static wxString wxLocale::GetOSInfo( wxLocaleInfo index, wxLocaleCategory cat = wxLOCALE_CAT_DEFAULT )
Obtiene los valores de un dato de localización en la localización del sistema operativo.
Esta función no debería usarse en el nuevo código, usar wxUILocale::GetInfo() en su lugar.
Esta función es similar a GetInfo() y, de hecho, idéntica a ella bajo sistemas no MSW. Bajo MSW difiere de ella cuando no se ha establecido explícitamente ninguna configuración regional: GetInfo() devuelve los valores correspondientes a la configuración regional "C" utilizada por las funciones de la biblioteca estándar, mientras que este método devuelve los valores utilizados por el SO que, en el caso de Windows, corresponden a la configuración del usuario en el panel de control.
GetString()
const wxString& wxLocale::GetString( const wxString & origString, const wxString & domain = wxEmptyString ) const
Llama a wxGetTranslation(const wxString&, const wxString&).
GetString()
const wxString& wxLocale::GetString( const wxString & origString, const wxString & origString2, unsigned n, const wxString & domain = wxEmptyString ) const
Llama a wxGetTranslation(const wxString&, const wxString&, unsigned, const wxString&).
GetSysName()
wxString wxLocale::GetSysName() const
Devuelve el nombre de la configuración regional específica de la plataforma tal y como se pasó a setlocale().
Comparar con GetCanonicalName().
GetSystemEncoding()
static wxFontEncoding wxLocale::GetSystemEncoding()
Intenta detectar la codificación de fuente por defecto del usuario.
Devuelve el valor de wxFontEncoding o wxFONTENCODING_SYSTEM si no se ha podido determinar.
GetSystemEncodingName()
static wxString wxLocale::GetSystemEncodingName()
Intenta detectar el nombre de la codificación de fuente por defecto del usuario.
Esta cadena no es particularmente útil para la aplicación, ya que su forma depende de la plataforma, por lo que probablemente se debería utilizar GetSystemEncoding() en su lugar.
Devuelve un valor de cadena legible por el usuario o una cadena vacía si no se ha podido determinar.
GetSystemLanguage()
static int wxLocale::GetSystemLanguage()
Intenta detectar la configuración regional por defecto del usuario.
Nota: Esta función es algo engañosa, ya que utiliza la configuración regional por defecto del sistema para determinar su valor de retorno, y no sólo el idioma del sistema. Se conserva por compatibilidad con versiones anteriores, pero para obtener realmente el idioma, y no la configuración regional, utilizado por el sistema por defecto, llamar a wxUILocale::GetSystemLanguage() en su lugar.
Devuelve el valor de wxLanguage o wxLANGUAGE_UNKNOWN si la configuración regional no es reconocida, como puede ocurrir notablemente cuando se combina cualquier idioma con una región donde este idioma no se habla típicamente.
Init()
bool wxLocale::Init( const wxString & name, const wxString & shortName = wxEmptyString, const wxString & locale = wxEmptyString, bool bLoadDefault = true )
Obsoleto: Esta forma está obsoleta, utilizar la otra a menos que se sepa lo que se está haciendo.
Parámetros
- name
- El nombre de la configuración regional. Sólo se usa en mensajes de diagnóstico.
- shortName
- La abreviatura estándar de 2 letras de la configuración regional; se utiliza como prefijo del directorio cuando se buscan los archivos del catálogo de mensajes.
- locale
- El parámetro para la llamada a setlocale(). Tenga en cuenta que es específico de cada plataforma.
- bLoadDefault
- Puede establecerse a false para prevenir la carga del catálogo de mensajes para la localización dada que contiene las traducciones de los mensajes estándar de wxWidgets. Este parámetro se utilizaría raramente en circunstancias normales.
Init()
bool wxLocale::Init( int language = wxLANGUAGE_DEFAULT, int flags = wxLOCALE_LOAD_DEFAULT )
Inicializa la instancia wxLocale.
La llamada a esta función tiene varios efectos secundarios globales que se deben entender: en primer lugar, se cambia la configuración regional de la aplicación - hay que tener en cuenta que esto afectará a muchas de las funciones estándar de la biblioteca C como printf() o strftime(). En segundo lugar, este objeto wxLocale se convierte en la nueva localización global actual de la aplicación, por lo que todas las llamadas posteriores a wxGetTranslation() intentarán traducir los mensajes utilizando los catálogos de mensajes de esta localización.
Parámetros
- language
- wxLanguage identificador de la localización. Puede ser un idioma concreto, por ejemplo wxLANGUAGE_ESPERANTO, o un valor especial wxLANGUAGE_DEFAULT que significa que wxLocale debe utilizar el idioma por defecto del sistema (ver GetSystemLanguage()). Obsevar que el valor wxLANGUAGE_UNKNOWN no está permitido aquí.
- flags
Combinación de los siguientes:
- wxLOCALE_LOAD_DEFAULT: Carga automáticamente el catálogo de mensajes para la configuración regional dada que contiene las traducciones de los mensajes estándar de wxWidgets.
- wxLOCALE_DONT_LOAD_DEFAULT: Negación de wxLOCALE_LOAD_DEFAULT.
Valor de retorno
true en caso de éxito o false si la localización dada no pudo ser establecida.
IsAvailable()
static bool wxLocale::IsAvailable(int lang)
Compruebe si el sistema operativo y/o el entorno de ejecución de C admiten esta configuración regional.
Por ejemplo, en Windows, el soporte para muchas configuraciones regionales no está instalado por defecto. Devuelve true si la configuración regional está soportada.
El argumento lang es el identificador de wxLanguage. Para obtener esto para un código de idioma ISO de dos letras, utilizar FindLanguageInfo() para obtener su estructura wxLanguageInfo. Ver AddLanguage() para la descripción de wxLanguageInfo.
IsLoaded()
bool wxLocale::IsLoaded(const wxString & domain) const
LLama a wxTranslations::IsLoaded().
IsOk()
bool wxLocale::IsOk() const
Devuelve true si la configuración regional se ha establecido correctamente.