WIP: feat: translation support
Some checks failed
continuous-integration/drone/push Build is failing

See #483
This commit is contained in:
2025-08-19 11:22:52 +02:00
parent 5cf6048ecb
commit 57e09b6917
108 changed files with 11210 additions and 1645 deletions

View File

@ -2,10 +2,12 @@ package service
import (
"context"
"errors"
"fmt"
"strings"
"coopcloud.tech/abra/pkg/formatter"
"coopcloud.tech/abra/pkg/i18n"
"coopcloud.tech/abra/pkg/log"
"github.com/AlecAivazis/survey/v2"
"github.com/docker/docker/api/types"
@ -25,7 +27,7 @@ func GetServiceByLabel(c context.Context, cl *client.Client, label string, promp
}
if len(services) == 0 {
return swarm.Service{}, fmt.Errorf("no services deployed?")
return swarm.Service{}, errors.New(i18n.G("no services deployed?"))
}
var matchingServices []swarm.Service
@ -36,7 +38,7 @@ func GetServiceByLabel(c context.Context, cl *client.Client, label string, promp
}
if len(matchingServices) == 0 {
return swarm.Service{}, fmt.Errorf("no services deployed matching label '%s'?", label)
return swarm.Service{}, errors.New(i18n.G("no services deployed matching label '%s'?", label))
}
if len(matchingServices) > 1 {
@ -48,15 +50,15 @@ func GetServiceByLabel(c context.Context, cl *client.Client, label string, promp
}
if !prompt {
err := fmt.Errorf("expected 1 service but found %v: %s", len(matchingServices), strings.Join(servicesRaw, " "))
err := errors.New(i18n.G("expected 1 service but found %v: %s", len(matchingServices), strings.Join(servicesRaw, " ")))
return swarm.Service{}, err
}
log.Warnf("ambiguous service list received, prompting for input")
log.Warn(i18n.G("ambiguous service list received, prompting for input"))
var response string
prompt := &survey.Select{
Message: "which service are you looking for?",
Message: i18n.G("which service are you looking for?"),
Options: servicesRaw,
}
@ -72,7 +74,7 @@ func GetServiceByLabel(c context.Context, cl *client.Client, label string, promp
}
}
log.Fatal("failed to match chosen service")
log.Fatal(i18n.G("failed to match chosen service"))
}
return matchingServices[0], nil
@ -90,7 +92,7 @@ func GetService(c context.Context, cl *client.Client, filters filters.Args, prom
if len(services) == 0 {
filter := filters.Get("name")[0]
return swarm.Service{}, fmt.Errorf("no services matching the %v filter found?", filter)
return swarm.Service{}, errors.New(i18n.G("no services matching the %v filter found?", filter))
}
if len(services) != 1 {
@ -98,19 +100,19 @@ func GetService(c context.Context, cl *client.Client, filters filters.Args, prom
for _, service := range services {
serviceName := service.Spec.Name
created := formatter.HumanDuration(service.CreatedAt.Unix())
servicesRaw = append(servicesRaw, fmt.Sprintf("%s (created %v)", serviceName, created))
servicesRaw = append(servicesRaw, i18n.G("%s (created %v)", serviceName, created))
}
if !prompt {
err := fmt.Errorf("expected 1 service but found %v: %s", len(services), strings.Join(servicesRaw, " "))
err := errors.New(i18n.G("expected 1 service but found %v: %s", len(services), strings.Join(servicesRaw, " ")))
return swarm.Service{}, err
}
log.Warnf("ambiguous service list received, prompting for input")
log.Warn(i18n.G("ambiguous service list received, prompting for input"))
var response string
prompt := &survey.Select{
Message: "which service are you looking for?",
Message: i18n.G("which service are you looking for?"),
Options: servicesRaw,
}
@ -126,7 +128,7 @@ func GetService(c context.Context, cl *client.Client, filters filters.Args, prom
}
}
log.Fatal("failed to match chosen service")
log.Fatal(i18n.G("failed to match chosen service"))
}
return services[0], nil