func translate()

in experiments/babel/main.go [341:384]


func translate(statement string, languages []string) map[string]string {
	var wg sync.WaitGroup
	results := make(map[string]string)
	resultChan := make(chan map[string]string, len(languages))

	ctx := context.Background()

	for _, language := range languages {
		wg.Add(1)
		go func(ctx context.Context, statement, language string) {
			defer wg.Done()
			// obtain language description, if there is one
			languageDescription := language
			if value, ok := languageDescriptions[language]; ok == true {
				languageDescription = value
			}
			// translation prompt
			prompt := fmt.Sprintf(`
translate this into appropriate vernacular in language %s \"%s\" output only the statement mimicing the level of formality, do not explain why.
translation: `, languageDescription, statement)
			prompt = strings.ReplaceAll(prompt, "\n", "")
			translation, err := generateContent(ctx, prompt)
			if err != nil {
				translation = fmt.Sprintf("couldn't translate to %s: %v", language, err)
			}
			langtrans := make(map[string]string)
			langtrans[language] = translation
			resultChan <- langtrans
		}(ctx, statement, language)
	}

	go func() {
		wg.Wait()
		close(resultChan)
	}()

	for r := range resultChan {
		for k, v := range r {
			results[k] = v
		}
	}

	return results
}