[flutter] 플러터 intl을 사용해서 앱의 로케일을 디바이스 기본 설정에 맞게 변경할 수 있나요?
로케일은 앱이 특정 지역에 맞게 언어, 시간, 날짜 등을 표시하는 방식을 말합니다. 디바이스의 기본 설정에 따라 앱의 로케일을 변경하려면 intl 패키지를 사용하면 됩니다.
먼저, pubspec.yaml
파일에 intl 패키지를 추가합니다:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.17.0
다음으로, main.dart
파일에서 intl 패키지를 import 합니다:
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
그리고 앱의 MaterialApp 위젯에서 supportedLocales
속성을 정의하고, localeResolutionCallback
속성을 사용하여 디바이스의 기본 로케일을 가져오는 코드를 작성합니다:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
supportedLocales: [
const Locale('en', 'US'), // 영어
const Locale('ko', 'KR'), // 한국어
],
localeResolutionCallback: (locale, supportedLocales) {
// TODO: 디바이스의 기본 로케일을 가져오는 로직 작성
// 예시: Locale('ko', 'KR') 반환
},
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
// 다른 로케일izationDelegate 추가
],
// 나머지 앱 코드
);
}
}
위 코드에서 supportedLocales
속성에는 앱에서 지원하는 로케일을 나열합니다. localeResolutionCallback
속성에서는 디바이스의 기본 로케일을 가져오는 로직을 작성해야 합니다. 로직에 따라 알맞은 Locale을 반환하도록 구현해야 합니다.
intl 패키지를 사용하여 앱 내에서 다국어 지원을 할 수 있습니다. 예를 들어 지원하는 로케일에 맞게 문자열을 번역하거나, 날짜와 시간을 로케일에 맞게 표시할 수 있습니다.
이렇게 하면 플러터 앱의 로케일을 디바이스의 기본 설정에 맞게 변경할 수 있습니다. 또한 intl 패키지를 사용하여 로케일에 따라 앱의 다국어 지원을 쉽게 구현할 수 있습니다.
참고 자료: