gogo_i18n

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 17, 2020 License: MIT Imports: 7 Imported by: 10

README

gogo-i18n

封裝 github.com/nicksnyder/go-i18n/v2/i18n 的 Package

如何取得

go get -u github.com/codingXiang/gogo-i18n

如何使用

建立 GoGoi18n 物件
// 建立 GoGoi18n 物件,預設語言為中文
GGi18n = NewGoGoi18n(language.TraditionalChinese)
讀取多語系檔案
// 設定 Config 類別
GGi18n.SetFileType("yaml")
// 讀取語言檔案,路徑會自動添加檔案類別子路徑,例如路徑為 `/etc` 的話,讀取 yaml 檔案就會讀取 `/etc/yaml` 下的檔案
// 第二個參數以後可以選擇要讀取哪些語系的檔案
GGi18n.LoadTranslationFile("/Users/user/go/src/pkg/gogo-i18n/example",
	language.TraditionalChinese,
	language.English)
翻譯
// 訊息翻譯
msg := GGi18n.GetMessage("orm.create.success", map[string]interface{}{
	"Data": "User",
})
fmt.Println(msg)
透過程式產生檔案

//NewGoGoi18nMessage 說明
/// 參數1 : 語言別,使用 golang 預設的 language 包
/// 參數2 : 多語系參照的 key
/// 參數3 : 翻譯的內容,可以使用 template tag {{}} 內嵌變數

//設定 i18n 翻譯資料
var (
	i18nDatas = []GoGoi18nMessageInterface{
		NewGoGoi18nMessage(language.TraditionalChinese, "orm.create.success", "建立 {{.Data}} 成功"),
		NewGoGoi18nMessage(language.TraditionalChinese, "orm.create.failed", "建立 {{.Data}} 失敗,原因為 {{.Error}}"),
		NewGoGoi18nMessage(language.TraditionalChinese, "orm.update.success", "更新 {{.Data}} 成功"),
		NewGoGoi18nMessage(language.TraditionalChinese, "orm.update.failed", "更新 {{.Data}} 失敗,原因為 {{.Error}}"),
		NewGoGoi18nMessage(language.TraditionalChinese, "orm.get.success", "取得 {{.Data}} 成功"),
		NewGoGoi18nMessage(language.TraditionalChinese, "orm.get.failed", "取得 {{.Data}} 失敗,原因為 {{.Error}}"),
		NewGoGoi18nMessage(language.English, "orm.create.success", "Create {{.Data}} success"),
		NewGoGoi18nMessage(language.English, "orm.create.failed", "Create {{.Data}} failed,because {{.Error}}"),
		NewGoGoi18nMessage(language.English, "orm.update.success", "Update {{.Data}} success"),
		NewGoGoi18nMessage(language.English, "orm.update.failed", "Update {{.Data}} failed,because {{.Error}}"),
		NewGoGoi18nMessage(language.English, "orm.get.success", "Get {{.Data}} success"),
		NewGoGoi18nMessage(language.English, "orm.get.failed", "Get {{.Data}} failed,because {{.Error}}"),
	}
)
//StoreDataToFile 儲存資料至檔案中
/// 參數1 : 檔案類型,指令要儲存的檔案類型,目前支援 yaml 與 json
/// 參數2 : 檔案儲存路徑,路徑會自動添加參數1檔案類別子路徑,例如路徑為 `/etc` 的話,參數1為 yaml 的話就會將檔案儲存到 `/etc/yaml` 中 
/// 參數3 : 轉換的檔案,使用 GoGoi18nMessageInterface 類型的陣列
StoreDataToFile("yaml", "/Users/user/go/src/pkg/gogo-i18n/example", i18nDatas)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func StoreDataToFile

func StoreDataToFile(fileType string, path string, datas []GoGoi18nMessageInterface) error

Types

type GoGoi18n

type GoGoi18n struct {
	// contains filtered or unexported fields
}

GoGoi18n 封裝 go-i18n 的結構

func (*GoGoi18n) GetMessage

func (i *GoGoi18n) GetMessage(messageID string, data interface{}) string

GetMessage 取得翻譯後的訊息

func (*GoGoi18n) LoadTranslationFile

func (i *GoGoi18n) LoadTranslationFile(path string, langs ...language.Tag) error

LoadTranslationFile 讀取翻譯檔

func (*GoGoi18n) Reload

func (i *GoGoi18n) Reload(lang language.Tag) GoGoi18nInterface

Reload 重新讀取語言包

func (*GoGoi18n) SetFileType

func (i *GoGoi18n) SetFileType(t string) error

SetFileType 設定翻譯檔類型

func (*GoGoi18n) SetUseLanguage

func (i *GoGoi18n) SetUseLanguage(lang language.Tag)

SetUseLanguage 設定當前要翻譯的語言

type GoGoi18nInterface

type GoGoi18nInterface interface {
	Reload(lang language.Tag) GoGoi18nInterface
	SetFileType(t string) error
	SetUseLanguage(lang language.Tag)
	LoadTranslationFile(path string, langs ...language.Tag) error
	GetMessage(messageID string, data interface{}) string
}

GoGoi18nInterface GoGoi18n 的實作介面

var (
	GGi18n GoGoi18nInterface //i18n 實例
)

func NewGoGoi18n

func NewGoGoi18n(lang language.Tag) GoGoi18nInterface

NewGoGoi18n 建立 GoGoi18n 實例

type GoGoi18nMessage

type GoGoi18nMessage struct {
	ID       uint64 `json:"id" yaml:"-" gorm:"type:bigint(20) unsigned auto_increment;not null;primary_key"`
	Language string `json:"language" gorm:"unique_index:idx1;comment:'語言別'"`
	Key      string `json:"key" gorm:"unique_index:idx1;comment:'多語的key'"`
	Value    string `json:"value" gorm:"unique_index:idx1;comment:'多語的值'"`
}

GoGoi18nMessage 資料庫欄位

func (*GoGoi18nMessage) GetI18nJSONData

func (g *GoGoi18nMessage) GetI18nJSONData() map[string]map[string]map[string]string

GetI18nJSONData 取得 i18n 轉換後的資料

func (*GoGoi18nMessage) TableName

func (g *GoGoi18nMessage) TableName() string

TableName 修改資料庫 Table 名稱

type GoGoi18nMessageInterface

type GoGoi18nMessageInterface interface {
	TableName() string
	GetI18nJSONData() map[string]map[string]map[string]string
}

GoGoi18nMessageInterface

func NewGoGoi18nMessage

func NewGoGoi18nMessage(language language.Tag, key string, value string) GoGoi18nMessageInterface

type LanguageHandler added in v1.0.1

type LanguageHandler struct {
	// contains filtered or unexported fields
}

func (*LanguageHandler) GetLanguageTag added in v1.0.1

func (l *LanguageHandler) GetLanguageTag(lang string) (language.Tag, error)

GetLanguageTag 傳入字串取得 Language 的 tag

type LanguageHandlerInterface added in v1.0.1

type LanguageHandlerInterface interface {
	GetLanguageTag(lang string) (language.Tag, error)
}

預設搜尋的語系,可以自行增加

func NewLanguageHandler added in v1.0.1

func NewLanguageHandler(defaultLanguage language.Tag) LanguageHandlerInterface

NewLanguageHandler 建立語言處理器

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL