UNPKG

ez-localize

Version:

Super-simple localization of strings in a Node/Browserify application

65 lines (54 loc) 2.14 kB
import { assert } from "chai" import Localizer from "../src/Localizer" describe("Localizer", function () { before(function () { this.data = { locales: [ { code: "en", name: "English" }, { code: "es", name: "Espanol" } ], strings: [ { en: "dog", es: "perro" }, { en: "cat", es: "gato" }, { en: "a {0} b {1} c", es: "x {1} y {0} z" }, { en: "open|verb", es: "abrir|verb" }, { en: "open|noun", es: "abierto" } ] } this.loc = new Localizer(this.data, "es") }) it("localizes string", function () { assert.equal(this.loc.localizeString("dog"), "perro") }) it("falls back to english", function () { assert.equal(this.loc.localizeString("fish"), "fish") }) it("replaces parameters", function () { assert.equal(this.loc.localizeString("a {0} b {1} c", "1", 2), "x 2 y 1 z") }) it("replaces parameters ES6-style", function () { assert.equal(this.loc.T`a ${"1"} b ${2} c`, "x 2 y 1 z") assert.equal(this.loc.T`a`, "a") assert.equal(this.loc.T``, "") }) it("localizes a request", function () { assert.equal(this.loc.T({ locale: "es", text: "dog" }), "perro") assert.equal(this.loc.T({ locale: "es", text: "a {0} b {1} c", args: ["1", 2] }), "x 2 y 1 z") assert.equal(this.loc.T({ locale: "fr", text: { _base: "en", en: "cat", fr: "chat" }}), "chat") }) it("T replaces parameters", function () { assert.equal(this.loc.T("a {0} b {1} c", "1", 2), "x 2 y 1 z") }) it("T replaces parameters in localized string", function () { assert.equal(this.loc.T({ _base: "en", en: "ax {0} bx {1} c", es: "a {0} b {1} c" }, "1", 2), "x 2 y 1 z") }) it("strips context", function () { assert.equal(this.loc.T("open|verb"), "abrir") assert.equal(this.loc.T("open|noun"), "abierto") assert.equal(this.loc.T`open${'apple|banana'}|verb`, "openapple|banana") }) describe("react-style localization", () => it("returns array with objects", function () { assert.deepEqual(this.loc.T("a {0} b {1} c", { x: 1 }, { y: 2 }), ["x ", { y: 2 }, " y ", { x: 1 }, " z"]) })) })