in pkg/translations/translations.go [19:57]
func TranslationHelper() (TranslationHelperFunc, func()) {
var translationKeyMap = map[string]string{}
v := viper.New()
// Load from JSON file
v.SetConfigName("github-mcp-server-config")
v.SetConfigType("json")
v.AddConfigPath(".")
if err := v.ReadInConfig(); err != nil {
// ignore error if file not found as it is not required
if _, ok := err.(viper.ConfigFileNotFoundError); !ok {
log.Printf("Could not read JSON config: %v", err)
}
}
// create a function that takes both a key, and a default value and returns either the default value or an override value
return func(key string, defaultValue string) string {
key = strings.ToUpper(key)
if value, exists := translationKeyMap[key]; exists {
return value
}
// check if the env var exists
if value, exists := os.LookupEnv("GITHUB_MCP_" + key); exists {
// TODO I could not get Viper to play ball reading the env var
translationKeyMap[key] = value
return value
}
v.SetDefault(key, defaultValue)
translationKeyMap[key] = v.GetString(key)
return translationKeyMap[key]
}, func() {
// dump the translationKeyMap to a json file
if err := DumpTranslationKeyMap(translationKeyMap); err != nil {
log.Fatalf("Could not dump translation key map: %v", err)
}
}
}