[개발글쓰기 3일차] Slang 을 이용한 다국어 지원 - 1 : Slang 소개

이혁진·2024년 3월 11일
0

이번에는 slang 을 이용한 다국어 지원을 알아보려한다. slang 은 앱 화면상에 보이는 String을 하드코딩하지 않게 해주고, 여러 언어를 쉽게 지원해준다.

사용 방법

  1. 패키지 pub get : slang 과 slang_flutter 를 같이 pub get 한다.
dependencies:
  slang: <version>
  slang_flutter: <version> # also add this if you use flutter

dev_dependencies:
  build_runner: <version> # ONLY if you use build_runner (1/2)
  slang_build_runner: <version> # ONLY if you use build_runner (2/2)```
코드를 입력하세요
  1. json 파일을 생성한다
    파일의 이름은 다음과 같이 설정한다.
<namespace>_<locale?>.<extension>
// File: strings.i18n.json (mandatory, base locale)
{
  "hello": "Hello $name",
  "save": "Save",
  "login": {
    "success": "Logged in successfully",
    "fail": "Logged in failed"
  }
}
  1. dart 파일을 생성한다.
dart run build_runner build -d

를 실행시 dart 파일을 생성할 수 있다.

  1. Initialize

a) 기기의 로케일 사용하기

이 방법은 앱을 시작할 때 사용자의 기기 설정에서 로케일을 자동으로 감지하고 사용하도록 설정합니다. LocaleSettings.useDeviceLocale() 메서드를 호출함으로써, 앱은 사용자의 기기에 설정된 언어로 자동으로 번역을 로드합니다. 이 방식은 사용자에게 친숙한 언어로 앱을 바로 제공하고 싶을 때 유용합니다.

void main() {
  WidgetsFlutterBinding.ensureInitialized(); // Flutter 엔진과 위젯 바인딩 초기화
  LocaleSettings.useDeviceLocale(); // 기기의 로케일 사용 설정
  runApp(MyApp()); // 앱 실행
}

b) 특정 로케일 사용하기

특정 로케일을 사용하고 싶거나, 사용자가 앱 내에서 언어를 선택할 수 있게 하고 싶을 때 이 방법을 사용합니다. 사용자가 선택한 언어는 일반적으로 어떤 형태의 영구 저장소(예: SharedPreferences)에 저장되며, 앱이 시작할 때 이 값을 로드하여 LocaleSettings.setLocaleRaw(storedLocale)를 호출함으로써 해당 언어를 앱의 기본 언어로 설정합니다.


void initState() {
  super.initState();
  String storedLocale = loadFromStorage(); // 저장된 로케일 불러오기
  LocaleSettings.setLocaleRaw(storedLocale); // 특정 로케일 설정
}

c) 의존성 주입을 사용하여 로케일 관리하기

이 방법은 개발자가 로케일 관리를 직접 수행하고 싶을 때 사용합니다. 예를 들어, 테스트 목적이나 특정 사용자 상호작용에 따라 프로그램적으로 언어를 전환하고 싶을 때 유용합니다. 여기서는 AppLocale.en.build()와 같은 방식으로 특정 로케일에 대한 인스턴스를 생성하고, 이를 통해 번역에 접근합니다. 이 방식은 로케일을 앱의 다른 부분에 주입하여 사용할 때 유연성을 제공합니다.

final english = AppLocale.en.build(); // 영어 로케일 인스턴스 생성
final german = AppLocale.de.build(); // 독일어 로케일 인스턴스 생성

// 번역 사용
String a = german.login.success; // 'german' 인스턴스를 통해 독일어 번역에 접근

이 세 가지 방법은 앱이 다양한 언어를 지원하는 과정에서 필요에 따라 선택하여 사용할 수 있으며, 각각의 방법은 앱의 국제화 요구사항과 사용자 경험을 최적화하는 데 도움이 됩니다.

profile
앱 개발과 AI, 서비스에 관심이 많은 학생입니다.

0개의 댓글