detect-non-localizable
Determine if a string value should be translated or left as-is. Use when filtering localization keys, validating translation files, or building translation task lists.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Detect Non-Localizable Strings
Analyze a string value to determine if it should be translated or left unchanged.
Input
- value: The string to check
Output
Return a boolean:
- true: String should NOT be translated (non-localizable)
- false: String should be translated (localizable)
When returning true, log which pattern matched.
Detection Patterns
Check patterns in this order. Return true (non-localizable) if any pattern matches:
1. Empty or Whitespace Only
Pattern: /^\s*$/
Examples: "", " ", "\n\t"
2. Pure Numbers
Pattern: /^-?\d+([.,]\d+)?%?$/
Examples: "42", "3.14", "-100", "50%", "1,234"
3. Single Special Characters
Pattern: /^[^\w\s]$/ (single non-word, non-space character)
Examples: ":", "-", "•", "→", "|"
4. URLs
Pattern: /^(https?:\/\/|www\.)|(\.(com|org|net|io|dev|edu|gov|co|app)\b)/i
Examples:
- "https://github.com/example"
- "www.example.com"
- "Visit example.com for more"
5. Email Addresses
Pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/
Examples: "user@example.com", "support@company.org"
6. File Paths and Extensions
Pattern: /^[.\/\\]|[\/\\][\w.-]+[\/\\]|\.(?:json|xml|ts|js|html|css|scss|png|jpg|svg|pdf|md|txt|yaml|yml)$/i
Examples:
- "/path/to/file"
- "./relative/path"
- "C:\Windows\path"
- "config.json"
- "image.png"
7. Version Numbers
Pattern: /^v?\d+\.\d+(\.\d+)?(-[\w.]+)?(\+[\w.]+)?$/i
Examples: "1.2.3", "v2.0", "1.0.0-beta", "2.1.0+build.123"
8. API Endpoints
Pattern: /^\/(?:api|v\d+|rest|graphql)\//i
Examples: "/api/users", "/v1/auth/login", "/rest/resources"
9. UUIDs
Pattern: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i
Examples: "550e8400-e29b-41d4-a716-446655440000"
10. Hash-like Strings
Pattern: /^[0-9a-f]{32,}$/i (32+ hex characters, like MD5/SHA hashes)
Examples: "d41d8cd98f00b204e9800998ecf8427e"
11. Configuration Keys (SCREAMING_SNAKE_CASE)
Pattern: /^[A-Z][A-Z0-9]*(_[A-Z0-9]+)+$/
Examples: "API_KEY", "MAX_RETRY_COUNT", "DATABASE_URL"
Note: Must have at least one underscore to distinguish from acronyms
12. Template Variables Only
Pattern: /^\{\{[\w.]+\}\}$/
Examples: "{{common.name}}", "{{user.email}}"
Note: Only if the ENTIRE value is a template variable
13. Icon Identifiers
Pattern: /^(material-symbols|fa|mdi|icon)[-:][\w-]+$/i
Examples: "material-symbols:security", "fa-regular fa-user", "mdi-account"
14. CSS/Style Values
Pattern: /^(#[0-9a-f]{3,8}|rgba?\(|hsla?\(|\d+px|\d+em|\d+rem|\d+%)$/i
Examples: "#fff", "#ff5500", "rgba(0,0,0,0.5)", "16px", "1.5em"
Patterns That Are Localizable (return false)
These should always be translated even if they might look technical:
- Strings containing readable words mixed with numbers: "Step 1", "Version 2 Released"
- Strings with template variables embedded in text: "Hello {{name}}"
- Acronyms without underscores: "API", "URL", "HTTP" (might be used in sentences)
- Short codes that could be labels: "OK", "N/A"
Implementation Notes
-
Be conservative: When in doubt, return
false(localizable). It's better to have a translator skip an obvious non-translatable than to miss a string that needs translation. -
Order matters: Check patterns from most specific to least specific to avoid false positives.
-
Logging: When returning
true, output which pattern matched:Non-localizable: "https://example.com" (matched: URL pattern) -
Edge cases:
- Mixed content like "Visit https://example.com" should be
false(localizable) because the surrounding text needs translation - Interpolated strings like "{{count}} items" should be
false(localizable)
- Mixed content like "Visit https://example.com" should be
Example Usage
Input: "https://github.com/ericfitz/tmi"
Output: true (matched: URL pattern)
Input: "Delete"
Output: false (localizable text)
Input: "{{common.name}}"
Output: true (matched: template variable only)
Input: "Hello {{name}}, welcome!"
Output: false (localizable - contains translatable text)
Input: "API_ENDPOINT_URL"
Output: true (matched: configuration key)
Input: "1.2.3"
Output: true (matched: version number)
Input: "Step 1"
Output: false (localizable - contains readable text)
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-01-26
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!