Does Your Code Pass the Turkey Test? (2008)

Date and time formats

  • Strong advocacy for ISO 8601 (YYYY‑MM‑DD, big‑endian) because it sorts correctly and avoids ambiguity between US MDY and EU DMY.
  • Debate over whether DMY “makes sense”:
    • Pro: aligns with how many languages naturally say dates, and people think in day → month → year importance.
    • Con: inconsistent with how numbers and times are normally ordered; some argue only big‑endian or little‑endian systems are coherent.
  • MDY defended as matching spoken American English (“September 11, 2001”), but others note this is not universal even among English dialects.
  • Time notation: 24‑hour and y‑m‑d h:m:s praised as unambiguous; 12‑hour UTC displays described as particularly confusing.
  • Several examples of locale-specific date parsing bugs, including region‑dependent month abbreviations (“Sep” vs “Sept”) breaking parsing on certain servers.

Turkey/Türkiye naming and exonyms

  • Many note the original “Turkey test” now fails itself since the country prefers “Türkiye”.
  • Disagreement over whether this request is “heavy‑handed” or normal, with comparisons to other country name changes (e.g., Côte d’Ivoire) and long‑standing exonyms (Germany, Japan, Mexico, etc.).
  • Some argue each language can keep its own names; others say it’s reasonable to honor a country’s preferred self‑designation, at least in formal contexts.
  • Practical issues: diacritics and ASCII, transliteration of ü/ö and Turkish characters, and confusion between the country and the bird mainly in English.

Localization pitfalls and case/locale issues

  • Repeated horror stories about locale‑dependent APIs:
    • Java Calendar returning Buddhist calendar in Thai locales.
    • Case conversion (tolower) and Turkish dotted/dotless “i” breaking file/module loading.
    • Command‑line argument case handling differing between Unix tools and Windows.
  • Criticism that many libraries are locale‑sensitive by default, causing subtle bugs if locales aren’t explicitly fixed.

Broader internationalization edge cases

  • Mention of decimal separators, thousands separators, localized month names, non‑Latin scripts, and very long personal names.
  • Address and name order conventions (surname‑first cultures, street‑first addresses) highlighted as frequent oversights.
  • Several commenters see the “Turkey test” as one instance of a broader “not‑America” test: software often assumes US formats and fails elsewhere.

Meta

  • The article is from 2008; some feel the insights are now obvious, others say similar bugs remain widespread.