Translating the Tour

A Tour of Go is a Go program that runs as a stand-alone web server or
an App Engine app. The version available at tour.golang.org is run from
App Engine. There are several localized versions of the tour, such as
this Chinese translation, also running on App Engine:

	http://go-tour-zh.appspot.com

The Tour contains a slide named "Go local", which lists several of
these translations. If you are a native speaker of a language not on
that list and have some experience with Go, please consider providing
a translation of the Tour in your own language.

To translate the tour:

1. Translate the files in content/
2. Provide localized version for the UI strings in static/js/values.js
3. Sign up to App Engine and create an app named go-tour-LL,
   where LL is the two-letter country code that applies best
   to your chosen language. (This shouldn't cost you anything;
   the Tour App usually runs inside App Engine's free quota.)
4. Deploy your version of the Tour to that app.
5. Announce to golang-nuts@googlegroups.com

The Tour content changes occasionally, and you should keep your
translation up to date. To follow the development of the tour,
subscribe to the go-tour-commits mailing list:

	https://groups.google.com/group/go-tour-commits

All new commits to the go-tour repository are mailed there.

Finally, if you have any questions about the Tour or Go,
please mail golang-nuts@googlegroups.com.
