gt-next@6.13.0
Descripción general
msg() ahora acepta arrays.
Antes, registrar una lista de cadenas relacionadas implicaba envolver cada una por separado:
const confirmations = [
msg("Yes"),
msg("Yup"),
msg("Right"),
msg("Absolutely"),
msg("Exactly"),
];Esto presenta dos problemas. Primero, cada línea requiere una llamada a msg(). Segundo, las cadenas relacionadas a menudo necesitan los mismos metadatos — $context, $id, etc. — y esos metadatos deben ir en línea porque la CLI los resuelve en tiempo de compilación. Para cadenas como "Right" o "Exactly" que son ambiguas en aislamiento, terminas repitiendo $context en cada entrada:
const confirmations = [
msg("Yes"),
msg("Yup"),
msg("Right", { $context: "As in a confirmation" }),
msg("Absolutely", { $context: "As in a confirmation" }),
msg("Exactly", { $context: "As in a confirmation" }),
];Ahora puedes hacer lo siguiente:
const confirmations = msg([
"Yes",
"Yup",
"Right",
"Absolutely",
"Exactly",
], { $context: "Confirmation responses" });Diseño
Generación de ID
Cuando se especifica $id, cada elemento del array recibe un ID basado en el índice: ${id}.0, ${id}.1, etc.
const greetings = msg([
"Hi",
"Hello",
"Howdy",
], { $id: "greeting" });
// "Hi" → id: "greeting.0"
// "Hello" → id: "greeting.1"
// "Howdy" → id: "greeting.2"¿Por qué no objetos?
Resultaba tentador ampliarlo a objetos, pero decidimos no hacerlo. Los objetos suelen mezclar campos traducibles y no traducibles:
{
id: 'planning.v1', // no traducir
message: 'Not yet enabled', // traducir
}No hay una forma sencilla de expresar qué campos deben registrarse sin añadir más sintaxis. Los arrays no tienen este problema: cada elemento es una cadena que se debe traducir.
Futuro
El soporte de arrays para gt() es el siguiente paso natural. Tanto gt() como msg() son funciones de registro, por lo que tiene sentido que haya paridad entre ellas. Esto también se extiende a m(), ya que msg() y m() se usan a menudo juntas: que m() acepte arrays garantiza que pasar la salida de msg() a m() no genere errores.