flutter에서 쉽게 다국어 처리 - 현지화하기 - localization
개발일지/Flutter

flutter에서 쉽게 다국어 처리 - 현지화하기 - localization

인사말

flutter에서 다국어처리를 위해 flutter.dev에서 가이드하는 flutter_localizations를 사용하는데요.
flutter_localizations의 단점으로 context가 없으면 다국어 처리가 힘든점과 다국어 처리시
코드길이가 길어지고 관리가 힘든 점이 있습니다.

그래서 찾아보니 easy_localization 패키지가 있어 사용해보려고합니다.

사용 방법

1. pubspec.yaml 에 easy_localization 추가합니다.

저는 csv파일을 이용할거기 때문에 easy_localization_loader 라이브러리도 추가할 것입니다.

dependencies:
    easy_localization: ^2.3.3
    easy_localization_loader: ^0.0.2

2. 인스톨

$ flutter pub get

3. main.dart 수정

    import 'package:easy_localization/easy_localization.dart';
    import 'package:easy_localization_loader/easy_localization_loader.dart';

    void main() {
      runApp(EasyLocalization(
        child: MyApp(),
        supportedLocales: [
          Locale('en', 'US'),
          Locale('ko', 'KR')
        ],
        path: 'assets/langs.csv',
        assetLoader: CsvAssetLoader(),
      ));
    }

4. assets/langs.csv 작성

    str,ko_KR,en_US
    title,테스트 애플리케이션,TestApplication
    msg,일 {} 삼 {},One {} Three {}
    msg_named,일 이 삼 {four},One Two Three {four}

5. 사용하기

locale이 한국일 경우

    import 'package:easy_localization/easy_localization.dart';

    Text('title').tr(); // Text widget
    => 테스트 애플리케이션
    print('title'.tr()); // String
    => 테스트 애플리케이션
    var title = tr('title'); // Static function
    => 테스트 애플리케이션
    Text('msg').tr(args: ['2', '4']); // args
    => 일 2 삼 4
    Text('msg_named').tr(namedArgs: {'four': '4'}); // namedArgs
    => 일 이 삼 4

에러 발생할 경우에는..

다국어 에러 발생시 아래와 같은 화면시 표시되니 코드를 확인해보세요.  

추가적으로 복잡한 다국어 처리는 아래 사이트를 참고하면 됩니다.
그리고 저는 csv파일을 사용하였는데 json, keys 포맷으로 다국어 처리하는 방법도 있으니 입맛에 맞게 사용하면 될 것 같습니다. 이 것 또한 아래 사이트에서 참고하시면 좋을 것 같습니다.

참조

https://pub.dev/packages/easy_localization

반응형