This commit is contained in:
@@ -97,6 +97,36 @@ func (g *GeminiService) ExpandQuery(query string) ([]string, error) {
|
||||
return expanded, nil
|
||||
}
|
||||
|
||||
func (g *GeminiService) TranslateSummaryToKorean(text string) (string, error) {
|
||||
trimmed := strings.TrimSpace(text)
|
||||
if trimmed == "" {
|
||||
return "", nil
|
||||
}
|
||||
cacheKey := "summary-ko\n" + trimmed
|
||||
if cached, ok := g.getCachedTranslation(cacheKey); ok {
|
||||
g.debug("gemini:summary_translate_cache_hit", map[string]any{"length": len(trimmed)})
|
||||
return cached, nil
|
||||
}
|
||||
if !looksMostlyASCII(trimmed) {
|
||||
g.setCachedTranslation(cacheKey, trimmed, 15*time.Minute)
|
||||
return trimmed, nil
|
||||
}
|
||||
|
||||
g.debug("gemini:summary_translate_attempt", map[string]any{"length": len(trimmed)})
|
||||
translated, err := g.translateViaGoogleToTarget(trimmed, "ko")
|
||||
if err != nil {
|
||||
g.debug("gemini:summary_translate_error", map[string]any{"length": len(trimmed), "error": err.Error()})
|
||||
return "", err
|
||||
}
|
||||
translated = strings.TrimSpace(translated)
|
||||
if translated == "" {
|
||||
return "", fmt.Errorf("google translate summary returned empty translation")
|
||||
}
|
||||
g.debug("gemini:summary_translate_success", map[string]any{"length": len(trimmed)})
|
||||
g.setCachedTranslation(cacheKey, translated, 15*time.Minute)
|
||||
return translated, nil
|
||||
}
|
||||
|
||||
func (g *GeminiService) TranslateQuery(query string) string {
|
||||
trimmed := strings.TrimSpace(query)
|
||||
if trimmed == "" {
|
||||
@@ -784,11 +814,19 @@ func isOvercompressedTranslation(original, translated string) bool {
|
||||
}
|
||||
|
||||
func (g *GeminiService) translateViaGoogle(query string) (string, error) {
|
||||
return g.translateViaGoogleToTarget(query, "en")
|
||||
}
|
||||
|
||||
func (g *GeminiService) translateViaGoogleToTarget(query, targetLanguage string) (string, error) {
|
||||
baseURL := g.TranslateEndpoint
|
||||
if strings.TrimSpace(baseURL) == "" {
|
||||
baseURL = "https://translate.googleapis.com/translate_a/single"
|
||||
}
|
||||
endpoint := baseURL + "?client=gtx&sl=auto&tl=en&dt=t&q=" + neturl.QueryEscape(query)
|
||||
targetLanguage = strings.TrimSpace(targetLanguage)
|
||||
if targetLanguage == "" {
|
||||
targetLanguage = "en"
|
||||
}
|
||||
endpoint := baseURL + "?client=gtx&sl=auto&tl=" + neturl.QueryEscape(targetLanguage) + "&dt=t&q=" + neturl.QueryEscape(query)
|
||||
resp, err := g.Client.Get(endpoint)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
||||
Reference in New Issue
Block a user