Files
submanager/lib/providers/locale_provider.dart
JiWoong Sul 0f0b02bf08 feat: 다국어 지원 및 다중 통화 환율 변환 기능 확대
- ExchangeRateService에 JPY, CNY 환율 지원 추가
- 구독 서비스별 다국어 표시 이름 지원
- 분석 화면 차트 및 UI/UX 개선
- 설정 화면 전면 리팩토링
- SMS 스캔 기능 사용성 개선
- 전체 앱 다국어 번역 확대

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 17:34:32 +09:00

49 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'dart:ui' as ui;
class LocaleProvider extends ChangeNotifier {
late Box<String> _localeBox;
Locale _locale = const Locale('ko');
static const List<String> supportedLanguages = ['en', 'ko', 'ja', 'zh'];
Locale get locale => _locale;
Future<void> init() async {
_localeBox = await Hive.openBox<String>('locale');
// 저장된 언어 설정 확인
final savedLocale = _localeBox.get('locale');
if (savedLocale != null) {
// 저장된 언어가 있으면 사용
_locale = Locale(savedLocale);
} else {
// 저장된 언어가 없으면 시스템 언어 감지
final systemLocale = ui.PlatformDispatcher.instance.locale;
// 시스템 언어가 지원되는 언어인지 확인
if (supportedLanguages.contains(systemLocale.languageCode)) {
_locale = Locale(systemLocale.languageCode);
} else {
// 지원되지 않는 언어면 영어 사용
_locale = const Locale('en');
}
// 감지된 언어 저장
await _localeBox.put('locale', _locale.languageCode);
}
notifyListeners();
}
Future<void> setLocale(String languageCode) async {
if (_locale.languageCode != languageCode) {
_locale = Locale(languageCode);
await _localeBox.put('locale', languageCode);
notifyListeners();
}
}
}