Skip to content

kropp/kotlinx-gettext

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 27, 2025
fbaeef5 · Feb 27, 2025

History

82 Commits
Jun 20, 2022
Dec 19, 2023
Feb 27, 2025
Feb 27, 2025
Feb 27, 2025
Feb 27, 2025
Feb 27, 2025
Feb 27, 2025
Feb 14, 2022
Feb 19, 2025
Feb 19, 2025
Feb 27, 2025
Oct 13, 2023
Oct 13, 2023
Sep 26, 2022
Sep 18, 2022

Repository files navigation

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.7.0" 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.7.0"
}

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.