동도리 개발 로그

플러터(Flutter) - 다국어 처리 본문

개발/Flutter

플러터(Flutter) - 다국어 처리

동돌이 2022. 1. 28. 13:42
반응형

앱에서 다국어 처리를 위해 Flutter 에서 제공하는 라이브러리를 사용해도되지만

나는 Getx를 사용하기 때문에 해당 라이브러리에서 제공하는 방식을 사용한다.

https://github.com/jonataslaw/getx/blob/master/README.ko-kr.md#%EA%B5%AD%EC%A0%9C%ED%99%94

 

GitHub - jonataslaw/getx: Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies eas

Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get. - GitHub - jonataslaw/getx: Open screens/snackbars/dialogs/bottomSheets without c...

github.com

이부분을 보면 포스팅 할 것도 없지만 잊어먹지 않기 위해서 하는 작업이니..

 

 

아래와 같이 messages.dart 파일을 생성한다. 위치는 아무곳이나

import 'package:get/get.dart';
import 'locale/en/en.dart';
import 'locale/ko/ko.dart';

class Messages extends Translations {
  @override
  Map<String, Map<String, String>> get keys =>{
    'ko_KR': koKR,
    'en_US': enUS
  };
}

 

 

en.dart 과 ko.dart 파일을 각각 생성


//en.dart
const Map<String, String> enUS = {
   	'test' : 'TEST',
}

//ko.dart
const Map<String, String> koKR = {
	'test' : '테스트',
}

 

경로만 잘 지정하고 

 main.dart 에서 GetMaterialApp에 추가해준다.

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
    ...
    translations: Messages(),
    local: Get.deviceLocale,
    fallbackLocale: Locale('en', 'US'),
    ...
    )
    }
}

사용 방법은 .tr을 붙이면 번역본을 리턴해 줄 것이다. 

Text('test'.tr);

 

반응형