Files
hash-wallet/lib/entities/language_service.dart
T
jwinterm 04203654f1 Rename Flutter project + binary: cake_wallet -> hash_wallet
The big one. Touches 760+ files. Locks in the user's decision to break
import-line compatibility with upstream cake-tech/cake_wallet in exchange
for a binary named hash_wallet on every platform.

Changes:
- pubspec_description.yaml: project name cake_wallet -> hash_wallet
- 762 Dart files: every 'package:cake_wallet/...' import rewritten to
  'package:hash_wallet/...' (lib/, cw_*/lib/, tool/, test/, integration_test/)
- linux/CMakeLists.txt: BINARY_NAME cake_wallet -> hash_wallet
- windows/CMakeLists.txt: project + BINARY_NAME (CakeWallet -> HashWallet)
- windows/runner/Runner.rc: company / file / product strings to Hash Wallet
  + Such Software LLC copyright
- macos/Runner.xcodeproj/project_base.pbxproj: cake_wallet_new.app refs
  -> hash_wallet.app (macOS output bundle name)
- com.suchsoftware.HashWallet.yml (Flatpak): all binary path refs
  cake_wallet -> hash_wallet (e.g. /app/hash_wallet/hash_wallet)
- linux/com.suchsoftware.HashWallet.desktop: Exec=hash_wallet
- scripts/android/copy_monero_deps.sh: CW_DIR target path
- configure_hash_wallet.sh: error message typo (old filename)

INTENTIONALLY UNCHANGED:
- cw_* subpackage names (cw_core, cw_bitcoin, cw_wownero, etc.) — they
  remain as the historical 'cake wallet' naming; renaming them would
  cascade through every sub-package's internal structure
- Method channel name 'com.cake_wallet/native_utils' in iOS/macOS/Android
  AppDelegates and MainActivity — it's a string identifier that has to
  match the Dart side exactly. Renaming requires both-sides change; it's
  internal-only and not user-visible.
- ghcr.io/cake-tech/cake_wallet:debian13-... docker image references in
  build scripts — that's Cake Labs' published image we use as the build
  environment, not ours.

User data directory now follows the new binary name:
  ~/.local/share/hash_wallet/  (was ~/.local/share/cake_wallet/)
  ~/.config/hash_wallet/       (was ~/.config/cake_wallet/)
Existing users on the old name will need migration if any exist.
2026-05-16 11:33:25 -04:00

102 lines
2.5 KiB
Dart

import 'package:hash_wallet/generated/locales.dart';
import 'package:devicelocale/devicelocale.dart';
import 'package:intl/intl.dart';
class LanguageService {
static const Map<String, String> supportedLocales = {
'en': 'English',
'de': 'Deutsch (German)',
'es': 'Español (Spanish)',
'fa': 'فارسی (Persian)',
'fr': 'Français (French)',
// 'gn': 'Guarani (Guarani)',
'hi': 'हिंदी (Hindi)',
'ja': '日本 (Japanese)',
'ko': '한국어 (Korean)',
'nl': 'Nederlands (Dutch)',
'pl': 'Polski (Polish)',
'pt': 'Português (Portuguese)',
'pt_BR': 'Português Brasileiro (Brazilian Portuguese)',
'ru': 'Русский (Russian)',
'uk': 'Українська (Ukrainian)',
'zh': '简体中文 (Chinese Simplified)',
'zh_TW': '繁體中文 (Chinese Traditional)',
'hr': 'Hrvatski (Croatian)',
'it': 'Italiano (Italian)',
'th': 'ภาษาไทย (Thai)',
'ar': 'العربية (Arabic)',
'tr': 'Türkçe (Turkish)',
'my': 'မြန်မာ (Burmese)',
'bg': 'Български (Bulgarian)',
'cs': 'čeština (Czech)',
'ur': 'اردو (Urdu)',
'id': 'Bahasa Indonesia (Indonesian)',
'yo': 'Yorùbá (Yoruba)',
'ha': 'Hausa Najeriya (Nigeria)',
'tl': 'Filipino (Tagalog)',
'hy': 'Հայերեն (Armenian)',
'vi': 'Tiếng Việt (Vietnamese)',
};
static const Map<String, String> localeCountryCode = {
'en': 'usa',
'de': 'deu',
'es': 'esp',
'fa': 'irn',
'fr': 'fra',
'gn': 'grn',
'hi': 'ind',
'ja': 'jpn',
'ko': 'kor',
'nl': 'nld',
'pl': 'pol',
'pt': 'prt',
'pt_BR': 'bra',
'ru': 'rus',
'uk': 'ukr',
'zh': 'chn',
'zh_TW': 'twn',
'hr': 'hrv',
'it': 'ita',
'th': 'tha',
'ar': 'sau',
'tr': 'tur',
'my': 'mmr',
'bg': 'bgr',
'cs': 'czk',
'ur': 'pak',
'id': 'idn',
'yo': 'nga',
'ha': 'hau',
'tl': 'phl',
'hy': 'arm',
'vi': 'vnm',
};
static final list = <String, String>{};
static const defaultLocale = 'en';
static void loadLocaleList() {
supportedLocales.forEach((key, value) {
if (locales.contains(key)) {
list[key] = value;
}
});
}
static Future<String> localeDetection() async {
try {
var locale = await Devicelocale.currentLocale ?? '';
locale = Intl.shortLocale(locale);
if (list.keys.contains(locale)) {
return locale;
}
return LanguageService.defaultLocale;
} catch (_) {
return LanguageService.defaultLocale;
}
}
}