Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.0计划 #11

Open
chai2010 opened this issue Apr 6, 2020 · 3 comments
Open

v1.0计划 #11

chai2010 opened this issue Apr 6, 2020 · 3 comments
Assignees
Labels

Comments

@chai2010
Copy link
Owner

chai2010 commented Apr 6, 2020

  • 目前的API还是从 google code 网址时代继承来的, 需要重新设计简化API和包路径
  • gettext是上个世纪的产物, 全局只有一个选择, 改进支持多局部多语言共存
  • 目前的context有缺陷, 内部闭包的路径解析不够稳定, 需要重新设计
  • 命令行工具, 可以自动从代码提取要翻译的文字, 同时对有问题的用法提供告警(比如传入的是变量字符串)
  • v0.1到v1.0的API变化, 尽量保证gofmt命令行替换可以完成升级
  • domain绑定到对象, 不同的pkg可以选择不同的domain, context是domain内部的区别, caller不再自动填充
  • 自动生成多国文本(调用翻译服务的API/插件模式)
  • 增加map类型的翻译文件, 可以作为po文件替代
  • 支持单个po/mo文件,和map类型,对于一个具体的翻译 FileSystem.LoadMessagesMap(domain, lang string) (map[string][]string, error)/map[domain][lang][msgid][]string/gettext/mapfs.NewXXX()/jsonString/map[string]interface{}/LoadJsonFile(domain, lang) ([]byte, error)
  • json: LoadMessagesFile("hello", "zh_CN", "json"), Json(s) FileSystem
  • 支持walk/playground等格式的json翻译
  • 其它

https://pkg.go.dev/github.com/chai2010/gettext-go

@chai2010 chai2010 self-assigned this Apr 6, 2020
@chai2010 chai2010 added the v1.0 label Apr 6, 2020
@singpenguin
Copy link

singpenguin commented Apr 17, 2020

在一个并发的api环境中,setlocale方法,切换了语言,如果保证当前请求的context上下文不会被其他的干扰呢?
setlocale以后,再gettext调用,这时候很可能别的协程就把语言切换了,最后得到的不是想要的。

@chai2010
Copy link
Owner Author

多语言支持:

func Example_multiLang() {
	zh := gettext.New("hello", "./examples/locale").SetLanguage("zh_CN")
	tw := gettext.New("hello", "./examples/locale").SetLanguage("zh_TW")

	fmt.Println(zh.PGettext(
		"code.google.com/p/gettext-go/examples/hi.SayHi",
		"pkg hi: Hello, world!",
	))

	fmt.Println(tw.PGettext(
		"code.google.com/p/gettext-go/examples/hi.SayHi",
		"pkg hi: Hello, world!",
	))

	// Output:
	// 来自"Hi"包的问候: 你好, 世界!(ctx:code.google.com/p/gettext-go/examples/hi.SayHi)
	// 來自"Hi"包的問候: 你好, 世界!(ctx:code.google.com/p/gettext-go/examples/hi.SayHi)
}

@singpenguin
Copy link

好的,谢谢,清楚了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants