SyntaxGameServer/RCCService2020/ExtraContent/LuaPackages/Localization/LocalizationContext.spec.lua

66 lines
1.7 KiB
Lua

return function()
local LocalizationContext = require(script.Parent.LocalizationContext)
it("should pull from the correct language if available", function()
local context = LocalizationContext.new({
["es-mx"] = {
["SomeKey"] = "Foo",
},
["es"] = {
["SomeKey"] = "Bar",
},
["en-us"] = {
["SomeKey"] = "Baz",
},
})
expect(context:getString("es-mx", "SomeKey")).to.equal("Foo")
expect(context:getString("es", "SomeKey")).to.equal("Bar")
expect(context:getString("en", "SomeKey")).to.equal("Baz")
end)
it("should fall through to a language's base language", function()
local context = LocalizationContext.new({
["es-mx"] = {},
["es"] = {
["SomeKey"] = "Bar",
},
["en"] = {
["SomeKey"] = "Baz",
},
})
expect(context:getString("es-mx", "SomeKey")).to.equal("Bar")
expect(context:getString("es", "SomeKey")).to.equal("Bar")
expect(context:getString("en", "SomeKey")).to.equal("Baz")
end)
it("should fall through to English if keys are missing in each table", function()
local context = LocalizationContext.new({
["es-mx"] = {},
["es"] = {},
["en-us"] = {
["SomeKey"] = "Baz",
},
})
expect(context:getString("es-mx", "SomeKey")).to.equal("Baz")
expect(context:getString("es", "SomeKey")).to.equal("Baz")
expect(context:getString("en_us", "SomeKey")).to.equal("Baz")
end)
it("should replace formatting identifiers of the form {name}", function()
local context = LocalizationContext.new({
["en-us"] = {
["SomeKey"] = "{greeting}, {target}!",
},
})
local value = context:getString("en-us", "SomeKey", {
greeting = "Hello",
target = "world",
})
expect(value).to.equal("Hello, world!")
end)
end