mirror of
https://git.sr.ht/~phw/scotty
synced 2025-04-29 21:27:05 +02:00
Mark user interface strings
For now exclude command help, as cobra itself is not localizable yet.
This commit is contained in:
parent
511b71b909
commit
d6ca8d33f7
27 changed files with 1005 additions and 95 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue