플러터:다중언어: 두 판 사이의 차이
보이기
잔글 →사용 |
|||
| 66번째 줄: | 66번째 줄: | ||
!비고 | !비고 | ||
|- | |- | ||
|클래스 정의. 로컬라이제이션 객체 | |클래스 정의. 로컬라이제이션 객체 가져오기. | ||
현재 locale에 맞는 객체를 반환한다. | |||
|final l10n = AppLocalizations.of(context)!; | |final l10n = AppLocalizations.of(context)!; | ||
| | | | ||
* 약어 규칙. l10n = localization 그냥 가운데 10자라서 10이다;; | * 약어 규칙. l10n = localization 그냥 가운데 10자라서 10이다;; | ||
* 느낌표는 null이 아님을 보장해야 한다는 의미. | * 느낌표는 null이 아님을 보장해야 한다는 의미. | ||
* context는 빌드에서 사용되는 | * context는 빌드에서 사용되는 BuildContext 객체. | ||
|- | |- | ||
|사용 | |사용 | ||
|Text(l10n .hello) | |Text(l10n.hello) | ||
|hello에 매칭된 문자열을 가져온다. | |hello에 매칭된 문자열을 가져온다. | ||
|} | |} | ||
| 87번째 줄: | 88번째 줄: | ||
}</syntaxhighlight>Text(AppLocalizations.of(context)!.hello("철수")) | }</syntaxhighlight>Text(AppLocalizations.of(context)!.hello("철수")) | ||
변수가 여러 개인 경우, 그냥 함수처럼 쓰면 된다.(특이하게도 변수명을 지정하는 방식으로는 안된다. 이전에 변수명 지정해서 순서대로 입력하는 게 일반적.) | 변수가 여러 개인 경우, 그냥 함수처럼 쓰면 된다.(특이하게도 변수명을 지정하는 방식으로는 안된다. 사용 이전에 변수명 지정해서 순서대로 입력하는 게 일반적.) | ||
2026년 3월 18일 (수) 01:27 판
- 플러터:개요
- 플러터:실행
- 플러터:개념 잡기
- 권한 사용
- 위젯
- 플러터: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'),
],
)
사용
| 과정 | 사용 | 비고 |
|---|---|---|
| 클래스 정의. 로컬라이제이션 객체 가져오기.
현재 locale에 맞는 객체를 반환한다. |
final l10n = AppLocalizations.of(context)!; |
|
| 사용 | Text(l10n.hello) | hello에 매칭된 문자열을 가져온다. |
언어파일에서 변수 사용하는 법
아래처럼 설정한 후, 호출할 때 변수를 전달한다.
{
"hello": "Hello, {name}",
"@hello": { // 사용되지 않는, 문자 설명용. 어디서 쓰는지 등등
"description": "Hello text"
},
"login": "Login"
}
Text(AppLocalizations.of(context)!.hello("철수"))
변수가 여러 개인 경우, 그냥 함수처럼 쓰면 된다.(특이하게도 변수명을 지정하는 방식으로는 안된다. 사용 이전에 변수명 지정해서 순서대로 입력하는 게 일반적.)