- Modulariza la lógica de localización. - Actualiza la estructura de `Locale` para mejorar la resolución y gestión de idiomas. - Introduce `RequestLocale` para manejar la negociación de idioma basada en las peticiones HTTP. - Mejora `L10n` para ofrecer una gestión más flexible de traducciones con argumentos dinámicos. - Actualiza la implementación de `LangId` en `Page` para garantizar una identificación de idioma coherente. - Elimina código obsoleto y simplifica la gestión de identificadores de idioma.
27 lines
1.1 KiB
Rust
27 lines
1.1 KiB
Rust
use crate::util;
|
|
|
|
use super::{langid, LanguageIdentifier};
|
|
|
|
use std::collections::HashMap;
|
|
use std::sync::LazyLock;
|
|
|
|
/// Tabla de idiomas soportados por PageTop.
|
|
///
|
|
/// Cada entrada asocia un código de idioma en minúsculas (por ejemplo, `"en"` o `"es-es"`) con:
|
|
///
|
|
/// - Su [`LanguageIdentifier`] canónico.
|
|
/// - La clave de traducción definida en `src/locale/{lang}/languages.ftl` para mostrar su nombre en
|
|
/// el idioma activo.
|
|
///
|
|
/// Esto permite admitir alias de idioma como `"en"` o `"es"` y, al mismo tiempo, mantener un
|
|
/// identificador de idioma canónico (por ejemplo, `langid!("en-US")` o `langid!("es-ES")`).
|
|
pub(crate) static LANGUAGES: LazyLock<HashMap<&str, (LanguageIdentifier, &str)>> =
|
|
LazyLock::new(|| {
|
|
util::kv![
|
|
"en" => ( langid!("en-US"), "english" ),
|
|
"en-gb" => ( langid!("en-GB"), "english_british" ),
|
|
"en-us" => ( langid!("en-US"), "english_united_states" ),
|
|
"es" => ( langid!("es-ES"), "spanish" ),
|
|
"es-es" => ( langid!("es-ES"), "spanish_spain" ),
|
|
]
|
|
});
|