Using the acceptlang handler you can automatically parse the Accept-Language HTTP header and expose it as an AcceptLanguages slice in your handler functions. The AcceptLanguages slice contains AcceptLanguage values, each of which represent a qualified (or unqualified) language. The values in the slice are sorted descending by qualification (the most qualified languages will have the lowest indexes in the slice).
Unqualified languages are interpreted as having the maximum qualification of 1, as defined in the HTTP/1.1 specification.
For more information:
Simply add a new handler function instance to your handler chain using the acceptlang.Languages() function as well as an AcceptLanguages dependency in your handler function. The AcceptLanguages dependency will be satisified by the handler.
For example:
package main import ( "fmt" "github.com/go-martini/martini" "github.com/martini-contrib/acceptlang" "net/http" ) func main() { m := martini.Classic() m.Get("/", acceptlang.Languages(), func(languages acceptlang.AcceptLanguages) string { return fmt.Sprintf("Languages: %s", languages) }) http.ListenAndServe(":8090", m) }