diff options
Diffstat (limited to 'vendor/github.com/nicksnyder/go-i18n/README.md')
-rw-r--r-- | vendor/github.com/nicksnyder/go-i18n/README.md | 66 |
1 files changed, 61 insertions, 5 deletions
diff --git a/vendor/github.com/nicksnyder/go-i18n/README.md b/vendor/github.com/nicksnyder/go-i18n/README.md index 5aef540b3..7136dc823 100644 --- a/vendor/github.com/nicksnyder/go-i18n/README.md +++ b/vendor/github.com/nicksnyder/go-i18n/README.md @@ -1,19 +1,19 @@ -go-i18n [![Build Status](https://secure.travis-ci.org/nicksnyder/go-i18n.png?branch=master)](http://travis-ci.org/nicksnyder/go-i18n) +go-i18n [![Build Status](https://travis-ci.org/nicksnyder/go-i18n.svg?branch=master)](http://travis-ci.org/nicksnyder/go-i18n) [![Sourcegraph](https://sourcegraph.com/github.com/nicksnyder/go-i18n/-/badge.svg)](https://sourcegraph.com/github.com/nicksnyder/go-i18n?badge) ======= go-i18n is a Go [package](#i18n-package) and a [command](#goi18n-command) that helps you translate Go programs into multiple languages. * Supports [pluralized strings](http://cldr.unicode.org/index/cldr-spec/plural-rules) for all 200+ languages in the [Unicode Common Locale Data Repository (CLDR)](http://www.unicode.org/cldr/charts/28/supplemental/language_plural_rules.html). * Code and tests are [automatically generated](https://github.com/nicksnyder/go-i18n/tree/master/i18n/language/codegen) from [CLDR data](http://cldr.unicode.org/index/downloads) * Supports strings with named variables using [text/template](http://golang.org/pkg/text/template/) syntax. -* Translation files are simple JSON or YAML. +* Translation files are simple JSON, TOML or YAML. * [Documented](http://godoc.org/github.com/nicksnyder/go-i18n) and [tested](https://travis-ci.org/nicksnyder/go-i18n)! -Package i18n [![GoDoc](http://godoc.org/github.com/nicksnyder/go-i18n?status.png)](http://godoc.org/github.com/nicksnyder/go-i18n/i18n) +Package i18n [![GoDoc](http://godoc.org/github.com/nicksnyder/go-i18n?status.svg)](http://godoc.org/github.com/nicksnyder/go-i18n/i18n) ------------ The i18n package provides runtime APIs for fetching translated strings. -Command goi18n [![GoDoc](http://godoc.org/github.com/nicksnyder/go-i18n?status.png)](http://godoc.org/github.com/nicksnyder/go-i18n/goi18n) +Command goi18n [![GoDoc](http://godoc.org/github.com/nicksnyder/go-i18n?status.svg)](http://godoc.org/github.com/nicksnyder/go-i18n/goi18n) -------------- The goi18n command provides functionality for managing the translation process. @@ -66,7 +66,7 @@ Translation files A translation file stores translated and untranslated strings. -Example: +Here is an example of the default file format that go-i18n supports: ```json [ @@ -116,6 +116,62 @@ Example: ] ``` +To use a different file format, write a parser for the format and add the parsed translations using [AddTranslation](https://godoc.org/github.com/nicksnyder/go-i18n/i18n#AddTranslation). + +Note that TOML only supports the flat format, which is described below. + +More examples of translation files: [JSON](https://github.com/nicksnyder/go-i18n/tree/master/goi18n/testdata/input), [TOML](https://github.com/nicksnyder/go-i18n/blob/master/goi18n/testdata/input/flat/ar-ar.one.toml), [YAML](https://github.com/nicksnyder/go-i18n/blob/master/goi18n/testdata/input/yaml/en-us.one.yaml). + +Flat Format +------------- + +You can also write shorter translation files with flat format. +E.g the example above can be written in this way: + +```json +{ + "d_days": { + "one": "{{.Count}} day.", + "other": "{{.Count}} days." + }, + + "my_height_in_meters": { + "one": "I am {{.Count}} meter tall.", + "other": "I am {{.Count}} meters tall." + }, + + "person_greeting": { + "other": "Hello {{.Person}}" + }, + + "person_unread_email_count": { + "one": "{{.Person}} has {{.Count}} unread email.", + "other": "{{.Person}} has {{.Count}} unread emails." + }, + + "person_unread_email_count_timeframe": { + "one": "{{.Person}} has {{.Count}} unread email in the past {{.Timeframe}}.", + "other": "{{.Person}} has {{.Count}} unread emails in the past {{.Timeframe}}." + }, + + "program_greeting": { + "other": "Hello world" + }, + + "your_unread_email_count": { + "one": "You have {{.Count}} unread email.", + "other": "You have {{.Count}} unread emails." + } +} +``` + +The logic of flat format is, what it is structure of structures +and name of substructures (ids) should be always a string. +If there is only one key in substructure and it is "other", then it's non-plural +translation, else plural. + +More examples of flat format translation files can be found in [goi18n/testdata/input/flat](https://github.com/nicksnyder/go-i18n/tree/master/goi18n/testdata/input/flat). + Contributions ------------- |