translate

package module
v0.0.0-...-fdbdff5 Latest Latest
Warning

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

Go to latest
Published: Oct 3, 2023 License: MIT Imports: 9 Imported by: 1

README

Translate

This library is an incredibly simple translation system for Go. It is designed to work well with go.elara.ws/logger, and doesn't have nearly as many features as other solutions, because those features are not needed for all applications, and they increase complexity unnecessarily in use cases that don't need it. All this package does is parses TOML files for translations, and then gets the raw text from the files for whatever language you want to translate to.

If you need advanced functionality, such as handling singular/plural words, gender, etc., use other packages such as golang.org/x/text/message or github.com/nicksnyder/go-i18n.

Translation files

Translation files for this package are incredibly simple. They are just TOML files with sections that look like the following:

[[translation]]
id = 458405366
value = 'First test'

[[translation]]
id = 2703638123
value = 'Second test'

The value field contains the string you want to use for the given language, and the id field is a crc32 checksum of the string that you will input, most commonly the same as the value field of the fallback language. For example, if I wanted to add a Russian translation, I'd do something like this:

[[translation]]
id = 458405366
value = 'Первая проверка'

Notice that the ID does not correspond to the checksum of the actual string. Instead, it corresponds to the English string above, because that's the fallback and that's what I'll be using when calling Translator.TranslateTo(). To use this translation, you'd do the following:

tr := translate.New(cat)
out := tr.TranslateTo("First test", language.Russian) // out == "Первая проверка"

The checksum is calculated from "First test".

cmd/translate

The cmd/translate package contains a command that helps with creating translation files.

To generate IDs corresponding to the value fields in a file, run the following:

translate gen-id <file>

To test your translations, run:

translate translate <dir> <lang> <string>

For example,

translate translate ./testdata ru "First test"

This should output Первая проверка.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Catalog

type Catalog map[language.Tag]Dictionary

type Dictionary

type Dictionary map[uint32]string

type TranslatedLogBuilder

type TranslatedLogBuilder struct {
	LogBuilder logger.LogBuilder
	Translator Translator
	Language   language.Tag
}

func (*TranslatedLogBuilder) Any

func (tlb *TranslatedLogBuilder) Any(key string, value any) logger.LogBuilder

func (*TranslatedLogBuilder) Bool

func (tlb *TranslatedLogBuilder) Bool(key string, value bool) logger.LogBuilder

func (*TranslatedLogBuilder) Bytes

func (tlb *TranslatedLogBuilder) Bytes(key string, value []byte) logger.LogBuilder

func (*TranslatedLogBuilder) Err

func (*TranslatedLogBuilder) Float32

func (tlb *TranslatedLogBuilder) Float32(key string, value float32) logger.LogBuilder

func (*TranslatedLogBuilder) Float64

func (tlb *TranslatedLogBuilder) Float64(key string, value float64) logger.LogBuilder

func (*TranslatedLogBuilder) Int

func (tlb *TranslatedLogBuilder) Int(key string, value int) logger.LogBuilder

func (*TranslatedLogBuilder) Int16

func (tlb *TranslatedLogBuilder) Int16(key string, value int16) logger.LogBuilder

func (*TranslatedLogBuilder) Int32

func (tlb *TranslatedLogBuilder) Int32(key string, value int32) logger.LogBuilder

func (*TranslatedLogBuilder) Int64

func (tlb *TranslatedLogBuilder) Int64(key string, value int64) logger.LogBuilder

func (*TranslatedLogBuilder) Int8

func (tlb *TranslatedLogBuilder) Int8(key string, value int8) logger.LogBuilder

func (*TranslatedLogBuilder) Send

func (tlb *TranslatedLogBuilder) Send()

func (*TranslatedLogBuilder) Str

func (tlb *TranslatedLogBuilder) Str(key string, value string) logger.LogBuilder

func (*TranslatedLogBuilder) Stringer

func (tlb *TranslatedLogBuilder) Stringer(key string, value fmt.Stringer) logger.LogBuilder

func (*TranslatedLogBuilder) Timestamp

func (tlb *TranslatedLogBuilder) Timestamp() logger.LogBuilder

func (*TranslatedLogBuilder) Uint

func (tlb *TranslatedLogBuilder) Uint(key string, value uint) logger.LogBuilder

func (*TranslatedLogBuilder) Uint16

func (tlb *TranslatedLogBuilder) Uint16(key string, value uint16) logger.LogBuilder

func (*TranslatedLogBuilder) Uint32

func (tlb *TranslatedLogBuilder) Uint32(key string, value uint32) logger.LogBuilder

func (*TranslatedLogBuilder) Uint64

func (tlb *TranslatedLogBuilder) Uint64(key string, value uint64) logger.LogBuilder

func (*TranslatedLogBuilder) Uint8

func (tlb *TranslatedLogBuilder) Uint8(key string, value uint8) logger.LogBuilder

type TranslatedLogger

type TranslatedLogger struct {
	Logger     logger.Logger
	Translator Translator
	Language   language.Tag
}

func NewLogger

func NewLogger(l logger.Logger, t Translator, lang language.Tag) *TranslatedLogger

func (*TranslatedLogger) Debug

func (tl *TranslatedLogger) Debug(msg string) logger.LogBuilder

func (*TranslatedLogger) Debugf

func (tl *TranslatedLogger) Debugf(format string, args ...any) logger.LogBuilder

func (*TranslatedLogger) Error

func (tl *TranslatedLogger) Error(msg string) logger.LogBuilder

func (*TranslatedLogger) Errorf

func (tl *TranslatedLogger) Errorf(format string, args ...any) logger.LogBuilder

func (*TranslatedLogger) Fatal

func (tl *TranslatedLogger) Fatal(msg string) logger.LogBuilder

func (*TranslatedLogger) Fatalf

func (tl *TranslatedLogger) Fatalf(format string, args ...any) logger.LogBuilder

func (*TranslatedLogger) Info

func (tl *TranslatedLogger) Info(msg string) logger.LogBuilder

func (*TranslatedLogger) Infof

func (tl *TranslatedLogger) Infof(format string, args ...any) logger.LogBuilder

func (*TranslatedLogger) NoExit

func (tl *TranslatedLogger) NoExit()

func (*TranslatedLogger) NoPanic

func (tl *TranslatedLogger) NoPanic()

func (*TranslatedLogger) Panic

func (tl *TranslatedLogger) Panic(msg string) logger.LogBuilder

func (*TranslatedLogger) Panicf

func (tl *TranslatedLogger) Panicf(format string, args ...any) logger.LogBuilder

func (*TranslatedLogger) SetLevel

func (tl *TranslatedLogger) SetLevel(level logger.LogLevel)

func (*TranslatedLogger) Warn

func (tl *TranslatedLogger) Warn(msg string) logger.LogBuilder

func (*TranslatedLogger) Warnf

func (tl *TranslatedLogger) Warnf(format string, args ...any) logger.LogBuilder

type Translation

type Translation struct {
	ID    uint32 `toml:"id"`
	Value string `toml:"value"`
}

type Translations

type Translations struct {
	Items []Translation `toml:"translation"`
}

type Translator

type Translator struct {
	Fallback language.Tag
	// contains filtered or unexported fields
}

func New

func New(cat Catalog) Translator

func NewFromDir

func NewFromDir(dir string) (Translator, error)

func NewFromFS

func NewFromFS(fsys fs.FS) (Translator, error)

func (*Translator) TranslateTo

func (t *Translator) TranslateTo(s string, tag language.Tag) string

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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