Skip to content

Commit

Permalink
refactor: 不再公开一些不必要的变量
Browse files Browse the repository at this point in the history
  • Loading branch information
caixw committed Nov 23, 2023
1 parent 7ce2bd1 commit da081d6
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 14 deletions.
17 changes: 9 additions & 8 deletions app/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (

"github.com/issue9/localeutil"
"github.com/issue9/sliceutil"
"golang.org/x/text/message"
"golang.org/x/text/message/catalog"

"github.com/issue9/web"
Expand All @@ -33,7 +32,7 @@ import (
// T 表示的是配置文件中的用户自定义数据类型。
type CLIOf[T any] struct {
// NOTE: CLIOf 仅用于初始化 web.Server。对于接口的开发应当是透明的,
// 开发者所有的功能都应该是通过 Context 和 Server 获得。
// 开发者所有的功能都应该是通过 [web.Context][web.Server] 获得。

Name string // 程序名称
Version string // 程序版本
Expand Down Expand Up @@ -76,10 +75,10 @@ type CLIOf[T any] struct {

// 本地化的相关设置
//
// 若为空,则以 NewPrinter(locales.Locales, "*.yml") 进行初始化。
// 若为空,则以 NewPrinter(locales.Locales, "*.yaml") 进行初始化。
//
// NOTE: 此设置仅影响命令行的本地化(panic 信息不支持本地化),[web.Server] 的本地化由其自身管理。
Printer *message.Printer
Printer *localeutil.Printer

// 每次关闭服务操作的等待时间
ShutdownTimeout time.Duration
Expand Down Expand Up @@ -133,7 +132,7 @@ func (cmd *CLIOf[T]) sanitize() error {
}

if cmd.Printer == nil {
p, err := NewPrinter(locales.Locales, "*.yml")
p, err := NewPrinter("*.yaml", locales.Locales...)
if err != nil {
return err
}
Expand Down Expand Up @@ -226,16 +225,18 @@ func CheckConfigSyntax[T any](configDir, filename string) error {
//
// 语言由 [localeutil.DetectUserLanguageTag] 决定。
// 参数指定了本地化的文件内容。
func NewPrinter(fsys fs.FS, glob string) (*message.Printer, error) {
func NewPrinter(glob string, fsys ...fs.FS) (*localeutil.Printer, error) {
// NOTE: 该函数为公开函数,可用于初始化 CLIOf.Printer

tag, err := localeutil.DetectUserLanguageTag()
if err != nil {
log.Println(err) // 输出错误,但是不中断执行
}

b := catalog.NewBuilder(catalog.Fallback(tag))
if err := locale.Load(buildSerializerFromFactory(), b, glob, fsys); err != nil {
if err := locale.Load(buildSerializerFromFactory(), b, glob, fsys...); err != nil {
return nil, err
}

return message.NewPrinter(tag, message.Catalog(b)), nil
return locale.NewPrinter(tag, b), nil
}
2 changes: 1 addition & 1 deletion cmd/web/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ func newPrinter() (*localeutil.Printer, error) {
fmt.Println(err)
}

fsys := append([]fs.FS{locales.Locales}, wl.All...)
fsys := append([]fs.FS{locales.Locales}, wl.Locales...)
langs, err := serialize.LoadFSGlob(func(string) serialize.UnmarshalFunc { return yaml.Unmarshal }, "*.yaml", fsys...)
if err != nil {
return nil, err
Expand Down
10 changes: 5 additions & 5 deletions locales/locales.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ import (
)

//go:embed *.yaml
var Locales embed.FS
var locales embed.FS

// All 当前框架依赖的所有本地化内容
// Locales 当前框架依赖的所有本地化内容
//
// 文件格式均为 yaml,使用时加载这些文件系统下的 yaml 文件即可:
//
// s := server.New(...)
// s.Locale().LoadMessages("*.yaml", locales.All()...)
var All = []fs.FS{
Locales,
// s.Locale().LoadMessages("*.yaml", locales.Locales()...)
var Locales = []fs.FS{
locales,
localeutilL.Locales,
config.Locales,
cache.Locales,
Expand Down

0 comments on commit da081d6

Please sign in to comment.