zsvo/cmd/lang.go

65 lines
1.7 KiB
Go

package cmd
import (
"fmt"
"os"
"github.com/spf13/cobra"
"zsvo/pkg/i18n"
)
var LangCmd = &cobra.Command{
Use: "lang [language]",
Short: "Set or display language",
Long: `Set interface language (en, ru) or display current language`,
Args: cobra.MaximumNArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
if len(args) == 0 {
// Display current language
current := i18n.GetLanguage()
fmt.Printf("Current language: %s\n", current)
// Show environment info
if envLang := os.Getenv("ZSVO_LANG"); envLang != "" {
fmt.Printf("ZSVO_LANG environment: %s\n", envLang)
}
if sysLang := os.Getenv("LANG"); sysLang != "" {
fmt.Printf("System LANG: %s\n", sysLang)
}
fmt.Printf("\nAvailable languages:\n")
fmt.Printf(" en - English\n")
fmt.Printf(" ru - Русский\n")
fmt.Printf("\nUsage:\n")
fmt.Printf(" zsvo lang en # Set English\n")
fmt.Printf(" zsvo lang ru # Установить русский\n")
fmt.Printf(" ZSVO_LANG=ru zsvo install package # Environment variable\n")
return nil
}
lang := args[0]
switch lang {
case "en", "english":
i18n.SetLanguage(i18n.English)
fmt.Printf("Language set to English\n")
case "ru", "russian":
i18n.SetLanguage(i18n.Russian)
fmt.Printf("Язык установлен на русский\n")
default:
return fmt.Errorf("unsupported language: %s. Use 'en' or 'ru'", lang)
}
// Test the language
fmt.Printf("\nTest: %s\n", i18n.T("package"))
fmt.Printf("Test: %s\n", i18n.T("building"))
fmt.Printf("Test: %s\n", i18n.T("completed"))
return nil
},
}
func init() {
// Will be added to root command in main.go
}