mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-24 16:11:04 +00:00
Merge pull request #108 from jesseduffield/see-required-translations
add get_required_translations.go
This commit is contained in:
commit
a46074c581
7 changed files with 72 additions and 43 deletions
|
|
@ -1,17 +1,17 @@
|
||||||
# Lazydocker menu
|
# Lazydocker Menü
|
||||||
|
|
||||||
## Status
|
## Projekt
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: bearbeite lazydocker Konfiguration
|
<kbd>e</kbd>: bearbeite lazydocker Konfiguration
|
||||||
<kbd>o</kbd>: öffne lazydocker Konfiguration
|
<kbd>o</kbd>: öffne lazydocker Konfiguration
|
||||||
<kbd>[</kbd>: vorheriges Tab
|
<kbd>[</kbd>: vorheriges Tab
|
||||||
<kbd>]</kbd>: nächstes tab
|
<kbd>]</kbd>: nächstes Tab
|
||||||
<kbd>m</kbd>: zeige Protokoll
|
<kbd>m</kbd>: zeige Protokolle
|
||||||
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Containers
|
## Container
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>[</kbd>: vorheriges Tab
|
<kbd>[</kbd>: vorheriges Tab
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Services
|
## Dienste
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>d</kbd>: entferne Container
|
<kbd>d</kbd>: entferne Container
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Volumes
|
## Volumen
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>[</kbd>: vorheriges Tab
|
<kbd>[</kbd>: vorheriges Tab
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
<kbd>enter</kbd>: fokusieren aufs Hauptpanel
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Main
|
## Haupt
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>esc</kbd>: zurück
|
<kbd>esc</kbd>: zurück
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
# Lazydocker menu
|
# Lazydocker menü
|
||||||
|
|
||||||
## Status
|
## Proje
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: lazydocker ayarlarını düzenle
|
<kbd>e</kbd>: lazzydocker ayarlarını düzenle
|
||||||
<kbd>o</kbd>: lazydocker ayarlarını aç
|
<kbd>o</kbd>: lazydocker ayarlarını aç
|
||||||
<kbd>[</kbd>: önceki sekme
|
<kbd>[</kbd>: önceki sekme
|
||||||
<kbd>]</kbd>: sonraki sekme
|
<kbd>]</kbd>: sonraki sekme
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<kbd>enter</kbd>: ana panele odaklan
|
<kbd>enter</kbd>: ana panele odaklan
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Containers
|
## Konteynerler
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>[</kbd>: önceki sekme
|
<kbd>[</kbd>: önceki sekme
|
||||||
|
|
@ -19,50 +19,50 @@
|
||||||
<kbd>d</kbd>: kaldır
|
<kbd>d</kbd>: kaldır
|
||||||
<kbd>s</kbd>: durdur
|
<kbd>s</kbd>: durdur
|
||||||
<kbd>r</kbd>: yeniden başlat
|
<kbd>r</kbd>: yeniden başlat
|
||||||
<kbd>a</kbd>: bağlan
|
<kbd>a</kbd>: bağlan/iliştir
|
||||||
<kbd>D</kbd>: çalışmayan konteynerleri temizle
|
<kbd>D</kbd>: çalışmayan konteynerleri temizle
|
||||||
<kbd>m</kbd>: kayıt defterini görüntüle
|
<kbd>m</kbd>: kayıt defterini görüntüle
|
||||||
<kbd>c</kbd>: önceden tanımlanmış özel bir komut çalıştır
|
<kbd>c</kbd>: önceden tanımlanmış özel komutu çalıştır
|
||||||
<kbd>enter</kbd>: ana panele odaklan
|
<kbd>enter</kbd>: ana panele odaklan
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Services
|
## Servisler
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>d</kbd>: konteynerleri kaldır
|
<kbd>d</kbd>: konteynerleri kaldır
|
||||||
<kbd>s</kbd>: durdur
|
<kbd>s</kbd>: durdur
|
||||||
<kbd>r</kbd>: yeniden başlat
|
<kbd>r</kbd>: yeniden başlat
|
||||||
<kbd>a</kbd>: bağlan
|
<kbd>a</kbd>: bağlan/iliştir
|
||||||
<kbd>m</kbd>: kayıt defterini görüntüle
|
<kbd>m</kbd>: kayıt defterini görüntüle
|
||||||
<kbd>[</kbd>: önceki sekme
|
<kbd>[</kbd>: önceki sekme
|
||||||
<kbd>]</kbd>: sonraki sekme
|
<kbd>]</kbd>: sonraki sekme
|
||||||
<kbd>R</kbd>: yeniden başlatma seçeneklerini görüntüle
|
<kbd>R</kbd>: yeniden başlatma seçeneklerini görüntüle
|
||||||
<kbd>c</kbd>: önceden tanımlanmış özel bir komut çalıştır
|
<kbd>c</kbd>: önceden tanımlanmış özel komutu çalıştır
|
||||||
<kbd>enter</kbd>: ana panele odaklan
|
<kbd>enter</kbd>: ana panele odaklan
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Images
|
## Imajlar
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>[</kbd>: önceki sekme
|
<kbd>[</kbd>: önceki sekme
|
||||||
<kbd>]</kbd>: sonraki sekme
|
<kbd>]</kbd>: sonraki sekme
|
||||||
<kbd>d</kbd>: imajı kaldır
|
<kbd>d</kbd>: imajı kaldır
|
||||||
<kbd>D</kbd>: kullanılmayan imajları kaldır
|
<kbd>D</kbd>: kullanılmayan imajları temizle
|
||||||
<kbd>enter</kbd>: ana panele odaklan
|
<kbd>enter</kbd>: ana panele odaklan
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Volumes
|
## Alanlar
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>[</kbd>: önceki sekme
|
<kbd>[</kbd>: önceki sekme
|
||||||
<kbd>]</kbd>: sonraki sekme
|
<kbd>]</kbd>: sonraki sekme
|
||||||
<kbd>d</kbd>: alanı sil
|
<kbd>d</kbd>: alanı kaldır
|
||||||
<kbd>D</kbd>: kullanılmayan alanları sil
|
<kbd>D</kbd>: kullanılmayan alanları temizle
|
||||||
<kbd>enter</kbd>: ana panele odaklan
|
<kbd>enter</kbd>: ana panele odaklan
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
## Main
|
## Ana
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>esc</kbd>: geri
|
<kbd>esc</kbd>: dönüş
|
||||||
</pre>
|
</pre>
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ func dutchSet() TranslationSet {
|
||||||
PruneContainers: "vernietig bestaande containers",
|
PruneContainers: "vernietig bestaande containers",
|
||||||
PruneVolumes: "vernietig ongebruikte volumes",
|
PruneVolumes: "vernietig ongebruikte volumes",
|
||||||
PruneImages: "vernietig ongebruikte images",
|
PruneImages: "vernietig ongebruikte images",
|
||||||
ViewRestartOptions: "beijk herstart opties",
|
ViewRestartOptions: "bekijk herstart opties",
|
||||||
RunCustomCommand: "draai een vooraf bedacht aangepaste opdracht",
|
RunCustomCommand: "draai een vooraf bedacht aangepaste opdracht",
|
||||||
|
|
||||||
AnonymousReportingTitle: "Help mee met lazydocker beter maken",
|
AnonymousReportingTitle: "Help mee met lazydocker beter maken",
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@ package i18n
|
||||||
|
|
||||||
// TranslationSet is a set of localised strings for a given language
|
// TranslationSet is a set of localised strings for a given language
|
||||||
type TranslationSet struct {
|
type TranslationSet struct {
|
||||||
AddFavourite string
|
|
||||||
ErrorMessage string
|
|
||||||
NotEnoughSpace string
|
NotEnoughSpace string
|
||||||
ProjectTitle string
|
ProjectTitle string
|
||||||
MainTitle string
|
MainTitle string
|
||||||
|
|
|
||||||
|
|
@ -22,25 +22,26 @@ func NewTranslationSet(log *logrus.Entry) *TranslationSet {
|
||||||
|
|
||||||
log.Info("language: " + userLang)
|
log.Info("language: " + userLang)
|
||||||
|
|
||||||
set := englishSet()
|
baseSet := englishSet()
|
||||||
|
|
||||||
if strings.HasPrefix(userLang, "pl") {
|
for languageCode, translationSet := range GetTranslationSets() {
|
||||||
_ = mergo.Merge(&set, polishSet(), mergo.WithOverride)
|
if strings.HasPrefix(userLang, languageCode) {
|
||||||
|
_ = mergo.Merge(&baseSet, translationSet, mergo.WithOverride)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(userLang, "nl") {
|
return &baseSet
|
||||||
_ = mergo.Merge(&set, dutchSet(), mergo.WithOverride)
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if strings.HasPrefix(userLang, "de") {
|
// GetTranslationSets gets all the translation sets, keyed by language code
|
||||||
_ = mergo.Merge(&set, germanSet(), mergo.WithOverride)
|
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
|
// detectLanguage extracts user language from environment
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import (
|
||||||
"github.com/jesseduffield/lazydocker/pkg/app"
|
"github.com/jesseduffield/lazydocker/pkg/app"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/jesseduffield/lazydocker/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui"
|
"github.com/jesseduffield/lazydocker/pkg/gui"
|
||||||
|
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
type bindingSection struct {
|
type bindingSection struct {
|
||||||
|
|
@ -25,13 +26,12 @@ type bindingSection struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
langs := []string{"pl", "nl", "en"}
|
|
||||||
mConfig, err := config.NewAppConfig("lazydocker", "", "", "", "", true, nil, "")
|
mConfig, err := config.NewAppConfig("lazydocker", "", "", "", "", true, nil, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, lang := range langs {
|
for lang := range i18n.GetTranslationSets() {
|
||||||
os.Setenv("LC_ALL", lang)
|
os.Setenv("LC_ALL", lang)
|
||||||
mApp, _ := app.NewApp(mConfig)
|
mApp, _ := app.NewApp(mConfig)
|
||||||
file, err := os.Create(getProjectRoot() + "/docs/keybindings/Keybindings_" + lang + ".md")
|
file, err := os.Create(getProjectRoot() + "/docs/keybindings/Keybindings_" + lang + ".md")
|
||||||
|
|
|
||||||
30
scripts/translations/get_required_translations.go
Normal file
30
scripts/translations/get_required_translations.go
Normal file
|
|
@ -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
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue