Human languages are more often than not messy, inconsistent, and full of surprises. Although this can make languages interesting, it is not something you want to deal with in your code.
The golang.org text repository provides a collection of packages for dealing with the intricacies of human languages at a high level.
This tutorial teaches the basic principles of dealing internationalization and localization in Go code and presents many of the high-level concepts you need to know.