[flutter] flutter_localizations를 사용한 앱의 다국어 지원 쇼핑 기능 구현 방법

다국어 지원은 애플리케이션이 국제적으로 사용될 수 있도록 하는 중요한 기능입니다. Flutter에서는 flutter_localizations 패키지를 사용하여 앱을 여러 언어로 번역할 수 있습니다. 이 기능을 활용하여 쇼핑 앱에서 간단한 다국어 지원을 구현하는 방법을 알아보겠습니다.

목차

다국어 지원을 위한 flutter_localizations 패키지 추가

먼저, pubspec.yaml 파일에 flutter_localizations 패키지를 추가해야 합니다.

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  ...

flutter:
  ...
  supportedLocales:
    - en // 영어
    - ko // 한국어
  ...

flutter_localizations 패키지는 Flutter에서 지원되는 여러 언어의 localizations을 포함하고 있습니다. 또한, supportedLocales를 사용하여 어떤 언어를 지원할지를 명시할 수 있습니다.

번역 파일 추가

번역을 위한 각 언어의 문자열은 별도의 번역 파일에 저장됩니다.

예를 들어, lib/l10n 디렉토리에 app_localizations.dartapp_localizations_<locale>.dart 파일을 추가합니다.

// lib/l10n/app_localizations.dart

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

class AppLocalizations {
  static const LocalizationsDelegate<AppLocalizations> delegate = _AppLocalizationsDelegate();

  static Future<AppLocalizations> load(Locale locale) {
    final String name = locale.countryCode.isEmpty ? locale.languageCode : locale.toString();
    final String localeName = Intl.canonicalizedLocale(name);

    return initializeMessages(localeName).then((_) {
      Intl.defaultLocale = localeName;
      return AppLocalizations();
    });
  }

  String get title {
    return Intl.message(
      '쇼핑 앱',
      name: 'title',
      desc: '앱의 타이틀',
    );
  }
}

app_localizations_ko.dart와 같이 각 언어에 맞는 문자열을 추가합니다.

// lib/l10n/app_localizations_ko.dart

import 'app_localizations.dart';

class AppLocalizationsKo extends AppLocalizations {
  String get title {
    return '쇼핑 앱';
  }
}

다국어 지원 테스트

main.dart에서 다국어 지원을 테스트합니다.

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:my_app/l10n/app_localizations.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      supportedLocales: [
        const Locale('en'), // 영어
        const Locale('ko'), // 한국어
      ],
      localizationsDelegates: [
        AppLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      localeResolutionCallback: (locale, supportedLocales) {
        // 언어 지원이 가능한 경우 해당 언어로 설정
        for (var supportedLocale in supportedLocales) {
          if (supportedLocale.languageCode == locale.languageCode) {
            return supportedLocale;
          }
        }
        // 지원되지 않는 경우 영어로 설정
        return supportedLocales.first;
      },
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(AppLocalizations.of(context).title),
      ),
      body: Center(
        child: Text(
          '다국어 지원 쇼핑 앱',
          style: TextStyle(fontSize: 20),
        ),
      ),
    );
  }
}

이제 앱을 실행하면 flutter_localizations 패키지를 사용하여 쇼핑 앱을 다국어로 지원하는 기능이 구현된 것을 확인할 수 있습니다.

위의 예제는 간단한 다국어 지원을 구현하기 위한 기본적인 방법을 보여주고 있습니다. 앱의 복잡도에 따라 더 많은 다국어 지원을 구현할 수 있습니다.

더 많은 정보는 flutter_localizations 패키지 문서를 참고하시기 바랍니다.