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.
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.
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
Add the dependency to your shard.yml
:
dependencies:
lens:
github: syeopite/lens
version: ~> 0.1.0
Run shards install
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)