@intlayer/core
Version:
Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.
65 lines (63 loc) • 3.56 kB
JavaScript
const require_transpiler_enumeration_enumeration = require('../transpiler/enumeration/enumeration.cjs');
const require_transpiler_gender_gender = require('../transpiler/gender/gender.cjs');
const require_transpiler_insertion_insertion = require('../transpiler/insertion/insertion.cjs');
const require_messageFormat_ICU = require('./ICU.cjs');
//#region src/messageFormat/verify-icu-format.ts
/**
* Verification script to demonstrate ICU format conversion
* This script shows that Intlayer correctly converts {{var}} (internal format)
* to {var} (ICU format) when outputting.
*/
console.log("=== ICU Format Verification ===\n");
console.log("Test 1: Simple Interpolation");
console.log("Intlayer input:", require_transpiler_insertion_insertion.insert("Hello {{name}}"));
const test1 = require_messageFormat_ICU.intlayerToICUFormatter(require_transpiler_insertion_insertion.insert("Hello {{name}}"));
console.log("ICU output:", test1);
console.log("✓ Expected: Single braces {name}");
console.log("✓ Result:", test1.includes("{name}") && !test1.includes("{{name}}") ? "PASS" : "FAIL");
console.log();
console.log("Test 2: Formatted Variable");
console.log("Intlayer input:", require_transpiler_insertion_insertion.insert("Price: {amount, number, currency}"));
const test2 = require_messageFormat_ICU.intlayerToICUFormatter(require_transpiler_insertion_insertion.insert("Price: {amount, number, currency}"));
console.log("ICU output:", test2);
console.log("✓ Expected: Single braces {amount, number, currency}");
console.log("✓ Result:", test2.includes("{amount, number, currency}") ? "PASS" : "FAIL");
console.log();
console.log("Test 3: Plural with Variable");
const pluralInput = require_transpiler_enumeration_enumeration.enu({
"0": "No items",
"1": "One item",
fallback: "{{count}} items"
});
console.log("Intlayer input:", JSON.stringify(pluralInput, null, 2));
const test3 = require_messageFormat_ICU.intlayerToICUFormatter(pluralInput);
console.log("ICU output:", test3);
console.log("✓ Expected: {count, plural, ...} with # for count");
console.log("✓ Result:", test3.includes("{count, plural,") && test3.includes("# items") && !test3.includes("{{") ? "PASS" : "FAIL");
console.log();
console.log("Test 4: Roundtrip Conversion (ICU → Intlayer → ICU)");
const original = "Hello {name}, you have {count, plural, =0 {no messages} =1 {one message} other {# messages}}";
console.log("Original ICU:", original);
const toIntlayer = require_messageFormat_ICU.icuToIntlayerFormatter(original);
console.log("Converted to Intlayer:", JSON.stringify(toIntlayer, null, 2));
const backToICU = require_messageFormat_ICU.intlayerToICUFormatter(toIntlayer);
console.log("Back to ICU:", backToICU);
console.log("✓ Expected: No {{...}} in output");
console.log("✓ Result:", !String(backToICU).includes("{{") ? "PASS" : "FAIL");
console.log();
console.log("Test 5: Gender with Nested Structures");
const test5 = require_messageFormat_ICU.intlayerToICUFormatter(require_transpiler_gender_gender.gender({
male: "He has items",
female: "She has items",
fallback: "They have items"
}));
console.log("ICU output:", test5);
console.log("✓ Expected: Single braces only");
console.log("✓ Result:", !test5.includes("{{") ? "PASS" : "FAIL");
console.log();
console.log("=== Summary ===");
console.log("ICU MessageFormat uses single braces: {var}");
console.log("Intlayer internal format uses double braces: {{var}}");
console.log("The conversion between these formats is handled automatically.");
//#endregion
//# sourceMappingURL=verify-icu-format.cjs.map