Skip to content

Latest commit

 

History

History
53 lines (37 loc) · 1.93 KB

README.md

File metadata and controls

53 lines (37 loc) · 1.93 KB

Kotlinx Gettext

maven license

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:

  1. kotlinx-gettext library to use in your project to translate strings.
  2. kotlinx-gettext-plugin Kotlin compiler plugin to extract strings for translation from Kotlin code.
  3. kotlinx-gettext-gradle-plugin to 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.