...

Text file src/github.com/go-playground/locales/README.md

Documentation: github.com/go-playground/locales

     1## locales
     2<img align="right" src="https://raw.githubusercontent.com/go-playground/locales/master/logo.png">![Project status](https://img.shields.io/badge/version-0.14.1-green.svg)
     3[![Build Status](https://travis-ci.org/go-playground/locales.svg?branch=master)](https://travis-ci.org/go-playground/locales)
     4[![GoDoc](https://godoc.org/github.com/go-playground/locales?status.svg)](https://godoc.org/github.com/go-playground/locales)
     5![License](https://img.shields.io/dub/l/vibe-d.svg)
     6
     7Locales is a set of locales generated from the [Unicode CLDR Project](http://cldr.unicode.org/) which can be used independently or within
     8an i18n package; these were built for use with, but not exclusive to, [Universal Translator](https://github.com/go-playground/universal-translator).
     9
    10Features
    11--------
    12- [x] Rules generated from the latest [CLDR](http://cldr.unicode.org/index/downloads) data, v36.0.1
    13- [x] Contains Cardinal, Ordinal and Range Plural Rules
    14- [x] Contains Month, Weekday and Timezone translations built in
    15- [x] Contains Date & Time formatting functions
    16- [x] Contains Number, Currency, Accounting and Percent formatting functions
    17- [x] Supports the "Gregorian" calendar only ( my time isn't unlimited, had to draw the line somewhere )
    18
    19Full Tests
    20--------------------
    21I could sure use your help adding tests for every locale, it is a huge undertaking and I just don't have the free time to do it all at the moment;
    22any help would be **greatly appreciated!!!!** please see [issue](https://github.com/go-playground/locales/issues/1) for details.
    23
    24Installation
    25-----------
    26
    27Use go get 
    28
    29```shell
    30go get github.com/go-playground/locales
    31```  
    32
    33NOTES
    34--------
    35You'll notice most return types are []byte, this is because most of the time the results will be concatenated with a larger body
    36of text and can avoid some allocations if already appending to a byte array, otherwise just cast as string.
    37
    38Usage
    39-------
    40```go
    41package main
    42
    43import (
    44	"fmt"
    45	"time"
    46
    47	"github.com/go-playground/locales/currency"
    48	"github.com/go-playground/locales/en_CA"
    49)
    50
    51func main() {
    52
    53	loc, _ := time.LoadLocation("America/Toronto")
    54	datetime := time.Date(2016, 02, 03, 9, 0, 1, 0, loc)
    55
    56	l := en_CA.New()
    57
    58	// Dates
    59	fmt.Println(l.FmtDateFull(datetime))
    60	fmt.Println(l.FmtDateLong(datetime))
    61	fmt.Println(l.FmtDateMedium(datetime))
    62	fmt.Println(l.FmtDateShort(datetime))
    63
    64	// Times
    65	fmt.Println(l.FmtTimeFull(datetime))
    66	fmt.Println(l.FmtTimeLong(datetime))
    67	fmt.Println(l.FmtTimeMedium(datetime))
    68	fmt.Println(l.FmtTimeShort(datetime))
    69
    70	// Months Wide
    71	fmt.Println(l.MonthWide(time.January))
    72	fmt.Println(l.MonthWide(time.February))
    73	fmt.Println(l.MonthWide(time.March))
    74	// ...
    75
    76	// Months Abbreviated
    77	fmt.Println(l.MonthAbbreviated(time.January))
    78	fmt.Println(l.MonthAbbreviated(time.February))
    79	fmt.Println(l.MonthAbbreviated(time.March))
    80	// ...
    81
    82	// Months Narrow
    83	fmt.Println(l.MonthNarrow(time.January))
    84	fmt.Println(l.MonthNarrow(time.February))
    85	fmt.Println(l.MonthNarrow(time.March))
    86	// ...
    87
    88	// Weekdays Wide
    89	fmt.Println(l.WeekdayWide(time.Sunday))
    90	fmt.Println(l.WeekdayWide(time.Monday))
    91	fmt.Println(l.WeekdayWide(time.Tuesday))
    92	// ...
    93
    94	// Weekdays Abbreviated
    95	fmt.Println(l.WeekdayAbbreviated(time.Sunday))
    96	fmt.Println(l.WeekdayAbbreviated(time.Monday))
    97	fmt.Println(l.WeekdayAbbreviated(time.Tuesday))
    98	// ...
    99
   100	// Weekdays Short
   101	fmt.Println(l.WeekdayShort(time.Sunday))
   102	fmt.Println(l.WeekdayShort(time.Monday))
   103	fmt.Println(l.WeekdayShort(time.Tuesday))
   104	// ...
   105
   106	// Weekdays Narrow
   107	fmt.Println(l.WeekdayNarrow(time.Sunday))
   108	fmt.Println(l.WeekdayNarrow(time.Monday))
   109	fmt.Println(l.WeekdayNarrow(time.Tuesday))
   110	// ...
   111
   112	var f64 float64
   113
   114	f64 = -10356.4523
   115
   116	// Number
   117	fmt.Println(l.FmtNumber(f64, 2))
   118
   119	// Currency
   120	fmt.Println(l.FmtCurrency(f64, 2, currency.CAD))
   121	fmt.Println(l.FmtCurrency(f64, 2, currency.USD))
   122
   123	// Accounting
   124	fmt.Println(l.FmtAccounting(f64, 2, currency.CAD))
   125	fmt.Println(l.FmtAccounting(f64, 2, currency.USD))
   126
   127	f64 = 78.12
   128
   129	// Percent
   130	fmt.Println(l.FmtPercent(f64, 0))
   131
   132	// Plural Rules for locale, so you know what rules you must cover
   133	fmt.Println(l.PluralsCardinal())
   134	fmt.Println(l.PluralsOrdinal())
   135
   136	// Cardinal Plural Rules
   137	fmt.Println(l.CardinalPluralRule(1, 0))
   138	fmt.Println(l.CardinalPluralRule(1.0, 0))
   139	fmt.Println(l.CardinalPluralRule(1.0, 1))
   140	fmt.Println(l.CardinalPluralRule(3, 0))
   141
   142	// Ordinal Plural Rules
   143	fmt.Println(l.OrdinalPluralRule(21, 0)) // 21st
   144	fmt.Println(l.OrdinalPluralRule(22, 0)) // 22nd
   145	fmt.Println(l.OrdinalPluralRule(33, 0)) // 33rd
   146	fmt.Println(l.OrdinalPluralRule(34, 0)) // 34th
   147
   148	// Range Plural Rules
   149	fmt.Println(l.RangePluralRule(1, 0, 1, 0)) // 1-1
   150	fmt.Println(l.RangePluralRule(1, 0, 2, 0)) // 1-2
   151	fmt.Println(l.RangePluralRule(5, 0, 8, 0)) // 5-8
   152}
   153```
   154
   155NOTES:
   156-------
   157These rules were generated from the [Unicode CLDR Project](http://cldr.unicode.org/), if you encounter any issues
   158I strongly encourage contributing to the CLDR project to get the locale information corrected and the next time 
   159these locales are regenerated the fix will come with.
   160
   161I do however realize that time constraints are often important and so there are two options:
   162
   1631. Create your own locale, copy, paste and modify, and ensure it complies with the `Translator` interface.
   1642. Add an exception in the locale generation code directly and once regenerated, fix will be in place.
   165
   166Please to not make fixes inside the locale files, they WILL get overwritten when the locales are regenerated.
   167
   168License
   169------
   170Distributed under MIT License, please see license file in code for more details.

View as plain text