diff --git a/docs/keybindings/Keybindings_de.md b/docs/keybindings/Keybindings_de.md index 68b42395..62b92011 100644 --- a/docs/keybindings/Keybindings_de.md +++ b/docs/keybindings/Keybindings_de.md @@ -1,17 +1,17 @@ -# Lazydocker menu +# Lazydocker Menü -## Status +## Projekt
   e: bearbeite lazydocker Konfiguration
   o: öffne lazydocker Konfiguration
   [: vorheriges Tab
-  ]: nächstes tab
-  m: zeige Protokoll
+  ]: nächstes Tab
+  m: zeige Protokolle
   enter: fokusieren aufs Hauptpanel
 
-## Containers +## Container
   [: vorheriges Tab
@@ -26,7 +26,7 @@
   enter: fokusieren aufs Hauptpanel
 
-## Services +## Dienste
   d: entferne Container
@@ -51,7 +51,7 @@
   enter: fokusieren aufs Hauptpanel
 
-## Volumes +## Volumen
   [: vorheriges Tab
@@ -61,7 +61,7 @@
   enter: fokusieren aufs Hauptpanel
 
-## Main +## Haupt
   esc: zurück
diff --git a/docs/keybindings/Keybindings_tr.md b/docs/keybindings/Keybindings_tr.md
index 7505a090..dc8bb571 100644
--- a/docs/keybindings/Keybindings_tr.md
+++ b/docs/keybindings/Keybindings_tr.md
@@ -1,9 +1,9 @@
-# Lazydocker menu
+# Lazydocker menü
 
-## Status
+## Proje
 
 
-  e: lazydocker ayarlarını düzenle
+  e: lazzydocker ayarlarını düzenle
   o: lazydocker ayarlarını aç
   [: önceki sekme
   ]: sonraki sekme
@@ -11,7 +11,7 @@
   enter: ana panele odaklan
 
-## Containers +## Konteynerler
   [: önceki sekme
@@ -19,50 +19,50 @@
   d: kaldır
   s: durdur
   r: yeniden başlat
-  a: bağlan
+  a: bağlan/iliştir
   D: çalışmayan konteynerleri temizle
   m: kayıt defterini görüntüle
-  c: önceden tanımlanmış özel bir komut çalıştır
+  c: önceden tanımlanmış özel komutu çalıştır
   enter: ana panele odaklan
 
-## Services +## Servisler
   d: konteynerleri kaldır
   s: durdur
   r: yeniden başlat
-  a: bağlan
+  a: bağlan/iliştir
   m: kayıt defterini görüntüle
   [: önceki sekme
   ]: sonraki sekme
   R: yeniden başlatma seçeneklerini görüntüle
-  c: önceden tanımlanmış özel bir komut çalıştır
+  c: önceden tanımlanmış özel komutu çalıştır
   enter: ana panele odaklan
 
-## Images +## Imajlar
   [: önceki sekme
   ]: sonraki sekme
   d: imajı kaldır
-  D: kullanılmayan imajları kaldır
+  D: kullanılmayan imajları temizle
   enter: ana panele odaklan
 
-## Volumes +## Alanlar
   [: önceki sekme
   ]: sonraki sekme
-  d: alanı sil
-  D: kullanılmayan alanları sil
+  d: alanı kaldır
+  D: kullanılmayan alanları temizle
   enter: ana panele odaklan
 
-## Main +## Ana
-  esc: geri
+  esc: dönüş
 
diff --git a/pkg/i18n/dutch.go b/pkg/i18n/dutch.go index cce86283..36a0bc42 100644 --- a/pkg/i18n/dutch.go +++ b/pkg/i18n/dutch.go @@ -48,7 +48,7 @@ func dutchSet() TranslationSet { PruneContainers: "vernietig bestaande containers", PruneVolumes: "vernietig ongebruikte volumes", PruneImages: "vernietig ongebruikte images", - ViewRestartOptions: "beijk herstart opties", + ViewRestartOptions: "bekijk herstart opties", RunCustomCommand: "draai een vooraf bedacht aangepaste opdracht", AnonymousReportingTitle: "Help mee met lazydocker beter maken", diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index d8e660fc..48442c0c 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -2,8 +2,6 @@ package i18n // TranslationSet is a set of localised strings for a given language type TranslationSet struct { - AddFavourite string - ErrorMessage string NotEnoughSpace string ProjectTitle string MainTitle string diff --git a/pkg/i18n/i18n.go b/pkg/i18n/i18n.go index 405dd819..bdc62ab1 100644 --- a/pkg/i18n/i18n.go +++ b/pkg/i18n/i18n.go @@ -22,25 +22,26 @@ func NewTranslationSet(log *logrus.Entry) *TranslationSet { log.Info("language: " + userLang) - set := englishSet() + baseSet := englishSet() - if strings.HasPrefix(userLang, "pl") { - _ = mergo.Merge(&set, polishSet(), mergo.WithOverride) + for languageCode, translationSet := range GetTranslationSets() { + if strings.HasPrefix(userLang, languageCode) { + _ = mergo.Merge(&baseSet, translationSet, mergo.WithOverride) + } } - if strings.HasPrefix(userLang, "nl") { - _ = mergo.Merge(&set, dutchSet(), mergo.WithOverride) - } + return &baseSet +} - if strings.HasPrefix(userLang, "de") { - _ = mergo.Merge(&set, germanSet(), mergo.WithOverride) +// GetTranslationSets gets all the translation sets, keyed by language code +func GetTranslationSets() map[string]TranslationSet { + return map[string]TranslationSet{ + "pl": polishSet(), + "nl": dutchSet(), + "de": germanSet(), + "tr": turkishSet(), + "en": englishSet(), } - - if strings.HasPrefix(userLang, "tr") { - _ = mergo.Merge(&set, turkishSet(), mergo.WithOverride) - } - - return &set } // detectLanguage extracts user language from environment diff --git a/scripts/generate_cheatsheet.go b/scripts/generate_cheatsheet.go index 111f53ad..4ef6608e 100644 --- a/scripts/generate_cheatsheet.go +++ b/scripts/generate_cheatsheet.go @@ -17,6 +17,7 @@ import ( "github.com/jesseduffield/lazydocker/pkg/app" "github.com/jesseduffield/lazydocker/pkg/config" "github.com/jesseduffield/lazydocker/pkg/gui" + "github.com/jesseduffield/lazydocker/pkg/i18n" ) type bindingSection struct { @@ -25,13 +26,12 @@ type bindingSection struct { } func main() { - langs := []string{"pl", "nl", "en"} mConfig, err := config.NewAppConfig("lazydocker", "", "", "", "", true, nil, "") if err != nil { panic(err) } - for _, lang := range langs { + for lang := range i18n.GetTranslationSets() { os.Setenv("LC_ALL", lang) mApp, _ := app.NewApp(mConfig) file, err := os.Create(getProjectRoot() + "/docs/keybindings/Keybindings_" + lang + ".md") diff --git a/scripts/translations/get_required_translations.go b/scripts/translations/get_required_translations.go new file mode 100644 index 00000000..9e0dd400 --- /dev/null +++ b/scripts/translations/get_required_translations.go @@ -0,0 +1,30 @@ +package main + +import ( + "fmt" + "reflect" + + "github.com/jesseduffield/lazydocker/pkg/i18n" +) + +func main() { + fmt.Println(getOutstandingTranslations()) +} + +// adapted from https://github.com/a8m/reflect-examples#read-struct-tags +func getOutstandingTranslations() string { + output := "" + for languageCode, translationSet := range i18n.GetTranslationSets() { + output += languageCode + ":\n" + v := reflect.ValueOf(translationSet) + + for i := 0; i < v.NumField(); i++ { + value := v.Field(i).String() + if value == "" { + output += v.Type().Field(i).Name + "\n" + } + } + output += "\n" + } + return output +}