{
 "license": "https://creativecommons.org/licenses/by/4.0/ (original and derived statistics; third-party figures belong to their publishers)",
 "publisher": "LanguageOps",
 "stats": [
  {
   "checked": "2026-10-23",
   "claim": "The global language industry was worth an estimated USD 72.6 billion in 2025, projected to reach USD 73.4 billion in 2026.",
   "group": "market",
   "id": "nimdzi-market-2025",
   "kind": "third-party",
   "label": "Language industry size, 2025",
   "permalink": "https://languageops.com/translation-industry-statistics/#nimdzi-market-2025",
   "source": {
    "date": "2026",
    "name": "Nimdzi Insights, The 2026 Nimdzi 100",
    "url": "https://nimdzi.com/nimdzi-100-2026/"
   },
   "value": "$72.6bn"
  },
  {
   "checked": "2026-10-23",
   "claim": "Nimdzi projects language-industry growth of under 1% a year from 2026, reaching USD 76.1 billion by 2030 in its realistic model and USD 96.9 billion in its optimistic one.",
   "group": "market",
   "id": "nimdzi-market-2030",
   "kind": "third-party",
   "label": "Projected annual growth to 2030",
   "permalink": "https://languageops.com/translation-industry-statistics/#nimdzi-market-2030",
   "source": {
    "date": "2026",
    "name": "Nimdzi Insights, The 2026 Nimdzi 100",
    "url": "https://nimdzi.com/nimdzi-100-2026/"
   },
   "value": "\u003c1%"
  },
  {
   "checked": "2026-10-23",
   "claim": "The 100 largest language service and technology providers made up only 19.8% of the language industry in 2025, and the top 10 just 9.9%.",
   "group": "market",
   "id": "nimdzi-fragmentation",
   "kind": "third-party",
   "label": "Share held by the 100 largest providers",
   "permalink": "https://languageops.com/translation-industry-statistics/#nimdzi-fragmentation",
   "source": {
    "date": "2026",
    "name": "Nimdzi Insights, The 2026 Nimdzi 100",
    "url": "https://nimdzi.com/nimdzi-100-2026/"
   },
   "value": "19.8%"
  },
  {
   "checked": "2026-10-23",
   "claim": "The Nimdzi 100 grew by a combined 1.3% from 2024 to 2025; 53 of the 100 providers grew and 22 shrank.",
   "group": "market",
   "id": "nimdzi-top100-growth",
   "kind": "third-party",
   "label": "Combined growth of the top 100, 2024–2025",
   "permalink": "https://languageops.com/translation-industry-statistics/#nimdzi-top100-growth",
   "source": {
    "date": "2026",
    "name": "Nimdzi Insights, The 2026 Nimdzi 100",
    "url": "https://nimdzi.com/nimdzi-100-2026/"
   },
   "value": "+1.3%"
  },
  {
   "checked": "2026-10-23",
   "claim": "Slator values the addressable market for language solutions and AI at USD 30.85 billion in 2025, growing to USD 36.10 billion by 2031 (2.65% CAGR).",
   "group": "market",
   "id": "slator-market-2025",
   "kind": "third-party",
   "label": "Language solutions and AI market, 2025",
   "note": "Slator's figure covers buyer spend on translation, localisation, dubbing, subtitling, captions, multilingual content generation, accessibility, speech translation and real-time multilingual communication.",
   "permalink": "https://languageops.com/translation-industry-statistics/#slator-market-2025",
   "source": {
    "date": "2026",
    "name": "Slator, 2026 Language Solutions \u0026 AI Market Report",
    "url": "https://slator.com/2026-market-report-language-solutions-ai/"
   },
   "value": "$30.85bn"
  },
  {
   "checked": "2026-10-23",
   "claim": "76% of online shoppers prefer to buy products with information in their native language.",
   "group": "demand",
   "id": "csa-prefer-native",
   "kind": "third-party",
   "label": "Online shoppers who prefer their own language",
   "permalink": "https://languageops.com/translation-industry-statistics/#csa-prefer-native",
   "source": {
    "date": "2020-07-07",
    "name": "CSA Research, Can't Read, Won't Buy – B2C (8,709 consumers, 29 countries)",
    "url": "https://csa-research.com/Blogs-Events/CSA-in-the-Media/Press-Releases/Consumers-Prefer-their-Own-Language"
   },
   "value": "76%"
  },
  {
   "checked": "2026-10-23",
   "claim": "40% of online shoppers will never buy from websites in other languages.",
   "group": "demand",
   "id": "csa-never-buy",
   "kind": "third-party",
   "label": "Never buy from sites in other languages",
   "permalink": "https://languageops.com/translation-industry-statistics/#csa-never-buy",
   "source": {
    "date": "2020-07-07",
    "name": "CSA Research, Can't Read, Won't Buy – B2C (8,709 consumers, 29 countries)",
    "url": "https://csa-research.com/Blogs-Events/CSA-in-the-Media/Press-Releases/Consumers-Prefer-their-Own-Language"
   },
   "value": "40%"
  },
  {
   "checked": "2026-10-23",
   "claim": "65% of consumers prefer content in their own language even if it is of poor quality.",
   "group": "demand",
   "id": "csa-poor-quality",
   "kind": "third-party",
   "label": "Prefer their language, even if quality is poor",
   "permalink": "https://languageops.com/translation-industry-statistics/#csa-poor-quality",
   "source": {
    "date": "2020-07-07",
    "name": "CSA Research, Can't Read, Won't Buy – B2C (8,709 consumers, 29 countries)",
    "url": "https://csa-research.com/Blogs-Events/CSA-in-the-Media/Press-Releases/Consumers-Prefer-their-Own-Language"
   },
   "value": "65%"
  },
  {
   "checked": "2026-10-23",
   "claim": "75% of consumers are more likely to buy from the same brand again if customer care is in their language.",
   "group": "demand",
   "id": "csa-support-repurchase",
   "kind": "third-party",
   "label": "More likely to buy again with support in their language",
   "permalink": "https://languageops.com/translation-industry-statistics/#csa-support-repurchase",
   "source": {
    "date": "2020-07-07",
    "name": "CSA Research, Can't Read, Won't Buy – B2C (8,709 consumers, 29 countries)",
    "url": "https://csa-research.com/Blogs-Events/CSA-in-the-Media/Press-Releases/Consumers-Prefer-their-Own-Language"
   },
   "value": "75%"
  },
  {
   "checked": "2026-10-23",
   "claim": "49.5% of websites whose content language can be identified use English; the next largest are Spanish (6.1%), German (5.9%), Japanese (4.9%) and French (4.6%).",
   "group": "demand",
   "id": "w3techs-english-web",
   "kind": "third-party",
   "label": "Websites with English content",
   "permalink": "https://languageops.com/translation-industry-statistics/#w3techs-english-web",
   "source": {
    "date": "2026-10-23",
    "name": "W3Techs, Usage statistics of content languages for websites",
    "url": "https://w3techs.com/technologies/overview/content_language"
   },
   "value": "49.5%"
  },
  {
   "checked": "2026-10-23",
   "claim": "The App Store serves over 850 million average weekly users across 175 countries and regions.",
   "group": "app-localisation",
   "id": "apple-storefronts",
   "kind": "third-party",
   "label": "App Store countries and regions",
   "permalink": "https://languageops.com/translation-industry-statistics/#apple-storefronts",
   "source": {
    "date": "2026-06-04",
    "name": "Apple Newsroom, study by Analysis Group",
    "url": "https://www.apple.com/newsroom/2026/06/app-store-ecosystem-reaches-1-point-4-trillion-usd-as-developers-thrive-globally/"
   },
   "value": "175"
  },
  {
   "checked": "2026-10-23",
   "claim": "App Store Connect supports localised app metadata in 50 languages, after adding 11 in March 2026, ten of them Indian languages.",
   "group": "app-localisation",
   "id": "apple-localizations",
   "kind": "third-party",
   "label": "App Store listing languages",
   "permalink": "https://languageops.com/translation-industry-statistics/#apple-localizations",
   "source": {
    "date": "2026-03-31",
    "name": "Apple Developer News",
    "url": "https://developer.apple.com/news/?id=97t4mt64"
   },
   "value": "50"
  },
  {
   "claim": "4 of the 5 competitor TMS offers we compared (XTM, Phrase, Lokalise and Smartling) meter AI translation or AI quality checks separately from processed words; only Smartcat uses one unit, its Smartwords.",
   "group": "tms-pricing",
   "id": "tms-ai-metered-separately",
   "kind": "derived",
   "label": "Competitor TMS plans with a separate AI meter",
   "note": "Based on published plans and supplied quotes for XTM Cloud, Phrase, Lokalise, Smartling and Smartcat, reviewed 15 July 2026.",
   "permalink": "https://languageops.com/translation-industry-statistics/#tms-ai-metered-separately",
   "source": {
    "date": "2026-07-15",
    "name": "LanguageOps TMS pricing comparison",
    "url": "https://languageops.com/tms-pricing-comparison/"
   },
   "value": "4 of 5"
  },
  {
   "claim": "Lokalise Advanced includes 150,000 Pro AI words a year alongside 1 million processed words, so its Pro AI allowance covers 15% of the words it lets you process, or 7.5% of a pre-translate-plus-LQA workload.",
   "group": "tms-pricing",
   "id": "tms-lokalise-ai-share",
   "kind": "derived",
   "label": "AI words vs processed words, Lokalise Advanced",
   "note": "150,000 ÷ 1,000,000 = 15%. A two-pass workload (AI pre-translation, then AI LQA) needs 2 million AI words.",
   "permalink": "https://languageops.com/translation-industry-statistics/#tms-lokalise-ai-share",
   "source": {
    "date": "2026-07-15",
    "name": "LanguageOps TMS pricing comparison",
    "url": "https://languageops.com/tms-pricing-comparison/"
   },
   "value": "15%"
  },
  {
   "claim": "For a 1-million-word annual workflow, competitor list prices ran from $11,988 a year (Lokalise Advanced) to over $60,000 (Smartling, whose AI translation alone starts at $0.06 a word), against £3,000 for LanguageOps Professional.",
   "group": "tms-pricing",
   "id": "tms-entry-cost-range",
   "kind": "derived",
   "label": "Competitor list price, 1M-word workflow",
   "note": "List prices in each vendor's own currency, not converted. Smartling's figure is 1M words at its published $0.06 starting AI rate, before its unlisted TMS price.",
   "permalink": "https://languageops.com/translation-industry-statistics/#tms-entry-cost-range",
   "source": {
    "date": "2026-07-15",
    "name": "LanguageOps TMS pricing comparison",
    "url": "https://languageops.com/tms-pricing-comparison/"
   },
   "value": "$12k–$60k+"
  },
  {
   "claim": "German UI strings are 28% longer than the English source on average (27–29% across Mastodon, Signal and WordPress; 13,135 shipped translations).",
   "group": "app-localisation",
   "id": "ui-expansion-german",
   "kind": "original",
   "label": "German UI text vs English",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-expansion-german",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "+28%"
  },
  {
   "claim": "French UI strings are 32% longer than English, the most of the 27 languages measured; 28.3% of French strings grow by more than half.",
   "group": "app-localisation",
   "id": "ui-expansion-french",
   "kind": "original",
   "label": "French UI text vs English",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-expansion-french",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "+32%"
  },
  {
   "claim": "Across 14 European languages, UI text runs a median 18% longer than English, from +9% (Danish and Norwegian) to +32% (French).",
   "group": "app-localisation",
   "id": "ui-expansion-european-median",
   "kind": "original",
   "label": "Median expansion, 14 European languages",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-expansion-european-median",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "+18%"
  },
  {
   "claim": "1 in 13 French UI strings and 1 in 17 German strings are at least twice as long as the English, so a layout sized exactly for English will truncate or wrap them.",
   "group": "app-localisation",
   "id": "ui-strings-doubled",
   "kind": "original",
   "label": "French UI strings at least twice as long",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-strings-doubled",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "1 in 13"
  },
  {
   "claim": "Chinese (Simplified) UI strings use 66% fewer characters than English, and Japanese and Korean 45–46% fewer, although each character takes more horizontal space on screen.",
   "group": "app-localisation",
   "id": "ui-expansion-chinese",
   "kind": "original",
   "label": "Chinese (Simplified) characters vs English",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-expansion-chinese",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "−66%"
  },
  {
   "claim": "53–65% of app UI strings are 20 characters or fewer, with a median of 16–19 characters, so most strings give translators very little text to work with.",
   "group": "app-localisation",
   "id": "ui-short-strings",
   "kind": "original",
   "label": "UI strings of 20 characters or fewer",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-short-strings",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "53–65%"
  },
  {
   "claim": "11.8–14.2% of app UI strings contain at least one variable placeholder such as %s or {name}.",
   "group": "app-localisation",
   "id": "ui-placeholder-share",
   "kind": "original",
   "label": "UI strings containing a variable",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-placeholder-share",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "1 in 8"
  },
  {
   "claim": "About 1 in 950 shipped translations that contain a placeholder drop, add or break it (47 of 44,495), across three mature, widely translated open-source apps.",
   "group": "app-localisation",
   "id": "ui-placeholder-defects",
   "kind": "original",
   "label": "Shipped translations with a broken placeholder",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-placeholder-defects",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "1 in 950"
  },
  {
   "claim": "The LanguageOps UI string study measured 338,859 shipped translations of 13,682 English UI strings in 27 languages across Mastodon, Signal and WordPress.",
   "group": "app-localisation",
   "id": "ui-study-size",
   "kind": "original",
   "label": "Shipped translations measured",
   "permalink": "https://languageops.com/translation-industry-statistics/#ui-study-size",
   "source": {
    "date": "2026-10-23",
    "name": "LanguageOps UI string study",
    "url": "https://languageops.com/translation-industry-statistics/#ui-study"
   },
   "value": "338,859"
  }
 ],
 "ui_study": {
  "corpora": [
   {
    "format": "JSON, ICU messages",
    "key": "mastodon",
    "median_visible_chars": 16,
    "name": "Mastodon (web app)",
    "pct_20_chars_or_fewer": 64.6,
    "pct_with_markup": 0.8,
    "pct_with_placeholders": 14,
    "revision": "131aabcaf1f1",
    "revision_date": "2026-10-23",
    "source": "https://github.com/mastodon/mastodon",
    "source_strings": 1520
   },
   {
    "format": "Android strings.xml",
    "key": "signal",
    "median_visible_chars": 17,
    "name": "Signal (Android)",
    "pct_20_chars_or_fewer": 58.8,
    "pct_with_markup": 0,
    "pct_with_placeholders": 11.8,
    "revision": "16f138410a4a",
    "revision_date": "2026-10-22",
    "source": "https://github.com/signalapp/Signal-Android",
    "source_strings": 4139
   },
   {
    "format": "gettext PO",
    "key": "wordpress",
    "median_visible_chars": 19,
    "name": "WordPress (core)",
    "pct_20_chars_or_fewer": 52.7,
    "pct_with_markup": 2.5,
    "pct_with_placeholders": 14.2,
    "revision": "WordPress - 7.1.x - Development",
    "revision_date": "2026-10-23",
    "source": "https://translate.wordpress.org/projects/wp/dev/",
    "source_strings": 8023
   }
  ],
  "csv": "https://languageops.com/research/ui-string-expansion-2026.csv",
  "id": "ui-string-expansion-2026",
  "languages": [
   {
    "by_corpus_pct": {
     "mastodon": 29,
     "signal": 35,
     "wordpress": 31
    },
    "code": "fr",
    "expansion_pct": 32,
    "measured": 13099,
    "name": "French",
    "pct_strings_doubled": 7.5,
    "pct_strings_over_50": 28.3,
    "range_pct": [
     29,
     35
    ],
    "short_strings_median_pct": 40,
    "translations": 13132
   },
   {
    "by_corpus_pct": {
     "mastodon": 31,
     "signal": 33,
     "wordpress": 29
    },
    "code": "el",
    "expansion_pct": 30,
    "measured": 13044,
    "name": "Greek",
    "pct_strings_doubled": 7.7,
    "pct_strings_over_50": 27.5,
    "range_pct": [
     29,
     33
    ],
    "short_strings_median_pct": 44,
    "translations": 13072
   },
   {
    "by_corpus_pct": {
     "mastodon": 29,
     "signal": 29,
     "wordpress": 27
    },
    "code": "de",
    "expansion_pct": 28,
    "measured": 13116,
    "name": "German",
    "pct_strings_doubled": 6,
    "pct_strings_over_50": 22.1,
    "range_pct": [
     27,
     29
    ],
    "short_strings_median_pct": 33,
    "translations": 13135
   },
   {
    "by_corpus_pct": {
     "mastodon": 21,
     "signal": 26,
     "wordpress": 24
    },
    "code": "es",
    "expansion_pct": 24,
    "measured": 13240,
    "name": "Spanish",
    "pct_strings_doubled": 5.6,
    "pct_strings_over_50": 22,
    "range_pct": [
     21,
     26
    ],
    "short_strings_median_pct": 30,
    "translations": 13262
   },
   {
    "by_corpus_pct": {
     "mastodon": 22,
     "signal": 26,
     "wordpress": 22
    },
    "code": "it",
    "expansion_pct": 23,
    "measured": 13074,
    "name": "Italian",
    "pct_strings_doubled": 4.5,
    "pct_strings_over_50": 18.2,
    "range_pct": [
     22,
     26
    ],
    "short_strings_median_pct": 25,
    "translations": 13089
   },
   {
    "by_corpus_pct": {
     "mastodon": 22,
     "signal": 27,
     "wordpress": 17
    },
    "code": "nl",
    "expansion_pct": 20,
    "measured": 12944,
    "name": "Dutch",
    "pct_strings_doubled": 4.1,
    "pct_strings_over_50": 16.2,
    "range_pct": [
     17,
     27
    ],
    "short_strings_median_pct": 33,
    "translations": 12962
   },
   {
    "by_corpus_pct": {
     "mastodon": 19,
     "signal": 25,
     "wordpress": 18
    },
    "code": "hu",
    "expansion_pct": 20,
    "measured": 12531,
    "name": "Hungarian",
    "pct_strings_doubled": 6.2,
    "pct_strings_over_50": 20.2,
    "range_pct": [
     18,
     25
    ],
    "short_strings_median_pct": 29,
    "translations": 12558
   },
   {
    "by_corpus_pct": {
     "mastodon": 23,
     "signal": 23,
     "wordpress": 14
    },
    "code": "ru",
    "expansion_pct": 17,
    "measured": 13329,
    "name": "Russian",
    "pct_strings_doubled": 6.3,
    "pct_strings_over_50": 18,
    "range_pct": [
     14,
     23
    ],
    "short_strings_median_pct": 30,
    "translations": 13355
   },
   {
    "by_corpus_pct": {
     "mastodon": 12,
     "signal": 21,
     "wordpress": 14
    },
    "code": "pt-BR",
    "expansion_pct": 16,
    "measured": 12702,
    "name": "Portuguese (Brazil)",
    "pct_strings_doubled": 3.4,
    "pct_strings_over_50": 14.7,
    "range_pct": [
     12,
     21
    ],
    "short_strings_median_pct": 25,
    "translations": 12723
   },
   {
    "by_corpus_pct": {
     "mastodon": 12,
     "signal": 24,
     "wordpress": 12
    },
    "code": "pl",
    "expansion_pct": 16,
    "measured": 12991,
    "name": "Polish",
    "pct_strings_doubled": 5.4,
    "pct_strings_over_50": 16.7,
    "range_pct": [
     12,
     24
    ],
    "short_strings_median_pct": 29,
    "translations": 13018
   },
   {
    "by_corpus_pct": {
     "mastodon": 13,
     "signal": 18,
     "wordpress": 12
    },
    "code": "uk",
    "expansion_pct": 14,
    "measured": 11663,
    "name": "Ukrainian",
    "pct_strings_doubled": 6.4,
    "pct_strings_over_50": 18.5,
    "range_pct": [
     12,
     18
    ],
    "short_strings_median_pct": 33,
    "translations": 11690
   },
   {
    "by_corpus_pct": {
     "mastodon": 14,
     "signal": 13,
     "wordpress": 11
    },
    "code": "fi",
    "expansion_pct": 12,
    "measured": 13304,
    "name": "Finnish",
    "pct_strings_doubled": 4.8,
    "pct_strings_over_50": 14.8,
    "range_pct": [
     11,
     14
    ],
    "short_strings_median_pct": 25,
    "translations": 13327
   },
   {
    "by_corpus_pct": {
     "mastodon": 9,
     "signal": 17,
     "wordpress": 8
    },
    "code": "hi",
    "expansion_pct": 12,
    "measured": 10210,
    "name": "Hindi",
    "pct_strings_doubled": 4.5,
    "pct_strings_over_50": 12.8,
    "range_pct": [
     8,
     17
    ],
    "short_strings_median_pct": 11,
    "translations": 10236
   },
   {
    "by_corpus_pct": {
     "mastodon": 8,
     "signal": 13,
     "wordpress": 10
    },
    "code": "sv",
    "expansion_pct": 11,
    "measured": 13203,
    "name": "Swedish",
    "pct_strings_doubled": 2.4,
    "pct_strings_over_50": 8.9,
    "range_pct": [
     8,
     13
    ],
    "short_strings_median_pct": 12,
    "translations": 13217
   },
   {
    "by_corpus_pct": {
     "mastodon": 9,
     "signal": 11,
     "wordpress": 11
    },
    "code": "cs",
    "expansion_pct": 11,
    "measured": 13134,
    "name": "Czech",
    "pct_strings_doubled": 4.2,
    "pct_strings_over_50": 12.8,
    "range_pct": [
     9,
     11
    ],
    "short_strings_median_pct": 25,
    "translations": 13163
   },
   {
    "by_corpus_pct": {
     "mastodon": 13,
     "signal": 14,
     "wordpress": 8
    },
    "code": "id",
    "expansion_pct": 11,
    "measured": 11188,
    "name": "Indonesian",
    "pct_strings_doubled": 3.2,
    "pct_strings_over_50": 10.2,
    "range_pct": [
     8,
     14
    ],
    "short_strings_median_pct": 20,
    "translations": 11217
   },
   {
    "by_corpus_pct": {
     "mastodon": 7,
     "signal": 12,
     "wordpress": 8
    },
    "code": "da",
    "expansion_pct": 9,
    "measured": 12568,
    "name": "Danish",
    "pct_strings_doubled": 1.9,
    "pct_strings_over_50": 6.9,
    "range_pct": [
     7,
     12
    ],
    "short_strings_median_pct": 11,
    "translations": 12585
   },
   {
    "by_corpus_pct": {
     "mastodon": 7,
     "signal": 12,
     "wordpress": 8
    },
    "code": "nb",
    "expansion_pct": 9,
    "measured": 12575,
    "name": "Norwegian",
    "pct_strings_doubled": 2.1,
    "pct_strings_over_50": 8,
    "range_pct": [
     7,
     12
    ],
    "short_strings_median_pct": 11,
    "translations": 12588
   },
   {
    "by_corpus_pct": {
     "mastodon": 16,
     "signal": 9,
     "wordpress": 9
    },
    "code": "tr",
    "expansion_pct": 9,
    "measured": 13293,
    "name": "Turkish",
    "pct_strings_doubled": 3.8,
    "pct_strings_over_50": 11.8,
    "range_pct": [
     9,
     16
    ],
    "short_strings_median_pct": 20,
    "translations": 13318
   },
   {
    "by_corpus_pct": {
     "mastodon": -2,
     "signal": 11,
     "wordpress": 7
    },
    "code": "vi",
    "expansion_pct": 7,
    "measured": 12641,
    "name": "Vietnamese",
    "pct_strings_doubled": 3.5,
    "pct_strings_over_50": 11.9,
    "range_pct": [
     -2,
     11
    ],
    "short_strings_median_pct": 17,
    "translations": 12663
   },
   {
    "by_corpus_pct": {
     "mastodon": -2,
     "signal": 4,
     "wordpress": -5
    },
    "code": "th",
    "expansion_pct": -1,
    "measured": 9289,
    "name": "Thai",
    "pct_strings_doubled": 2.8,
    "pct_strings_over_50": 9.2,
    "range_pct": [
     -5,
     4
    ],
    "short_strings_median_pct": 17,
    "translations": 9315
   },
   {
    "by_corpus_pct": {
     "mastodon": -5,
     "signal": 3,
     "wordpress": -7
    },
    "code": "ar",
    "expansion_pct": -4,
    "measured": 13105,
    "name": "Arabic",
    "pct_strings_doubled": 2.8,
    "pct_strings_over_50": 8,
    "range_pct": [
     -7,
     3
    ],
    "short_strings_median_pct": 10,
    "translations": 13139
   },
   {
    "by_corpus_pct": {
     "mastodon": -17,
     "signal": -14,
     "wordpress": -19
    },
    "code": "he",
    "expansion_pct": -17,
    "measured": 10609,
    "name": "Hebrew",
    "pct_strings_doubled": 0.8,
    "pct_strings_over_50": 2.7,
    "range_pct": [
     -19,
     -14
    ],
    "short_strings_median_pct": 0,
    "translations": 10639
   },
   {
    "by_corpus_pct": {
     "mastodon": -46,
     "signal": -44,
     "wordpress": -45
    },
    "code": "ja",
    "expansion_pct": -45,
    "measured": 12785,
    "name": "Japanese",
    "pct_strings_doubled": 0.1,
    "pct_strings_over_50": 0.2,
    "range_pct": [
     -46,
     -44
    ],
    "short_strings_median_pct": -40,
    "translations": 12827
   },
   {
    "by_corpus_pct": {
     "mastodon": -47,
     "signal": -44,
     "wordpress": -46
    },
    "code": "ko",
    "expansion_pct": -46,
    "measured": 12814,
    "name": "Korean",
    "pct_strings_doubled": 0.1,
    "pct_strings_over_50": 0.3,
    "range_pct": [
     -47,
     -44
    ],
    "short_strings_median_pct": -50,
    "translations": 12846
   },
   {
    "by_corpus_pct": {
     "mastodon": -63,
     "signal": -64,
     "wordpress": -60
    },
    "code": "zh-TW",
    "expansion_pct": -62,
    "measured": 12348,
    "name": "Chinese (Traditional)",
    "pct_strings_doubled": 0.3,
    "pct_strings_over_50": 0.5,
    "range_pct": [
     -64,
     -60
    ],
    "short_strings_median_pct": -56,
    "translations": 12383
   },
   {
    "by_corpus_pct": {
     "mastodon": -65,
     "signal": -65,
     "wordpress": -66
    },
    "code": "zh-CN",
    "expansion_pct": -66,
    "measured": 13361,
    "name": "Chinese (Simplified)",
    "pct_strings_doubled": 0.1,
    "pct_strings_over_50": 0.1,
    "range_pct": [
     -66,
     -65
    ],
    "short_strings_median_pct": -60,
    "translations": 13400
   }
  ],
  "measured": "2026-10-23",
  "method": "- Singular strings only. ICU plural/select messages, Android \u003cplurals\u003e/\u003cstring-array\u003e and\n    gettext msgid_plural entries are skipped, because their forms legitimately differ.\n  - translatable=\"false\", fuzzy, empty and target-identical-to-source strings are excluded.\n  - Visible length = characters left after removing placeholders and markup tags, with\n    whitespace collapsed. Ratios are measured only where the source has \u003e= 2 visible characters.\n  - Placeholder integrity: the target must carry the same placeholders as the source. printf\n    placeholders are normalised to (position, conversion), so a legal reorder\n    (%s %s -\u003e %2$s %1$s) is not an error. A %d written as %s counts as \"type only\", not as a\n    defect. ICU compares the set of {argument} names.",
  "title": "UI string expansion and placeholder integrity in shipped app translations",
  "totals": {
   "apps": 3,
   "cjk_median_expansion_pct": -54,
   "defect_rate_pct": 0.11,
   "european_median_expansion_pct": 18,
   "languages": 27,
   "one_in": 950,
   "placeholder_defects": 47,
   "placeholder_type_only": 19,
   "source_strings": 13682,
   "translations": 338859,
   "with_placeholders": 44495
  }
 },
 "updated": "2026-10-23",
 "url": "https://languageops.com/translation-industry-statistics/"
}