This prompt is for AI infrastructure teams who need to route user-generated text to region-specific models, translation layers, or content workflows. It detects the regional locale (e.g., en-US vs. en-GB, pt-BR vs. pt-PT, es-MX vs. es-ES) by analyzing vocabulary, spelling conventions, date and number formatting, and other textual markers. Use this when language detection alone is insufficient because two locales share the same language code but require different downstream processing—for example, routing a customer support ticket to a Brazilian Portuguese queue versus a European Portuguese queue, or selecting between an American English and British English text-to-speech model.
Prompt
Locale Identification Prompt for Regional Routing

When to Use This Prompt
A practical guide for platform engineers who need to route user-generated text to region-specific models, translation layers, or content workflows by detecting regional locale.
The prompt works best on inputs of at least 15 words where locale signals are dense enough to be reliable. It expects a language code to already be known or detected upstream; its job is to refine that language classification into a specific regional locale. The output includes a locale code (e.g., en-US, pt-BR), a confidence score, and the specific markers that informed the decision. This traceability is critical for debugging misroutes and for building eval datasets that measure the cost of locale confusion. Wire this prompt after your language detection step but before model selection, translation routing, or content policy enforcement. For high-stakes routing—such as legal, healthcare, or financial content—always include a confidence threshold below which the input is flagged for human review rather than silently misrouted.
Do not use this prompt for general language identification (use a language detection prompt instead), for inputs under 15 words where locale signals are too sparse, or for cases where the language itself is unknown. Also avoid using it when the downstream system does not actually differentiate between regional variants—adding unnecessary locale detection creates routing complexity without value. Before deploying, test against near-identical locale pairs (e.g., es-MX vs. es-ES, en-US vs. en-GB) using a golden dataset that includes edge cases like mixed-locale documents, formal vs. informal register, and inputs where the locale is deliberately ambiguous. Measure misrouting cost in terms of downstream quality degradation, not just classification accuracy.
Use Case Fit
Where the Locale Identification Prompt for Regional Routing delivers value and where it introduces risk. Use these cards to decide if this prompt fits your production architecture before investing in eval harnesses.
Good Fit: Regional Model Dispatch
Use when: you maintain separate fine-tuned models or prompt variants for en-US vs. en-GB, pt-BR vs. pt-PT, or es-MX vs. es-ES and need automatic routing. Guardrail: pair locale detection with a confidence threshold; route to a default global model when confidence falls below 0.85.
Good Fit: Spelling and Formatting Normalization
Use when: downstream systems require locale-specific normalization—color vs. colour, date formats, currency symbols, or measurement units. Guardrail: apply normalization as a separate transformation step after locale detection, not inside the detection prompt itself, to keep routing logic clean and testable.
Bad Fit: Short or Ambiguous Text
Avoid when: inputs are under 15 words, consist primarily of proper nouns, or contain no locale-specific vocabulary markers. Guardrail: implement a minimum character threshold and route short inputs to a default locale or a separate ambiguity-handling workflow with explicit clarification prompts.
Bad Fit: Mixed-Locale Documents
Avoid when: a single document contains multiple regional variants (e.g., a legal contract with both en-US and en-GB clauses). Guardrail: use span-level detection instead of document-level classification, or escalate to human review when multiple locales are detected with similar confidence scores.
Required Input: Locale Variant Pairs
Risk: the prompt cannot distinguish locales it hasn't been explicitly configured to separate. Guardrail: maintain a closed list of supported locale pairs with documented distinguishing features (spelling patterns, vocabulary, formatting conventions) and test each pair with adversarial near-identical examples before deployment.
Operational Risk: Silent Misrouting
Risk: a misclassified locale produces subtly wrong outputs that pass superficial review but degrade user trust over time. Guardrail: log locale detection decisions with confidence scores, sample outputs for manual audit, and set up monitoring alerts when detection confidence distributions shift or fall below baseline thresholds.
Copy-Ready Prompt Template
A copy-ready system prompt for detecting regional locale from textual clues, ready to paste and adapt with your specific routing targets and constraints.
This prompt template is designed to be pasted directly into your system instructions for a locale identification step in a regional routing pipeline. It instructs the model to analyze input text for vocabulary, spelling, and formatting conventions that distinguish regional variants of the same language—such as en-US versus en-GB, pt-BR versus pt-PT, or es-MX versus es-ES. The prompt is structured to produce a consistent JSON output that your application can parse and act on, with explicit handling for ambiguous or underspecified inputs where a regional signal cannot be reliably detected.
textYou are a locale identification engine for regional routing. Your job is to analyze the provided text and determine the most likely regional locale based on vocabulary, spelling, formatting conventions, and cultural references. ## INPUT [INPUT] ## TARGET LOCALES [LOCALE_LIST] ## OUTPUT SCHEMA Return a JSON object with the following fields: - "detected_locale": The most likely locale code from the target list, or "unknown" if no clear signal exists. - "confidence": A float between 0.0 and 1.0 indicating your confidence in the detection. - "signals": An array of strings listing the specific textual clues that informed your decision (e.g., "color spelled without 'u'", "date format DD/MM/YYYY", "term 'lorry' detected"). - "alternative_locales": An array of other possible locales from the target list that share some signals, ordered by likelihood. Empty if confidence is above [CONFIDENCE_THRESHOLD]. - "rationale": A brief explanation of your reasoning, including why you ruled out other locales. ## CONSTRAINTS [CONSTRAINTS] ## EXAMPLES [EXAMPLES] ## RULES 1. Base your decision only on textual evidence present in the input. Do not guess based on topic or subject matter alone. 2. If the input is too short or generic to determine a regional locale, set "detected_locale" to "unknown" and "confidence" to 0.0. 3. When multiple locales are plausible, list them in "alternative_locales" and keep "confidence" below [CONFIDENCE_THRESHOLD]. 4. Prioritize spelling differences (e.g., color/colour, realize/realise) and vocabulary differences (e.g., truck/lorry, apartment/flat) over formatting conventions. 5. Do not confuse language detection with locale detection. Assume the language is already known and focus only on regional variation.
To adapt this template for your system, replace the square-bracket placeholders with your specific values. [LOCALE_LIST] should contain the exact locale codes your routing system supports, such as ["en-US", "en-GB", "en-AU", "en-CA"]. [CONSTRAINTS] can include additional rules like domain-specific terminology handling or known ambiguous cases for your application. [EXAMPLES] should provide few-shot demonstrations covering clear cases, edge cases, and ambiguous inputs relevant to your locale pairs. [CONFIDENCE_THRESHOLD] sets the boundary below which the system should route to a default or clarification path rather than trusting the detection. Wire the output into your routing middleware by parsing the detected_locale field and using confidence to decide whether to proceed automatically, flag for review, or fall back to a default locale. For high-stakes routing where misdirection has significant cost, add a human review step when confidence falls below your threshold or when alternative_locales is non-empty.
Prompt Variables
Required inputs for the Locale Identification Prompt. Each variable must be populated before the prompt is sent to the model. Validation notes describe how to check the input at runtime to prevent silent misrouting.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[USER_INPUT] | The raw text to classify for regional locale | I need to hire a lorry to move my flat next fortnight. | Check string length > 10 chars. Reject empty or whitespace-only inputs. Log and escalate if under minimum length. |
[CANDIDATE_LOCALES] | The list of possible locale codes the system can route to | ["en-US", "en-GB", "en-AU", "en-CA", "en-IE"] | Validate each entry matches BCP 47 locale format. Ensure list contains at least 2 entries. Fail closed if only one locale is provided. |
[CONFIDENCE_THRESHOLD] | Minimum confidence score required for automatic routing | 0.85 | Must be a float between 0.0 and 1.0. Values below 0.7 risk high misrouting rates. Log a warning if threshold is set below 0.8. |
[FALLBACK_LOCALE] | Default locale when confidence is below threshold or input is ambiguous | en-US | Must be a valid entry from [CANDIDATE_LOCALES]. Validate presence in candidate list at runtime. Route to human review queue if fallback is used more than 5% of the time. |
[LOCALE_FEATURES] | Known distinguishing markers for each candidate locale pair | {"en-US": ["-ize", "truck", "apartment"], "en-GB": ["-ise", "lorry", "flat"]} | Validate JSON structure with locale keys matching [CANDIDATE_LOCALES]. Each locale must have at least 3 feature entries. Log missing features as a coverage gap. |
[OUTPUT_SCHEMA] | Expected JSON structure for the classification result | {"detected_locale": "string", "confidence": float, "evidence": ["string"], "fallback_used": boolean} | Validate schema is valid JSON. Confirm all required fields are present. Reject prompt execution if schema is malformed to prevent downstream parse errors. |
[MAX_INPUT_LENGTH] | Character limit for the input text to control latency and cost | 500 | Truncate input if exceeded and log a warning. Set based on model context window and expected input size. Long inputs may contain mixed regional signals and reduce accuracy. |
Implementation Harness Notes
How to wire the locale identification prompt into a production routing middleware with validation, retries, and observability.
This prompt is designed to sit at the routing layer of a multilingual AI platform, immediately after language detection but before region-specific model dispatch, translation, or content policy application. The prompt expects a pre-detected language code (e.g., en, pt, es) and the raw user input text. Its job is to resolve the regional locale variant—such as en-US vs. en-GB or pt-BR vs. pt-PT—using orthographic, lexical, and formatting signals. The output is a structured locale tag (IETF BCP 47 format) and a confidence score, which downstream systems use to select the correct embedding model, response template, currency format, or compliance policy. Wire this prompt as a synchronous call within your request preprocessing pipeline, invoked only when the detected language belongs to a known set of regionally variant languages. Do not call this prompt for languages without meaningful regional divergence, as it will waste latency and compute.
The implementation harness must enforce a strict output contract. Parse the model response into a JSON object with locale (string, BCP 47), confidence (float, 0-1), and markers (array of strings indicating which signals drove the decision). Validate that locale matches the expected language family of the input language code—if the language detector returned pt but the locale prompt returns en-GB, flag this as a misrouting event and fall back to a default locale for the detected language. Set a confidence threshold (we recommend 0.7 for automated routing, 0.5 for flagging for human review). When confidence falls below the threshold, route to a clarification prompt or a human review queue rather than silently dispatching to the wrong regional model. Log every decision with the input hash, detected language, resolved locale, confidence, markers, and latency. This log becomes your primary dataset for measuring misrouting cost and tuning the threshold.
Model choice matters for this task. Use a fast, cost-efficient model (e.g., GPT-4o-mini, Claude Haiku, or a fine-tuned small model) because this prompt runs on every request in the hot path. Latency budget should be under 500ms for real-time chat applications; if you cannot meet that, consider caching locale decisions per user session or account region setting. Implement a retry strategy with a single retry on parse failure or schema validation error, using a stricter temperature setting (0.0 or 0.1) on the retry. If the retry also fails, fall back to the most common locale for the detected language in your user base. For high-stakes domains like healthcare or finance, where misrouting could expose data to the wrong jurisdiction, add a human approval step for any locale decision with confidence below 0.9 or where the detected markers conflict with the user's declared region. Build an eval harness that tests near-identical locale pairs (e.g., en-US vs. en-GB with spelling variants like 'color'/'colour', 'center'/'centre') and measures both accuracy and the cost of false positives—routing a British user to a US-specific workflow may be worse than routing to a neutral English fallback.
Expected Output Contract
Fields, format, and validation rules for the locale identification prompt output. Use this contract to validate model responses before routing decisions are applied.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
locale_code | string (BCP 47 format, e.g., en-US, pt-BR, en-GB) | Must match regex ^[a-z]{2,3}-[A-Z]{2,4}$. Reject if only language code without region subtag is returned. | |
confidence | number (float, 0.0 to 1.0) | Must be between 0.0 and 1.0 inclusive. Values below [CONFIDENCE_THRESHOLD] should trigger fallback routing or human review. | |
detected_markers | array of strings | Must contain at least 1 marker. Each string must be a concrete lexical, orthographic, or formatting clue found in the input. Empty array is a failure. | |
alternative_locales | array of objects with locale_code and confidence fields | If present, each object must pass locale_code and confidence validation rules. Array must be ordered by descending confidence. Null or empty array is acceptable. | |
input_length_assessment | string enum: sufficient, borderline, insufficient | Must be one of the three allowed values. borderline or insufficient should correlate with lower confidence scores. | |
spelling_convention | string or null | If detected, must be a recognized convention label such as Oxford, Webster, or null when indeterminate. Do not hallucinate conventions for languages without spelling variants. | |
formatting_convention | string or null | If detected, must describe a concrete formatting clue such as date format, number format, or currency symbol found in the input. Null when no formatting clues are present. | |
routing_decision | string enum: route, fallback, clarify | Must be route when confidence >= [CONFIDENCE_THRESHOLD] and locale_code is in [SUPPORTED_LOCALES]. Must be fallback when locale_code is not in [SUPPORTED_LOCALES]. Must be clarify when confidence < [CONFIDENCE_THRESHOLD]. |
Common Failure Modes
Locale identification is brittle in ways that language detection is not. These failures surface when vocabulary, spelling, and formatting differences are subtle, and the cost of misrouting is high.
Near-Identical Locale Confusion
What to watch: The model collapses en-US and en-GB, or pt-BR and pt-PT, when the input lacks strong regional signals like 'colour' vs. 'color' or 'autocarro' vs. 'ônibus'. Short or generic text defaults to the higher-resource locale. Guardrail: Require a minimum signal threshold before committing to a locale. If confidence is below 0.85, route to a locale-agnostic fallback or ask a clarifying question.
Formatting Convention Overreliance
What to watch: The model latches onto date formats (DD/MM/YYYY vs. MM/DD/YYYY), number formats (1.000,00 vs. 1,000.00), or currency symbols as the sole locale signal, ignoring that these conventions leak across borders in international contexts. Guardrail: Weight formatting signals lower than vocabulary and spelling signals. Test with inputs that mix conventions, such as a UK-formatted date in otherwise US English text.
Ambiguous Regional Vocabulary
What to watch: Words like 'biscuit,' 'chips,' or 'football' carry different meanings across English locales, but the model treats them as strong signals even when context suggests the other locale's meaning. Guardrail: Include disambiguation context in the prompt. Instruct the model to consider surrounding vocabulary clusters, not isolated words. Test with sentences where a single regional word appears in otherwise neutral text.
Default-to-En-US Bias
What to watch: When locale signals are weak or balanced, the model disproportionately defaults to en-US due to training data imbalance. This silently routes en-GB, en-AU, or en-IN users to US-specific workflows. Guardrail: Explicitly set the default locale in the prompt based on your user base geography. Log every default-routed request for review. Monitor default rates by region.
Spelling Normalization Interference
What to watch: If the input passes through a spell-check or normalization layer before locale detection, regional spelling variants like 'realise' or 'centre' are corrected to US forms, destroying the primary locale signal. Guardrail: Run locale detection on raw, unnormalized text before any preprocessing. If normalization is required upstream, preserve the original text in a separate field for locale detection.
Misrouting Cost Blindness
What to watch: Teams treat all locale misroutes as equal, but routing pt-BR to pt-PT may be acceptable while routing en-IN to en-US breaks legal compliance or pricing display. Guardrail: Define a misrouting cost matrix for each locale pair in your system. Use it to set per-pair confidence thresholds and escalation rules. High-cost misroutes should trigger human review even at moderate confidence.
Evaluation Rubric
Use this rubric to test the locale identification prompt before deployment. Each criterion targets a known failure mode for regional routing, especially near-identical locale pairs (e.g., en-US vs. en-GB, pt-BR vs. pt-PT). Run these tests on a golden dataset of at least 100 samples per locale pair before shipping.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Locale Accuracy on Unambiguous Input | Correctly identifies target locale for inputs with 3+ strong regional markers (spelling, currency, date format) | Misroutes en-GB as en-US or pt-PT as pt-BR on inputs with clear regional signals | Run 100 labeled samples per locale pair; require ≥95% accuracy on unambiguous subset |
Ambiguity Flagging on Sparse Input | Returns confidence below 0.7 or sets ambiguity_flag=true when fewer than 2 regional markers are present | Returns high confidence (≥0.85) for single-word inputs or inputs with only one weak marker | Test 50 short inputs (under 10 words) per locale pair; verify ambiguity flag rate ≥80% |
Fallback to Language-Level Code | Returns base language code (e.g., en, pt) with locale=null when regional signals are absent or contradictory | Returns a specific locale code (e.g., en-AU) when no Australian markers are present in the input | Test 30 inputs with only neutral vocabulary; verify locale field is null or base language only |
Spelling Variant Detection | Correctly routes based on spelling differences: color/colour, realize/realise, center/centre, etc. | Routes en-GB spelling to en-US or vice versa when spelling is the only available signal | Test 20 spelling-only inputs per English variant pair; require ≥90% accuracy |
Date and Number Format Parsing | Correctly interprets MM/DD/YYYY vs. DD/MM/YYYY and 1,000.00 vs. 1.000,00 as locale signals | Ignores date/number format or misinterprets ambiguous formats (e.g., 01/02/2024) | Test 15 inputs with date/number format as primary signal; require correct interpretation in ≥85% |
Vocabulary and Terminology Routing | Identifies locale from region-specific terms: lift/elevator, flat/apartment, boot/trunk, etc. | Fails to detect locale when only vocabulary signals are present without spelling differences | Test 25 vocabulary-only inputs per locale pair; require ≥90% accuracy |
Mixed-Signal Handling | When signals conflict (e.g., US spelling with UK vocabulary), returns lower confidence and flags ambiguity | Returns high confidence for the wrong locale or picks arbitrarily without confidence reduction | Test 20 inputs with deliberately conflicting regional signals; verify confidence <0.7 and ambiguity_flag=true |
Currency Symbol Interpretation | Correctly associates $ with regional context (USD, CAD, AUD, etc.) based on surrounding textual clues | Defaults $ to USD without checking for Canadian or Australian context markers | Test 10 inputs where $ appears with regional context words; require correct locale inference in ≥80% |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base prompt and a small test set of 20-30 locale pairs. Use a frontier model (GPT-4o, Claude 3.5 Sonnet) with temperature 0. Replace the structured output schema with a simple key-value format: {"locale": "[LOCALE_CODE]", "confidence": [0-1]}. Skip the eval harness initially and manually review outputs.
Prompt modification
Remove the [OUTPUT_SCHEMA] block and replace with: Return only a JSON object with keys "locale" and "confidence". Drop the [CONSTRAINTS] section about edge cases and just add: If unsure between two locales, pick the most likely and set confidence below 0.7.
Watch for
- Overconfident predictions on short text (under 15 words) where locale signals are sparse
- en-US default bias when the model sees ambiguous English without region markers
- Missing the pt-BR vs. pt-PT distinction because vocabulary overlap is high in short samples
- No logging of low-confidence cases, making it hard to find where the prompt breaks

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us