ioDeviceLocale function

String? ioDeviceLocale()

기기의 현재 언어를 BCP 47 태그로. RynL10nClient(locale: ...)에 넘겨 쓴다.

Platform.localeName은 POSIX 형식(ko_KR.UTF-8)이라 그대로는 fallback 체인(3.1)이 절단하지 못한다 — 인코딩 접미사를 떼고 _를 -로 바꿔 BCP 47로 만든다. 판별 불가면 null.

Flutter 앱은 이것 대신 위젯 트리의 로케일을 쓰는 편이 낫다 — Localizations.localeOf(context).toLanguageTag()가 앱에 실제 적용된 언어이고, Flutter Web에서는 dart:io를 import할 수 없다.

Implementation

String? ioDeviceLocale() {
  final raw = Platform.localeName.split('.').first.replaceAll('_', '-').trim();
  if (raw.isEmpty || raw == 'C' || raw == 'POSIX') return null;
  return raw;
}