syeopite / lens

A multiformat internationalization (i18n) shard for Crystal.
MIT License
16 stars 1 forks source link
crystal gettext hacktoberfest i18n internationalization l10n l18n language locale localization translation

Lens

GitHub release Lens CI Docs

A multi-format internationalization (i18n) shard for Crystal.

Lens is designed to be fast, versatile and simple to use! Supports the likes of Gettext, Ruby YAML and more.

Why use Lens?

Lens was conceived due to various problems within crystal's internationalization ecosystem. As such, Lens aspires to overcome those issues. With lens:

In short, Lens is packed full of features and designed for internationalization.

Note: Documentation below is for Master. For the stable release version, please see v0.1.0.

Getting started

Lens supports numerous different formats:

Format Backend Documentation
GNU Gettext PO Gettext::POBackend Here
GNU Gettext MO Gettext::MOBackend Here
Ruby YAML RubyI18n::Yaml Here

To get started, simply initialize a backend:

backend = Gettext::MOBackend.new("locales")

And begin translating!

catalogue = backend.create["en_US"]

# Basic
catalogue.gettext("A message")     # => "Translated message"
# Plurals
catalogue.ngettext("I have %d apple", "I have %d apples", 1) # => "Translated I have %d apples"
# Context
catalogue.pgettext("CopyPasteMenu", "copy")          # => "Translated copy"
# Context w/ Plurals
catalogue.npgettext("CopyPasteMenu", "Export %d file", "Export %d files", 1) # => "Translated message with plural-form 0"

Note that each backend has a slightly different API.

See Getting Started for more information

Installation

  1. Add the dependency to your shard.yml:

    dependencies:
     lens:
       github: syeopite/lens
       version: ~> 0.1.0
  2. Run shards install

Documentation

Reference

Library API

Contributing

  1. Fork it (https://github.com/syeopite/lens/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

Inspirations