Šepot — end-to-end encrypted messenger
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).
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
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'));
|
||||
}
|
||||
Reference in New Issue
Block a user