flutter_localizations
& intl
Flutter 애플리케이션에서 다국어 지원을 구현하려면 flutter_localizations
와 intl
패키지를 사용합니다. flutter_localizations
는 Flutter 위젯의 현지화를 지원하는 반면, intl
패키지는 메시지 번역, 날짜 및 숫자 형식 지정 등의 기능을 제공합니다. 또한, Flutter Intl
플러그인을 사용하여 번역 파일 관리를 자동화할 수 있습니다.
flutter_localizations
패키지는 Flutter의 Material 및 Cupertino 위젯의 텍스트를 현지화합니다. 이 패키지를 사용하면 Flutter 기본 위젯의 텍스트가 사용자의 로케일에 맞게 자동으로 번역됩니다.intl
패키지는 메시지를 번역하고, 복수형 및 성별 처리 등의 기능을 제공합니다.pubspec.yaml
파일에 flutter_localizations
와 intl
패키지를 종속성으로 추가합니다.
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.17.0
패키지 추가:
flutter_localizations
와 intl
패키지를 pubspec.yaml
파일에 추가합니다.로케일 설정:
main.dart
파일에서 localizationsDelegates
와 supportedLocales
를 설정합니다.import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:house_of_tomorrow/util/lang/generated/l10n.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
home: HomePage(),
);
}
}
Android Studio Flutter Intl 플러그인 사용:
Flutter Intl
플러그인을 설치하고, Tools
메뉴에서 Flutter Intl
옵션을 사용하여 초기 설정을 진행합니다.번역 파일 작성:
intl_en.arb
:{
"@@locale": "en",
"title": "Hello World",
"message": "This is a localized message."
}
intl_ko.arb
:{
"@@locale": "ko",
"title": "안녕하세요",
"message": "이것은 현지화된 메시지입니다."
}
번역된 텍스트를 가져와 UI에서 사용합니다.
import 'package:house_of_tomorrow/util/lang/generated/l10n.dart';
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(S.of(context).title),
),
body: Center(
child: Text(S.of(context).message),
),
);
}