다국어 지원은 애플리케이션이 국제적으로 사용될 수 있도록 하는 중요한 기능입니다. 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.dart
와 app_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 패키지 문서를 참고하시기 바랍니다.