[flutter/dart] [flutter] flutter_localizations 다국어 적용하는 방법

플러터 flutter_localizations 다국어 적용하는 방법

플러터에서 사용자의 언어 설정에 따른 다국어를 적용하는 방법에 대해 알아보겠습니다.

 

다국어 패키지 설치

우선 flutter_localizations 패키지를 설치하기 위해 아래 명령어를 실행합니다.

$ flutter pub add flutter_localizations --sdk=flutter
$ flutter pub add intl:any

 

패키지 설치가 끝나고 pubspec.yaml 파일을 열어보면 아래와 같이 필요한 패키지가 설치된 것을 확인할 수 있습니다. 

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations: # 다국어 패키지
    sdk: flutter
  intl: any # 포맷 패키지

 

그러고 나서 pubspec.yaml 파일에 아래와 같이 generate: true 값을 추가합니다.

flutter:
  uses-material-design: true
  generate: true

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

l10n.yaml 파일 생성

이제 다국어 구성 파일인 l10n.yaml 파일을 프로젝트의 루트 경로에 생성하고 아래 코드를 추가합니다.

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

 

언어 파일 생성

마지막으로 지역별 언어를 정의하기 위해 lib/l10n/ 위치에 app_en.arb, app_ko.arb와 같이 앱에서 사용할 언어 파일을 만듭니다.

// lib/l10n/app_en.arb
{"hello": "Hello."}

// lib/l10n/app_ko.arb
{"hello": "안녕하세요."}

 

다국어 사용

다국어 적용을 위한 준비가 끝났습니다. 이제 앱 화면에 어떻게 적용하는지 알아보겠습니다.

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; // Add this line
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // Add this line
...

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Localization Tutorial',
      debugShowCheckedModeBanner: false,
      localizationsDelegates: const [
        AppLocalizations.delegate, // Add this line
        GlobalMaterialLocalizations.delegate, // Add this line
        GlobalWidgetsLocalizations.delegate, // Add this line
        GlobalCupertinoLocalizations.delegate, // Add this line
      ],
      supportedLocales: const [
        Locale('en'),
        Locale('ko'),
      ],
      theme: Themes.light,
      darkTheme: Themes.dark,
      home: const HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});
  
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text(
        AppLocalizations.of(context)!.hello, // 다국어 사용
      ),
    );
  }
}[출처] https://dev-nam.tistory.com/51

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED