[Flutter] 4개의 다국어 포장을 해봤어요. [철저한 비교]
개시하다
Fluter를 다언어로 응용한 패키지가 여러 개 있는데, 어느 것을 사용해야 좋을지 몰라서 많이 시도했어요!
이번에 비교한 것은 다음과 같은 네 가지다.마지막으로 총결산도 있으니 참고하세요.모두 샘플 코드가 첨부되어 있습니다.
flutter_localizations(Fluter SDK 표준)
이 글은 가져오는 방법에 대한 설명이 없지만 가져오는 방법에 대한 글의 링크가 있으니 참고하시기 바랍니다.
결론
제 추천은fast_i18n!
context
상수 방문 없이 방문하는 게 좋아요!저는 포장명을 싫어해요.😅다음 점은flutter_localizations!
그럼 우리 한 명씩 봅시다.
flutter_localizations
사용법
lib/l10n/app_en.arb
{
"@@locale": "en",
"title": "Flutter Sample Localizations",
"@title": {
"description": "This is Comments."
},
"message": "You have pushed the button this many times: {count}",
"@message": {
"description": "引数を与えることは出来るけど名前付き引数になりません。",
"placeholders": {
"count": {
"type": "int",
"format": "compact"
}
}
}
}
lib/l10n/app_ja.arb{
"@@locale": "ja",
"title": "多言語化サンプル",
"message": "ボタンを押した回数: {count}"
}
@@locale
에 지정된 언어입니다.description
는 주석입니다.placeholders
에서 매개변수의 유형과 형식을 지정할 수 있습니다.지정하지 않았을 때는 Object
형이다.자원 접근 방법
AppLocalizations.of(context)!.title; // => '多言語化サンプル'
AppLocalizations.of(context)!.message(_counter); // => 'ボタンを押した回数: 10'
좋은 곳
좋지 않은 곳
context
l10n.yaml
파일에 지정synthetic-package: false
하고 부하 아래 자동 생성 파일.dart_tool
을 생성하면lib
해제가져오기 방법
샘플 코드
fast_i18n
사용법
lib/i18n/strings_ja.i18n.json
{
"sample": {
"title": "多言語化サンプル",
"message": "[@:sample.title] ボタンを押した回数: $count",
"@message": "これはコメントです"
}
}
@:<リソース名>
에서 다른 리소스를 참조할 수 있습니다.리소스 이름의 시작 부분@
을 더하면 메모로 처리됩니다.매개 변수는 $count
이외에도 {count}
또는 {{count}}
일 수 있다.자원 접근 방법
t.sample.title; // => '多言語化サンプル'
t.sample.message(count: _counter); // => '[多言語化サンプル] ボタンを押した回数: 10'
명명된 매개변수로 값을 지정합니다.글로벌 인스턴스t
는 설정을 통해 앨리어스로 변경할 수 있습니다.lib/i18n/strings_ja.i18n.yaml
sample:
title: '多言語化サンプル' # これはコメントです。
message: '[@:sample.title] ボタンを押した回数: $count'
YAML 형식으로도 쓸 수 있다.lib/i18n/sample.i18n.csv
key,(comments),en,ja
title,これはコメントです。,Flutter Sample Localizations,多言語化サンプル
message,コメントはコメントとして出力されます。,[@:sample.title] You have pushed the button this many times: $count,[@:sample.title] ボタンを押した回数: $count
CSV 형식으로 작성할 수도 있습니다.첫 번째 줄의 언어 이름을 ()
로 설정하면 이 열은 주석으로 처리됩니다.좋은 곳
List
또는 Map
형식으로 정의할 수 있음context
좋지 않은 곳
build_runner
가져오기 방법
샘플 코드
easy_localization
사용법
assets/translations/ja-JP.json
{
"sample": {
"title": "多言語化サンプル",
"message": "[@:sample.title] ボタンを押した回数: {count}"
}
}
@:<リソース名>
에서 다른 리소스를 참조할 수 있습니다.자원 접근 방법
'sample.title'.tr(); // => '多言語化サンプル'
'sample.message'.tr(
namedArgs: {
'count': '$_counter',
},
);
// => '[多言語化サンプル] ボタンを押した回数: 10'
assets/translations/ja-JP.yamlsample:
title: '多言語化サンプル' # これはコメントです。
message: '[@:sample.title] ボタンを押した回数: {count}'
YAML 형식으로도 쓸 수 있다.assets/translations/ja-JP.xml
<?xml version="1.0" encoding="utf-8" ?>
<strings>
<sample.title>多言語化サンプル</sample.title>
<sample.message>[@:sample.title] ボタンを押した回数: {count}</sample.message>
</strings>
XML로 작성할 수도 있습니다.assets/translations/strings.csv
key,en_US,ja_JP
sample.title,Flutter Sample Localizations,多言語化サンプル
sample.message,[@:sample.title] You have pushed the button this many times: {count},[@:sample.title] ボタンを押した回数: {count}
CSV 형식으로 작성할 수도 있습니다.좋은 곳
사용easy_localization_loader CSV/XML/YAML
build_runner
context
Text('title').tr(); // Text widget
print('title'.tr()); // String
var title = tr('title'); // Static function
좋지 않은 곳
easy_localization_loader의 문서가 매우 적고 CSV/XML/YAML의 파일 형식을 잘 몰라요
가져오기 방법
샘플 코드
flutter_translate
사용법
assets/i18n/ja_JP.json
{
"sample": {
"title": "多言語化サンプル",
"message": "ボタンを押した回数: {count}",
}
}
자원 접근 방법translate('sample.title'); // => '多言語化サンプル'
translate(
'sample.message',
args: {
'count': _counter,
},
);
// => 'ボタンを押した回数: 10'
좋은 곳
context
build_runner
좋지 않은 곳
가져오기 방법
일본어 기사를 찾을 수 없습니다.
샘플 코드
총결산
정리를 해도 패스트예요.듣자니 i18n이 매우 좋다고 한다.꼭 해보세요!
flutter_localizations
fast_i18n
easy_localization
flutter_translate
pub.dev 👍 숫자.
-
113
1476
146
GitHub ⭐ 숫자.
-
123
607
297
1차 발행일
-
2020/07/26
2018/12/22
2019/10/10
최신 릴리즈 날짜
-
2022/04/12
2021/02/20
2021/05/08
파일 형식
ARB
JSONYAMLCSV
JSONYAMLCSVXML
JSON
리소스 파일 주석
○
○
×
×
리소스에 액세스할 때 명명된 매개변수를 사용할 수 있습니다.
×
○
△ [3]
×
자원 파일에서 다른 자원 인용
×
○
○
×
리소스에 액세스할 필요 없음
context
×○
○
○
리소스에 항상 액세스 가능
○
○
×
×
대응하는 자원 명칭 공간
×
○
○
○
리소스는
List
또는 Map
에서 정의할 수 있습니다.×
○
×
×
사전 요구 사항 없음
build_runner
○ [4] ×
○
○
샘플 코드
코드
코드
코드
코드
최후
나는 Fluter대학이라는 Flutter 엔지니어에 전문적으로 종사하는 학습 단체에 속한다.관심 있는 사람은 이 페이지부터 참가할 수 있다.
같이 읽고 싶어요.
각주
예를 들어
page1.title
와 page2.title
는 같지만 명명 공간을 분리해서 각각 처리할 수 있다↩︎버전 3.0.0↩︎
사용 가능
title
하므로 유사↩︎Map
저장 시 자동 생성 가능↩︎Reference
이 문제에 관하여([Flutter] 4개의 다국어 포장을 해봤어요. [철저한 비교]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/susatthi/articles/20220422-140216-flutter-localizations텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)