Skip to content
无限YY中...
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md
example_zh_hans.go
symbol.md

README.md

Go翻译

文件命名:

参考官方对文件的命名方式,给文件名加_zh,_tw等后缀用于区分相应的语言。 比如log包,可以将翻译文件命名为log_zh.go,log_tw.go等文件。

文件内容:

为一个纯注释文件(或是类似于buitin),这样不会影响现在代码的运行。 以空行分隔每一条翻译项。每个翻译项包含以下内容:

第一行:定位信息。第一个空格之前的内容为一个包级别唯一的名称,
即为该方法、常量、变量或是结构的的名称;
空格之后的为文件行号等信息,仅供翻译者定位代码;

第二行:对应英文的md5码,方便更新之后检测是否需要重要翻译;

第三行开始为真正的翻译内容。

比如:

// log log.go:13
// 70004e66d9e9597f3c382ba69c21b6ac
// log是一个简单的日志服务包...

// Ldate log.go:30
// 97a2bfe63f97ea05044844d9d0a3c18e
// 翻译内容

// Printf log.go:196
// fd1cb0abc49dec36d3f8456732b8945d
// Printf翻译

// const log.go:24
// fd1cb0abc49dec36d3f8456732b8945d
// These flags define which...

// const log.go:26
// fd1cb0abc49dec36d3f8456732b8945d
// Bits or'ed together to

枚举:

以下是来自官方log中的一段代码:

1)// These flags define which text to prefix to each log entry generated by the Logger.
const (
2)  // Bits or'ed together to control what's printed. There is no control over the
	// order they appear (the order listed here) or the format they present (as
	// described in the comments).  A colon appears after these items:
	// 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
	Ldate         = 1 << iota     // the date: 2009/01/23
	Ltime                         // the time: 01:23:23
)

以上代码的1)和2)处,无法通过一个包级别唯一的名称来表示, 只能通过该段字符串的md5码来进行比对,此时定位信息const可用于减少定位的范围。 var()也有相同的问题。

TODO

const()类型的代码有没有更简单统一的处理方式?

如何处理TODO,bugs等注释?忽略?

xxx_windows.go与xxx_linux.go,含有相同的接口,但注释稍有不同。应该如何处理?

工具

通过以下命令提取翻译文件,package为包名,locale为语种标记:

xx package locale

比如:

xx log zh

将在log包目录下产生一个log_zh.go的文件,若本身已经存在log_zh.go文件, 则标记哪些项需要重新翻译。 之后翻译人员只需要翻译log_zh.go中的内容即可,无须改动库的源码。

godoc

改写godoc,添加-lang选项。

优点

不会对源码造成任何影响;

版本更新,直接覆盖即可;

缺点

需要自行实现提取工具及godoc。

碰撞?

You can’t perform that action at this time.