// Code generated by go generate. DO NOT EDIT.

// gotext is a tool for managing text in Go source code.
//
// Usage:
//
// 	gotext command [arguments]
//
// The commands are:
//
// 	update      merge translations and generate catalog
// 	extract     extracts strings to be translated from code
// 	rewrite     rewrites fmt functions to use a message Printer
// 	generate    generates code to insert translated messages
//
// Use "gotext help [command]" for more information about a command.
//
// Additional help topics:
//
//
// Use "gotext help [topic]" for more information about that topic.
//
//
// Merge translations and generate catalog
//
// Usage:
//
// 	gotext update <package>* [-out <gofile>]
//
//
//
//
// Extracts strings to be translated from code
//
// Usage:
//
// 	gotext extract <package>*
//
//
//
//
// Rewrites fmt functions to use a message Printer
//
// Usage:
//
// 	gotext rewrite <package>
//
// rewrite is typically done once for a project. It rewrites all usages of
// fmt to use x/text's message package whenever a message.Printer is in scope.
// It rewrites Print and Println calls with constant strings to the equivalent
// using Printf to allow translators to reorder arguments.
//
//
// Generates code to insert translated messages
//
// Usage:
//
// 	gotext generate <package>
//
//
//
//
package main
