[flutter] get_it를 사용하여 플러터 앱에서 다국어 지원을 어떻게 구현하는가?

소개

플러터(Flutter)는 크로스 플랫폼 모바일 앱 개발을 위한 프레임워크로, 다국어 지원은 많은 앱이 필요로하는 중요한 기능입니다. 이번 포스트에서는 get_it 패키지를 사용하여 플러터 앱에서 다국어 지원을 구현하는 방법에 대해 알아보겠습니다.

get_it 패키지란?

get_it은 의존성 관리를 위한 패키지로, 간편한 의존성 주입(Dependency Injection)을 제공합니다. 의존성 주입은 객체 간의 종속성을 외부에서 설정하는 방식으로, 코드를 보다 유연하고 테스트하기 쉽게 만들어줍니다.

다국어 지원을 위한 구현 방법

  1. get_it 패키지를 프로젝트에 추가합니다. pubspec.yaml 파일의 dependencies 섹션에 다음과 같이 추가합니다:
dependencies:
  flutter:
    sdk: flutter
  get_it: ^5.0.6
  1. get_it 패키지를 import 합니다:
import 'package:get_it/get_it.dart';
  1. get_it을 초기화하고 다국어 관련 서비스를 등록합니다. 앱이 시작될 때 한 번만 호출되는 초기화 코드를 작성합니다. 이 예제에서는 LocaleService라는 다국어 서비스를 사용합니다:
void main() {
  // GetIt 초기화
  GetIt.instance.init();

  // 다국어 서비스 등록
  GetIt.instance.registerLazySingleton<LocaleService>(() => LocaleService());
  
  runApp(MyApp());
}
  1. LocaleService 클래스를 작성합니다. 이 클래스는 앱의 현재 언어 코드(Locale)를 관리하고, 해당 언어에 대한 텍스트 리소스를 제공합니다. getLocale 함수는 현재 언어 코드를 반환하며, getString 함수는 지정된 키에 해당하는 다국어 텍스트를 반환합니다:
class LocaleService {
  Locale _currentLocale = const Locale('en');

  Locale getLocale() {
    return _currentLocale;
  }

  String getString(String key) {
    // 다국어 텍스트 리소스를 가져오는 로직 작성
    // 예시로 간단하게 Map을 사용하였습니다.
    Map<String, String> resources = {
      'title': '앱 타이틀',
      'button_label': '클릭해주세요',
    };

    return resources[key] ?? '';
  }
}
  1. 앱의 다국어 텍스트를 표시할 위젯에서 get_it을 사용하여 LocaleService 인스턴스를 가져와서 다국어 텍스트를 표시합니다. 예를 들어, HomePage 위젯에서 앱의 타이틀과 버튼의 레이블을 다국어로 표시하고 싶다면 다음과 같이 코드를 작성할 수 있습니다:
class HomePage extends StatelessWidget {
  final LocaleService _localeService = GetIt.instance<LocaleService>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(_localeService.getString('title')),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: () {},
          child: Text(_localeService.getString('button_label')),
        ),
      ),
    );
  }
}

이와 같이 get_it 패키지를 사용하여 플러터 앱에서 다국어 지원을 구현할 수 있습니다. LocaleService를 통해 다국어 리소스를 관리하고, 필요한 곳에서 해당 리소스를 사용할 수 있게 됩니다.

정리

이번 포스트에서는 get_it 패키지를 사용하여 플러터 앱에서 다국어 지원을 구현하는 방법을 알아보았습니다. get_it을 사용하면 의존성 주입을 통해 다국어 서비스를 간편하게 관리할 수 있으며, 앱의 언어별 리소스를 손쉽게 제공할 수 있습니다.

더 많은 정보를 원하신다면 공식 get_it 문서를 참고하시기 바랍니다.