/
main.go
53 lines (43 loc) · 1.89 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main
import (
"context"
"fmt"
"github.com/jjonline/i18n-stringer/example/lang"
)
func main() {
// ++++++++++++++++++++
// NOTE: First you should execute
// go generate ./...
// ++++++++++++++++++++
// Specify the language locale use string param
fmt.Println("-----\ntestCase-1")
fmt.Println(lang.MerchantLoginInvalid.Trans("zh_cn", lang.ComUserName))
fmt.Println(lang.Ok.Trans("zh_cn"))
// Specify the language locale invalid, default language translation will be output
fmt.Println("-----\ntestCase-2")
fmt.Println(lang.MerchantLoginInvalid.Trans("zh-cn", lang.ComUserName))
// can not be formatted
fmt.Println("-----\ntestCase-3")
fmt.Println(lang.MerchantLoginInvalid.String())
// call String method
fmt.Println("-----\ntestCase-4")
fmt.Println(lang.SubDirectoryTest)
// Specify the language locale use context.Context param
fmt.Println("-----\ntestCase-5")
ctx := context.WithValue(context.TODO(), "i18n", "en") // Attention the VALUE of second parameter
fmt.Println(lang.MerchantLoginInvalid.Lang(ctx, lang.ComUserName))
fmt.Println(lang.Ok.Lang(ctx))
// use ErrorWrap struct
// JUST used when you need to wrap another error return
fmt.Println("-----\ntestCase-6")
wrapErr := fmt.Errorf("this is an error need to be wrapped")
err := lang.MerchantLoginInvalid.Wrap(wrapErr, "zh_cn")
fmt.Println(err.Translate()) // can not be formatted
fmt.Println(err) // use String method as fmt.Stringer, can not be formatted
fmt.Println(err.Unwrap()) // get wrapped error
err1 := lang.MerchantLoginInvalid.Wrap(wrapErr, "zh_cn", lang.ComUserName)
fmt.Println(err1.Translate()) // can be formatted
err2 := lang.MerchantLoginInvalid.WrapWithContext(ctx, wrapErr, lang.ComUserName)
fmt.Println(err2.Translate()) // wrap with context.Context, can be formatted
fmt.Println(err2.Format()) // Format method Only used for development and debugging and not showing end users
}