8081d98c67
Initial public release. Anonymous on-device identity (no phone number, e-mail, or password), Signal-protocol cryptography (X3DH + PQXDH, Double Ratchet, sealed sender) via libsignal, a metadata-minimizing relay, group chats, disappearing messages, encrypted local storage, optional Tor transport, and a UI localized into Czech, English, German, Russian, and Italian. Monorepo: Flutter client (app/), Rust relay + wire types (rust/), protobuf definitions (proto/), self-host deploy (deploy/). Licensed under AGPL-3.0 with an app-store distribution exception (§7).
24 lines
923 B
Dart
24 lines
923 B
Dart
import 'dart:ui';
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:sepot/l10n/generated/app_localizations.dart';
|
|
|
|
export 'package:sepot/l10n/generated/app_localizations.dart';
|
|
|
|
/// Zkratka pro přístup k lokalizovaným textům: `context.l10n.klic`.
|
|
extension L10nX on BuildContext {
|
|
AppLocalizations get l10n => AppLocalizations.of(this);
|
|
}
|
|
|
|
/// Lokalizace mimo widget tree (notifikace, headless push start).
|
|
///
|
|
/// Preferuje ruční volbu jazyka (`override`, typicky
|
|
/// `LocaleNotifier.readStored()`), jinak jazyk systému; nepodporovaný
|
|
/// jazyk spadne na angličtinu — stejné pořadí jako `supportedLocales`.
|
|
AppLocalizations l10nFor(Locale? override) {
|
|
final locale = override ?? PlatformDispatcher.instance.locale;
|
|
final lang = Locale(locale.languageCode);
|
|
final supported = AppLocalizations.delegate.isSupported(lang);
|
|
return lookupAppLocalizations(supported ? lang : const Locale('en'));
|
|
}
|