ioDeviceLocale function
기기의 현재 언어를 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;
}