AI_TRANSLATE
Overview
Translates text between supported languages using neural machine translation.
Syntax
AI_TRANSLATE( text, source_language, target_language )
AI_TRANSLATE( text, source_language, target_language )
AI_TRANSLATE( text, source_language, target_language )
Parameters
text (VARCHAR): Text to translate (max 4,096 tokens)
source_language (VARCHAR): Source language code (e.g., 'en', 'es', 'fr')
target_language (VARCHAR): Target language code
Supported Languages
English (en)
Spanish (es)
French (fr)
German (de)
Italian (it)
Portuguese (pt)
Dutch (nl)
Russian (ru)
Chinese Simplified (zh)
Japanese (ja)
Korean (ko)
Arabic (ar)
And many more...
Use Cases
Multilingual customer support
International content localization
Product description translation
Review analysis across languages
Global communication
Documentation translation
Code Examples
Example 1: Simple Translation
SELECT AI_TRANSLATE( 'Hello, how are you?', 'en', 'es' ) AS
SELECT AI_TRANSLATE( 'Hello, how are you?', 'en', 'es' ) AS
SELECT AI_TRANSLATE( 'Hello, how are you?', 'en', 'es' ) AS
Output:
Hola, ¿cómo estás
Hola, ¿cómo estás
Hola, ¿cómo estás
Example 2: Translate Customer Reviews
SELECT review_id, original_language, review_text AS original_text, AI_TRANSLATE(review_text, original_language, 'en') AS english_translation FROM international_reviews WHERE original_language != 'en'
SELECT review_id, original_language, review_text AS original_text, AI_TRANSLATE(review_text, original_language, 'en') AS english_translation FROM international_reviews WHERE original_language != 'en'
SELECT review_id, original_language, review_text AS original_text, AI_TRANSLATE(review_text, original_language, 'en') AS english_translation FROM international_reviews WHERE original_language != 'en'
Example 3: Batch Translation for Localization
CREATE TABLE product_descriptions_translated AS SELECT product_id, description_en, AI_TRANSLATE(description_en, 'en', 'es') AS description_es, AI_TRANSLATE(description_en, 'en', 'fr') AS description_fr, AI_TRANSLATE(description_en, 'en', 'de') AS description_de, AI_TRANSLATE(description_en, 'en', 'zh') AS description_zh FROM
CREATE TABLE product_descriptions_translated AS SELECT product_id, description_en, AI_TRANSLATE(description_en, 'en', 'es') AS description_es, AI_TRANSLATE(description_en, 'en', 'fr') AS description_fr, AI_TRANSLATE(description_en, 'en', 'de') AS description_de, AI_TRANSLATE(description_en, 'en', 'zh') AS description_zh FROM
CREATE TABLE product_descriptions_translated AS SELECT product_id, description_en, AI_TRANSLATE(description_en, 'en', 'es') AS description_es, AI_TRANSLATE(description_en, 'en', 'fr') AS description_fr, AI_TRANSLATE(description_en, 'en', 'de') AS description_de, AI_TRANSLATE(description_en, 'en', 'zh') AS description_zh FROM
Example 4: Analyze Multilingual Feedback
WITH translated_feedback AS ( SELECT feedback_id, customer_country, AI_TRANSLATE(feedback_text, detected_language, 'en') AS feedback_english FROM customer_feedback WHERE detected_language != 'en' ) SELECT customer_country, AI_SENTIMENT(feedback_english) AS avg_sentiment, AI_AGG( feedback_english, 'Summarize common themes in customer feedback' ) AS themes FROM translated_feedback GROUP BY
WITH translated_feedback AS ( SELECT feedback_id, customer_country, AI_TRANSLATE(feedback_text, detected_language, 'en') AS feedback_english FROM customer_feedback WHERE detected_language != 'en' ) SELECT customer_country, AI_SENTIMENT(feedback_english) AS avg_sentiment, AI_AGG( feedback_english, 'Summarize common themes in customer feedback' ) AS themes FROM translated_feedback GROUP BY
WITH translated_feedback AS ( SELECT feedback_id, customer_country, AI_TRANSLATE(feedback_text, detected_language, 'en') AS feedback_english FROM customer_feedback WHERE detected_language != 'en' ) SELECT customer_country, AI_SENTIMENT(feedback_english) AS avg_sentiment, AI_AGG( feedback_english, 'Summarize common themes in customer feedback' ) AS themes FROM translated_feedback GROUP BY
Example 5: Create Multilingual Support Responses
SELECT ticket_id, customer_language, support_response_en, AI_TRANSLATE(support_response_en, 'en', customer_language) AS localized_response FROM support_tickets WHERE status = 'Awaiting Response'
SELECT ticket_id, customer_language, support_response_en, AI_TRANSLATE(support_response_en, 'en', customer_language) AS localized_response FROM support_tickets WHERE status = 'Awaiting Response'
SELECT ticket_id, customer_language, support_response_en, AI_TRANSLATE(support_response_en, 'en', customer_language) AS localized_response FROM support_tickets WHERE status = 'Awaiting Response'
Data Output Examples
English to Spanish
Input: "Thank you for your order. It will be delivered tomorrow." Output: "Gracias por su pedido. Será entregado mañana."
Input: "Thank you for your order. It will be delivered tomorrow." Output: "Gracias por su pedido. Será entregado mañana."
Input: "Thank you for your order. It will be delivered tomorrow." Output: "Gracias por su pedido. Será entregado mañana."
French to English
Input: "Nous sommes ravis de vous servir." Output: "We are delighted to serve you."
Input: "Nous sommes ravis de vous servir." Output: "We are delighted to serve you."
Input: "Nous sommes ravis de vous servir." Output: "We are delighted to serve you."
German to English
Input: "Ihre Bestellung wurde versandt." Output: "Your order has been shipped."
Input: "Ihre Bestellung wurde versandt." Output: "Your order has been shipped."
Input: "Ihre Bestellung wurde versandt." Output: "Your order has been shipped."
Model Information
Model Used: Snowflake managed translation model
Context Window: 4,096 tokens
Quality: Neural machine translation (high quality)
Limitations & Considerations
Input Size
Maximum 4,096 tokens per translation
Longer texts need to be split
Use in batches for documents
Translation Quality
Professional quality for common languages
May vary for specialized terminology
Context helps improve accuracy
Idiomatic expressions may not translate literally
Cost
Billing based on input tokens
Automatic prompt overhead added
Both source and target text count
Regional Availability
AWS US West/East: ✓
Azure East US: ✓
EU regions: ✓
Cross-region inference: ✓
Best Practices
1. Handle Language Detection
-- Use AI_CLASSIFY to detect language first WITH detected_lang AS ( SELECT message_id, message_text, AI_CLASSIFY( message_text, ['en', 'es', 'fr', 'de', 'zh', 'ja'] ) AS detected_language FROM messages ) SELECT message_id, AI_TRANSLATE(message_text, detected_language, 'en') AS english_text FROM detected_lang WHERE detected_language != 'en'
-- Use AI_CLASSIFY to detect language first WITH detected_lang AS ( SELECT message_id, message_text, AI_CLASSIFY( message_text, ['en', 'es', 'fr', 'de', 'zh', 'ja'] ) AS detected_language FROM messages ) SELECT message_id, AI_TRANSLATE(message_text, detected_language, 'en') AS english_text FROM detected_lang WHERE detected_language != 'en'
-- Use AI_CLASSIFY to detect language first WITH detected_lang AS ( SELECT message_id, message_text, AI_CLASSIFY( message_text, ['en', 'es', 'fr', 'de', 'zh', 'ja'] ) AS detected_language FROM messages ) SELECT message_id, AI_TRANSLATE(message_text, detected_language, 'en') AS english_text FROM detected_lang WHERE detected_language != 'en'
2. Preserve Formatting
-- Keep HTML/Markdown tags intact SELECT AI_TRANSLATE( '<h1>Welcome</h1><p>Thank you for visiting</p>', 'en', 'es' ) AS translated_html; -- Output: <h1>Bienvenido</h1><p>Gracias por visitar</p>
-- Keep HTML/Markdown tags intact SELECT AI_TRANSLATE( '<h1>Welcome</h1><p>Thank you for visiting</p>', 'en', 'es' ) AS translated_html; -- Output: <h1>Bienvenido</h1><p>Gracias por visitar</p>
-- Keep HTML/Markdown tags intact SELECT AI_TRANSLATE( '<h1>Welcome</h1><p>Thank you for visiting</p>', 'en', 'es' ) AS translated_html; -- Output: <h1>Bienvenido</h1><p>Gracias por visitar</p>
3. Cache Translations
-- Avoid re-translating same content CREATE TABLE translation_cache AS SELECT DISTINCT original_text, source_lang, target_lang, AI_TRANSLATE(original_text, source_lang, target_lang) AS translation, CURRENT_TIMESTAMP() AS cached_at FROM content_to_translate; -- Use cached translations SELECT c.content_id, COALESCE(tc.translation, AI_TRANSLATE(c.text, 'en', 'es')) AS spanish_text FROM content c LEFT JOIN translation_cache tc ON c.text = tc.original_text AND tc.source_lang = 'en' AND tc.target_lang = 'es'
-- Avoid re-translating same content CREATE TABLE translation_cache AS SELECT DISTINCT original_text, source_lang, target_lang, AI_TRANSLATE(original_text, source_lang, target_lang) AS translation, CURRENT_TIMESTAMP() AS cached_at FROM content_to_translate; -- Use cached translations SELECT c.content_id, COALESCE(tc.translation, AI_TRANSLATE(c.text, 'en', 'es')) AS spanish_text FROM content c LEFT JOIN translation_cache tc ON c.text = tc.original_text AND tc.source_lang = 'en' AND tc.target_lang = 'es'
-- Avoid re-translating same content CREATE TABLE translation_cache AS SELECT DISTINCT original_text, source_lang, target_lang, AI_TRANSLATE(original_text, source_lang, target_lang) AS translation, CURRENT_TIMESTAMP() AS cached_at FROM content_to_translate; -- Use cached translations SELECT c.content_id, COALESCE(tc.translation, AI_TRANSLATE(c.text, 'en', 'es')) AS spanish_text FROM content c LEFT JOIN translation_cache tc ON c.text = tc.original_text AND tc.source_lang = 'en' AND tc.target_lang = 'es'
4. Split Long Documents
-- For documents > 4096 tokens, split into chunks WITH text_chunks AS ( SELECT doc_id, SUBSTRING(doc_text, (n - 1) * 4000 + 1, 4000) AS chunk, n AS chunk_number FROM documents, TABLE(GENERATOR(ROWCOUNT => CEIL(LENGTH(doc_text) / 4000.0))) ) SELECT doc_id, LISTAGG(AI_TRANSLATE(chunk, 'en', 'fr'), '') WITHIN GROUP (ORDER BY chunk_number) AS full_translation FROM text_chunks GROUP BY
-- For documents > 4096 tokens, split into chunks WITH text_chunks AS ( SELECT doc_id, SUBSTRING(doc_text, (n - 1) * 4000 + 1, 4000) AS chunk, n AS chunk_number FROM documents, TABLE(GENERATOR(ROWCOUNT => CEIL(LENGTH(doc_text) / 4000.0))) ) SELECT doc_id, LISTAGG(AI_TRANSLATE(chunk, 'en', 'fr'), '') WITHIN GROUP (ORDER BY chunk_number) AS full_translation FROM text_chunks GROUP BY
-- For documents > 4096 tokens, split into chunks WITH text_chunks AS ( SELECT doc_id, SUBSTRING(doc_text, (n - 1) * 4000 + 1, 4000) AS chunk, n AS chunk_number FROM documents, TABLE(GENERATOR(ROWCOUNT => CEIL(LENGTH(doc_text) / 4000.0))) ) SELECT doc_id, LISTAGG(AI_TRANSLATE(chunk, 'en', 'fr'), '') WITHIN GROUP (ORDER BY chunk_number) AS full_translation FROM text_chunks GROUP BY
Common Use Cases
E-commerce Localization
CREATE TABLE product_catalog_global AS SELECT product_id, product_name_en, description_en, -- Translate to major markets AI_TRANSLATE(product_name_en, 'en', 'es') AS product_name_es, AI_TRANSLATE(description_en, 'en', 'es') AS description_es, AI_TRANSLATE(product_name_en, 'en', 'de') AS product_name_de, AI_TRANSLATE(description_en, 'en', 'de') AS description_de FROM
CREATE TABLE product_catalog_global AS SELECT product_id, product_name_en, description_en, -- Translate to major markets AI_TRANSLATE(product_name_en, 'en', 'es') AS product_name_es, AI_TRANSLATE(description_en, 'en', 'es') AS description_es, AI_TRANSLATE(product_name_en, 'en', 'de') AS product_name_de, AI_TRANSLATE(description_en, 'en', 'de') AS description_de FROM
CREATE TABLE product_catalog_global AS SELECT product_id, product_name_en, description_en, -- Translate to major markets AI_TRANSLATE(product_name_en, 'en', 'es') AS product_name_es, AI_TRANSLATE(description_en, 'en', 'es') AS description_es, AI_TRANSLATE(product_name_en, 'en', 'de') AS product_name_de, AI_TRANSLATE(description_en, 'en', 'de') AS description_de FROM
Multilingual Customer Support
SELECT ticket_id, customer_message_original, customer_language, AI_TRANSLATE(customer_message_original, customer_language, 'en') AS message_for_agent, support_response_en, AI_TRANSLATE(support_response_en, 'en', customer_language) AS response_to_customer FROM
SELECT ticket_id, customer_message_original, customer_language, AI_TRANSLATE(customer_message_original, customer_language, 'en') AS message_for_agent, support_response_en, AI_TRANSLATE(support_response_en, 'en', customer_language) AS response_to_customer FROM
SELECT ticket_id, customer_message_original, customer_language, AI_TRANSLATE(customer_message_original, customer_language, 'en') AS message_for_agent, support_response_en, AI_TRANSLATE(support_response_en, 'en', customer_language) AS response_to_customer FROM
Global Sentiment Analysis
WITH translated_reviews AS ( SELECT region, product_id, AI_TRANSLATE(review_text, review_language, 'en') AS review_english FROM global_reviews ) SELECT region, product_id, AVG(AI_SENTIMENT(review_english)) AS avg_sentiment, COUNT(*) AS review_count FROM translated_reviews GROUP BY region,
WITH translated_reviews AS ( SELECT region, product_id, AI_TRANSLATE(review_text, review_language, 'en') AS review_english FROM global_reviews ) SELECT region, product_id, AVG(AI_SENTIMENT(review_english)) AS avg_sentiment, COUNT(*) AS review_count FROM translated_reviews GROUP BY region,
WITH translated_reviews AS ( SELECT region, product_id, AI_TRANSLATE(review_text, review_language, 'en') AS review_english FROM global_reviews ) SELECT region, product_id, AVG(AI_SENTIMENT(review_english)) AS avg_sentiment, COUNT(*) AS review_count FROM translated_reviews GROUP BY region,
Content Publishing
-- Publish blog posts in multiple languages INSERT INTO published_articles SELECT article_id, 'es' AS language, AI_TRANSLATE(title, 'en', 'es') AS title, AI_TRANSLATE(content, 'en', 'es') AS content, author_id, CURRENT_TIMESTAMP() AS published_at FROM
-- Publish blog posts in multiple languages INSERT INTO published_articles SELECT article_id, 'es' AS language, AI_TRANSLATE(title, 'en', 'es') AS title, AI_TRANSLATE(content, 'en', 'es') AS content, author_id, CURRENT_TIMESTAMP() AS published_at FROM
-- Publish blog posts in multiple languages INSERT INTO published_articles SELECT article_id, 'es' AS language, AI_TRANSLATE(title, 'en', 'es') AS title, AI_TRANSLATE(content, 'en', 'es') AS content, author_id, CURRENT_TIMESTAMP() AS published_at FROM
Quality Assurance
Back-Translation Check
-- Verify translation quality WITH translation_test AS ( SELECT original_text, AI_TRANSLATE(original_text, 'en', 'es') AS spanish, AI_TRANSLATE( AI_TRANSLATE(original_text, 'en', 'es'), 'es', 'en' ) AS back_to_english FROM marketing_copy ) SELECT original_text, back_to_english, AI_SIMILARITY(original_text, back_to_english) AS quality_score FROM translation_test WHERE quality_score < 0.8; -- Flag low-quality translations
-- Verify translation quality WITH translation_test AS ( SELECT original_text, AI_TRANSLATE(original_text, 'en', 'es') AS spanish, AI_TRANSLATE( AI_TRANSLATE(original_text, 'en', 'es'), 'es', 'en' ) AS back_to_english FROM marketing_copy ) SELECT original_text, back_to_english, AI_SIMILARITY(original_text, back_to_english) AS quality_score FROM translation_test WHERE quality_score < 0.8; -- Flag low-quality translations
-- Verify translation quality WITH translation_test AS ( SELECT original_text, AI_TRANSLATE(original_text, 'en', 'es') AS spanish, AI_TRANSLATE( AI_TRANSLATE(original_text, 'en', 'es'), 'es', 'en' ) AS back_to_english FROM marketing_copy ) SELECT original_text, back_to_english, AI_SIMILARITY(original_text, back_to_english) AS quality_score FROM translation_test WHERE quality_score < 0.8; -- Flag low-quality translations
Related Functions
AI_CLASSIFY - Detect source language
AI_SENTIMENT - Analyze translated content
AI_COMPLETE - For context-aware translation
AI_SUMMARIZE_AGG - Summarize across languages
More Articles

Learn
·
Feb 18, 2026
BigQuery Global Queries: How to Run Cross-Region SQL in 2026

Analytics
·
Feb 18, 2026
Context Engineering and AI Quality for Data Teams

Product
·
Feb 18, 2026
Accelerate Analytics Development with Paradime and Tableau

Product
·
Feb 18, 2026
Accelerate Analytics Development with Paradime and Tableau
Experience Analytics for the AI-Era
Start your 14-day trial today - it's free and no credit card needed
Experience Analytics for the AI-Era
Start your 14-day trial today - it's free and no credit card needed
Experience Analytics for the AI-Era
Start your 14-day trial today - it's free and no credit card needed
Platform
Resources
ADD-ONs
Industries
Copyright © 2026 Paradime Labs, Inc.
Made with ❤️ in San Francisco ・ London
*dbt® and dbt Core® are federally registered trademarks of dbt Labs, Inc. in the United States and various jurisdictions around the world. Paradime is not a partner of dbt Labs. All rights therein are reserved to dbt Labs. Paradime is not a product or service of or endorsed by dbt Labs, Inc.
Platform
Resources
ADD-ONs
Industries


Copyright © 2026 Paradime Labs, Inc.
Made with ❤️ in San Francisco ・ London
*dbt® and dbt Core® are federally registered trademarks of dbt Labs, Inc. in the United States and various jurisdictions around the world. Paradime is not a partner of dbt Labs. All rights therein are reserved to dbt Labs. Paradime is not a product or service of or endorsed by dbt Labs, Inc.
Platform
Resources
ADD-ONs
Industries


Copyright © 2026 Paradime Labs, Inc.
Made with ❤️ in San Francisco ・ London
*dbt® and dbt Core® are federally registered trademarks of dbt Labs, Inc. in the United States and various jurisdictions around the world. Paradime is not a partner of dbt Labs. All rights therein are reserved to dbt Labs. Paradime is not a product or service of or endorsed by dbt Labs, Inc.
