73 lines
3.8 KiB
Go
73 lines
3.8 KiB
Go
package i18n
|
|
|
|
import (
|
|
"golang.org/x/text/language"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
LANG_KEY = "_lang"
|
|
)
|
|
|
|
var matcher = language.NewMatcher([]language.Tag{
|
|
// The first language is used as fallback.
|
|
language.English,
|
|
language.Chinese,
|
|
})
|
|
|
|
type Item struct {
|
|
English string
|
|
Chinese string
|
|
}
|
|
|
|
var (
|
|
UsernameOrPasswordCannotNull = &Item{English: `username or password cannot be null`, Chinese: `用户名或密码不能为空`}
|
|
UsernameOrPasswordError = &Item{English: `username or password error`, Chinese: `用户名或密码错误`}
|
|
UsernameExist = &Item{English: `username "%s" exists`, Chinese: `用户名"%s"已存在`}
|
|
UsernameNotExist = &Item{English: `username "%s" not exists`, Chinese: `用户名"%s"不存在`}
|
|
UsernameIsNotAdmin = &Item{English: `username "%s" is not admin user`, Chinese: `用户名"%s"不是管理员账号`}
|
|
UsernameError = &Item{English: `username can only be lowercase letters, numbers or _`, Chinese: `用户名必填,且只能包含小写字母,数字和'_'`}
|
|
UserRegisterNotAllowd = &Item{English: `admin has banned register`, Chinese: `管理员已禁用自主注册`}
|
|
UserPasswordLengthError = &Item{English: `password at least 6 chars`, Chinese: `密码长度至少为6位`}
|
|
UserOldPasswordError = &Item{English: `old password error`, Chinese: `旧密码不正确`}
|
|
MatterDestinationMustDirectory = &Item{English: `destination must be directory'`, Chinese: `目标对象只能是文件夹。`}
|
|
MatterExist = &Item{English: `"%s" already exists, invalid operation`, Chinese: `"%s" 已经存在了,操作无效`}
|
|
MatterDepthExceedLimit = &Item{English: `directory's depth exceed the limit %d > %d`, Chinese: `文件加层数超过限制 %d > %d `}
|
|
MatterNameLengthExceedLimit = &Item{English: `filename's length exceed the limit %d > %d`, Chinese: `文件名称长度超过限制 %d > %d `}
|
|
MatterSelectNumExceedLimit = &Item{English: `selected files' num exceed the limit %d > %d`, Chinese: `选择的文件数量超出限制了 %d > %d `}
|
|
MatterSelectSizeExceedLimit = &Item{English: `selected files' size exceed the limit %s > %s`, Chinese: `选择的文件大小超出限制了 %s > %s `}
|
|
MatterSizeExceedLimit = &Item{English: `uploaded file's size exceed the size limit %s > %s `, Chinese: `上传的文件超过了限制 %s > %s `}
|
|
MatterNameContainSpecialChars = &Item{English: `file name cannot contain special chars \ / : * ? " < > |"`, Chinese: `名称中不能包含以下特殊符号:\ / : * ? " < > |`}
|
|
MatterMoveRecursive = &Item{English: `directory cannot be moved to itself or its children`, Chinese: `文件夹不能把自己移入到自己中,也不可以移入到自己的子文件夹下。`}
|
|
MatterNameNoChange = &Item{English: `filename not change, invalid operation`, Chinese: `文件名没有改变,操作无效!`}
|
|
ShareNumExceedLimit = &Item{English: `sharing files' num exceed the limit %d > %d`, Chinese: `一次分享的文件数量超出限制了 %d > %d `}
|
|
ShareCodeRequired = &Item{English: `share code required`, Chinese: `提取码必填`}
|
|
ShareCodeError = &Item{English: `share code error`, Chinese: `提取码错误`}
|
|
)
|
|
|
|
func (this *Item) Message(request *http.Request) string {
|
|
|
|
if request == nil {
|
|
return this.English
|
|
}
|
|
|
|
lang, _ := request.Cookie(LANG_KEY)
|
|
formLangStr := request.FormValue(LANG_KEY)
|
|
acceptLangStr := request.Header.Get("Accept-Language")
|
|
var cookieLangStr string
|
|
if lang != nil {
|
|
cookieLangStr = lang.Value
|
|
}
|
|
tag, _ := language.MatchStrings(matcher, cookieLangStr, formLangStr, acceptLangStr)
|
|
|
|
tagBase, _ := tag.Base()
|
|
chineseBase, _ := language.Chinese.Base()
|
|
|
|
if tagBase == chineseBase {
|
|
return this.Chinese
|
|
} else {
|
|
return this.English
|
|
}
|
|
|
|
}
|