Trouble Translating a Second Word Using TranslationAPI

I’m developing an app to save words that users learn in a language they are studying.

Here’s the basic workflow:

  1. Type a new word
  2. Add the new word
  3. Every time a word is added, it gets saved to a list that includes its meaning and the name of the language — useful when saving words in multiple languages

Problem: For some reason, the “Add new word” button only works for the first word. The second word is not being added to the list.

Here is my code:

import SwiftUI import NaturalLanguage import Translation

struct ContentView: View { @State private var inputWord: String = "" @State private var detectedLanguage: String? @State private var translationConfiguration: TranslationSession.Configuration? @StateObject private var viewModel = WordViewModel()

var body: some View {
VStack(spacing: 24) {
// Input field
TextField("Type a word in any language", text: $inputWord)
.padding()
.background(Color(.systemGray6))
.cornerRadius(10)
// Button to translate and save
Button("Add new word") {
translateAndSave()
}

// .disabled(inputWord.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty) .buttonStyle(.borderedProminent)

// List of saved words
Text("My Words")
.font(.system(.title2))
List {
ForEach(viewModel.words) { word in
VStack(alignment: .leading, spacing: 4) {
Text(word.inputWord)
.font(.headline)
Text(word.nativeTranslation)
.font(.subheadline)
.foregroundColor(.gray)
Text(word.detectedLanguage.uppercased())
.font(.caption)
.foregroundColor(.blue)
}
.padding(.vertical, 4)
}
}
Spacer()
}
.padding()
.animation(.easeInOut, value: detectedLanguage)
// Automatically triggers translation when configuration changes
.translationTask(translationConfiguration) { session in
do {
let response = try await session.translate(inputWord)
viewModel.addWord(
input: inputWord,
native: response.targetText,
detected: detectedLanguage ?? "Unknown"
)
// Reset fields after saving
inputWord = ""
detectedLanguage = nil
translationConfiguration = nil
} catch {
// Handle error
print("Translation error: \(error.localizedDescription)")
}
}
}
// Function to detect language
private func detectLanguage() {
let recognizer = NLLanguageRecognizer()
recognizer.processString(inputWord)
if let code = recognizer.dominantLanguage?.rawValue {
let name = Locale.current.localizedString(forIdentifier: code)
detectedLanguage = name?.capitalized
} else {
detectedLanguage = "Unable to detect"
}
}
// Function to prepare translation
private func translateAndSave() {
detectLanguage()
translationConfiguration = TranslationSession.Configuration(
source: nil,
target: Locale.Language(identifier: "en")
)
}

}

Question:

  1. Does anyone have any idea what I can do to fix this?

Here is an image of the app

Trouble Translating a Second Word Using TranslationAPI
 
 
Q