【Flutter】l10n 현지화(다국어 대응)에 대응
Flutter의 stable이 1.22.0으로 업데이트
1.22.0 업데이트와 함께 다국어 지원이 포함되었습니다.
그래서, 조속히 시험해 보았습니다.
공식 문서는 이쪽
완성 이미지는 이쪽
htps : // 기주 b. 코 m / 테츠키 ck / 사과 lf
App Store는 여기
Google Play 스토어는 여기
일본어판
영어 버전
인도네시아어 버전
STEP1: 플러그인 가져오기
pubspec.yaml에 다음을 추가합니다. pub get 을 실행할 때마다 다국어 대응의 파일이 자동 생성되게 됩니다.
pubspec.yaml
dependencies:
flutter:
sdk: flutter
# Internationalization support.
flutter_localizations:
sdk: flutter
intl: 0.16.1
# the rest of your dependencies
flutter:
# Adds code generation (synthetic package) support
generate: true
2단계: l10n.yaml 파일 생성
루트 바로 아래에
l10n.yaml
를 만듭니다.작성 후, 이하를 추기.
l10n.yaml
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
arb-dir
는 l10n 파일의 디렉토리를 지정합니다. 이 디렉토리에는 ".arb"형식의 파일이 들어 있습니다.template-arb-file
응용 프로그램이 지원하는 모든 메시지와 각 메시지에 대한 설명을 정의하는 파일을 지정합니다. 이 파일은 arb-dir에 만들어야 합니다.output-localization-file
응용 프로그램이 가져올 Dart 클래스 파일을 정의합니다.3단계: 다국어 지원 파일 만들기
lib/l10n 아래에
.arb
형식의 파일을 생성합니다.app_en.arb
{
"@@locale": "en",
"rate": "Rate",
"@rate": {
"description": "rate title label"
},
"player": "Player",
"@player": {
"description": "number of player label"
},
"shake": "Shake!!",
"@shake": {
"description": "start create random number"
},
"allowDuplicateNumber": "Allow duplicate number",
"@allowDuplicateNumber": {
"description": "Allow duplicate number"
},
"noServiceMessage": "Not compatible with Android.\nPlease wait for a while as it is currently under development.",
"@noServiceMessage": {
"description": "Not compatible with Android.Please wait for a while as it is currently under development."
},
"feedback": "Feedback",
"@feedback": {
"description": "feedback"
},
"privacyPolicy": "Privacy policy",
"@privacyPolicy": {
"description": "Privacy policy"
}
}
app_en.arb
{
"@@locale": "ja",
"rate": "レート",
"player": "プレイヤー数",
"shake": "乱数生成",
"allowDuplicateNumber": "重複を許可",
"noServiceMessage": "Androidには対応しておりません。\n現在開発中のためしばらくお待ち下さい。",
"feedback": "フィードバック",
"privacyPolicy": "プライバシー・ポリシー"
}
app_id.arb
{
"@@locale": "id",
"rate": "menilai",
"player": "Jumlah pemain",
"shake": "Generasi acak",
"allowDuplicateNumber": "Izinkan duplikasi",
"noServiceMessage": "Tidak kompatibel dengan Android.\nHarap tunggu sebentar karena saat ini sedang dalam pengembangan.",
"feedback": "Umpan balik",
"privacyPolicy": "Rahasia pribadi"
}
위에서 만든 후에
flutter pub get
를 실행하여 파일을 자동으로 생성합니다.STEP4: localization의 delegate
main.dart
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // Add this line.
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
// Add the `localizationsDelegate` and `supportedLocales` lines.
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
STEP5: 앱 내에서 사용
플러그인을 가져옵니다.
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
String으로서 이하와 같이 취급할 수 있습니다.
AppLocalizations.of(context).privacyPolicy
Reference
이 문제에 관하여(【Flutter】l10n 현지화(다국어 대응)에 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tetsukick/items/962505028d14006af370텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)