TeraiTerai

AI

Use AI models (OpenAI, Anthropic, Groq, Google, etc.) for flexible, high-quality translations.

The AI Translator uses the Vercel AI SDK to provide flexible, high-quality translations using any supported LLM provider.

Installation

pnpm add ai zod @ai-sdk/openai

You can replace @ai-sdk/openai with any AI SDK provider:

# Anthropic (Claude)
pnpm add @ai-sdk/anthropic

# Google (Gemini)
pnpm add @ai-sdk/google

# Groq (Llama, Mixtral)
pnpm add @ai-sdk/groq

# Mistral
pnpm add @ai-sdk/mistral

# Azure OpenAI
pnpm add @ai-sdk/azure

Usage

import { defineConfig, createAiTranslator } from '@terai/dev'
import { createOpenAI } from '@ai-sdk/openai'

const openai = createOpenAI({
  apiKey: process.env.OPENAI_API_KEY
})

const translator = createAiTranslator({
  model: openai('gpt-4o')
})

export default defineConfig({
  projectLocale: 'en-US',
  outLocales: ['es-ES', 'fr-FR', 'de-DE'],
  outDir: './locale',
  translator
})

Options

OptionTypeDefaultDescription
modelLanguageModelRequiredThe AI model to use for translation
systemPromptstringBuilt-in promptCustom system prompt for translation

Custom System Prompt

You can provide a custom system prompt for domain-specific translations:

import { defineConfig, createAiTranslator } from '@terai/dev'
import { createOpenAI } from '@ai-sdk/openai'

const openai = createOpenAI({
  apiKey: process.env.OPENAI_API_KEY
})

const translator = createAiTranslator({
  model: openai('gpt-4o'),
  systemPrompt: `
    You are a medical translation specialist.
    Use proper medical terminology in all translations.
    Maintain formal, professional tone suitable for healthcare applications.
  `
})

export default defineConfig({
  projectLocale: 'en-US',
  outLocales: ['es-ES', 'fr-FR'],
  outDir: './locale',
  translator
})

Built-in System Prompt Features

The default system prompt is optimized for application translation and includes:

  • Variable preservation: Template variables (${name}, {count}) are never translated
  • UI awareness: Concise translations for buttons, labels, and menus
  • Tone consistency: Maintains appropriate tone across all strings
  • Cultural adaptation: Adapts references for target locales

Best Practices

  1. Choose the right model: Specific models may perform better for translation tasks
  2. Use Groq for speed: Llama models on Groq provide fast, cost-effective translations
  3. Custom prompts for domains: Use custom system prompts for specialized content (legal, medical, etc.)
  4. Test thoroughly: Always review translations for accuracy, especially for critical content

Provider Examples

Anthropic (Claude)

import { defineConfig, createAiTranslator } from '@terai/dev'
import { createAnthropic } from '@ai-sdk/anthropic'

const anthropic = createAnthropic({
  apiKey: process.env.ANTHROPIC_API_KEY
})

const translator = createAiTranslator({
  model: anthropic('claude-sonnet-4-20250514')
})

export default defineConfig({
  projectLocale: 'en-US',
  outLocales: ['es-ES', 'fr-FR'],
  outDir: './locale',
  translator
})

Groq (Llama, Mixtral)

import { defineConfig, createAiTranslator } from '@terai/dev'
import { createGroq } from '@ai-sdk/groq'

const groq = createGroq({
  apiKey: process.env.GROQ_API_KEY
})

const translator = createAiTranslator({
  model: groq('llama-3.3-70b-versatile')
})

export default defineConfig({
  projectLocale: 'en-US',
  outLocales: ['es-ES', 'fr-FR'],
  outDir: './locale',
  translator
})

Google (Gemini)

import { defineConfig, createAiTranslator } from '@terai/dev'
import { createGoogleGenerativeAI } from '@ai-sdk/google'

const google = createGoogleGenerativeAI({
  apiKey: process.env.GOOGLE_API_KEY
})

const translator = createAiTranslator({
  model: google('gemini-1.5-pro')
})

export default defineConfig({
  projectLocale: 'en-US',
  outLocales: ['es-ES', 'fr-FR'],
  outDir: './locale',
  translator
})