[flutter] get_it를 사용하여 플러터 앱에서 국제화 및 로컬라이제이션을 어떻게 처리하는가?

플러터(Flutter) 앱에서 국제화 및 로컬라이제이션을 처리하는 것은 사용자들에게 더욱 편리한 경험을 제공하기 위해 중요합니다. 이러한 처리를 위해 get_it 패키지를 사용할 수 있습니다. get_it 패키지는 의존성 주입을 관리하는 데 도움을 주는 강력한 도구입니다.

1. get_it 패키지 추가하기

먼저, pubspec.yaml 파일에 get_it 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 get_it을 추가합니다:

dependencies:
  get_it: ^5.0.1

그리고 패키지를 가져오기 위해 pub get 명령어를 실행합니다.

2. 의존성 주입 설정하기

의존성 주입을 설정하기 위해 앱 시작 시점에서 get_it을 초기화해야 합니다. 이렇게 함으로써 앱 전체에서 공유할 수 있는 주입 가능한 의존성 객체를 등록할 수 있습니다.

import 'package:get_it/get_it.dart';

final getIt = GetIt.instance;

void setupDependencies() {
  // 의존성 객체를 등록하는 코드를 작성합니다.
  // 예를 들어, 다국어 지원에 필요한 번역 리소스 클래스 등을 등록할 수 있습니다.
  
  // 예제로 다국어 지원을 위한 번역 리소스 객체를 등록하는 방법을 알아보겠습니다.
  getIt.registerSingleton<TranslationResources>(TranslationResources());
}

void main() {
  setupDependencies();
  runApp(MyApp());
}

위의 코드에서는 setupDependencies() 함수에서 번역 리소스 객체를 등록하도록 설정하였습니다. 앱 내에서 이 리소스 객체를 사용하여 다국어 지원을 처리할 수 있습니다.

3. 로컬라이제이션 처리하기

이제 get_it을 사용하여 앱에서 로컬라이제이션 처리를 할 수 있습니다. 예를 들어, 다국어 지원을 위한 번역 리소스 클래스를 만들고 해당 리소스를 사용하여 화면에 표시할 텍스트를 로컬라이즈할 수 있습니다.

import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';

class TranslationResources {
  // 여러 언어로 번역된 문자열 리소스를 가지고 있는 클래스
  // 실제로는 다국어 리소스를 로드하거나 API를 통해 가져오는 로직이 포함될 수 있습니다.
  String get helloWorld => 'Hello, world!';
  String get welcome => 'Welcome to my app!';
}

class MyApp extends StatelessWidget {
  final TranslationResources translationResources = getIt<TranslationResources>();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      home: Scaffold(
        appBar: AppBar(
          title: Text(translationResources.helloWorld),
        ),
        body: Center(
          child: Text(translationResources.welcome),
        ),
      ),
    );
  }
}

위의 코드에서는 translationResources 객체를 getIt<TranslationResources>()를 통해 가져와서 사용하고 있습니다. 이를 통해 번역 리소스의 필드들에 접근하여 화면에 다국어로 표시할 수 있습니다.

get_it 패키지를 사용하면 앱에서 국제화 및 로컬라이제이션을 처리하기 위한 의존성 주입을 간편하게 구현할 수 있습니다. 이를 통해 사용자들에게 더욱 편리한 다국어 지원을 제공할 수 있습니다.

참고 자료