kotlinx-gettext
kotlinx-gettext copied to clipboard
Gettext compatible library and Gradle plugin

Gettext is a widely used internationalization (i18n) format supported by many tools. This project provides pure Kotlin implementation of Gettext.
The project consists of several parts:
kotlinx-gettextlibrary to use in your project to translate strings.kotlinx-gettext-pluginKotlin compiler plugin to extract strings for translation from Kotlin code.kotlinx-gettext-gradle-pluginto conveniently apply Kotlin compiler plugin in your Gradle build.
Usage
Library
Add the "name.kropp.kotlinx-gettext:kotlinx-gettext:0.6.1" to the dependencies of your project.
The library is available on Maven Central.
Load translated strings and apply translations using an instance of I18n class.
val i18n = Gettext.load(Locale.GERMAN, Thread.currentThread().contextClassLoader.getResourceAsStream("de.po")!!)
println(i18n.tr("Hello world!"))
See sample module for a full example. Refer to GNU gettext documentation
for more details.
Translation
Apply Gradle plugin to extract strings and setup gettext task:
plugins {
id("name.kropp.kotlinx-gettext") version "0.6.1"
}
gettext {
potFile.set(File(projectDir, "src/messages.pot"))
keywords.set(listOf("tr","trn:1,2"))
}
Then invoke ./gradlew gettext to extract strings for translations into src/messages.pot
Translate messages with any software or service supporting Gettext format. The result will be a number of .po files, which you should put into resources.
Known issues
- The library only supports Kotlin/JVM and Kotlin/JS as of now, Multiplatform Native port is in progress.
- .mo files are not (yet) supported.