📝 [locale] Inicia la documentación
This commit is contained in:
parent
424547241b
commit
af93cb0ea1
1 changed files with 97 additions and 0 deletions
|
|
@ -1,3 +1,100 @@
|
||||||
|
//! Localización (¿i18n ó l10n?).
|
||||||
|
//!
|
||||||
|
//! Proporciona soporte a [Fluent](https://www.projectfluent.org/), un conjunto de especificaciones
|
||||||
|
//! para la localización de aplicaciones, así como implementaciones y buenas prácticas originalmente
|
||||||
|
//! desarrolladas por Mozilla.
|
||||||
|
//!
|
||||||
|
//!
|
||||||
|
//! # Sintaxis Fluent (FTL)
|
||||||
|
//!
|
||||||
|
//! El formato utilizado para describir los recursos de traducción utilizados por Fluent se llama
|
||||||
|
//! [FTL](https://www.projectfluent.org/fluent/guide/). FTL está diseñado para ser fácil de leer,
|
||||||
|
//! pero al mismo tiempo permite representar conceptos complejos del lenguaje natural para tratar
|
||||||
|
//! género, plurales, conjugaciones, y otros.
|
||||||
|
//!
|
||||||
|
//!
|
||||||
|
//! # Recursos Fluent
|
||||||
|
//!
|
||||||
|
//! PageTop utiliza [fluent-templates](https://docs.rs/fluent-templates/) para integrar durante la
|
||||||
|
//! compilación los recursos de localización en el binario de la aplicación. Básicamente agrupa
|
||||||
|
//! todos los archivos de los subdirectorios del directorio *src/locales* que tienen un
|
||||||
|
//! [Identificador de Idioma Unicode](https://docs.rs/unic-langid/) válido y los asigna a su
|
||||||
|
//! identificador correspondiente:
|
||||||
|
//!
|
||||||
|
//! ```text
|
||||||
|
//! resources/locales
|
||||||
|
//! ├── common.ftl
|
||||||
|
//! ├── en-US
|
||||||
|
//! │ └── main.ftl
|
||||||
|
//! ├── es-ES
|
||||||
|
//! │ └── main.ftl
|
||||||
|
//! ├── es-MX
|
||||||
|
//! │ └── main.ftl
|
||||||
|
//! └── fr
|
||||||
|
//! └── main.ftl
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! Ejemplo de un archivo *src/locales/en-US/main.ftl*:
|
||||||
|
//!
|
||||||
|
//! ```text
|
||||||
|
//! hello-world = Hello world!
|
||||||
|
//! hello-user = Hello, {$userName}!
|
||||||
|
//! shared-photos =
|
||||||
|
//! {$userName} {$photoCount ->
|
||||||
|
//! [one] added a new photo
|
||||||
|
//! *[other] added {$photoCount} new photos
|
||||||
|
//! } of {$userGender ->
|
||||||
|
//! [male] him and his family
|
||||||
|
//! [female] her and her family
|
||||||
|
//! *[other] the family
|
||||||
|
//! }.
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! Ejemplo de un archivo *src/locales/es-ES/main.ftl*:
|
||||||
|
//!
|
||||||
|
//! ```text
|
||||||
|
//! hello-world = Hola mundo!
|
||||||
|
//! hello-user = ¡Hola, {$userName}!
|
||||||
|
//! shared-photos =
|
||||||
|
//! {$userName} {$photoCount ->
|
||||||
|
//! [one] ha añadido una nueva foto
|
||||||
|
//! *[other] ha añadido {$photoCount} nuevas fotos
|
||||||
|
//! } de {$userGender ->
|
||||||
|
//! [male] él y su familia
|
||||||
|
//! [female] ella y su familia
|
||||||
|
//! *[other] la familia
|
||||||
|
//! }.
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! # Cómo aplicar la localización en tu código
|
||||||
|
//!
|
||||||
|
//! Una vez hayas creado tu directorio de recursos FTL, sólo tienes que usar la
|
||||||
|
//! poderosa macro [`localize!`] para integrar fácilmente tus recursos de
|
||||||
|
//! localización.
|
||||||
|
//!
|
||||||
|
//! Esta macro crea dos funciones para el ámbito donde se ejecuta. Por un lado
|
||||||
|
//! la función `l()` para traducciones directas de etiquetas. Y por otro la
|
||||||
|
//! función `t()` para traducciones que requieren argumentos:
|
||||||
|
//!
|
||||||
|
//! ```
|
||||||
|
//! use pagetop::{args, localize};
|
||||||
|
//!
|
||||||
|
//! localize!("en-US");
|
||||||
|
//!
|
||||||
|
//! fn demo() {
|
||||||
|
//! println!("* {}", l("hello-world"));
|
||||||
|
//! println!("* {}", t("hello-world", &args![]));
|
||||||
|
//! println!("* {}", t("hello-user", &args!["userName" => "Julia"]));
|
||||||
|
//!
|
||||||
|
//! let args = args![
|
||||||
|
//! "userName" => "Roberto",
|
||||||
|
//! "photoCount" => 3,
|
||||||
|
//! "userGender" => "male"
|
||||||
|
//! ];
|
||||||
|
//! println!("* {}\n", t("shared-photos", &args));
|
||||||
|
//! }
|
||||||
|
//! ```
|
||||||
|
|
||||||
pub use fluent_templates;
|
pub use fluent_templates;
|
||||||
pub use fluent_templates::fluent_bundle::FluentValue;
|
pub use fluent_templates::fluent_bundle::FluentValue;
|
||||||
pub use fluent_templates::{static_loader as static_locale, Loader as Locale};
|
pub use fluent_templates::{static_loader as static_locale, Loader as Locale};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue