플러터:다중언어: 두 판 사이의 차이
보이기
잔글편집 요약 없음 |
|||
| 4번째 줄: | 4번째 줄: | ||
<code>flutter_localizations</code> + <code>intl</code> + ARB 파일 구조로 만드는 것이 공식. | <code>flutter_localizations</code> + <code>intl</code> + ARB 파일 구조로 만드는 것이 공식. | ||
= 사전 준비 = | |||
=== 패키지 설치 === | === 패키지 설치 === | ||
| 58번째 줄: | 58번째 줄: | ||
], | ], | ||
)</syntaxhighlight> | )</syntaxhighlight> | ||
= 사용 = | |||
{| class="wikitable" | |||
|+ | |||
!과정 | |||
!사용 | |||
!비고 | |||
|- | |||
|클래스 정의. 로컬라이제이션 객체 생성. | |||
|final l10n = AppLocalizations.of(context)!; | |||
| | |||
* 약어 규칙. l10n = localization 그냥 가운데 10자라서 10이다;; | |||
* 느낌표는 null이 아님을 보장해야 한다는 의미. | |||
* context는 빌드에서 사용되는 context. | |||
|- | |||
|사용 | |||
|Text(l10n .hello) | |||
|hello에 매칭된 문자열을 가져온다. | |||
|} | |||
=== 언어파일에서 변수 사용하는 법 === | |||
아래처럼 설정한 후, 호출할 때 변수를 전달한다.<syntaxhighlight lang="json">{ | |||
"hello": "Hello, {name}", | |||
"@hello": { // 사용되지 않는, 문자 설명용. 어디서 쓰는지 등등 | |||
"description": "Hello text" | |||
}, | |||
"login": "Login" | |||
}</syntaxhighlight>Text(AppLocalizations.of(context)!.hello("철수")) | |||
변수가 여러 개인 경우, 그냥 함수처럼 쓰면 된다.(특이하게도 변수명을 지정하는 방식으로는 안된다. 이전에 변수명 지정해서 순서대로 입력하는 게 일반적.) | |||
2026년 3월 18일 (수) 01:26 판
- 플러터:개요
- 플러터:실행
- 플러터:개념 잡기
- 권한 사용
- 위젯
- 플러터:DB연결
- 플러터:HIVE
- 플러터:Firebase(미완)
- 플러터:MySQL(미완)
- 디자인
- 편의
- 플러터:배포
- 플러터:배포(안드로이드)(미완)
- 플러터:배포(iOS)(미완)
- 플러터:참고자료
- 플러터:위젯
- 플러터:구글 AdMob(미완)
- 플러터:라이브러리
개요
flutter_localizations + intl + ARB 파일 구조로 만드는 것이 공식.
사전 준비
패키지 설치
다음과 같은 형태로.
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.19.0
flutter:
generate: true
코드 생성
다음 명령을 실행하면 번역데이터 ARB 파일을 기반해석하여 dart로 자동 생성된다.
flutter gen-l10n
생성 위치
lib/gen_l10n/app_localizations.dart
폴더 및 언어 파일 생성
lib/l10n/app_en.arb
{
"hello": "Hello",
"@hello": { // 사용되지 않는, 문자 설명용. 어디서 쓰는지 등등
"description": "Hello text"
},
"login": "Login"
}
lib/l10n/app_ko.arb
{
"hello": "안녕하세요",
"login": "로그인"
}
마테리얼 앱 설정
import 'package:flutter_localizations/flutter_localizations.dart';
import 'l10n/app_localizations.dart';
MaterialApp(
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('en'),
Locale('ko'),
],
)
사용
| 과정 | 사용 | 비고 |
|---|---|---|
| 클래스 정의. 로컬라이제이션 객체 생성. | final l10n = AppLocalizations.of(context)!; |
|
| 사용 | Text(l10n .hello) | hello에 매칭된 문자열을 가져온다. |
언어파일에서 변수 사용하는 법
아래처럼 설정한 후, 호출할 때 변수를 전달한다.
{
"hello": "Hello, {name}",
"@hello": { // 사용되지 않는, 문자 설명용. 어디서 쓰는지 등등
"description": "Hello text"
},
"login": "Login"
}
Text(AppLocalizations.of(context)!.hello("철수"))
변수가 여러 개인 경우, 그냥 함수처럼 쓰면 된다.(특이하게도 변수명을 지정하는 방식으로는 안된다. 이전에 변수명 지정해서 순서대로 입력하는 게 일반적.)