Flutter 앱을 개발하면서 많은 사용자를 확보하기 위해서 플러터 다국어 지원이 필요합니다. Easy Localization 패키지를 사용하면 간단하게 여러 언어를 지원할 수 있습니다. 이번 글에서는 패키지의 설정, 그리고 사용 방법에 대해서 작성하겠습니다.
플러터 다국어 지원 방법
Easy Localization 패키지 설치
먼저 Easy Localization 패키지를 설치해야 합니다. pubspec.yaml 파일에 패키지를 추가합니다.
dependencies: flutter: sdk: flutter easy_localization: ^3.0.0
JSON파일 생성
프로젝트에 assets/langs 폴더를 생성하고 각 언어에 대한 JSON파일을 생성합니다. 예를 들어, 영어(en.json)와 한국어(ko.json) 파일을 생성합니다.
en.json
{ "hello": "Hello", "welcome": "Welcome to our app!" }
ko.json
{ "hello": "안녕하세요", "welcome": "우리 앱에 오신 것을 환영합니다!" }
Json파일 등록
pubspec.yaml 파일에 다음 코드를 추가하여 JSON 파일을 등록합니다.
flutter: assets: - assets/langs/
Easy Localization 초기화
main.dart 파일에서 Easy Localization을 초기화합니다. main.dart 파일을 다음과 같이 수정합니다.
import 'package:flutter/material.dart'; import 'package:easy_localization/easy_localization.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); runApp( EasyLocalization( supportedLocales: [Locale('en'), Locale('ko')], path: 'assets/langs', // JSON 파일 경로 fallbackLocale: Locale('en'), child: MyApp(), ), ); }
다국어 지원 적용
아래 코드에서 tr() 메서드를 사용하여 번역된 텍스트를 표시하고, 버튼을 통해 언어를 변경할 수 있습니다.
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', localizationsDelegates: context.localizationDelegates, supportedLocales: context.supportedLocales, locale: context.locale, home: Scaffold( appBar: AppBar( title: Text('hello').tr(), // 'hello' 키를 사용하여 번역된 텍스트 표시 ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('welcome').tr(), // 'welcome' 키를 사용하여 번역된 텍스트 표시 SizedBox(height: 20), ElevatedButton( onPressed: () { // 버튼을 눌렀을 때 언어를 변경 context.setLocale(context.locale.languageCode == 'en' ? Locale('ko') : Locale('en')); }, child: Text('Change Language'), // 버튼 텍스트 ), ], ), ), ), ); } }
결과
아래 이미지에 보이는 change language 버튼을 누르면 다른 언어로 변경이 됩니다.