// 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:
//
// 	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 "go help [command]" for more information about a command.
//
// Additional help topics:
//
//
// Use "gotext help [topic]" for more information about that topic.
//
//
// Extracts strings to be translated from code
//
// Usage:
//
// 	go extract <package>*
//
//
//
//
// Rewrites fmt functions to use a message Printer
//
// Usage:
//
// 	go 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:
//
// 	go generate <package>
//
//
//
//
package main
