b3555b6c46bb3e598b4d97822c4b90a68b94d39d
				
			
			
		
	github.com/dalu/i18n
Go middleware that utilizes https://github.com/nicksnyder/go-i18n
Required
Go 1.7 for context-aware http Package
License
BSD2
Issues
Use the Github issue tracker
Example
package main
import (
	"net/http"
	"github.com/dalu/i18n"
	"github.com/nicksnyder/go-i18n/i18n/bundle"
)
func main() {
	var hrHR = []byte(`[
  {
    "id": "hello",
    "translation": "Pozdrav na {{.Lang}}"
  },
  {
    "id": "coins",
    "translation":{
      "one": "Imas {{.Count}} kunu",
      "few": "Imas {{.Count}} kuna",
      "other": "Imas {{.Count}} kuna"
    }
  }
]`)
	fb := make(map[string][]byte)
	fb["hr-hr.all.json"] = hrHR
	imw := i18n.New(i18n.Config{
		DefaultLanguage: "en-us",
		Files:           []string{"files/en-us.all.json", "files/de-de.all.json"},
		FilesBytes:      fb,
		Debug:           true,
		URLParam:        "lang",
	})
	http.Handle("/", imw.Middleware(http.HandlerFunc(indexHandler)))
	http.ListenAndServe(":8080", nil)
}
func indexHandler(w http.ResponseWriter, r *http.Request) {
	lang := r.Context().Value("i18nlang").(string)
	T := r.Context().Value("i18nTfunc").(bundle.TranslateFunc)
	w.Write([]byte(T("hello", map[string]interface{}{"Lang":lang})))
	w.Write([]byte("\n"))
	w.Write([]byte(T("coins", 1)))
	w.Write([]byte("\n"))
	w.Write([]byte(T("coins", 2)))
	w.Write([]byte("\n"))
	w.Write([]byte(T("coins", 200)))
}
files/en-us.all.json
[
  {
    "id": "coins",
    "translation": {
      "one": "You have {{.Count}} coin",
      "other": "You have {{.Count}} coins"
    }
  },
  {
    "id": "hello",
    "translation": "Hello in en-US"
  }
]
files/de-de.all.json
[
  {
    "id": "coins",
    "translation": {
      "one": "Du hast {{.Count}} Münze",
      "other": "Du hast {{.Count}} Münzen"
    }
  },
  {
    "id": "hello",
    "translation": "Hallo in {{.Lang}}"
  }
]
Description
				
					Languages
				
				
								
								
									Go
								
								100%