Localize your applications at compile-time
app.nim
import localize
requireLocalesToBeTranslated ("ru", "")
echo tr"Hello, world" # "Hello, world"
globalLocale = locale "ru"
echo tr"Hello, world" # "Привет, мир"
when isMainModule:
updateTranslations() # traslations is readed and updated when compiling
translations/ru.json
{
"app.nim": {
"Hello, world": {
"": "Привет, мир"
}
}
}
- Static translations are generated for each nimble packege that uses localize, in package root directory
"it is working!".tr # same as "" context
"it is working!".tr("") # "оно работает!"
"it is working!".tr("code") # "он работает!"
{
"app.nim": {
"it is working!": {
"": "оно работает!",
"code": "он работает!"
}
}
}
tr is auto-calling fmt
let name = stdin.readline
echo tr"Hi, {name}"
{
"app.nim": {
"Hi, {name}": {
"": "Привет, {name}",
}
}
}
globalLocale[0] = systemLocale()
- system locale values are based on linux's LANG env variable
import json
globalLocale = (
("zh", ""),
parseLocaleTable %*{
"mypackage": {
"src/myapp.nim": {
"Hello, world": {
"": "你好,世界",
},
},
},
}
)
- Dynamic translations files are diffirent from static translations files: they contain table for modules
- For now, dynamic translations are not formated
- for now, dynamicly loaded translations cannot be formated at all