From 698588e7d6baa52e81c57b183f70f64766abf44a Mon Sep 17 00:00:00 2001 From: strbit Date: Thu, 12 Sep 2024 16:16:38 +0500 Subject: [PATCH] test: add support for split translations --- tests/utils.ts | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/tests/utils.ts b/tests/utils.ts index 4b14426f..44ff4724 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -2,9 +2,8 @@ import { join } from "./deps.ts"; export function makeTempLocalesDir() { const dir = Deno.makeTempDirSync(); - Deno.writeTextFileSync( - join(dir, "en.ftl"), - `hello = Hello! + + const englishTranslation = `hello = Hello! greeting = Hello, { $name }! @@ -21,11 +20,9 @@ language = .hint = Enter a language with the command .invalid-locale = Invalid language .already-set = Language is already set! - .language-set = Language set successfullY!`, - ); - Deno.writeTextFileSync( - join(dir, "ru.ftl"), - `hello = Здравствуйте! + .language-set = Language set successfullY!`; + + const russianTranslation = `hello = Здравствуйте! greeting = Здравствуйте, { $name }! @@ -34,7 +31,7 @@ cart = Привет { $name }, в твоей корзине { [0] нет яблок [one] {$apples} яблоко [few] {$apples} яблока - *[other] {$apples} яблок + *[other] {$apples} яблок }. checkout = Спасибо за покупку! @@ -43,7 +40,26 @@ language = .hint = Отправьте язык после команды .invalid-locale = Неверный язык .already-set = Этот язык уже установлен! - .language-set = Язык успешно установлен!`, - ); + .language-set = Язык успешно установлен!`; + + function writeNestedFiles() { + const nestedPath = join(dir, "/ru/test/nested/"); + const keys = russianTranslation.split(/\n\s*\n/); + + Deno.mkdirSync(nestedPath, { recursive: true }); + + for (const key of keys) { + const fileName = key.split(" ")[0] + ".ftl"; + const filePath = join(nestedPath, fileName); + + Deno.writeTextFileSync(filePath, key); + } + } + + // Using normal, singular translation files. + Deno.writeTextFileSync(join(dir, "en.ftl"), englishTranslation); + // Using split translation files. + writeNestedFiles(); + return dir; }