g18n-dev

Package Version Hex Docs

Development tools and CLI for the g18n internationalization library for Gleam.

Installation

gleam add g18n_dev@1

Usage

The CLI provides commands to generate Gleam translation modules from various file formats:

Generate from Flat JSON Files

gleam run generate

Place flat JSON files in src/<project>/translations/ directory:

{
  "ui.button.save": "Save",
  "ui.button.cancel": "Cancel", 
  "user.name": "Name",
  "user.email": "Email"
}

Generate from Nested JSON Files

gleam run generate --nested

Place nested JSON files in src/<project>/translations/ directory:

{
  "ui": {
    "button": {
      "save": "Save",
      "cancel": "Cancel"
    }
  },
  "user": {
    "name": "Name",
    "email": "Email"
  }
}

This format is compatible with popular i18n libraries like react-i18next, Vue i18n, and Angular i18n.

Generate from PO Files (gettext)

gleam run generate --po

Place PO files in src/<project>/translations/ directory:

msgid "ui.button.save"
msgstr "Save"

msgid "user.name"
msgstr "Name"

Help

gleam run help

File Naming Convention

Translation files should be named using locale codes:

Locale codes must be 2 or 5 characters long.

Generated Output

The tool generates a translations.gleam module with functions for each locale:

import my_project/translations

pub fn main() {
  let translator = translations.en_translator()
  let message = g18n.translate(translator, "ui.button.save")
  // Returns: "Save"
}

Supported Formats

Development

gleam run   # Show help
gleam test  # Run the tests
gleam format # Format the code

Documentation

Further documentation can be found at https://hexdocs.pm/g18n_dev.

Search Document