Files
2026-07-13 12:49:10 +08:00

77 lines
2.0 KiB
Go

/*
* Copyright 2026 CloudWeGo Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Package internal provides adk internal utils.
package internal
import (
"fmt"
"sync/atomic"
)
// Language represents the language setting for the ADK built-in prompts.
type Language uint8
const (
// LanguageEnglish represents English language.
LanguageEnglish Language = iota
// LanguageChinese represents Chinese language.
LanguageChinese
)
var language atomic.Value
// SetLanguage sets the language for the ADK built-in prompts.
// The default language is English if not explicitly set.
func SetLanguage(lang Language) error {
if lang != LanguageEnglish &&
lang != LanguageChinese {
return fmt.Errorf("invalid language: %v", lang)
}
language.Store(lang)
return nil
}
// GetLanguage returns the current language setting for the ADK built-in prompts.
// Returns LanguageEnglish if no language has been set.
func getLanguage() Language {
if l, ok := language.Load().(Language); ok {
return l
}
return LanguageEnglish
}
// I18nPrompts holds prompt strings for different languages.
type I18nPrompts struct {
English string
Chinese string
}
// SelectPrompt returns the appropriate prompt string based on the current language setting.
// Returns an error if the current language is not supported.
func SelectPrompt(prompts I18nPrompts) string {
lang := getLanguage()
switch lang {
case LanguageEnglish:
return prompts.English
case LanguageChinese:
return prompts.Chinese
default:
// unreachable
panic(fmt.Sprintf("invalid language: %v", lang))
}
}