ez-localize
Version:
Super-simple localization of strings in a Node/Browserify application
65 lines (54 loc) • 2.14 kB
text/typescript
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"])
}))
})