Skip to content

[Bug]: iPhone 1.2.0 voice input recognizes Korean speech as unrelated English words #12743

Description

@yoonpooh

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/mobile

Summary

On T3 Code for iPhone 1.2.0, speaking Korean into the built-in composer microphone produces unrelated English words that sound similar to the Korean speech. This is phonetic misrecognition, not translation into meaningful English. The iPhone is configured in Korean.

Steps to reproduce

  1. Use T3 Code 1.2.0 on an iPhone configured in Korean.
  2. Start voice input using the T3 composer microphone (not the iOS keyboard dictation button).
  3. Speak Korean and confirm transcription.
  4. Observe the inserted draft text.

These describe the reporter's observed workflow; independent reproduction on another iPhone has not been performed.

Expected behavior

Korean speech should produce Korean text when the recognition language is Korean. If the device/engine does not support Korean, show an explicit unsupported-language message rather than interpreting the audio as English.

Actual behavior

The resulting text consists of phonetically similar but unrelated English words.

Impact

Major degradation or frequent failure: built-in Korean voice input is unusable for the reporter.

Version or commit

Installed iPhone app: 1.2.0.
Source inspected: the commit bumping the mobile version to 1.2.0, 6dbea7ed0947. The exact App Store build/OTA revision has not been verified.

Environment

  • iPhone; system language reported as Korean.
  • Exact iPhone model and iOS version are not yet recorded.
  • This report concerns the native iPhone composer voice input, not desktop voice input.

Investigation: suspected locale selection issue, not a confirmed root cause

The implementation derives its recognition language from:

function getDeviceLocale(): string {
  return Intl.DateTimeFormat().resolvedOptions().locale;
}

It then passes that locale to AppleTranscription.prepare(locale) and transcribes with the resolved locale. There is no explicit voice-language override in this path.

Source at the 1.2.0 version-bump commit

A separate, minimal Foundation test on a Korean-configured Mac demonstrated that the current app locale can differ from the user's preferred language:

import Foundation
print(Locale.preferredLanguages)
print(Locale.current.identifier)
print(Bundle.main.preferredLocalizations)

For a test app bundle with CFBundleDevelopmentRegion = en and only an en.lproj resource directory:

preferred: ["ko-KR"]
current: en_KR
bundle: ["en"]

After adding ko.lproj to that same test bundle:

preferred: ["ko-KR"]
current: ko_KR
bundle: ["ko"]

This is supporting evidence for a locale mismatch hypothesis, not an iPhone reproduction or a runtime trace from T3. en_KR represents English with the Korea region, not Korean. The affected iPhone's actual Intl locale and the locale returned by AppleTranscription.prepare() have not been captured.

Suggested investigation

  • Capture the user's preferred languages, the Intl locale, and the locale returned by AppleTranscription.prepare() on the affected iPhone.
  • Check whether the app's supported localizations cause an English locale to be selected despite a Korean system language.
  • Consider selecting the recognition language from the user's preferred language or exposing a voice-language selector, while retaining Apple's supported-locale checks.

Logs or stack traces

No iPhone runtime logs or audio recordings are available. Source review and the separate macOS locale experiment were performed with AI assistance.

Workaround

No workaround has been verified on the affected iPhone.

Related discussion

Chinese speech recognition and desktop composer voice #10489 discusses a related language-selection concern; this report is specifically about Korean misrecognition on iPhone 1.2.0.

Activity

  1. added
    acceptedfeature request accepted
    bugSomething is broken or behaving incorrectly.
    via-triageFiled through npx t3 triage
    on Sep 20, 2026
  2. juliusmarminge commented on Sep 20, 2026

    @juliusmarminge
    Member

    Triage

    This looks like a real iOS voice-input locale bug, not translation and not keyboard dictation.

    On 1.2.0 (and still on current main / 1.2.1), the composer mic binds Apple’s on-device transcriber with:

    Intl.DateTimeFormat().resolvedOptions().locale

    There is no preferred-language read and no voice-language setting. T3 Code’s iOS app does not declare extra localizations, so a Korean-configured iPhone commonly gets an app locale like en_KR / en-KR (English + Korea region). Apple’s SpeechTranscriber.supportedLocale(equivalentTo:) then picks an English equivalent. English is supported, so we never show “unsupported language” — we just transcribe Korean audio as English. That matches the phonetic-English result.

    Apple’s iOS 26 SpeechTranscriber supported list includes ko_KR, so Korean should work once we request it.

    Not confirmed on device: no iPhone model / iOS version, and no dump of preferred languages, the Intl locale, or the locale returned by AppleTranscription.prepare(). The macOS en_KR experiment in the report is supporting evidence only.

    Related

    Next step

    Bind recognition to the user’s preferred language (Locale.preferredLanguages / equivalent), then keep Apple’s supported-locale and asset checks. A settings picker can come later; it does not fix the default. Adding ko.lproj only to flip Locale.current is the wrong primary fix.

    If you can, please add iPhone model, iOS version, and (if easy) the Intl locale plus preferred languages from the affected phone. Not required to start the fix.

  3. Gitarcitano commented on Oct 5, 2026

    @Gitarcitano

    Hey @juliusmarminge, adding another data point here. I'm hitting the same bug with Brazilian Portuguese, so it's not only Korean or German.

    My setup:

    • iPhone, iOS 27
    • T3 Code 2.0.0 (105) via TestFlight
    • Device language Portuguese (Brazil), region Brazil

    The mic button shows up and there is no "unsupported language" error, but when I talk in Portuguese the transcript is a bunch of wrong words, like the recognizer was expecting English. That matches your diagnosis.

    I also looked at the sources to double check the root cause:

    • Hermes getDefaultLocale() (lib/Platform/Intl/PlatformIntlApple.mm) returns [[NSLocale currentLocale] localeIdentifier], so Intl follows the app locale.
    • React Native's RCTSettingsManager exposes [NSUserDefaults dictionaryRepresentation] as constants, so Settings.get("AppleLanguages") gives the preferred languages with no native change.

    There is already an open PR for this: #13312, which reads AppleLanguages through Settings (JS only). Just linking it here since the comments don't mention it yet.

    I have a Mac, so I can build a dev client and test #13312 on my phone. I can also log the real Intl locale and AppleLanguages on the device if you want that for the issue. Let me know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    acceptedfeature request acceptedbugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions