+36
-20
lines changedFilter options
+36
-20
lines changed Original file line number Diff line number Diff line change
@@ -419,7 +419,9 @@ func (s *arduinoCoreServerImpl) Init(req *rpc.InitRequest, stream rpc.ArduinoCor
419
419
// Refreshes the locale used, this will change the
420
420
// language of the CLI if the locale is different
421
421
// after started.
422
-
i18n.Init(s.settings.GetString("locale"))
422
+
if locale, ok, _ := s.settings.GetStringOk("locale"); ok {
423
+
i18n.Init(locale)
424
+
}
423
425
424
426
return nil
425
427
}
Original file line number Diff line number Diff line change
@@ -19,20 +19,14 @@ import (
19
19
"context"
20
20
21
21
"github.com/arduino/arduino-cli/internal/cli/configuration"
22
-
"github.com/arduino/arduino-cli/internal/i18n"
23
22
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
24
23
"github.com/arduino/arduino-cli/version"
25
24
)
26
25
27
26
// NewArduinoCoreServer returns an implementation of the ArduinoCoreService gRPC service
28
27
// that uses the provided version string.
29
28
func NewArduinoCoreServer() rpc.ArduinoCoreServiceServer {
30
-
settings := configuration.NewSettings()
31
-
32
-
// Setup i18n
33
-
i18n.Init(settings.Locale())
34
-
35
-
return &arduinoCoreServerImpl{settings: settings}
29
+
return &arduinoCoreServerImpl{settings: configuration.NewSettings()}
36
30
}
37
31
38
32
type arduinoCoreServerImpl struct {
Original file line number Diff line number Diff line change
@@ -62,7 +62,6 @@ func TestGetAll(t *testing.T) {
62
62
"user": `+defaultUserDir.GetEncodedValue()+`
63
63
},
64
64
"library": {},
65
-
"locale": "en",
66
65
"logging": {
67
66
"format": "text",
68
67
"level": "info"
Original file line number Diff line number Diff line change
@@ -73,7 +73,7 @@ func SetDefaults(settings *Settings) {
73
73
setKeyTypeSchema("network.user_agent_ext", "")
74
74
75
75
// locale
76
-
setDefaultValueAndKeyTypeSchema("locale", "en")
76
+
setKeyTypeSchema("locale", "")
77
77
}
78
78
79
79
// InjectEnvVars change settings based on the environment variables values
Original file line number Diff line number Diff line change
@@ -16,5 +16,8 @@
16
16
package configuration
17
17
18
18
func (s *Settings) Locale() string {
19
+
if locale, ok, err := s.GetStringOk("locale"); ok && err == nil {
20
+
return locale
21
+
}
19
22
return s.Defaults.GetString("locale")
20
23
}
Original file line number Diff line number Diff line change
@@ -16,19 +16,24 @@
16
16
package i18n
17
17
18
18
import (
19
-
"fmt"
20
19
"strings"
21
20
"syscall"
22
21
"unsafe"
22
+
23
+
"github.com/sirupsen/logrus"
23
24
)
24
25
25
26
func getLocaleIdentifier() string {
26
27
defer func() {
27
28
if r := recover(); r != nil {
28
-
fmt.Println("failed to get windows user locale", r)
29
+
logrus.WithField("error", r).Errorf("Failed to get windows user locale")
29
30
}
30
31
}()
31
32
33
+
if loc := getLocaleIdentifierFromEnv(); loc != "" {
34
+
return loc
35
+
}
36
+
32
37
dll := syscall.MustLoadDLL("kernel32")
33
38
defer dll.Release()
34
39
proc := dll.MustFindProc("GetUserDefaultLocaleName")
Original file line number Diff line number Diff line change
@@ -882,25 +882,25 @@ build.unk: 123
882
882
t.Cleanup(func() { unkwnownConfig.Remove() })
883
883
884
884
// Run "config get" with a configuration containing an unknown key
885
-
out, _, err := cli.Run("config", "get", "locale", "--config-file", unkwnownConfig.String())
885
+
out, _, err := cli.Run("config", "get", "daemon.port", "--config-file", unkwnownConfig.String())
886
886
require.NoError(t, err)
887
-
require.Equal(t, "en", strings.TrimSpace(string(out)))
887
+
require.Equal(t, `"50051"`, strings.TrimSpace(string(out)))
888
888
889
-
// Run "config get" with a configuration containing an invalid key
889
+
// Run "config get" with a configuration containing an invalid value
890
890
invalidConfig := paths.New(filepath.Join(tmp, "invalid.yaml"))
891
-
invalidConfig.WriteFile([]byte(`locale: 123`))
891
+
invalidConfig.WriteFile([]byte(`daemon.port: 123`))
892
892
t.Cleanup(func() { invalidConfig.Remove() })
893
-
out, _, err = cli.Run("config", "get", "locale", "--config-file", invalidConfig.String())
893
+
out, _, err = cli.Run("config", "get", "daemon.port", "--config-file", invalidConfig.String())
894
894
require.NoError(t, err)
895
-
require.Equal(t, "en", strings.TrimSpace(string(out)))
895
+
require.Equal(t, `"50051"`, strings.TrimSpace(string(out)))
896
896
897
897
// Run "config get" with a configuration containing a null array
898
898
nullArrayConfig := paths.New(filepath.Join(tmp, "null_array.yaml"))
899
899
nullArrayConfig.WriteFile([]byte(`board_manager.additional_urls:`))
900
900
t.Cleanup(func() { nullArrayConfig.Remove() })
901
-
out, _, err = cli.Run("config", "get", "locale", "--config-file", invalidConfig.String())
901
+
out, _, err = cli.Run("config", "get", "daemon.port", "--config-file", nullArrayConfig.String())
902
902
require.NoError(t, err)
903
-
require.Equal(t, "en", strings.TrimSpace(string(out)))
903
+
require.Equal(t, `"50051"`, strings.TrimSpace(string(out)))
904
904
}
905
905
906
906
func TestConfigViaEnvVars(t *testing.T) {
@@ -931,3 +931,16 @@ func TestConfigViaEnvVars(t *testing.T) {
931
931
require.NoError(t, err)
932
932
require.Equal(t, "20\n\n", string(out))
933
933
}
934
+
935
+
func TestI18N(t *testing.T) {
936
+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
937
+
defer env.CleanUp()
938
+
939
+
out, _, err := cli.RunWithCustomEnv(map[string]string{"LC_ALL": "it"})
940
+
require.NoError(t, err)
941
+
require.Contains(t, string(out), "Comandi disponibili")
942
+
943
+
out, _, err = cli.RunWithCustomEnv(map[string]string{"LC_ALL": "en"})
944
+
require.NoError(t, err)
945
+
require.Contains(t, string(out), "Available Commands")
946
+
}
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4