33 lines
1.2 KiB
Go
33 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/leonelquinteros/gotext"
|
|
)
|
|
|
|
var translations *gotext.Locale
|
|
|
|
// InitializeLanguage loads the language strings from .po files based on the selected language.
|
|
func InitializeLanguage(siteLanguage string) {
|
|
translationsDir := "lang"
|
|
localeDir := filepath.Join(translationsDir, siteLanguage, "LC_MESSAGES")
|
|
if _, err := os.Stat(localeDir); os.IsNotExist(err) {
|
|
printWarn("Translation directory for language '%s' not found. Defaulting to English.", siteLanguage)
|
|
siteLanguage = "en" // Use default language if not found
|
|
localeDir = filepath.Join(translationsDir, siteLanguage, "LC_MESSAGES")
|
|
}
|
|
|
|
translations = gotext.NewLocale(translationsDir, siteLanguage)
|
|
translations.AddDomain("default")
|
|
}
|
|
|
|
// Translate wraps gotext.Get and returns a translated string based on the given key.
|
|
func Translate(key string, params ...interface{}) string {
|
|
if translations == nil {
|
|
printWarn("Translation failed for key '%s'. This may occur if Translate is called before initializing language settings or if the key is missing.", key)
|
|
return key // Fallback if translations are not initialized
|
|
}
|
|
return translations.Get(key, params...)
|
|
}
|