Mark user interface strings

For now exclude command help, as cobra itself is not localizable yet.
This commit is contained in:
Philipp Wolfer 2023-12-09 16:43:14 +01:00
parent 511b71b909
commit d6ca8d33f7
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
27 changed files with 1005 additions and 95 deletions

View file

@ -33,6 +33,7 @@ import (
"go.uploadedlobster.com/scotty/internal/backends/spotify"
"go.uploadedlobster.com/scotty/internal/backends/subsonic"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
)
@ -72,7 +73,7 @@ func ResolveBackend[T interface{}](config *config.ServiceConfig) (T, error) {
if implements {
result = backend.(T)
} else {
err = fmt.Errorf("backend %s does not implement %s", config.Backend, interfaceName)
err = fmt.Errorf(i18n.Tr("backend %s does not implement %s", config.Backend, interfaceName))
}
return result, err
@ -81,7 +82,7 @@ func ResolveBackend[T interface{}](config *config.ServiceConfig) (T, error) {
func BackendByName(backendName string) (models.Backend, error) {
backendType := knownBackends[backendName]
if backendType == nil {
return nil, fmt.Errorf("unknown backend \"%s\"", backendName)
return nil, fmt.Errorf(i18n.Tr("unknown backend \"%s\"", backendName))
}
return backendType(), nil
}

View file

@ -24,6 +24,7 @@ import (
"go.uploadedlobster.com/scotty/internal/auth"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
"golang.org/x/oauth2"
)
@ -39,11 +40,11 @@ func (b *DeezerApiBackend) Name() string { return "deezer" }
func (b *DeezerApiBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "client-id",
Label: "Client ID",
Label: i18n.Tr("Client ID"),
Type: models.String,
}, {
Name: "client-secret",
Label: "Client secret",
Label: i18n.Tr("Client secret"),
Type: models.Secret,
}}
}

View file

@ -21,6 +21,7 @@ import (
"time"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
)
@ -36,15 +37,15 @@ func (b *FunkwhaleApiBackend) Name() string { return "funkwhale" }
func (b *FunkwhaleApiBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "server-url",
Label: "Server URL",
Label: i18n.Tr("Server URL"),
Type: models.String,
}, {
Name: "username",
Label: "User name",
Label: i18n.Tr("User name"),
Type: models.String,
}, {
Name: "token",
Label: "Access token",
Label: i18n.Tr("Access token"),
Type: models.Secret,
}}
}

View file

@ -22,6 +22,7 @@ import (
"time"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
"go.uploadedlobster.com/scotty/pkg/jspf"
)
@ -39,19 +40,19 @@ func (b *JSPFBackend) Name() string { return "jspf" }
func (b *JSPFBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "file-path",
Label: "File path",
Label: i18n.Tr("File path"),
Type: models.String,
}, {
Name: "title",
Label: "Playlist title",
Label: i18n.Tr("Playlist title"),
Type: models.String,
}, {
Name: "username",
Label: "User name",
Label: i18n.Tr("User name"),
Type: models.String,
}, {
Name: "identifier",
Label: "Unique playlist identifier",
Label: i18n.Tr("Unique playlist identifier"),
Type: models.String,
}}
}

View file

@ -25,6 +25,7 @@ import (
"github.com/shkh/lastfm-go/lastfm"
"go.uploadedlobster.com/scotty/internal/auth"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
"golang.org/x/oauth2"
)
@ -46,15 +47,15 @@ func (b *LastfmApiBackend) Name() string { return "lastfm" }
func (b *LastfmApiBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "username",
Label: "User name",
Label: i18n.Tr("User name"),
Type: models.String,
}, {
Name: "client-id",
Label: "Client ID",
Label: i18n.Tr("Client ID"),
Type: models.String,
}, {
Name: "client-secret",
Label: "Client secret",
Label: i18n.Tr("Client secret"),
Type: models.Secret,
}}
}

View file

@ -22,6 +22,7 @@ import (
"time"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
"go.uploadedlobster.com/scotty/internal/version"
)
@ -37,11 +38,11 @@ func (b *ListenBrainzApiBackend) Name() string { return "listenbrainz" }
func (b *ListenBrainzApiBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "username",
Label: "User name",
Label: i18n.Tr("User name"),
Type: models.String,
}, {
Name: "token",
Label: "Access token",
Label: i18n.Tr("Access token"),
Type: models.Secret,
}}
}

View file

@ -23,6 +23,7 @@ import (
"time"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
)
@ -36,15 +37,15 @@ func (b *MalojaApiBackend) Name() string { return "maloja" }
func (b *MalojaApiBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "server-url",
Label: "Server URL",
Label: i18n.Tr("Server URL"),
Type: models.String,
}, {
Name: "token",
Label: "Access token",
Label: i18n.Tr("Access token"),
Type: models.Secret,
}, {
Name: "nofix",
Label: "Disable auto correction of submitted listens",
Label: i18n.Tr("Disable auto correction of submitted listens"),
Type: models.Bool,
}}
}

View file

@ -23,6 +23,7 @@ import (
"time"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
)
@ -39,15 +40,15 @@ func (b *ScrobblerLogBackend) Name() string { return "scrobbler-log" }
func (b *ScrobblerLogBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "file-path",
Label: "File path",
Label: i18n.Tr("File path"),
Type: models.String,
}, {
Name: "include-skipped",
Label: "Include skipped listens",
Label: i18n.Tr("Include skipped listens"),
Type: models.Bool,
}, {
Name: "append",
Label: "Append to file",
Label: i18n.Tr("Append to file"),
Type: models.Bool,
}}
}

View file

@ -26,6 +26,7 @@ import (
"go.uploadedlobster.com/scotty/internal/auth"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
"golang.org/x/oauth2"
"golang.org/x/oauth2/spotify"
@ -42,11 +43,11 @@ func (b *SpotifyApiBackend) Name() string { return "spotify" }
func (b *SpotifyApiBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "client-id",
Label: "Client ID",
Label: i18n.Tr("Client ID"),
Type: models.String,
}, {
Name: "client-secret",
Label: "Client secret",
Label: i18n.Tr("Client secret"),
Type: models.Secret,
}}
}

View file

@ -23,6 +23,7 @@ import (
"github.com/delucks/go-subsonic"
"go.uploadedlobster.com/scotty/internal/config"
"go.uploadedlobster.com/scotty/internal/i18n"
"go.uploadedlobster.com/scotty/internal/models"
"go.uploadedlobster.com/scotty/internal/version"
)
@ -37,15 +38,15 @@ func (b *SubsonicApiBackend) Name() string { return "subsonic" }
func (b *SubsonicApiBackend) Options() []models.BackendOption {
return []models.BackendOption{{
Name: "server-url",
Label: "Server URL",
Label: i18n.Tr("Server URL"),
Type: models.String,
}, {
Name: "username",
Label: "User name",
Label: i18n.Tr("User name"),
Type: models.String,
}, {
Name: "token",
Label: "Access token",
Label: i18n.Tr("Access token"),
Type: models.Secret,
}}
}