Files
cbconvert/cmd/cbconvert-gui/i18n/i18n.go
T
Milan Nikolic 18e9adabaa Add i18n
2026-06-25 21:52:23 +02:00

190 lines
5.0 KiB
Go

// Package i18n holds the cbconvert GUI message keys and per-language string packs.
package i18n
import "github.com/gen2brain/iup-go/iup"
const (
ColTitle = "COL_TITLE"
ColType = "COL_TYPE"
ColSize = "COL_SIZE"
TabInput = "TAB_INPUT"
TabOutput = "TAB_OUTPUT"
TabImage = "TAB_IMAGE"
TabTransform = "TAB_TRANSFORM"
LblPage = "LBL_PAGE"
TipPage = "TIP_PAGE"
TglRecursive = "TGL_RECURSIVE"
TipRecursive = "TIP_RECURSIVE"
TglNoRGB = "TGL_NORGB"
TipNoRGB = "TIP_NORGB"
TglNoCover = "TGL_NOCOVER"
TipNoCover = "TIP_NOCOVER"
TglNoNonImage = "TGL_NONONIMAGE"
TipNoNonImage = "TIP_NONONIMAGE"
TglNoConvert = "TGL_NOCONVERT"
TipNoConvert = "TIP_NOCONVERT"
LblMinSize = "LBL_MINSIZE"
TipSize = "TIP_SIZE"
LblDPI = "LBL_DPI"
TipDPI = "TIP_DPI"
LblOutDir = "LBL_OUTDIR"
TipOutDir = "TIP_OUTDIR"
BtnBrowse = "BTN_BROWSE"
LblSuffix = "LBL_SUFFIX"
TipSuffix = "TIP_SUFFIX"
LblArchive = "LBL_ARCHIVE"
TipArchive = "TIP_ARCHIVE"
LblCompression = "LBL_COMPRESSION"
TipZipLevel = "TIP_ZIPLEVEL"
TglCombine = "TGL_COMBINE"
TipCombine = "TIP_COMBINE"
LblOutFile = "LBL_OUTFILE"
TipOutFile = "TIP_OUTFILE"
LblFormat = "LBL_FORMAT"
TipFormat = "TIP_FORMAT"
LblSize = "LBL_SIZE"
CueWidth = "CUE_WIDTH"
CueHeight = "CUE_HEIGHT"
TipWidthHeight = "TIP_WIDTHHEIGHT"
TglFit = "TGL_FIT"
TipFit = "TIP_FIT"
TglNoUpscale = "TGL_NOUPSCALE"
TipNoUpscale = "TIP_NOUPSCALE"
LblFilter = "LBL_FILTER"
LblQuality = "LBL_QUALITY"
TipQuality = "TIP_QUALITY"
LblEffort = "LBL_EFFORT"
TipEffort = "TIP_EFFORT"
TglLossless = "TGL_LOSSLESS"
TipLossless = "TIP_LOSSLESS"
TglGrayscale = "TGL_GRAYSCALE"
TipGrayscale = "TIP_GRAYSCALE"
LblBrightness = "LBL_BRIGHTNESS"
TipBrightness = "TIP_BRIGHTNESS"
LblContrast = "LBL_CONTRAST"
TipContrast = "TIP_CONTRAST"
LblRotate = "LBL_ROTATE"
TipRotate = "TIP_ROTATE"
EffortMethod = "EFFORT_METHOD"
EffortSpeed = "EFFORT_SPEED"
EffortEffort = "EFFORT_EFFORT"
TipEffortWebp = "TIP_EFFORT_WEBP"
TipEffortAvif = "TIP_EFFORT_AVIF"
TipEffortJxl = "TIP_EFFORT_JXL"
BtnAddFiles = "BTN_ADDFILES"
BtnAddDir = "BTN_ADDDIR"
BtnRemove = "BTN_REMOVE"
BtnRemoveAll = "BTN_REMOVEALL"
BtnThumbnail = "BTN_THUMBNAIL"
BtnCover = "BTN_COVER"
BtnConvert = "BTN_CONVERT"
BtnCancel = "BTN_CANCEL"
TipCancel = "TIP_CANCEL"
BtnReset = "BTN_RESET"
TipReset = "TIP_RESET"
BtnSave = "BTN_SAVE"
TipSave = "TIP_SAVE"
BtnCommand = "BTN_COMMAND"
TipCommand = "TIP_COMMAND"
LblProfile = "LBL_PROFILE"
TipProfile = "TIP_PROFILE"
TipThumbnail = "TIP_THUMBNAIL"
TipCover = "TIP_COVER"
TipConvert = "TIP_CONVERT"
StatusNeedFilesAndDir = "STATUS_NEED_FILES_AND_DIR"
StatusNeedFiles = "STATUS_NEED_FILES"
StatusNeedOutDir = "STATUS_NEED_OUTDIR"
StatusFileOf = "STATUS_FILE_OF"
FilterNearest = "FILTER_NEAREST"
FilterBox = "FILTER_BOX"
FilterLinear = "FILTER_LINEAR"
FilterMitchell = "FILTER_MITCHELL"
FilterCatmull = "FILTER_CATMULL"
FilterGaussian = "FILTER_GAUSSIAN"
FilterLanczos = "FILTER_LANCZOS"
DlgAddFiles = "DLG_ADDFILES"
DlgAddDir = "DLG_ADDDIR"
DlgOutputDir = "DLG_OUTPUTDIR"
DlgOutputFile = "DLG_OUTPUTFILE"
DlgCommandLine = "DLG_COMMANDLINE"
DlgSaveProfile = "DLG_SAVEPROFILE"
ParamName = "PARAM_NAME"
MsgInvalidNameTitle = "MSG_INVALIDNAME_TITLE"
MsgInvalidNameBody = "MSG_INVALIDNAME_BODY"
NoPreview = "NO_PREVIEW"
)
// packs maps an IUP language name to its message pack, filled by each language file's init.
var packs = map[string]map[string]string{}
// register adds a language pack; called from each i18n_<lang>.go init.
func register(lang string, pack map[string]string) {
packs[lang] = pack
}
// langByCode maps a two-letter language code to the IUP language name.
var langByCode = map[string]string{
"en": "ENGLISH",
"pt": "PORTUGUESE",
"es": "SPANISH",
"cs": "CZECH",
"ru": "RUSSIAN",
"de": "GERMAN",
"fr": "FRENCH",
"zh": "CHINESE",
"ja": "JAPANESE",
"it": "ITALIAN",
}
// Lng wraps a message key for IUP's automatic language-string lookup.
func Lng(key string) string {
return "_@" + key
}
// Str returns the translated string for a key, for use where IUP's "_@" prefix does not apply.
func Str(key string) string {
return iup.GetLanguageString(key)
}
// Init detects the system language, switches IUP's predefined strings to it, and registers the message packs.
func Init() {
lang := detect()
iup.SetLanguage(lang)
registerPack(packs["ENGLISH"])
if lang != "ENGLISH" {
if pack, ok := packs[lang]; ok {
registerPack(pack)
}
}
}
func registerPack(pack map[string]string) {
for name, value := range pack {
iup.SetLanguageString(name, value)
}
}
// detect returns the IUP language name for the system locale, or ENGLISH.
func detect() string {
if name, ok := langByCode[systemLangCode()]; ok {
return name
}
return "ENGLISH"
}