diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 7c03299..48ade1a 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -45,5 +45,36 @@
UIApplicationSupportsIndirectInputEvents
+ CFBundleLocalizations
+
+ af
+ ar
+ ca
+ cs
+ da
+ de
+ el
+ en
+ es
+ fi
+ fr
+ he
+ hu
+ it
+ ja
+ ko
+ nl
+ no
+ pl
+ pt
+ ro
+ ru
+ sr
+ sv
+ tr
+ uk
+ vi
+ zh
+
diff --git a/lib/app.dart b/lib/app.dart
index 2e0e90b..3c1df7b 100644
--- a/lib/app.dart
+++ b/lib/app.dart
@@ -11,6 +11,7 @@ import 'package:zap_stream_flutter/pages/login_input.dart';
import 'package:zap_stream_flutter/pages/new_account.dart';
import 'package:zap_stream_flutter/pages/profile.dart';
import 'package:zap_stream_flutter/pages/settings_profile.dart';
+import 'package:zap_stream_flutter/pages/settings_wallet.dart';
import 'package:zap_stream_flutter/pages/stream.dart';
import 'package:zap_stream_flutter/theme.dart';
import 'package:zap_stream_flutter/utils.dart';
@@ -102,7 +103,6 @@ void runZapStream() {
},
),
ShellRoute(
- observers: [routeObserver],
builder:
(context, state, child) =>
Column(children: [HeaderWidget(), child]),
@@ -115,6 +115,10 @@ void runZapStream() {
path: "profile",
builder: (context, state) => SettingsProfilePage(),
),
+ GoRoute(
+ path: "wallet",
+ builder: (context, state) => SettingsWalletPage(),
+ ),
],
),
],
diff --git a/lib/i18n/en.i18n.yaml b/lib/i18n/en.i18n.yaml
index 8fb6a6c..c210871 100644
--- a/lib/i18n/en.i18n.yaml
+++ b/lib/i18n/en.i18n.yaml
@@ -80,6 +80,7 @@ button:
unmute: Unmute
share: Share
save: Save
+ connect: Connect
embed:
article_by: Article by $name
note_by: Note by $name
@@ -99,6 +100,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Open in Wallet
+ button_connect_wallet: Connect Wallet
copy: Copied to clipboard
error:
invalid_custom_amount: Invalid custom amount
@@ -113,6 +115,10 @@ profile:
lud16: Lightning Address
error:
logged_out: Cant edit profile when logged out
+wallet:
+ connect_wallet: Connect Wallet (NWC nwc://)
+ error:
+ logged_out: Cant connect wallet when logged out
login:
username: "Username"
amber: Login with Amber
diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart
index f79f75b..ab0eb60 100644
--- a/lib/i18n/strings.g.dart
+++ b/lib/i18n/strings.g.dart
@@ -4,14 +4,13 @@
/// To regenerate, run: `dart run slang`
///
/// Locales: 28
-/// Strings: 1764 (63 per locale)
+/// Strings: 1768 (63 per locale)
///
-/// Built on 2025-05-20 at 16:08 UTC
+/// Built on 2025-05-26 at 10:54 UTC
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
diff --git a/lib/i18n/strings_af.g.dart b/lib/i18n/strings_af.g.dart
index ff61915..4ea32d6 100644
--- a/lib/i18n/strings_af.g.dart
+++ b/lib/i18n/strings_af.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsAf implements Translations {
+class TranslationsAf extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsAf({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsAf implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsAf implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsAf _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsAf implements Translations {
}
// Path: stream
-class _TranslationsStreamAf implements TranslationsStreamEn {
- _TranslationsStreamAf._(this._root);
+class _TranslationsStreamAf extends TranslationsStreamEn {
+ _TranslationsStreamAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusAf status = _TranslationsStreamStatusAf._(_root);
- @override String started({ required Object timestamp}) => 'Started ${timestamp}';
+ @override String started({required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatAf chat = _TranslationsStreamChatAf._(_root);
}
// Path: goal
-class _TranslationsGoalAf implements TranslationsGoalEn {
- _TranslationsGoalAf._(this._root);
+class _TranslationsGoalAf extends TranslationsGoalEn {
+ _TranslationsGoalAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Goal: ${amount}';
- @override String remaining({ required Object amount}) => 'Remaining: ${amount}';
+ @override String title({required Object amount}) => 'Goal: ${amount}';
+ @override String remaining({required Object amount}) => 'Remaining: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonAf implements TranslationsButtonEn {
- _TranslationsButtonAf._(this._root);
+class _TranslationsButtonAf extends TranslationsButtonEn {
+ _TranslationsButtonAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonAf implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedAf implements TranslationsEmbedEn {
- _TranslationsEmbedAf._(this._root);
+class _TranslationsEmbedAf extends TranslationsEmbedEn {
+ _TranslationsEmbedAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Article by ${name}';
- @override String note_by({ required Object name}) => 'Note by ${name}';
- @override String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ @override String article_by({required Object name}) => 'Article by ${name}';
+ @override String note_by({required Object name}) => 'Note by ${name}';
+ @override String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
-class _TranslationsStreamListAf implements TranslationsStreamListEn {
- _TranslationsStreamListAf._(this._root);
+class _TranslationsStreamListAf extends TranslationsStreamListEn {
+ _TranslationsStreamListAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListAf implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapAf implements TranslationsZapEn {
- _TranslationsZapAf._(this._root);
+class _TranslationsZapAf extends TranslationsZapEn {
+ _TranslationsZapAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Custom Amount';
@override String get confirm => 'Confirm';
@override String get comment => 'Comment';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@@ -163,8 +164,8 @@ class _TranslationsZapAf implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileAf implements TranslationsProfileEn {
- _TranslationsProfileAf._(this._root);
+class _TranslationsProfileAf extends TranslationsProfileEn {
+ _TranslationsProfileAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileAf implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginAf implements TranslationsLoginEn {
- _TranslationsLoginAf._(this._root);
+class _TranslationsLoginAf extends TranslationsLoginEn {
+ _TranslationsLoginAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginAf implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusAf implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusAf._(this._root);
+class _TranslationsStreamStatusAf extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusAf implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatAf implements TranslationsStreamChatEn {
- _TranslationsStreamChatAf._(this._root);
+class _TranslationsStreamChatAf extends TranslationsStreamChatEn {
+ _TranslationsStreamChatAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
- @override String disabled_timeout({ required Object time}) => 'Timeout expires: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timeout expires: ${time}';
/// Chat message showing timeout events
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
@override String get ended => 'STREAM ENDED';
/// Chat message showing stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteAf write = _TranslationsStreamChatWriteAf._(_root);
@override late final _TranslationsStreamChatBadgeAf badge = _TranslationsStreamChatBadgeAf._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatAf implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorAf implements TranslationsZapErrorEn {
- _TranslationsZapErrorAf._(this._root);
+class _TranslationsZapErrorAf extends TranslationsZapErrorEn {
+ _TranslationsZapErrorAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorAf implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditAf implements TranslationsProfileEditEn {
- _TranslationsProfileEditAf._(this._root);
+class _TranslationsProfileEditAf extends TranslationsProfileEditEn {
+ _TranslationsProfileEditAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditAf implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorAf implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorAf._(this._root);
+class _TranslationsLoginErrorAf extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorAf implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteAf implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteAf._(this._root);
+class _TranslationsStreamChatWriteAf extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteAf implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeAf implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeAf._(this._root);
+class _TranslationsStreamChatBadgeAf extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeAf implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidAf implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidAf._(this._root);
+class _TranslationsStreamChatRaidAf extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
- @override String countdown({ required Object time}) => 'Raiding in ${time}';
+ @override String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorAf implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorAf._(this._root);
+class _TranslationsProfileEditErrorAf extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorAf._(TranslationsAf root) : this._root = root, super.internal(root);
final TranslationsAf _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsAf {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'PLANNED';
- case 'stream.started': return ({ required Object timestamp}) => 'Started ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Started ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout expires: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Write message';
case 'stream.chat.write.no_signer': return 'Can\'t write messages with npub login';
case 'stream.chat.write.login': return 'Please login to send messages';
case 'stream.chat.badge.awarded_to': return 'Awarded to:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Goal: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Remaining: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Goal: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Remaining: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -380,18 +381,18 @@ extension on TranslationsAf {
case 'button.unmute': return 'Unmute';
case 'button.share': return 'Share';
case 'button.save': return 'Save';
- case 'embed.article_by': return ({ required Object name}) => 'Article by ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note by ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Article by ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note by ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return 'Following';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planned';
case 'stream_list.ended': return 'Ended';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Custom Amount';
case 'zap.confirm': return 'Confirm';
case 'zap.comment': return 'Comment';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Open in Wallet';
case 'zap.copy': return 'Copied to clipboard';
diff --git a/lib/i18n/strings_ar.g.dart b/lib/i18n/strings_ar.g.dart
index fa63fc0..809cb64 100644
--- a/lib/i18n/strings_ar.g.dart
+++ b/lib/i18n/strings_ar.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsAr implements Translations {
+class TranslationsAr extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsAr({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsAr implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsAr implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsAr _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsAr implements Translations {
}
// Path: stream
-class _TranslationsStreamAr implements TranslationsStreamEn {
- _TranslationsStreamAr._(this._root);
+class _TranslationsStreamAr extends TranslationsStreamEn {
+ _TranslationsStreamAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusAr status = _TranslationsStreamStatusAr._(_root);
- @override String started({ required Object timestamp}) => 'بدأ ${timestamp}';
+ @override String started({required Object timestamp}) => 'بدأ ${timestamp}';
@override late final _TranslationsStreamChatAr chat = _TranslationsStreamChatAr._(_root);
}
// Path: goal
-class _TranslationsGoalAr implements TranslationsGoalEn {
- _TranslationsGoalAr._(this._root);
+class _TranslationsGoalAr extends TranslationsGoalEn {
+ _TranslationsGoalAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'الهدف: ${amount}';
- @override String remaining({ required Object amount}) => 'المتبقي: ${amount}';
+ @override String title({required Object amount}) => 'الهدف: ${amount}';
+ @override String remaining({required Object amount}) => 'المتبقي: ${amount}';
@override String get complete => 'مكتمل';
}
// Path: button
-class _TranslationsButtonAr implements TranslationsButtonEn {
- _TranslationsButtonAr._(this._root);
+class _TranslationsButtonAr extends TranslationsButtonEn {
+ _TranslationsButtonAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonAr implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedAr implements TranslationsEmbedEn {
- _TranslationsEmbedAr._(this._root);
+class _TranslationsEmbedAr extends TranslationsEmbedEn {
+ _TranslationsEmbedAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'مقال بقلم ${name}';
- @override String note_by({ required Object name}) => 'ملاحظة من ${name}';
- @override String live_stream_by({ required Object name}) => 'بث مباشر من ${name}';
+ @override String article_by({required Object name}) => 'مقال بقلم ${name}';
+ @override String note_by({required Object name}) => 'ملاحظة من ${name}';
+ @override String live_stream_by({required Object name}) => 'بث مباشر من ${name}';
}
// Path: stream_list
-class _TranslationsStreamListAr implements TranslationsStreamListEn {
- _TranslationsStreamListAr._(this._root);
+class _TranslationsStreamListAr extends TranslationsStreamListEn {
+ _TranslationsStreamListAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListAr implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapAr implements TranslationsZapEn {
- _TranslationsZapAr._(this._root);
+class _TranslationsZapAr extends TranslationsZapEn {
+ _TranslationsZapAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'زاب ${name}';
+ @override String title({required Object name}) => 'زاب ${name}';
@override String get custom_amount => 'المبلغ المخصص';
@override String get confirm => 'تأكيد';
@override String get comment => 'تعليق';
- @override String button_zap_ready({ required Object amount}) => 'أومض ${amount} ساتوشي';
+ @override String button_zap_ready({required Object amount}) => 'أومض ${amount} ساتوشي';
@override String get button_zap => 'زاب';
@override String get button_open_wallet => 'فتح في المحفظة';
@override String get copy => 'نسخ إلى الحافظة';
@@ -163,8 +164,8 @@ class _TranslationsZapAr implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileAr implements TranslationsProfileEn {
- _TranslationsProfileAr._(this._root);
+class _TranslationsProfileAr extends TranslationsProfileEn {
+ _TranslationsProfileAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileAr implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginAr implements TranslationsLoginEn {
- _TranslationsLoginAr._(this._root);
+class _TranslationsLoginAr extends TranslationsLoginEn {
+ _TranslationsLoginAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginAr implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusAr implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusAr._(this._root);
+class _TranslationsStreamStatusAr extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusAr implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatAr implements TranslationsStreamChatEn {
- _TranslationsStreamChatAr._(this._root);
+class _TranslationsStreamChatAr extends TranslationsStreamChatEn {
+ _TranslationsStreamChatAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get disabled => 'تم تعطيل الدردشة';
- @override String disabled_timeout({ required Object time}) => 'تنتهي المهلة: ${time}';
+ @override String disabled_timeout({required Object time}) => 'تنتهي المهلة: ${time}';
/// رسالة دردشة تظهر أحداث المهلة
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' انتهى الوقت '),
user,
const TextSpan(text: ' لـ '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// تيار انتهى التذييل في أسفل الدردشة
@override String get ended => 'انتهى البث';
/// رسالة الدردشة التي تُظهر البث المباشر
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' انطلق '),
amount,
const TextSpan(text: ' ساتس'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteAr write = _TranslationsStreamChatWriteAr._(_root);
@override late final _TranslationsStreamChatBadgeAr badge = _TranslationsStreamChatBadgeAr._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatAr implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorAr implements TranslationsZapErrorEn {
- _TranslationsZapErrorAr._(this._root);
+class _TranslationsZapErrorAr extends TranslationsZapErrorEn {
+ _TranslationsZapErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorAr implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditAr implements TranslationsProfileEditEn {
- _TranslationsProfileEditAr._(this._root);
+class _TranslationsProfileEditAr extends TranslationsProfileEditEn {
+ _TranslationsProfileEditAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditAr implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorAr implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorAr._(this._root);
+class _TranslationsLoginErrorAr extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorAr implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteAr implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteAr._(this._root);
+class _TranslationsStreamChatWriteAr extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteAr implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeAr implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeAr._(this._root);
+class _TranslationsStreamChatBadgeAr extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeAr implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidAr implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidAr._(this._root);
+class _TranslationsStreamChatRaidAr extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
/// رسالة غارة الدردشة إلى دفق آخر
- @override String to({ required Object name}) => 'التصفح ${name}';
+ @override String to({required Object name}) => 'التصفح ${name}';
/// رسالة غارة الدردشة من دفق آخر
- @override String from({ required Object name}) => 'RAID من ${name}';
+ @override String from({required Object name}) => 'RAID من ${name}';
/// مؤقت العد التنازلي للقيادة التلقائية
- @override String countdown({ required Object time}) => 'الإغارة في ${time}';
+ @override String countdown({required Object time}) => 'الإغارة في ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorAr implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorAr._(this._root);
+class _TranslationsProfileEditErrorAr extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsAr {
case 'stream.status.live': return 'بث مباشر';
case 'stream.status.ended': return 'انتهى';
case 'stream.status.planned': return 'مخطط';
- case 'stream.started': return ({ required Object timestamp}) => 'بدأ ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'بدأ ${timestamp}';
case 'stream.chat.disabled': return 'تم تعطيل الدردشة';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'تنتهي المهلة: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'تنتهي المهلة: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' انتهى الوقت '),
user,
const TextSpan(text: ' لـ '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'انتهى البث';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' انطلق '),
amount,
const TextSpan(text: ' ساتس'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'اكتب رسالة';
case 'stream.chat.write.no_signer': return 'لا يمكن كتابة الرسائل باستخدام تسجيل الدخول إلى npub';
case 'stream.chat.write.login': return 'الرجاء تسجيل الدخول لإرسال الرسائل';
case 'stream.chat.badge.awarded_to': return 'مُنحت الجائزة لـ';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'التصفح ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID من ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'الإغارة في ${time}';
- case 'goal.title': return ({ required Object amount}) => 'الهدف: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'المتبقي: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'التصفح ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID من ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'الإغارة في ${time}';
+ case 'goal.title': return ({required Object amount}) => 'الهدف: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'المتبقي: ${amount}';
case 'goal.complete': return 'مكتمل';
case 'button.login': return 'تسجيل الدخول';
case 'button.logout': return 'تسجيل الخروج';
@@ -380,18 +381,18 @@ extension on TranslationsAr {
case 'button.unmute': return 'رفع الكتم';
case 'button.share': return 'مشاركة';
case 'button.save': return 'حفظ';
- case 'embed.article_by': return ({ required Object name}) => 'مقال بقلم ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'ملاحظة من ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'بث مباشر من ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'مقال بقلم ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'ملاحظة من ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'بث مباشر من ${name}';
case 'stream_list.following': return 'المتابَعون';
case 'stream_list.live': return 'بث مباشر';
case 'stream_list.planned': return 'مخطط';
case 'stream_list.ended': return 'انتهى';
- case 'zap.title': return ({ required Object name}) => 'زاب ${name}';
+ case 'zap.title': return ({required Object name}) => 'زاب ${name}';
case 'zap.custom_amount': return 'المبلغ المخصص';
case 'zap.confirm': return 'تأكيد';
case 'zap.comment': return 'تعليق';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'أومض ${amount} ساتوشي';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'أومض ${amount} ساتوشي';
case 'zap.button_zap': return 'زاب';
case 'zap.button_open_wallet': return 'فتح في المحفظة';
case 'zap.copy': return 'نسخ إلى الحافظة';
diff --git a/lib/i18n/strings_ca.g.dart b/lib/i18n/strings_ca.g.dart
index 05b7a15..0ff52f5 100644
--- a/lib/i18n/strings_ca.g.dart
+++ b/lib/i18n/strings_ca.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsCa implements Translations {
+class TranslationsCa extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsCa({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsCa implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsCa implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsCa _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsCa implements Translations {
}
// Path: stream
-class _TranslationsStreamCa implements TranslationsStreamEn {
- _TranslationsStreamCa._(this._root);
+class _TranslationsStreamCa extends TranslationsStreamEn {
+ _TranslationsStreamCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusCa status = _TranslationsStreamStatusCa._(_root);
- @override String started({ required Object timestamp}) => 'Started ${timestamp}';
+ @override String started({required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatCa chat = _TranslationsStreamChatCa._(_root);
}
// Path: goal
-class _TranslationsGoalCa implements TranslationsGoalEn {
- _TranslationsGoalCa._(this._root);
+class _TranslationsGoalCa extends TranslationsGoalEn {
+ _TranslationsGoalCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Goal: ${amount}';
- @override String remaining({ required Object amount}) => 'Remaining: ${amount}';
+ @override String title({required Object amount}) => 'Goal: ${amount}';
+ @override String remaining({required Object amount}) => 'Remaining: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonCa implements TranslationsButtonEn {
- _TranslationsButtonCa._(this._root);
+class _TranslationsButtonCa extends TranslationsButtonEn {
+ _TranslationsButtonCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonCa implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedCa implements TranslationsEmbedEn {
- _TranslationsEmbedCa._(this._root);
+class _TranslationsEmbedCa extends TranslationsEmbedEn {
+ _TranslationsEmbedCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Article by ${name}';
- @override String note_by({ required Object name}) => 'Note by ${name}';
- @override String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ @override String article_by({required Object name}) => 'Article by ${name}';
+ @override String note_by({required Object name}) => 'Note by ${name}';
+ @override String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
-class _TranslationsStreamListCa implements TranslationsStreamListEn {
- _TranslationsStreamListCa._(this._root);
+class _TranslationsStreamListCa extends TranslationsStreamListEn {
+ _TranslationsStreamListCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListCa implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapCa implements TranslationsZapEn {
- _TranslationsZapCa._(this._root);
+class _TranslationsZapCa extends TranslationsZapEn {
+ _TranslationsZapCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Custom Amount';
@override String get confirm => 'Confirm';
@override String get comment => 'Comment';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@@ -163,8 +164,8 @@ class _TranslationsZapCa implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileCa implements TranslationsProfileEn {
- _TranslationsProfileCa._(this._root);
+class _TranslationsProfileCa extends TranslationsProfileEn {
+ _TranslationsProfileCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileCa implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginCa implements TranslationsLoginEn {
- _TranslationsLoginCa._(this._root);
+class _TranslationsLoginCa extends TranslationsLoginEn {
+ _TranslationsLoginCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginCa implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusCa implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusCa._(this._root);
+class _TranslationsStreamStatusCa extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusCa implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatCa implements TranslationsStreamChatEn {
- _TranslationsStreamChatCa._(this._root);
+class _TranslationsStreamChatCa extends TranslationsStreamChatEn {
+ _TranslationsStreamChatCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
- @override String disabled_timeout({ required Object time}) => 'Timeout expires: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timeout expires: ${time}';
/// Chat message showing timeout events
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
@override String get ended => 'STREAM ENDED';
/// Chat message showing stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteCa write = _TranslationsStreamChatWriteCa._(_root);
@override late final _TranslationsStreamChatBadgeCa badge = _TranslationsStreamChatBadgeCa._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatCa implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorCa implements TranslationsZapErrorEn {
- _TranslationsZapErrorCa._(this._root);
+class _TranslationsZapErrorCa extends TranslationsZapErrorEn {
+ _TranslationsZapErrorCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorCa implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditCa implements TranslationsProfileEditEn {
- _TranslationsProfileEditCa._(this._root);
+class _TranslationsProfileEditCa extends TranslationsProfileEditEn {
+ _TranslationsProfileEditCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditCa implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorCa implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorCa._(this._root);
+class _TranslationsLoginErrorCa extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorCa implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteCa implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteCa._(this._root);
+class _TranslationsStreamChatWriteCa extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteCa implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeCa implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeCa._(this._root);
+class _TranslationsStreamChatBadgeCa extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeCa implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidCa implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidCa._(this._root);
+class _TranslationsStreamChatRaidCa extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
- @override String countdown({ required Object time}) => 'Raiding in ${time}';
+ @override String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorCa implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorCa._(this._root);
+class _TranslationsProfileEditErrorCa extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorCa._(TranslationsCa root) : this._root = root, super.internal(root);
final TranslationsCa _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsCa {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'PLANNED';
- case 'stream.started': return ({ required Object timestamp}) => 'Started ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Started ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout expires: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Write message';
case 'stream.chat.write.no_signer': return 'Can\'t write messages with npub login';
case 'stream.chat.write.login': return 'Please login to send messages';
case 'stream.chat.badge.awarded_to': return 'Awarded to:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Goal: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Remaining: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Goal: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Remaining: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -380,18 +381,18 @@ extension on TranslationsCa {
case 'button.unmute': return 'Unmute';
case 'button.share': return 'Share';
case 'button.save': return 'Save';
- case 'embed.article_by': return ({ required Object name}) => 'Article by ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note by ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Article by ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note by ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return 'Following';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planned';
case 'stream_list.ended': return 'Ended';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Custom Amount';
case 'zap.confirm': return 'Confirm';
case 'zap.comment': return 'Comment';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Open in Wallet';
case 'zap.copy': return 'Copied to clipboard';
diff --git a/lib/i18n/strings_cs.g.dart b/lib/i18n/strings_cs.g.dart
index ac3e118..1d179e3 100644
--- a/lib/i18n/strings_cs.g.dart
+++ b/lib/i18n/strings_cs.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsCs implements Translations {
+class TranslationsCs extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsCs({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsCs implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsCs implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsCs _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsCs implements Translations {
}
// Path: stream
-class _TranslationsStreamCs implements TranslationsStreamEn {
- _TranslationsStreamCs._(this._root);
+class _TranslationsStreamCs extends TranslationsStreamEn {
+ _TranslationsStreamCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusCs status = _TranslationsStreamStatusCs._(_root);
- @override String started({ required Object timestamp}) => 'Založeno ${timestamp}';
+ @override String started({required Object timestamp}) => 'Založeno ${timestamp}';
@override late final _TranslationsStreamChatCs chat = _TranslationsStreamChatCs._(_root);
}
// Path: goal
-class _TranslationsGoalCs implements TranslationsGoalEn {
- _TranslationsGoalCs._(this._root);
+class _TranslationsGoalCs extends TranslationsGoalEn {
+ _TranslationsGoalCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Cíl: ${amount}';
- @override String remaining({ required Object amount}) => 'Zbývá: ${amount}';
+ @override String title({required Object amount}) => 'Cíl: ${amount}';
+ @override String remaining({required Object amount}) => 'Zbývá: ${amount}';
@override String get complete => 'KOMPLETNÍ';
}
// Path: button
-class _TranslationsButtonCs implements TranslationsButtonEn {
- _TranslationsButtonCs._(this._root);
+class _TranslationsButtonCs extends TranslationsButtonEn {
+ _TranslationsButtonCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonCs implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedCs implements TranslationsEmbedEn {
- _TranslationsEmbedCs._(this._root);
+class _TranslationsEmbedCs extends TranslationsEmbedEn {
+ _TranslationsEmbedCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Článek na ${name}';
- @override String note_by({ required Object name}) => 'Poznámka ${name}';
- @override String live_stream_by({ required Object name}) => 'Přímý přenos na adrese ${name}';
+ @override String article_by({required Object name}) => 'Článek na ${name}';
+ @override String note_by({required Object name}) => 'Poznámka ${name}';
+ @override String live_stream_by({required Object name}) => 'Přímý přenos na adrese ${name}';
}
// Path: stream_list
-class _TranslationsStreamListCs implements TranslationsStreamListEn {
- _TranslationsStreamListCs._(this._root);
+class _TranslationsStreamListCs extends TranslationsStreamListEn {
+ _TranslationsStreamListCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListCs implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapCs implements TranslationsZapEn {
- _TranslationsZapCs._(this._root);
+class _TranslationsZapCs extends TranslationsZapEn {
+ _TranslationsZapCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Vlastní částka';
@override String get confirm => 'Potvrďte';
@override String get comment => 'Komentář:';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Otevřít v peněžence';
@override String get copy => 'Zkopírováno do schránky';
@@ -163,8 +164,8 @@ class _TranslationsZapCs implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileCs implements TranslationsProfileEn {
- _TranslationsProfileCs._(this._root);
+class _TranslationsProfileCs extends TranslationsProfileEn {
+ _TranslationsProfileCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileCs implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginCs implements TranslationsLoginEn {
- _TranslationsLoginCs._(this._root);
+class _TranslationsLoginCs extends TranslationsLoginEn {
+ _TranslationsLoginCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginCs implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusCs implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusCs._(this._root);
+class _TranslationsStreamStatusCs extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusCs implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatCs implements TranslationsStreamChatEn {
- _TranslationsStreamChatCs._(this._root);
+class _TranslationsStreamChatCs extends TranslationsStreamChatEn {
+ _TranslationsStreamChatCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT ZRUŠEN';
- @override String disabled_timeout({ required Object time}) => 'Časový limit vyprší: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Časový limit vyprší: ${time}';
/// Zpráva chatu zobrazující události časového limitu
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' vypršel čas '),
user,
const TextSpan(text: ' pro '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Zápatí v dolní části chatu ukončilo stream
@override String get ended => 'STREAM UKONČEN';
/// Zpráva chatu zobrazující proud zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' Zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteCs write = _TranslationsStreamChatWriteCs._(_root);
@override late final _TranslationsStreamChatBadgeCs badge = _TranslationsStreamChatBadgeCs._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatCs implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorCs implements TranslationsZapErrorEn {
- _TranslationsZapErrorCs._(this._root);
+class _TranslationsZapErrorCs extends TranslationsZapErrorEn {
+ _TranslationsZapErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorCs implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditCs implements TranslationsProfileEditEn {
- _TranslationsProfileEditCs._(this._root);
+class _TranslationsProfileEditCs extends TranslationsProfileEditEn {
+ _TranslationsProfileEditCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditCs implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorCs implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorCs._(this._root);
+class _TranslationsLoginErrorCs extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorCs implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteCs implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteCs._(this._root);
+class _TranslationsStreamChatWriteCs extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteCs implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeCs implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeCs._(this._root);
+class _TranslationsStreamChatBadgeCs extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeCs implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidCs implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidCs._(this._root);
+class _TranslationsStreamChatRaidCs extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
/// Zpráva o nájezdu chatu do jiného proudu
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Zpráva o nájezdu chatu z jiného proudu
- @override String from({ required Object name}) => 'RAID Z ${name}';
+ @override String from({required Object name}) => 'RAID Z ${name}';
/// Časovač odpočítávání pro automatický nájezd
- @override String countdown({ required Object time}) => 'Nájezdy na ${time}';
+ @override String countdown({required Object time}) => 'Nájezdy na ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorCs implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorCs._(this._root);
+class _TranslationsProfileEditErrorCs extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsCs {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'KONEC';
case 'stream.status.planned': return 'PLÁNOVANÉ';
- case 'stream.started': return ({ required Object timestamp}) => 'Založeno ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Založeno ${timestamp}';
case 'stream.chat.disabled': return 'CHAT ZRUŠEN';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Časový limit vyprší: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Časový limit vyprší: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' vypršel čas '),
user,
const TextSpan(text: ' pro '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM UKONČEN';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' Zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Napište zprávu';
case 'stream.chat.write.no_signer': return 'Nelze psát zprávy s přihlášením npub';
case 'stream.chat.write.login': return 'Pro odesílání zpráv se prosím přihlaste';
case 'stream.chat.badge.awarded_to': return 'Uděleno:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID Z ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Nájezdy na ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Cíl: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Zbývá: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID Z ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Nájezdy na ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Cíl: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Zbývá: ${amount}';
case 'goal.complete': return 'KOMPLETNÍ';
case 'button.login': return 'Přihlášení';
case 'button.logout': return 'Odhlášení';
@@ -380,18 +381,18 @@ extension on TranslationsCs {
case 'button.unmute': return 'Zrušit ztlumení';
case 'button.share': return 'Sdílet';
case 'button.save': return 'Uložit';
- case 'embed.article_by': return ({ required Object name}) => 'Článek na ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Poznámka ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Přímý přenos na adrese ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Článek na ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Poznámka ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Přímý přenos na adrese ${name}';
case 'stream_list.following': return 'Po';
case 'stream_list.live': return 'Živě';
case 'stream_list.planned': return 'Plánované';
case 'stream_list.ended': return 'Ukončeno';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Vlastní částka';
case 'zap.confirm': return 'Potvrďte';
case 'zap.comment': return 'Komentář:';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Otevřít v peněžence';
case 'zap.copy': return 'Zkopírováno do schránky';
diff --git a/lib/i18n/strings_da.g.dart b/lib/i18n/strings_da.g.dart
index f1b887b..d7851f0 100644
--- a/lib/i18n/strings_da.g.dart
+++ b/lib/i18n/strings_da.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsDa implements Translations {
+class TranslationsDa extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsDa({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsDa implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsDa implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsDa _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsDa implements Translations {
}
// Path: stream
-class _TranslationsStreamDa implements TranslationsStreamEn {
- _TranslationsStreamDa._(this._root);
+class _TranslationsStreamDa extends TranslationsStreamEn {
+ _TranslationsStreamDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusDa status = _TranslationsStreamStatusDa._(_root);
- @override String started({ required Object timestamp}) => 'Startet ${timestamp}';
+ @override String started({required Object timestamp}) => 'Startet ${timestamp}';
@override late final _TranslationsStreamChatDa chat = _TranslationsStreamChatDa._(_root);
}
// Path: goal
-class _TranslationsGoalDa implements TranslationsGoalEn {
- _TranslationsGoalDa._(this._root);
+class _TranslationsGoalDa extends TranslationsGoalEn {
+ _TranslationsGoalDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Mål: ${amount}';
- @override String remaining({ required Object amount}) => 'Resterende: ${amount}';
+ @override String title({required Object amount}) => 'Mål: ${amount}';
+ @override String remaining({required Object amount}) => 'Resterende: ${amount}';
@override String get complete => 'KOMPLET';
}
// Path: button
-class _TranslationsButtonDa implements TranslationsButtonEn {
- _TranslationsButtonDa._(this._root);
+class _TranslationsButtonDa extends TranslationsButtonEn {
+ _TranslationsButtonDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonDa implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedDa implements TranslationsEmbedEn {
- _TranslationsEmbedDa._(this._root);
+class _TranslationsEmbedDa extends TranslationsEmbedEn {
+ _TranslationsEmbedDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artikel af ${name}';
- @override String note_by({ required Object name}) => 'Note fra ${name}';
- @override String live_stream_by({ required Object name}) => 'Livestream på ${name}';
+ @override String article_by({required Object name}) => 'Artikel af ${name}';
+ @override String note_by({required Object name}) => 'Note fra ${name}';
+ @override String live_stream_by({required Object name}) => 'Livestream på ${name}';
}
// Path: stream_list
-class _TranslationsStreamListDa implements TranslationsStreamListEn {
- _TranslationsStreamListDa._(this._root);
+class _TranslationsStreamListDa extends TranslationsStreamListEn {
+ _TranslationsStreamListDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListDa implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapDa implements TranslationsZapEn {
- _TranslationsZapDa._(this._root);
+class _TranslationsZapDa extends TranslationsZapEn {
+ _TranslationsZapDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Brugerdefineret beløb';
@override String get confirm => 'Bekræft';
@override String get comment => 'Kommentar';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Åbn i tegnebogen';
@override String get copy => 'Kopieret til udklipsholder';
@@ -163,8 +164,8 @@ class _TranslationsZapDa implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileDa implements TranslationsProfileEn {
- _TranslationsProfileDa._(this._root);
+class _TranslationsProfileDa extends TranslationsProfileEn {
+ _TranslationsProfileDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileDa implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginDa implements TranslationsLoginEn {
- _TranslationsLoginDa._(this._root);
+class _TranslationsLoginDa extends TranslationsLoginEn {
+ _TranslationsLoginDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginDa implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusDa implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusDa._(this._root);
+class _TranslationsStreamStatusDa extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusDa implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatDa implements TranslationsStreamChatEn {
- _TranslationsStreamChatDa._(this._root);
+class _TranslationsStreamChatDa extends TranslationsStreamChatEn {
+ _TranslationsStreamChatDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DEAKTIVERET';
- @override String disabled_timeout({ required Object time}) => 'Timeout udløber: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timeout udløber: ${time}';
/// Chatbesked, der viser timeout-hændelser
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' udløbet '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream afsluttede footer i bunden af chatten
@override String get ended => 'STREAM AFSLUTTET';
/// Chatbesked, der viser stream-zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zappet '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteDa write = _TranslationsStreamChatWriteDa._(_root);
@override late final _TranslationsStreamChatBadgeDa badge = _TranslationsStreamChatBadgeDa._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatDa implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorDa implements TranslationsZapErrorEn {
- _TranslationsZapErrorDa._(this._root);
+class _TranslationsZapErrorDa extends TranslationsZapErrorEn {
+ _TranslationsZapErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorDa implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditDa implements TranslationsProfileEditEn {
- _TranslationsProfileEditDa._(this._root);
+class _TranslationsProfileEditDa extends TranslationsProfileEditEn {
+ _TranslationsProfileEditDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditDa implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorDa implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorDa._(this._root);
+class _TranslationsLoginErrorDa extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorDa implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteDa implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteDa._(this._root);
+class _TranslationsStreamChatWriteDa extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteDa implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeDa implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeDa._(this._root);
+class _TranslationsStreamChatBadgeDa extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeDa implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidDa implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidDa._(this._root);
+class _TranslationsStreamChatRaidDa extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
/// Chat raid-besked til en anden stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid-besked fra en anden stream
- @override String from({ required Object name}) => 'RAID FRA ${name}';
+ @override String from({required Object name}) => 'RAID FRA ${name}';
/// Nedtællingstimer til auto-raiding
- @override String countdown({ required Object time}) => 'Raiding i ${time}';
+ @override String countdown({required Object time}) => 'Raiding i ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorDa implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorDa._(this._root);
+class _TranslationsProfileEditErrorDa extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsDa {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'AFSLUTTET';
case 'stream.status.planned': return 'PLANLAGT';
- case 'stream.started': return ({ required Object timestamp}) => 'Startet ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Startet ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DEAKTIVERET';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout udløber: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout udløber: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' udløbet '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM AFSLUTTET';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zappet '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Skriv en besked';
case 'stream.chat.write.no_signer': return 'Kan ikke skrive beskeder med npub-login';
case 'stream.chat.write.login': return 'Log ind for at sende beskeder';
case 'stream.chat.badge.awarded_to': return 'Tildelt til:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FRA ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding i ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Mål: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Resterende: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FRA ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding i ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Mål: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Resterende: ${amount}';
case 'goal.complete': return 'KOMPLET';
case 'button.login': return 'Login';
case 'button.logout': return 'Log ud';
@@ -380,18 +381,18 @@ extension on TranslationsDa {
case 'button.unmute': return 'Slå lyden fra';
case 'button.share': return 'Del';
case 'button.save': return 'Gemme';
- case 'embed.article_by': return ({ required Object name}) => 'Artikel af ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note fra ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Livestream på ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artikel af ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note fra ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Livestream på ${name}';
case 'stream_list.following': return 'Efterfølgende';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planlagt';
case 'stream_list.ended': return 'Afsluttet';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Brugerdefineret beløb';
case 'zap.confirm': return 'Bekræft';
case 'zap.comment': return 'Kommentar';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Åbn i tegnebogen';
case 'zap.copy': return 'Kopieret til udklipsholder';
diff --git a/lib/i18n/strings_de.g.dart b/lib/i18n/strings_de.g.dart
index d712e2f..8c4af9f 100644
--- a/lib/i18n/strings_de.g.dart
+++ b/lib/i18n/strings_de.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsDe implements Translations {
+class TranslationsDe extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsDe({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsDe implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsDe implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsDe _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsDe implements Translations {
}
// Path: stream
-class _TranslationsStreamDe implements TranslationsStreamEn {
- _TranslationsStreamDe._(this._root);
+class _TranslationsStreamDe extends TranslationsStreamEn {
+ _TranslationsStreamDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusDe status = _TranslationsStreamStatusDe._(_root);
- @override String started({ required Object timestamp}) => 'Gestartet ${timestamp}';
+ @override String started({required Object timestamp}) => 'Gestartet ${timestamp}';
@override late final _TranslationsStreamChatDe chat = _TranslationsStreamChatDe._(_root);
}
// Path: goal
-class _TranslationsGoalDe implements TranslationsGoalEn {
- _TranslationsGoalDe._(this._root);
+class _TranslationsGoalDe extends TranslationsGoalEn {
+ _TranslationsGoalDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Ziel: ${amount}';
- @override String remaining({ required Object amount}) => 'Verbleibend: ${amount}';
+ @override String title({required Object amount}) => 'Ziel: ${amount}';
+ @override String remaining({required Object amount}) => 'Verbleibend: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonDe implements TranslationsButtonEn {
- _TranslationsButtonDe._(this._root);
+class _TranslationsButtonDe extends TranslationsButtonEn {
+ _TranslationsButtonDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonDe implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedDe implements TranslationsEmbedEn {
- _TranslationsEmbedDe._(this._root);
+class _TranslationsEmbedDe extends TranslationsEmbedEn {
+ _TranslationsEmbedDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artikel von ${name}';
- @override String note_by({ required Object name}) => 'Note von ${name}';
- @override String live_stream_by({ required Object name}) => 'Live-Stream von ${name}';
+ @override String article_by({required Object name}) => 'Artikel von ${name}';
+ @override String note_by({required Object name}) => 'Note von ${name}';
+ @override String live_stream_by({required Object name}) => 'Live-Stream von ${name}';
}
// Path: stream_list
-class _TranslationsStreamListDe implements TranslationsStreamListEn {
- _TranslationsStreamListDe._(this._root);
+class _TranslationsStreamListDe extends TranslationsStreamListEn {
+ _TranslationsStreamListDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListDe implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapDe implements TranslationsZapEn {
- _TranslationsZapDe._(this._root);
+class _TranslationsZapDe extends TranslationsZapEn {
+ _TranslationsZapDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => '${name} zappen';
+ @override String title({required Object name}) => '${name} zappen';
@override String get custom_amount => 'Benutzerdefinierter Betrag';
@override String get confirm => 'Bestätigen';
@override String get comment => 'Kommentar';
- @override String button_zap_ready({ required Object amount}) => '${amount} sats zappen';
+ @override String button_zap_ready({required Object amount}) => '${amount} sats zappen';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'In Brieftasche öffnen';
@override String get copy => 'In die Zwischenablage kopiert';
@@ -163,8 +164,8 @@ class _TranslationsZapDe implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileDe implements TranslationsProfileEn {
- _TranslationsProfileDe._(this._root);
+class _TranslationsProfileDe extends TranslationsProfileEn {
+ _TranslationsProfileDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileDe implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginDe implements TranslationsLoginEn {
- _TranslationsLoginDe._(this._root);
+class _TranslationsLoginDe extends TranslationsLoginEn {
+ _TranslationsLoginDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginDe implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusDe implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusDe._(this._root);
+class _TranslationsStreamStatusDe extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusDe implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatDe implements TranslationsStreamChatEn {
- _TranslationsStreamChatDe._(this._root);
+class _TranslationsStreamChatDe extends TranslationsStreamChatEn {
+ _TranslationsStreamChatDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DEAKTIVIERT';
- @override String disabled_timeout({ required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
/// Chat-Nachricht mit Zeitüberschreitungsereignissen
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Zeitüberschreitung '),
user,
const TextSpan(text: ' für '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream beendet Fußzeile am Ende des Chats
@override String get ended => 'STREAM BEENDET';
/// Chatnachricht mit Stream Zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' hat '),
amount,
const TextSpan(text: ' sats gezappt'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteDe write = _TranslationsStreamChatWriteDe._(_root);
@override late final _TranslationsStreamChatBadgeDe badge = _TranslationsStreamChatBadgeDe._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatDe implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorDe implements TranslationsZapErrorEn {
- _TranslationsZapErrorDe._(this._root);
+class _TranslationsZapErrorDe extends TranslationsZapErrorEn {
+ _TranslationsZapErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorDe implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditDe implements TranslationsProfileEditEn {
- _TranslationsProfileEditDe._(this._root);
+class _TranslationsProfileEditDe extends TranslationsProfileEditEn {
+ _TranslationsProfileEditDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditDe implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorDe implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorDe._(this._root);
+class _TranslationsLoginErrorDe extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorDe implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteDe implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteDe._(this._root);
+class _TranslationsStreamChatWriteDe extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteDe implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeDe implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeDe._(this._root);
+class _TranslationsStreamChatBadgeDe extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeDe implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidDe implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidDe._(this._root);
+class _TranslationsStreamChatRaidDe extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
/// Chat-Überfallnachricht an einen anderen Stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat-Raid-Nachricht aus einem anderen Stream
- @override String from({ required Object name}) => 'RAID VON ${name}';
+ @override String from({required Object name}) => 'RAID VON ${name}';
/// Countdown-Timer für automatisches Reiten
- @override String countdown({ required Object time}) => 'Raubzüge auf ${time}';
+ @override String countdown({required Object time}) => 'Raubzüge auf ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorDe implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorDe._(this._root);
+class _TranslationsProfileEditErrorDe extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsDe {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'GEPLANT';
- case 'stream.started': return ({ required Object timestamp}) => 'Gestartet ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Gestartet ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DEAKTIVIERT';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Zeitüberschreitung '),
user,
const TextSpan(text: ' für '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM BEENDET';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' hat '),
amount,
const TextSpan(text: ' sats gezappt'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Nachricht schreiben';
case 'stream.chat.write.no_signer': return 'Mit npub-Login können keine Nachrichten geschrieben werden';
case 'stream.chat.write.login': return 'Bitte anmelden, um Nachrichten zu senden';
case 'stream.chat.badge.awarded_to': return 'Verliehen an:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID VON ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raubzüge auf ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Ziel: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Verbleibend: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID VON ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raubzüge auf ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Ziel: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Verbleibend: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Anmelden';
case 'button.logout': return 'Abmelden';
@@ -380,18 +381,18 @@ extension on TranslationsDe {
case 'button.unmute': return 'Entstummen';
case 'button.share': return 'Teilen';
case 'button.save': return 'Speichern';
- case 'embed.article_by': return ({ required Object name}) => 'Artikel von ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note von ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live-Stream von ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artikel von ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note von ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live-Stream von ${name}';
case 'stream_list.following': return 'Folge ich';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Geplant';
case 'stream_list.ended': return 'Beendet';
- case 'zap.title': return ({ required Object name}) => '${name} zappen';
+ case 'zap.title': return ({required Object name}) => '${name} zappen';
case 'zap.custom_amount': return 'Benutzerdefinierter Betrag';
case 'zap.confirm': return 'Bestätigen';
case 'zap.comment': return 'Kommentar';
- case 'zap.button_zap_ready': return ({ required Object amount}) => '${amount} sats zappen';
+ case 'zap.button_zap_ready': return ({required Object amount}) => '${amount} sats zappen';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'In Brieftasche öffnen';
case 'zap.copy': return 'In die Zwischenablage kopiert';
diff --git a/lib/i18n/strings_el.g.dart b/lib/i18n/strings_el.g.dart
index b28cb72..4d436db 100644
--- a/lib/i18n/strings_el.g.dart
+++ b/lib/i18n/strings_el.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsEl implements Translations {
+class TranslationsEl extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsEl({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsEl implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsEl implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsEl _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsEl implements Translations {
}
// Path: stream
-class _TranslationsStreamEl implements TranslationsStreamEn {
- _TranslationsStreamEl._(this._root);
+class _TranslationsStreamEl extends TranslationsStreamEn {
+ _TranslationsStreamEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusEl status = _TranslationsStreamStatusEl._(_root);
- @override String started({ required Object timestamp}) => 'Ξεκίνησε ${timestamp}';
+ @override String started({required Object timestamp}) => 'Ξεκίνησε ${timestamp}';
@override late final _TranslationsStreamChatEl chat = _TranslationsStreamChatEl._(_root);
}
// Path: goal
-class _TranslationsGoalEl implements TranslationsGoalEn {
- _TranslationsGoalEl._(this._root);
+class _TranslationsGoalEl extends TranslationsGoalEn {
+ _TranslationsGoalEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Στόχος: ${amount}';
- @override String remaining({ required Object amount}) => 'Υπόλοιπο: ${amount}';
+ @override String title({required Object amount}) => 'Στόχος: ${amount}';
+ @override String remaining({required Object amount}) => 'Υπόλοιπο: ${amount}';
@override String get complete => 'ΠΛΗΡΗΣ';
}
// Path: button
-class _TranslationsButtonEl implements TranslationsButtonEn {
- _TranslationsButtonEl._(this._root);
+class _TranslationsButtonEl extends TranslationsButtonEn {
+ _TranslationsButtonEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonEl implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedEl implements TranslationsEmbedEn {
- _TranslationsEmbedEl._(this._root);
+class _TranslationsEmbedEl extends TranslationsEmbedEn {
+ _TranslationsEmbedEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Άρθρο από ${name}';
- @override String note_by({ required Object name}) => 'Σημείωση του ${name}';
- @override String live_stream_by({ required Object name}) => 'Ζωντανή μετάδοση από το ${name}';
+ @override String article_by({required Object name}) => 'Άρθρο από ${name}';
+ @override String note_by({required Object name}) => 'Σημείωση του ${name}';
+ @override String live_stream_by({required Object name}) => 'Ζωντανή μετάδοση από το ${name}';
}
// Path: stream_list
-class _TranslationsStreamListEl implements TranslationsStreamListEn {
- _TranslationsStreamListEl._(this._root);
+class _TranslationsStreamListEl extends TranslationsStreamListEn {
+ _TranslationsStreamListEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListEl implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapEl implements TranslationsZapEn {
- _TranslationsZapEl._(this._root);
+class _TranslationsZapEl extends TranslationsZapEn {
+ _TranslationsZapEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Προσαρμοσμένο ποσό';
@override String get confirm => 'Επιβεβαίωση';
@override String get comment => 'Σχόλιο';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Άνοιγμα στο πορτοφόλι';
@override String get copy => 'Αντιγραφή στο πρόχειρο';
@@ -163,8 +164,8 @@ class _TranslationsZapEl implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileEl implements TranslationsProfileEn {
- _TranslationsProfileEl._(this._root);
+class _TranslationsProfileEl extends TranslationsProfileEn {
+ _TranslationsProfileEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileEl implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginEl implements TranslationsLoginEn {
- _TranslationsLoginEl._(this._root);
+class _TranslationsLoginEl extends TranslationsLoginEn {
+ _TranslationsLoginEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginEl implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusEl implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusEl._(this._root);
+class _TranslationsStreamStatusEl extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusEl implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatEl implements TranslationsStreamChatEn {
- _TranslationsStreamChatEl._(this._root);
+class _TranslationsStreamChatEl extends TranslationsStreamChatEn {
+ _TranslationsStreamChatEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get disabled => 'ΑΠΕΝΕΡΓΟΠΟΙΗΜΈΝΗ ΣΥΝΟΜΙΛΊΑ';
- @override String disabled_timeout({ required Object time}) => 'Το χρονικό όριο λήγει: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Το χρονικό όριο λήγει: ${time}';
/// Μήνυμα συνομιλίας που εμφανίζει συμβάντα timeout
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' χρονομετρημένη λήξη '),
user,
const TextSpan(text: ' για '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Η ροή τελείωσε το υποσέλιδο στο κάτω μέρος της συνομιλίας
@override String get ended => 'STREAM ΤΕΛΕΙΩΣΕ';
/// Μήνυμα συνομιλίας που δείχνει ροή ροής zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteEl write = _TranslationsStreamChatWriteEl._(_root);
@override late final _TranslationsStreamChatBadgeEl badge = _TranslationsStreamChatBadgeEl._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatEl implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorEl implements TranslationsZapErrorEn {
- _TranslationsZapErrorEl._(this._root);
+class _TranslationsZapErrorEl extends TranslationsZapErrorEn {
+ _TranslationsZapErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorEl implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditEl implements TranslationsProfileEditEn {
- _TranslationsProfileEditEl._(this._root);
+class _TranslationsProfileEditEl extends TranslationsProfileEditEn {
+ _TranslationsProfileEditEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditEl implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorEl implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorEl._(this._root);
+class _TranslationsLoginErrorEl extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorEl implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteEl implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteEl._(this._root);
+class _TranslationsStreamChatWriteEl extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteEl implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeEl implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeEl._(this._root);
+class _TranslationsStreamChatBadgeEl extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeEl implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidEl implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidEl._(this._root);
+class _TranslationsStreamChatRaidEl extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
/// Μήνυμα επιδρομής συνομιλίας σε άλλη ροή
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Μήνυμα επιδρομής συνομιλίας από άλλη ροή
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Χρονοδιακόπτης αντίστροφης μέτρησης για αυτόματη ιππασία
- @override String countdown({ required Object time}) => 'Επιδρομές στο ${time}';
+ @override String countdown({required Object time}) => 'Επιδρομές στο ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorEl implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorEl._(this._root);
+class _TranslationsProfileEditErrorEl extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsEl {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'ΣΧΕΔΙΑΣΜΟΣ';
- case 'stream.started': return ({ required Object timestamp}) => 'Ξεκίνησε ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Ξεκίνησε ${timestamp}';
case 'stream.chat.disabled': return 'ΑΠΕΝΕΡΓΟΠΟΙΗΜΈΝΗ ΣΥΝΟΜΙΛΊΑ';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Το χρονικό όριο λήγει: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Το χρονικό όριο λήγει: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' χρονομετρημένη λήξη '),
user,
const TextSpan(text: ' για '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ΤΕΛΕΙΩΣΕ';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Γράψτε μήνυμα';
case 'stream.chat.write.no_signer': return 'Δεν μπορείτε να γράψετε μηνύματα με σύνδεση στο npub';
case 'stream.chat.write.login': return 'Παρακαλώ συνδεθείτε για να στείλετε μηνύματα';
case 'stream.chat.badge.awarded_to': return 'Απονέμεται σε:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Επιδρομές στο ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Στόχος: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Υπόλοιπο: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Επιδρομές στο ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Στόχος: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Υπόλοιπο: ${amount}';
case 'goal.complete': return 'ΠΛΗΡΗΣ';
case 'button.login': return 'Σύνδεση';
case 'button.logout': return 'Αποσύνδεση';
@@ -380,18 +381,18 @@ extension on TranslationsEl {
case 'button.unmute': return 'Αποσυνδέστε τη φωνή σας από το';
case 'button.share': return 'Μοιραστείτε το';
case 'button.save': return 'Αποθήκευση';
- case 'embed.article_by': return ({ required Object name}) => 'Άρθρο από ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Σημείωση του ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Ζωντανή μετάδοση από το ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Άρθρο από ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Σημείωση του ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Ζωντανή μετάδοση από το ${name}';
case 'stream_list.following': return 'Ακολουθώντας το';
case 'stream_list.live': return 'Ζωντανό';
case 'stream_list.planned': return 'Προγραμματισμένο';
case 'stream_list.ended': return 'Τελείωσε';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Προσαρμοσμένο ποσό';
case 'zap.confirm': return 'Επιβεβαίωση';
case 'zap.comment': return 'Σχόλιο';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Άνοιγμα στο πορτοφόλι';
case 'zap.copy': return 'Αντιγραφή στο πρόχειρο';
diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart
index 58cba91..add89da 100644
--- a/lib/i18n/strings_en.g.dart
+++ b/lib/i18n/strings_en.g.dart
@@ -58,46 +58,47 @@ class Translations implements BaseTranslations {
other: '${n} viewers',
);
- late final TranslationsStreamEn stream = TranslationsStreamEn._(_root);
- late final TranslationsGoalEn goal = TranslationsGoalEn._(_root);
- late final TranslationsButtonEn button = TranslationsButtonEn._(_root);
- late final TranslationsEmbedEn embed = TranslationsEmbedEn._(_root);
+ late final TranslationsStreamEn stream = TranslationsStreamEn.internal(_root);
+ late final TranslationsGoalEn goal = TranslationsGoalEn.internal(_root);
+ late final TranslationsButtonEn button = TranslationsButtonEn.internal(_root);
+ late final TranslationsEmbedEn embed = TranslationsEmbedEn.internal(_root);
/// Headings on stream lists by stream type live/ended/planned etc.
- late final TranslationsStreamListEn stream_list = TranslationsStreamListEn._(_root);
+ late final TranslationsStreamListEn stream_list = TranslationsStreamListEn.internal(_root);
- late final TranslationsZapEn zap = TranslationsZapEn._(_root);
- late final TranslationsProfileEn profile = TranslationsProfileEn._(_root);
- late final TranslationsLoginEn login = TranslationsLoginEn._(_root);
+ late final TranslationsZapEn zap = TranslationsZapEn.internal(_root);
+ late final TranslationsProfileEn profile = TranslationsProfileEn.internal(_root);
+ late final TranslationsWalletEn wallet = TranslationsWalletEn.internal(_root);
+ late final TranslationsLoginEn login = TranslationsLoginEn.internal(_root);
}
// Path: stream
class TranslationsStreamEn {
- TranslationsStreamEn._(this._root);
+ TranslationsStreamEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
- late final TranslationsStreamStatusEn status = TranslationsStreamStatusEn._(_root);
- String started({ required Object timestamp}) => 'Started ${timestamp}';
- late final TranslationsStreamChatEn chat = TranslationsStreamChatEn._(_root);
+ late final TranslationsStreamStatusEn status = TranslationsStreamStatusEn.internal(_root);
+ String started({required Object timestamp}) => 'Started ${timestamp}';
+ late final TranslationsStreamChatEn chat = TranslationsStreamChatEn.internal(_root);
}
// Path: goal
class TranslationsGoalEn {
- TranslationsGoalEn._(this._root);
+ TranslationsGoalEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
- String title({ required Object amount}) => 'Goal: ${amount}';
- String remaining({ required Object amount}) => 'Remaining: ${amount}';
+ String title({required Object amount}) => 'Goal: ${amount}';
+ String remaining({required Object amount}) => 'Remaining: ${amount}';
String get complete => 'COMPLETE';
}
// Path: button
class TranslationsButtonEn {
- TranslationsButtonEn._(this._root);
+ TranslationsButtonEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -119,23 +120,24 @@ class TranslationsButtonEn {
String get unmute => 'Unmute';
String get share => 'Share';
String get save => 'Save';
+ String get connect => 'Connect';
}
// Path: embed
class TranslationsEmbedEn {
- TranslationsEmbedEn._(this._root);
+ TranslationsEmbedEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
- String article_by({ required Object name}) => 'Article by ${name}';
- String note_by({ required Object name}) => 'Note by ${name}';
- String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ String article_by({required Object name}) => 'Article by ${name}';
+ String note_by({required Object name}) => 'Note by ${name}';
+ String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
class TranslationsStreamListEn {
- TranslationsStreamListEn._(this._root);
+ TranslationsStreamListEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -148,36 +150,48 @@ class TranslationsStreamListEn {
// Path: zap
class TranslationsZapEn {
- TranslationsZapEn._(this._root);
+ TranslationsZapEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
- String title({ required Object name}) => 'Zap ${name}';
+ String title({required Object name}) => 'Zap ${name}';
String get custom_amount => 'Custom Amount';
String get confirm => 'Confirm';
String get comment => 'Comment';
- String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
String get button_zap => 'Zap';
String get button_open_wallet => 'Open in Wallet';
+ String get button_connect_wallet => 'Connect Wallet';
String get copy => 'Copied to clipboard';
- late final TranslationsZapErrorEn error = TranslationsZapErrorEn._(_root);
+ late final TranslationsZapErrorEn error = TranslationsZapErrorEn.internal(_root);
}
// Path: profile
class TranslationsProfileEn {
- TranslationsProfileEn._(this._root);
+ TranslationsProfileEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get past_streams => 'Past Streams';
- late final TranslationsProfileEditEn edit = TranslationsProfileEditEn._(_root);
+ late final TranslationsProfileEditEn edit = TranslationsProfileEditEn.internal(_root);
+}
+
+// Path: wallet
+class TranslationsWalletEn {
+ TranslationsWalletEn.internal(this._root);
+
+ final Translations _root; // ignore: unused_field
+
+ // Translations
+ String get connect_wallet => 'Connect Wallet (NWC)';
+ late final TranslationsWalletErrorEn error = TranslationsWalletErrorEn.internal(_root);
}
// Path: login
class TranslationsLoginEn {
- TranslationsLoginEn._(this._root);
+ TranslationsLoginEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -186,12 +200,12 @@ class TranslationsLoginEn {
String get amber => 'Login with Amber';
String get key => 'Login with Key';
String get create => 'Create Account';
- late final TranslationsLoginErrorEn error = TranslationsLoginErrorEn._(_root);
+ late final TranslationsLoginErrorEn error = TranslationsLoginErrorEn.internal(_root);
}
// Path: stream.status
class TranslationsStreamStatusEn {
- TranslationsStreamStatusEn._(this._root);
+ TranslationsStreamStatusEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -203,42 +217,42 @@ class TranslationsStreamStatusEn {
// Path: stream.chat
class TranslationsStreamChatEn {
- TranslationsStreamChatEn._(this._root);
+ TranslationsStreamChatEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get disabled => 'CHAT DISABLED';
- String disabled_timeout({ required Object time}) => 'Timeout expires: ${time}';
+ String disabled_timeout({required Object time}) => 'Timeout expires: ${time}';
/// Chat message showing timeout events
- TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
String get ended => 'STREAM ENDED';
/// Chat message showing stream zaps
- TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
- late final TranslationsStreamChatWriteEn write = TranslationsStreamChatWriteEn._(_root);
- late final TranslationsStreamChatBadgeEn badge = TranslationsStreamChatBadgeEn._(_root);
- late final TranslationsStreamChatRaidEn raid = TranslationsStreamChatRaidEn._(_root);
+ late final TranslationsStreamChatWriteEn write = TranslationsStreamChatWriteEn.internal(_root);
+ late final TranslationsStreamChatBadgeEn badge = TranslationsStreamChatBadgeEn.internal(_root);
+ late final TranslationsStreamChatRaidEn raid = TranslationsStreamChatRaidEn.internal(_root);
}
// Path: zap.error
class TranslationsZapErrorEn {
- TranslationsZapErrorEn._(this._root);
+ TranslationsZapErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -250,7 +264,7 @@ class TranslationsZapErrorEn {
// Path: profile.edit
class TranslationsProfileEditEn {
- TranslationsProfileEditEn._(this._root);
+ TranslationsProfileEditEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -259,12 +273,22 @@ class TranslationsProfileEditEn {
String get about => 'About';
String get nip05 => 'Nostr Address';
String get lud16 => 'Lightning Address';
- late final TranslationsProfileEditErrorEn error = TranslationsProfileEditErrorEn._(_root);
+ late final TranslationsProfileEditErrorEn error = TranslationsProfileEditErrorEn.internal(_root);
+}
+
+// Path: wallet.error
+class TranslationsWalletErrorEn {
+ TranslationsWalletErrorEn.internal(this._root);
+
+ final Translations _root; // ignore: unused_field
+
+ // Translations
+ String get logged_out => 'Cant connect wallet when logged out';
}
// Path: login.error
class TranslationsLoginErrorEn {
- TranslationsLoginErrorEn._(this._root);
+ TranslationsLoginErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -274,7 +298,7 @@ class TranslationsLoginErrorEn {
// Path: stream.chat.write
class TranslationsStreamChatWriteEn {
- TranslationsStreamChatWriteEn._(this._root);
+ TranslationsStreamChatWriteEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -292,7 +316,7 @@ class TranslationsStreamChatWriteEn {
// Path: stream.chat.badge
class TranslationsStreamChatBadgeEn {
- TranslationsStreamChatBadgeEn._(this._root);
+ TranslationsStreamChatBadgeEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -304,25 +328,25 @@ class TranslationsStreamChatBadgeEn {
// Path: stream.chat.raid
class TranslationsStreamChatRaidEn {
- TranslationsStreamChatRaidEn._(this._root);
+ TranslationsStreamChatRaidEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
- String to({ required Object name}) => 'RAIDING ${name}';
+ String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
- String from({ required Object name}) => 'RAID FROM ${name}';
+ String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
- String countdown({ required Object time}) => 'Raiding in ${time}';
+ String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
class TranslationsProfileEditErrorEn {
- TranslationsProfileEditErrorEn._(this._root);
+ TranslationsProfileEditErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
@@ -346,32 +370,32 @@ extension on Translations {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'PLANNED';
- case 'stream.started': return ({ required Object timestamp}) => 'Started ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Started ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout expires: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Write message';
case 'stream.chat.write.no_signer': return 'Can\'t write messages with npub login';
case 'stream.chat.write.login': return 'Please login to send messages';
case 'stream.chat.badge.awarded_to': return 'Awarded to:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Goal: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Remaining: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Goal: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Remaining: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -382,20 +406,22 @@ extension on Translations {
case 'button.unmute': return 'Unmute';
case 'button.share': return 'Share';
case 'button.save': return 'Save';
- case 'embed.article_by': return ({ required Object name}) => 'Article by ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note by ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'button.connect': return 'Connect';
+ case 'embed.article_by': return ({required Object name}) => 'Article by ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note by ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return 'Following';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planned';
case 'stream_list.ended': return 'Ended';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Custom Amount';
case 'zap.confirm': return 'Confirm';
case 'zap.comment': return 'Comment';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Open in Wallet';
+ case 'zap.button_connect_wallet': return 'Connect Wallet';
case 'zap.copy': return 'Copied to clipboard';
case 'zap.error.invalid_custom_amount': return 'Invalid custom amount';
case 'zap.error.no_wallet': return 'No lightning wallet installed';
@@ -406,6 +432,8 @@ extension on Translations {
case 'profile.edit.nip05': return 'Nostr Address';
case 'profile.edit.lud16': return 'Lightning Address';
case 'profile.edit.error.logged_out': return 'Cant edit profile when logged out';
+ case 'wallet.connect_wallet': return 'Connect Wallet (NWC)';
+ case 'wallet.error.logged_out': return 'Cant connect wallet when logged out';
case 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart
index 6c87663..e327045 100644
--- a/lib/i18n/strings_es.g.dart
+++ b/lib/i18n/strings_es.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsEs implements Translations {
+class TranslationsEs extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsEs({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsEs implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsEs implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsEs _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsEs implements Translations {
}
// Path: stream
-class _TranslationsStreamEs implements TranslationsStreamEn {
- _TranslationsStreamEs._(this._root);
+class _TranslationsStreamEs extends TranslationsStreamEn {
+ _TranslationsStreamEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusEs status = _TranslationsStreamStatusEs._(_root);
- @override String started({ required Object timestamp}) => 'Comenzó ${timestamp}';
+ @override String started({required Object timestamp}) => 'Comenzó ${timestamp}';
@override late final _TranslationsStreamChatEs chat = _TranslationsStreamChatEs._(_root);
}
// Path: goal
-class _TranslationsGoalEs implements TranslationsGoalEn {
- _TranslationsGoalEs._(this._root);
+class _TranslationsGoalEs extends TranslationsGoalEn {
+ _TranslationsGoalEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Objetivo: ${amount}';
- @override String remaining({ required Object amount}) => 'Resto: ${amount}';
+ @override String title({required Object amount}) => 'Objetivo: ${amount}';
+ @override String remaining({required Object amount}) => 'Resto: ${amount}';
@override String get complete => 'COMPLETAR';
}
// Path: button
-class _TranslationsButtonEs implements TranslationsButtonEn {
- _TranslationsButtonEs._(this._root);
+class _TranslationsButtonEs extends TranslationsButtonEn {
+ _TranslationsButtonEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonEs implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedEs implements TranslationsEmbedEn {
- _TranslationsEmbedEs._(this._root);
+class _TranslationsEmbedEs extends TranslationsEmbedEn {
+ _TranslationsEmbedEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artículo de ${name}';
- @override String note_by({ required Object name}) => 'Nota de ${name}';
- @override String live_stream_by({ required Object name}) => 'Transmisión en directo por ${name}';
+ @override String article_by({required Object name}) => 'Artículo de ${name}';
+ @override String note_by({required Object name}) => 'Nota de ${name}';
+ @override String live_stream_by({required Object name}) => 'Transmisión en directo por ${name}';
}
// Path: stream_list
-class _TranslationsStreamListEs implements TranslationsStreamListEn {
- _TranslationsStreamListEs._(this._root);
+class _TranslationsStreamListEs extends TranslationsStreamListEn {
+ _TranslationsStreamListEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListEs implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapEs implements TranslationsZapEn {
- _TranslationsZapEs._(this._root);
+class _TranslationsZapEs extends TranslationsZapEn {
+ _TranslationsZapEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Importe personalizado';
@override String get confirm => 'Confirmar';
@override String get comment => 'Comentario';
- @override String button_zap_ready({ required Object amount}) => 'Zapear ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zapear ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Abrir en cartera';
@override String get copy => 'Copiado al portapapeles';
@@ -163,8 +164,8 @@ class _TranslationsZapEs implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileEs implements TranslationsProfileEn {
- _TranslationsProfileEs._(this._root);
+class _TranslationsProfileEs extends TranslationsProfileEn {
+ _TranslationsProfileEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileEs implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginEs implements TranslationsLoginEn {
- _TranslationsLoginEs._(this._root);
+class _TranslationsLoginEs extends TranslationsLoginEn {
+ _TranslationsLoginEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginEs implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusEs implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusEs._(this._root);
+class _TranslationsStreamStatusEs extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusEs implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatEs implements TranslationsStreamChatEn {
- _TranslationsStreamChatEs._(this._root);
+class _TranslationsStreamChatEs extends TranslationsStreamChatEn {
+ _TranslationsStreamChatEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DESHABILITADO';
- @override String disabled_timeout({ required Object time}) => 'El tiempo de espera expira: ${time}';
+ @override String disabled_timeout({required Object time}) => 'El tiempo de espera expira: ${time}';
/// Mensaje de chat que muestra los eventos de tiempo de espera
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' para '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream finalizó en la parte inferior del chat
@override String get ended => 'STREAM FINED';
/// Mensaje de chat que muestra zaps de flujo
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapearon '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteEs write = _TranslationsStreamChatWriteEs._(_root);
@override late final _TranslationsStreamChatBadgeEs badge = _TranslationsStreamChatBadgeEs._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatEs implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorEs implements TranslationsZapErrorEn {
- _TranslationsZapErrorEs._(this._root);
+class _TranslationsZapErrorEs extends TranslationsZapErrorEn {
+ _TranslationsZapErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorEs implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditEs implements TranslationsProfileEditEn {
- _TranslationsProfileEditEs._(this._root);
+class _TranslationsProfileEditEs extends TranslationsProfileEditEn {
+ _TranslationsProfileEditEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditEs implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorEs implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorEs._(this._root);
+class _TranslationsLoginErrorEs extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorEs implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteEs implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteEs._(this._root);
+class _TranslationsStreamChatWriteEs extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteEs implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeEs implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeEs._(this._root);
+class _TranslationsStreamChatBadgeEs extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeEs implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidEs implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidEs._(this._root);
+class _TranslationsStreamChatRaidEs extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
/// Mensaje de raid de chat a otro flujo
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Mensaje de incursión en el chat desde otro flujo
- @override String from({ required Object name}) => 'RAID DESDE ${name}';
+ @override String from({required Object name}) => 'RAID DESDE ${name}';
/// Temporizador de cuenta atrás para auto-raiding
- @override String countdown({ required Object time}) => 'Incursiones en ${time}';
+ @override String countdown({required Object time}) => 'Incursiones en ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorEs implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorEs._(this._root);
+class _TranslationsProfileEditErrorEs extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsEs {
case 'stream.status.live': return 'EN VIVO';
case 'stream.status.ended': return 'FIN';
case 'stream.status.planned': return 'PLANIFICADO';
- case 'stream.started': return ({ required Object timestamp}) => 'Comenzó ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Comenzó ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DESHABILITADO';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'El tiempo de espera expira: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'El tiempo de espera expira: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' para '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM FINED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapearon '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Escribir mensaje';
case 'stream.chat.write.no_signer': return 'No se pueden escribir mensajes con el login npub';
case 'stream.chat.write.login': return 'Inicie sesión para enviar mensajes';
case 'stream.chat.badge.awarded_to': return 'Concedido a:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID DESDE ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Incursiones en ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Objetivo: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Resto: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID DESDE ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Incursiones en ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Objetivo: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Resto: ${amount}';
case 'goal.complete': return 'COMPLETAR';
case 'button.login': return 'Iniciar Sesión';
case 'button.logout': return 'Cerrar sesión';
@@ -380,18 +381,18 @@ extension on TranslationsEs {
case 'button.unmute': return 'Dejar de silenciar';
case 'button.share': return 'Compartir';
case 'button.save': return 'Guardar';
- case 'embed.article_by': return ({ required Object name}) => 'Artículo de ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Nota de ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Transmisión en directo por ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artículo de ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Nota de ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Transmisión en directo por ${name}';
case 'stream_list.following': return 'Siguiendo';
case 'stream_list.live': return 'En directo';
case 'stream_list.planned': return 'Planificado';
case 'stream_list.ended': return 'Finalizado';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Importe personalizado';
case 'zap.confirm': return 'Confirmar';
case 'zap.comment': return 'Comentario';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zapear ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zapear ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Abrir en cartera';
case 'zap.copy': return 'Copiado al portapapeles';
diff --git a/lib/i18n/strings_fi.g.dart b/lib/i18n/strings_fi.g.dart
index afdc30f..918a0ed 100644
--- a/lib/i18n/strings_fi.g.dart
+++ b/lib/i18n/strings_fi.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsFi implements Translations {
+class TranslationsFi extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsFi({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsFi implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsFi implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsFi _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsFi implements Translations {
}
// Path: stream
-class _TranslationsStreamFi implements TranslationsStreamEn {
- _TranslationsStreamFi._(this._root);
+class _TranslationsStreamFi extends TranslationsStreamEn {
+ _TranslationsStreamFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusFi status = _TranslationsStreamStatusFi._(_root);
- @override String started({ required Object timestamp}) => 'Aloitettu ${timestamp}';
+ @override String started({required Object timestamp}) => 'Aloitettu ${timestamp}';
@override late final _TranslationsStreamChatFi chat = _TranslationsStreamChatFi._(_root);
}
// Path: goal
-class _TranslationsGoalFi implements TranslationsGoalEn {
- _TranslationsGoalFi._(this._root);
+class _TranslationsGoalFi extends TranslationsGoalEn {
+ _TranslationsGoalFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Tavoite: ${amount}';
- @override String remaining({ required Object amount}) => 'Jäljellä: ${amount}';
+ @override String title({required Object amount}) => 'Tavoite: ${amount}';
+ @override String remaining({required Object amount}) => 'Jäljellä: ${amount}';
@override String get complete => 'TÄYDELLINEN';
}
// Path: button
-class _TranslationsButtonFi implements TranslationsButtonEn {
- _TranslationsButtonFi._(this._root);
+class _TranslationsButtonFi extends TranslationsButtonEn {
+ _TranslationsButtonFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonFi implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedFi implements TranslationsEmbedEn {
- _TranslationsEmbedFi._(this._root);
+class _TranslationsEmbedFi extends TranslationsEmbedEn {
+ _TranslationsEmbedFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artikkeli ${name}';
- @override String note_by({ required Object name}) => 'Viesti lähettäjältä ${name}';
- @override String live_stream_by({ required Object name}) => 'Suora lähetys osoitteessa ${name}';
+ @override String article_by({required Object name}) => 'Artikkeli ${name}';
+ @override String note_by({required Object name}) => 'Viesti lähettäjältä ${name}';
+ @override String live_stream_by({required Object name}) => 'Suora lähetys osoitteessa ${name}';
}
// Path: stream_list
-class _TranslationsStreamListFi implements TranslationsStreamListEn {
- _TranslationsStreamListFi._(this._root);
+class _TranslationsStreamListFi extends TranslationsStreamListEn {
+ _TranslationsStreamListFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListFi implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapFi implements TranslationsZapEn {
- _TranslationsZapFi._(this._root);
+class _TranslationsZapFi extends TranslationsZapEn {
+ _TranslationsZapFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Mukautettu määrä';
@override String get confirm => 'Vahvista';
@override String get comment => 'Kommentoi';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} satsia';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} satsia';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Avaa lompakossa';
@override String get copy => 'Kopioitu leikepöydälle';
@@ -163,8 +164,8 @@ class _TranslationsZapFi implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileFi implements TranslationsProfileEn {
- _TranslationsProfileFi._(this._root);
+class _TranslationsProfileFi extends TranslationsProfileEn {
+ _TranslationsProfileFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileFi implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginFi implements TranslationsLoginEn {
- _TranslationsLoginFi._(this._root);
+class _TranslationsLoginFi extends TranslationsLoginEn {
+ _TranslationsLoginFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginFi implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusFi implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusFi._(this._root);
+class _TranslationsStreamStatusFi extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusFi implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatFi implements TranslationsStreamChatEn {
- _TranslationsStreamChatFi._(this._root);
+class _TranslationsStreamChatFi extends TranslationsStreamChatEn {
+ _TranslationsStreamChatFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT POISTETTU KÄYTÖSTÄ';
- @override String disabled_timeout({ required Object time}) => 'Aikakatkaisu päättyy: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Aikakatkaisu päättyy: ${time}';
/// Chat-viesti, joka näyttää aikakatkaisutapahtumat
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' ajastettu '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Virta päättyi alatunnisteen alareunaan chatissa
@override String get ended => 'STREAM PÄÄTTYNYT';
/// Chat-viestin näyttäminen stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zappasi '),
amount,
const TextSpan(text: ' satsia'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteFi write = _TranslationsStreamChatWriteFi._(_root);
@override late final _TranslationsStreamChatBadgeFi badge = _TranslationsStreamChatBadgeFi._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatFi implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorFi implements TranslationsZapErrorEn {
- _TranslationsZapErrorFi._(this._root);
+class _TranslationsZapErrorFi extends TranslationsZapErrorEn {
+ _TranslationsZapErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorFi implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditFi implements TranslationsProfileEditEn {
- _TranslationsProfileEditFi._(this._root);
+class _TranslationsProfileEditFi extends TranslationsProfileEditEn {
+ _TranslationsProfileEditFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditFi implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorFi implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorFi._(this._root);
+class _TranslationsLoginErrorFi extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorFi implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteFi implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteFi._(this._root);
+class _TranslationsStreamChatWriteFi extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteFi implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeFi implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeFi._(this._root);
+class _TranslationsStreamChatBadgeFi extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeFi implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidFi implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidFi._(this._root);
+class _TranslationsStreamChatRaidFi extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
/// Chat-viesti toiseen streamiin
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid viesti toisesta virrasta
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Lähtölaskenta ajastin automaattista ratsastusta varten
- @override String countdown({ required Object time}) => 'Ryöstöretket osoitteessa ${time}';
+ @override String countdown({required Object time}) => 'Ryöstöretket osoitteessa ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorFi implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorFi._(this._root);
+class _TranslationsProfileEditErrorFi extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsFi {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'SUUNNITELTU';
- case 'stream.started': return ({ required Object timestamp}) => 'Aloitettu ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Aloitettu ${timestamp}';
case 'stream.chat.disabled': return 'CHAT POISTETTU KÄYTÖSTÄ';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Aikakatkaisu päättyy: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Aikakatkaisu päättyy: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' ajastettu '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM PÄÄTTYNYT';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zappasi '),
amount,
const TextSpan(text: ' satsia'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Kirjoita viesti';
case 'stream.chat.write.no_signer': return 'Ei voi kirjoittaa viestejä npub-kirjautumisella';
case 'stream.chat.write.login': return 'Kirjaudu sisään lähettääksesi viestejä';
case 'stream.chat.badge.awarded_to': return 'Myönnetty:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Ryöstöretket osoitteessa ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Tavoite: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Jäljellä: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Ryöstöretket osoitteessa ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Tavoite: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Jäljellä: ${amount}';
case 'goal.complete': return 'TÄYDELLINEN';
case 'button.login': return 'Kirjaudu sisään';
case 'button.logout': return 'Kirjaudu ulos';
@@ -380,18 +381,18 @@ extension on TranslationsFi {
case 'button.unmute': return 'Poista mykistys';
case 'button.share': return 'Jaa';
case 'button.save': return 'Tallenna';
- case 'embed.article_by': return ({ required Object name}) => 'Artikkeli ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Viesti lähettäjältä ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Suora lähetys osoitteessa ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artikkeli ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Viesti lähettäjältä ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Suora lähetys osoitteessa ${name}';
case 'stream_list.following': return 'Seuraa';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Suunniteltu';
case 'stream_list.ended': return 'Päättynyt';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Mukautettu määrä';
case 'zap.confirm': return 'Vahvista';
case 'zap.comment': return 'Kommentoi';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} satsia';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} satsia';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Avaa lompakossa';
case 'zap.copy': return 'Kopioitu leikepöydälle';
diff --git a/lib/i18n/strings_fr.g.dart b/lib/i18n/strings_fr.g.dart
index e14f786..6bfdd84 100644
--- a/lib/i18n/strings_fr.g.dart
+++ b/lib/i18n/strings_fr.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsFr implements Translations {
+class TranslationsFr extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsFr({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsFr implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsFr implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsFr _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsFr implements Translations {
}
// Path: stream
-class _TranslationsStreamFr implements TranslationsStreamEn {
- _TranslationsStreamFr._(this._root);
+class _TranslationsStreamFr extends TranslationsStreamEn {
+ _TranslationsStreamFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusFr status = _TranslationsStreamStatusFr._(_root);
- @override String started({ required Object timestamp}) => 'Commencé à ${timestamp}';
+ @override String started({required Object timestamp}) => 'Commencé à ${timestamp}';
@override late final _TranslationsStreamChatFr chat = _TranslationsStreamChatFr._(_root);
}
// Path: goal
-class _TranslationsGoalFr implements TranslationsGoalEn {
- _TranslationsGoalFr._(this._root);
+class _TranslationsGoalFr extends TranslationsGoalEn {
+ _TranslationsGoalFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Objectif : ${amount}';
- @override String remaining({ required Object amount}) => 'Reste : ${amount}';
+ @override String title({required Object amount}) => 'Objectif : ${amount}';
+ @override String remaining({required Object amount}) => 'Reste : ${amount}';
@override String get complete => 'COMPLET';
}
// Path: button
-class _TranslationsButtonFr implements TranslationsButtonEn {
- _TranslationsButtonFr._(this._root);
+class _TranslationsButtonFr extends TranslationsButtonEn {
+ _TranslationsButtonFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonFr implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedFr implements TranslationsEmbedEn {
- _TranslationsEmbedFr._(this._root);
+class _TranslationsEmbedFr extends TranslationsEmbedEn {
+ _TranslationsEmbedFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Article par ${name}';
- @override String note_by({ required Object name}) => 'Note par ${name}';
- @override String live_stream_by({ required Object name}) => 'Retransmission en direct sur ${name}';
+ @override String article_by({required Object name}) => 'Article par ${name}';
+ @override String note_by({required Object name}) => 'Note par ${name}';
+ @override String live_stream_by({required Object name}) => 'Retransmission en direct sur ${name}';
}
// Path: stream_list
-class _TranslationsStreamListFr implements TranslationsStreamListEn {
- _TranslationsStreamListFr._(this._root);
+class _TranslationsStreamListFr extends TranslationsStreamListEn {
+ _TranslationsStreamListFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListFr implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapFr implements TranslationsZapEn {
- _TranslationsZapFr._(this._root);
+class _TranslationsZapFr extends TranslationsZapEn {
+ _TranslationsZapFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Montant personnalisé';
@override String get confirm => 'Confirmer';
@override String get comment => 'Commenter';
- @override String button_zap_ready({ required Object amount}) => 'Zapper ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zapper ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Ouvrir dans le portefeuille';
@override String get copy => 'Copié dans le presse-papiers';
@@ -163,8 +164,8 @@ class _TranslationsZapFr implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileFr implements TranslationsProfileEn {
- _TranslationsProfileFr._(this._root);
+class _TranslationsProfileFr extends TranslationsProfileEn {
+ _TranslationsProfileFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileFr implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginFr implements TranslationsLoginEn {
- _TranslationsLoginFr._(this._root);
+class _TranslationsLoginFr extends TranslationsLoginEn {
+ _TranslationsLoginFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginFr implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusFr implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusFr._(this._root);
+class _TranslationsStreamStatusFr extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusFr implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatFr implements TranslationsStreamChatEn {
- _TranslationsStreamChatFr._(this._root);
+class _TranslationsStreamChatFr extends TranslationsStreamChatEn {
+ _TranslationsStreamChatFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
- @override String disabled_timeout({ required Object time}) => 'Le délai expire : ${time}';
+ @override String disabled_timeout({required Object time}) => 'Le délai expire : ${time}';
/// Message de chat indiquant les événements de dépassement de délai
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' '),
user,
const TextSpan(text: ' a expiré dans le temps pour '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
@override String get ended => 'STREAM ENDED';
/// Message de chat montrant des zaps de flux
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' a zappé '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteFr write = _TranslationsStreamChatWriteFr._(_root);
@override late final _TranslationsStreamChatBadgeFr badge = _TranslationsStreamChatBadgeFr._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatFr implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorFr implements TranslationsZapErrorEn {
- _TranslationsZapErrorFr._(this._root);
+class _TranslationsZapErrorFr extends TranslationsZapErrorEn {
+ _TranslationsZapErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorFr implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditFr implements TranslationsProfileEditEn {
- _TranslationsProfileEditFr._(this._root);
+class _TranslationsProfileEditFr extends TranslationsProfileEditEn {
+ _TranslationsProfileEditFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditFr implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorFr implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorFr._(this._root);
+class _TranslationsLoginErrorFr extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorFr implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteFr implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteFr._(this._root);
+class _TranslationsStreamChatWriteFr extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteFr implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeFr implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeFr._(this._root);
+class _TranslationsStreamChatBadgeFr extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeFr implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidFr implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidFr._(this._root);
+class _TranslationsStreamChatRaidFr extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
/// Message de raid par chat vers un autre flux
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Message de raid sur le chat à partir d'un autre flux
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Compte à rebours pour l'auto-raid
- @override String countdown({ required Object time}) => 'Raid sur ${time}';
+ @override String countdown({required Object time}) => 'Raid sur ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorFr implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorFr._(this._root);
+class _TranslationsProfileEditErrorFr extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsFr {
case 'stream.status.live': return 'VIVRE';
case 'stream.status.ended': return 'FINI';
case 'stream.status.planned': return 'PRÉVU';
- case 'stream.started': return ({ required Object timestamp}) => 'Commencé à ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Commencé à ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Le délai expire : ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Le délai expire : ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' '),
user,
const TextSpan(text: ' a expiré dans le temps pour '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' a zappé '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Message écrit';
case 'stream.chat.write.no_signer': return 'Impossible d\'écrire des messages avec le login npub';
case 'stream.chat.write.login': return 'Veuillez vous connecter pour envoyer des messages';
case 'stream.chat.badge.awarded_to': return 'Attribué à :';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raid sur ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Objectif : ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Reste : ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raid sur ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Objectif : ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Reste : ${amount}';
case 'goal.complete': return 'COMPLET';
case 'button.login': return 'Se Connecter';
case 'button.logout': return 'Se déconnecter';
@@ -380,18 +381,18 @@ extension on TranslationsFr {
case 'button.unmute': return 'Retirer sourdine';
case 'button.share': return 'Partager';
case 'button.save': return 'Sauvegarder';
- case 'embed.article_by': return ({ required Object name}) => 'Article par ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note par ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Retransmission en direct sur ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Article par ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note par ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Retransmission en direct sur ${name}';
case 'stream_list.following': return 'Abonnements';
case 'stream_list.live': return 'En direct';
case 'stream_list.planned': return 'Planifié';
case 'stream_list.ended': return 'Terminé';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Montant personnalisé';
case 'zap.confirm': return 'Confirmer';
case 'zap.comment': return 'Commenter';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zapper ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zapper ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Ouvrir dans le portefeuille';
case 'zap.copy': return 'Copié dans le presse-papiers';
diff --git a/lib/i18n/strings_he.g.dart b/lib/i18n/strings_he.g.dart
index afa77ed..751fe76 100644
--- a/lib/i18n/strings_he.g.dart
+++ b/lib/i18n/strings_he.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsHe implements Translations {
+class TranslationsHe extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsHe({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsHe implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsHe implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsHe _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsHe implements Translations {
}
// Path: stream
-class _TranslationsStreamHe implements TranslationsStreamEn {
- _TranslationsStreamHe._(this._root);
+class _TranslationsStreamHe extends TranslationsStreamEn {
+ _TranslationsStreamHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusHe status = _TranslationsStreamStatusHe._(_root);
- @override String started({ required Object timestamp}) => 'Started ${timestamp}';
+ @override String started({required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatHe chat = _TranslationsStreamChatHe._(_root);
}
// Path: goal
-class _TranslationsGoalHe implements TranslationsGoalEn {
- _TranslationsGoalHe._(this._root);
+class _TranslationsGoalHe extends TranslationsGoalEn {
+ _TranslationsGoalHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Goal: ${amount}';
- @override String remaining({ required Object amount}) => 'Remaining: ${amount}';
+ @override String title({required Object amount}) => 'Goal: ${amount}';
+ @override String remaining({required Object amount}) => 'Remaining: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonHe implements TranslationsButtonEn {
- _TranslationsButtonHe._(this._root);
+class _TranslationsButtonHe extends TranslationsButtonEn {
+ _TranslationsButtonHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonHe implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedHe implements TranslationsEmbedEn {
- _TranslationsEmbedHe._(this._root);
+class _TranslationsEmbedHe extends TranslationsEmbedEn {
+ _TranslationsEmbedHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Article by ${name}';
- @override String note_by({ required Object name}) => 'Note by ${name}';
- @override String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ @override String article_by({required Object name}) => 'Article by ${name}';
+ @override String note_by({required Object name}) => 'Note by ${name}';
+ @override String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
-class _TranslationsStreamListHe implements TranslationsStreamListEn {
- _TranslationsStreamListHe._(this._root);
+class _TranslationsStreamListHe extends TranslationsStreamListEn {
+ _TranslationsStreamListHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListHe implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapHe implements TranslationsZapEn {
- _TranslationsZapHe._(this._root);
+class _TranslationsZapHe extends TranslationsZapEn {
+ _TranslationsZapHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Custom Amount';
@override String get confirm => 'Confirm';
@override String get comment => 'Comment';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@@ -163,8 +164,8 @@ class _TranslationsZapHe implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileHe implements TranslationsProfileEn {
- _TranslationsProfileHe._(this._root);
+class _TranslationsProfileHe extends TranslationsProfileEn {
+ _TranslationsProfileHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileHe implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginHe implements TranslationsLoginEn {
- _TranslationsLoginHe._(this._root);
+class _TranslationsLoginHe extends TranslationsLoginEn {
+ _TranslationsLoginHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginHe implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusHe implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusHe._(this._root);
+class _TranslationsStreamStatusHe extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusHe implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatHe implements TranslationsStreamChatEn {
- _TranslationsStreamChatHe._(this._root);
+class _TranslationsStreamChatHe extends TranslationsStreamChatEn {
+ _TranslationsStreamChatHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
- @override String disabled_timeout({ required Object time}) => 'Timeout expires: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timeout expires: ${time}';
/// Chat message showing timeout events
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
@override String get ended => 'STREAM ENDED';
/// Chat message showing stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteHe write = _TranslationsStreamChatWriteHe._(_root);
@override late final _TranslationsStreamChatBadgeHe badge = _TranslationsStreamChatBadgeHe._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatHe implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorHe implements TranslationsZapErrorEn {
- _TranslationsZapErrorHe._(this._root);
+class _TranslationsZapErrorHe extends TranslationsZapErrorEn {
+ _TranslationsZapErrorHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorHe implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditHe implements TranslationsProfileEditEn {
- _TranslationsProfileEditHe._(this._root);
+class _TranslationsProfileEditHe extends TranslationsProfileEditEn {
+ _TranslationsProfileEditHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditHe implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorHe implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorHe._(this._root);
+class _TranslationsLoginErrorHe extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorHe implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteHe implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteHe._(this._root);
+class _TranslationsStreamChatWriteHe extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteHe implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeHe implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeHe._(this._root);
+class _TranslationsStreamChatBadgeHe extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeHe implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidHe implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidHe._(this._root);
+class _TranslationsStreamChatRaidHe extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
- @override String countdown({ required Object time}) => 'Raiding in ${time}';
+ @override String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorHe implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorHe._(this._root);
+class _TranslationsProfileEditErrorHe extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorHe._(TranslationsHe root) : this._root = root, super.internal(root);
final TranslationsHe _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsHe {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'PLANNED';
- case 'stream.started': return ({ required Object timestamp}) => 'Started ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Started ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout expires: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Write message';
case 'stream.chat.write.no_signer': return 'Can\'t write messages with npub login';
case 'stream.chat.write.login': return 'Please login to send messages';
case 'stream.chat.badge.awarded_to': return 'Awarded to:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Goal: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Remaining: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Goal: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Remaining: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -380,18 +381,18 @@ extension on TranslationsHe {
case 'button.unmute': return 'Unmute';
case 'button.share': return 'Share';
case 'button.save': return 'Save';
- case 'embed.article_by': return ({ required Object name}) => 'Article by ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note by ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Article by ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note by ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return 'Following';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planned';
case 'stream_list.ended': return 'Ended';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Custom Amount';
case 'zap.confirm': return 'Confirm';
case 'zap.comment': return 'Comment';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Open in Wallet';
case 'zap.copy': return 'Copied to clipboard';
diff --git a/lib/i18n/strings_hu.g.dart b/lib/i18n/strings_hu.g.dart
index 826a7e8..c6b2b73 100644
--- a/lib/i18n/strings_hu.g.dart
+++ b/lib/i18n/strings_hu.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsHu implements Translations {
+class TranslationsHu extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsHu({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsHu implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsHu implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsHu _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsHu implements Translations {
}
// Path: stream
-class _TranslationsStreamHu implements TranslationsStreamEn {
- _TranslationsStreamHu._(this._root);
+class _TranslationsStreamHu extends TranslationsStreamEn {
+ _TranslationsStreamHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusHu status = _TranslationsStreamStatusHu._(_root);
- @override String started({ required Object timestamp}) => 'Elindult ${timestamp}';
+ @override String started({required Object timestamp}) => 'Elindult ${timestamp}';
@override late final _TranslationsStreamChatHu chat = _TranslationsStreamChatHu._(_root);
}
// Path: goal
-class _TranslationsGoalHu implements TranslationsGoalEn {
- _TranslationsGoalHu._(this._root);
+class _TranslationsGoalHu extends TranslationsGoalEn {
+ _TranslationsGoalHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Cél: ${amount}';
- @override String remaining({ required Object amount}) => 'Maradék: ${amount}';
+ @override String title({required Object amount}) => 'Cél: ${amount}';
+ @override String remaining({required Object amount}) => 'Maradék: ${amount}';
@override String get complete => 'TELJES';
}
// Path: button
-class _TranslationsButtonHu implements TranslationsButtonEn {
- _TranslationsButtonHu._(this._root);
+class _TranslationsButtonHu extends TranslationsButtonEn {
+ _TranslationsButtonHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonHu implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedHu implements TranslationsEmbedEn {
- _TranslationsEmbedHu._(this._root);
+class _TranslationsEmbedHu extends TranslationsEmbedEn {
+ _TranslationsEmbedHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'A ${name} cikke.';
- @override String note_by({ required Object name}) => '${name} bejegyzése';
- @override String live_stream_by({ required Object name}) => 'Élő közvetítés a ${name} oldalon';
+ @override String article_by({required Object name}) => 'A ${name} cikke.';
+ @override String note_by({required Object name}) => '${name} bejegyzése';
+ @override String live_stream_by({required Object name}) => 'Élő közvetítés a ${name} oldalon';
}
// Path: stream_list
-class _TranslationsStreamListHu implements TranslationsStreamListEn {
- _TranslationsStreamListHu._(this._root);
+class _TranslationsStreamListHu extends TranslationsStreamListEn {
+ _TranslationsStreamListHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListHu implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapHu implements TranslationsZapEn {
- _TranslationsZapHu._(this._root);
+class _TranslationsZapHu extends TranslationsZapEn {
+ _TranslationsZapHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Egyéni összeg';
@override String get confirm => 'Megerősítés';
@override String get comment => 'Hozzászólás';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} satoshi';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} satoshi';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Megnyitás a pénztárcában';
@override String get copy => 'Vágólapra másolva';
@@ -163,8 +164,8 @@ class _TranslationsZapHu implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileHu implements TranslationsProfileEn {
- _TranslationsProfileHu._(this._root);
+class _TranslationsProfileHu extends TranslationsProfileEn {
+ _TranslationsProfileHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileHu implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginHu implements TranslationsLoginEn {
- _TranslationsLoginHu._(this._root);
+class _TranslationsLoginHu extends TranslationsLoginEn {
+ _TranslationsLoginHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginHu implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusHu implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusHu._(this._root);
+class _TranslationsStreamStatusHu extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -200,35 +201,35 @@ class _TranslationsStreamStatusHu implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatHu implements TranslationsStreamChatEn {
- _TranslationsStreamChatHu._(this._root);
+class _TranslationsStreamChatHu extends TranslationsStreamChatEn {
+ _TranslationsStreamChatHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT KIKAPCSOLVA';
- @override String disabled_timeout({ required Object time}) => 'Az időkorlát lejár: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Az időkorlát lejár: ${time}';
/// Chat üzenet az időkorlátos események megjelenítésével
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' időzített '),
user,
const TextSpan(text: ' a '),
time,
const TextSpan(text: ' számára'),
- ], style: style, recognizer: recognizer);
+ ]);
/// A stream véget ért lábléc a chat alján
@override String get ended => 'STREAM MEGSZÜNTETETT';
/// Csevegőüzenet, amely stream zapokat mutat
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zap-elt '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteHu write = _TranslationsStreamChatWriteHu._(_root);
@override late final _TranslationsStreamChatBadgeHu badge = _TranslationsStreamChatBadgeHu._(_root);
@@ -236,8 +237,8 @@ class _TranslationsStreamChatHu implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorHu implements TranslationsZapErrorEn {
- _TranslationsZapErrorHu._(this._root);
+class _TranslationsZapErrorHu extends TranslationsZapErrorEn {
+ _TranslationsZapErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -248,8 +249,8 @@ class _TranslationsZapErrorHu implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditHu implements TranslationsProfileEditEn {
- _TranslationsProfileEditHu._(this._root);
+class _TranslationsProfileEditHu extends TranslationsProfileEditEn {
+ _TranslationsProfileEditHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -262,8 +263,8 @@ class _TranslationsProfileEditHu implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorHu implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorHu._(this._root);
+class _TranslationsLoginErrorHu extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -272,8 +273,8 @@ class _TranslationsLoginErrorHu implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteHu implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteHu._(this._root);
+class _TranslationsStreamChatWriteHu extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -290,8 +291,8 @@ class _TranslationsStreamChatWriteHu implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeHu implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeHu._(this._root);
+class _TranslationsStreamChatBadgeHu extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -302,26 +303,26 @@ class _TranslationsStreamChatBadgeHu implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidHu implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidHu._(this._root);
+class _TranslationsStreamChatRaidHu extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
/// Chat raid üzenet egy másik folyamba
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid üzenet egy másik folyamból
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Visszaszámláló időzítő az automatikus lovagláshoz
- @override String countdown({ required Object time}) => 'Raiding a ${time} oldalon';
+ @override String countdown({required Object time}) => 'Raiding a ${time} oldalon';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorHu implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorHu._(this._root);
+class _TranslationsProfileEditErrorHu extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@@ -345,33 +346,33 @@ extension on TranslationsHu {
case 'stream.status.live': return 'ÉLŐ';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'TERVEZETT';
- case 'stream.started': return ({ required Object timestamp}) => 'Elindult ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Elindult ${timestamp}';
case 'stream.chat.disabled': return 'CHAT KIKAPCSOLVA';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Az időkorlát lejár: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Az időkorlát lejár: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' időzített '),
user,
const TextSpan(text: ' a '),
time,
const TextSpan(text: ' számára'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM MEGSZÜNTETETT';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zap-elt '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Üzenet írása';
case 'stream.chat.write.no_signer': return 'Nem tud üzeneteket írni az npub bejelentkezéssel';
case 'stream.chat.write.login': return 'Kérjük, jelentkezzen be az üzenetek küldéséhez';
case 'stream.chat.badge.awarded_to': return 'Elnyerte:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding a ${time} oldalon';
- case 'goal.title': return ({ required Object amount}) => 'Cél: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Maradék: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding a ${time} oldalon';
+ case 'goal.title': return ({required Object amount}) => 'Cél: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Maradék: ${amount}';
case 'goal.complete': return 'TELJES';
case 'button.login': return 'Bejelentkezés';
case 'button.logout': return 'Kijelentkezés';
@@ -382,18 +383,18 @@ extension on TranslationsHu {
case 'button.unmute': return 'Némítás visszavonása';
case 'button.share': return 'Megosztás';
case 'button.save': return 'Mentés';
- case 'embed.article_by': return ({ required Object name}) => 'A ${name} cikke.';
- case 'embed.note_by': return ({ required Object name}) => '${name} bejegyzése';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Élő közvetítés a ${name} oldalon';
+ case 'embed.article_by': return ({required Object name}) => 'A ${name} cikke.';
+ case 'embed.note_by': return ({required Object name}) => '${name} bejegyzése';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Élő közvetítés a ${name} oldalon';
case 'stream_list.following': return 'Követettek bejegyzései';
case 'stream_list.live': return 'Élő';
case 'stream_list.planned': return 'Tervezett';
case 'stream_list.ended': return 'Véget ért';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Egyéni összeg';
case 'zap.confirm': return 'Megerősítés';
case 'zap.comment': return 'Hozzászólás';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} satoshi';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} satoshi';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Megnyitás a pénztárcában';
case 'zap.copy': return 'Vágólapra másolva';
diff --git a/lib/i18n/strings_it.g.dart b/lib/i18n/strings_it.g.dart
index 0916ace..21f83c3 100644
--- a/lib/i18n/strings_it.g.dart
+++ b/lib/i18n/strings_it.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsIt implements Translations {
+class TranslationsIt extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsIt({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsIt implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsIt implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsIt _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsIt implements Translations {
}
// Path: stream
-class _TranslationsStreamIt implements TranslationsStreamEn {
- _TranslationsStreamIt._(this._root);
+class _TranslationsStreamIt extends TranslationsStreamEn {
+ _TranslationsStreamIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusIt status = _TranslationsStreamStatusIt._(_root);
- @override String started({ required Object timestamp}) => 'Avviato ${timestamp}';
+ @override String started({required Object timestamp}) => 'Avviato ${timestamp}';
@override late final _TranslationsStreamChatIt chat = _TranslationsStreamChatIt._(_root);
}
// Path: goal
-class _TranslationsGoalIt implements TranslationsGoalEn {
- _TranslationsGoalIt._(this._root);
+class _TranslationsGoalIt extends TranslationsGoalEn {
+ _TranslationsGoalIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Obiettivo: ${amount}';
- @override String remaining({ required Object amount}) => 'Restante: ${amount}';
+ @override String title({required Object amount}) => 'Obiettivo: ${amount}';
+ @override String remaining({required Object amount}) => 'Restante: ${amount}';
@override String get complete => 'COMPLETO';
}
// Path: button
-class _TranslationsButtonIt implements TranslationsButtonEn {
- _TranslationsButtonIt._(this._root);
+class _TranslationsButtonIt extends TranslationsButtonEn {
+ _TranslationsButtonIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonIt implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedIt implements TranslationsEmbedEn {
- _TranslationsEmbedIt._(this._root);
+class _TranslationsEmbedIt extends TranslationsEmbedEn {
+ _TranslationsEmbedIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Articolo di ${name}';
- @override String note_by({ required Object name}) => 'Nota di ${name}';
- @override String live_stream_by({ required Object name}) => 'Streaming in diretta da ${name}';
+ @override String article_by({required Object name}) => 'Articolo di ${name}';
+ @override String note_by({required Object name}) => 'Nota di ${name}';
+ @override String live_stream_by({required Object name}) => 'Streaming in diretta da ${name}';
}
// Path: stream_list
-class _TranslationsStreamListIt implements TranslationsStreamListEn {
- _TranslationsStreamListIt._(this._root);
+class _TranslationsStreamListIt extends TranslationsStreamListEn {
+ _TranslationsStreamListIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListIt implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapIt implements TranslationsZapEn {
- _TranslationsZapIt._(this._root);
+class _TranslationsZapIt extends TranslationsZapEn {
+ _TranslationsZapIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Importo personalizzato';
@override String get confirm => 'Conferma';
@override String get comment => 'Commenta';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Aprire nel portafoglio';
@override String get copy => 'Copiato negli appunti';
@@ -163,8 +164,8 @@ class _TranslationsZapIt implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileIt implements TranslationsProfileEn {
- _TranslationsProfileIt._(this._root);
+class _TranslationsProfileIt extends TranslationsProfileEn {
+ _TranslationsProfileIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileIt implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginIt implements TranslationsLoginEn {
- _TranslationsLoginIt._(this._root);
+class _TranslationsLoginIt extends TranslationsLoginEn {
+ _TranslationsLoginIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginIt implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusIt implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusIt._(this._root);
+class _TranslationsStreamStatusIt extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusIt implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatIt implements TranslationsStreamChatEn {
- _TranslationsStreamChatIt._(this._root);
+class _TranslationsStreamChatIt extends TranslationsStreamChatEn {
+ _TranslationsStreamChatIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABILITATA';
- @override String disabled_timeout({ required Object time}) => 'Il timeout scade: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Il timeout scade: ${time}';
/// Messaggio di chat che mostra gli eventi di timeout
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' time out '),
user,
const TextSpan(text: ' per '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Il flusso si è concluso con un piè di pagina in fondo alla chat
@override String get ended => 'STREAM ENDED';
/// Messaggio di chat che mostra gli zap del flusso
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' ha effettuato uno zap di '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteIt write = _TranslationsStreamChatWriteIt._(_root);
@override late final _TranslationsStreamChatBadgeIt badge = _TranslationsStreamChatBadgeIt._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatIt implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorIt implements TranslationsZapErrorEn {
- _TranslationsZapErrorIt._(this._root);
+class _TranslationsZapErrorIt extends TranslationsZapErrorEn {
+ _TranslationsZapErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorIt implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditIt implements TranslationsProfileEditEn {
- _TranslationsProfileEditIt._(this._root);
+class _TranslationsProfileEditIt extends TranslationsProfileEditEn {
+ _TranslationsProfileEditIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditIt implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorIt implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorIt._(this._root);
+class _TranslationsLoginErrorIt extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorIt implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteIt implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteIt._(this._root);
+class _TranslationsStreamChatWriteIt extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteIt implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeIt implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeIt._(this._root);
+class _TranslationsStreamChatBadgeIt extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeIt implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidIt implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidIt._(this._root);
+class _TranslationsStreamChatRaidIt extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
/// Messaggio di chat raid in un altro flusso
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Messaggio di chat raid da un altro flusso
- @override String from({ required Object name}) => 'RAID DA ${name}';
+ @override String from({required Object name}) => 'RAID DA ${name}';
/// Timer per il conto alla rovescia per l'auto-raid
- @override String countdown({ required Object time}) => 'Raid in ${time}';
+ @override String countdown({required Object time}) => 'Raid in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorIt implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorIt._(this._root);
+class _TranslationsProfileEditErrorIt extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsIt {
case 'stream.status.live': return 'IN DIRETTA';
case 'stream.status.ended': return 'FINE';
case 'stream.status.planned': return 'PREVISTO';
- case 'stream.started': return ({ required Object timestamp}) => 'Avviato ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Avviato ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABILITATA';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Il timeout scade: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Il timeout scade: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' time out '),
user,
const TextSpan(text: ' per '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' ha effettuato uno zap di '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Scrivi il messaggio';
case 'stream.chat.write.no_signer': return 'Impossibile scrivere messaggi con il login npub';
case 'stream.chat.write.login': return 'Effettuare il login per inviare messaggi';
case 'stream.chat.badge.awarded_to': return 'Assegnato a:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID DA ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raid in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Obiettivo: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Restante: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID DA ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raid in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Obiettivo: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Restante: ${amount}';
case 'goal.complete': return 'COMPLETO';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -380,18 +381,18 @@ extension on TranslationsIt {
case 'button.unmute': return 'Riattiva';
case 'button.share': return 'Condividi';
case 'button.save': return 'Salva';
- case 'embed.article_by': return ({ required Object name}) => 'Articolo di ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Nota di ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Streaming in diretta da ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Articolo di ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Nota di ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Streaming in diretta da ${name}';
case 'stream_list.following': return 'Seguiti';
case 'stream_list.live': return 'Dal vivo';
case 'stream_list.planned': return 'Pianificato';
case 'stream_list.ended': return 'Terminato';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Importo personalizzato';
case 'zap.confirm': return 'Conferma';
case 'zap.comment': return 'Commenta';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Aprire nel portafoglio';
case 'zap.copy': return 'Copiato negli appunti';
diff --git a/lib/i18n/strings_ja.g.dart b/lib/i18n/strings_ja.g.dart
index 7efa9f6..d9202b4 100644
--- a/lib/i18n/strings_ja.g.dart
+++ b/lib/i18n/strings_ja.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsJa implements Translations {
+class TranslationsJa extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsJa({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsJa implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsJa implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsJa _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsJa implements Translations {
}
// Path: stream
-class _TranslationsStreamJa implements TranslationsStreamEn {
- _TranslationsStreamJa._(this._root);
+class _TranslationsStreamJa extends TranslationsStreamEn {
+ _TranslationsStreamJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusJa status = _TranslationsStreamStatusJa._(_root);
- @override String started({ required Object timestamp}) => '${timestamp} を開始';
+ @override String started({required Object timestamp}) => '${timestamp} を開始';
@override late final _TranslationsStreamChatJa chat = _TranslationsStreamChatJa._(_root);
}
// Path: goal
-class _TranslationsGoalJa implements TranslationsGoalEn {
- _TranslationsGoalJa._(this._root);
+class _TranslationsGoalJa extends TranslationsGoalEn {
+ _TranslationsGoalJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => '目標額: ${amount}';
- @override String remaining({ required Object amount}) => '残り: ${amount}';
+ @override String title({required Object amount}) => '目標額: ${amount}';
+ @override String remaining({required Object amount}) => '残り: ${amount}';
@override String get complete => '完了';
}
// Path: button
-class _TranslationsButtonJa implements TranslationsButtonEn {
- _TranslationsButtonJa._(this._root);
+class _TranslationsButtonJa extends TranslationsButtonEn {
+ _TranslationsButtonJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonJa implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedJa implements TranslationsEmbedEn {
- _TranslationsEmbedJa._(this._root);
+class _TranslationsEmbedJa extends TranslationsEmbedEn {
+ _TranslationsEmbedJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => '記事: ${name}';
- @override String note_by({ required Object name}) => '${name} の投稿';
- @override String live_stream_by({ required Object name}) => 'ライブ・ストリーム ${name}';
+ @override String article_by({required Object name}) => '記事: ${name}';
+ @override String note_by({required Object name}) => '${name} の投稿';
+ @override String live_stream_by({required Object name}) => 'ライブ・ストリーム ${name}';
}
// Path: stream_list
-class _TranslationsStreamListJa implements TranslationsStreamListEn {
- _TranslationsStreamListJa._(this._root);
+class _TranslationsStreamListJa extends TranslationsStreamListEn {
+ _TranslationsStreamListJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListJa implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapJa implements TranslationsZapEn {
- _TranslationsZapJa._(this._root);
+class _TranslationsZapJa extends TranslationsZapEn {
+ _TranslationsZapJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => '${name} をザップ';
+ @override String title({required Object name}) => '${name} をザップ';
@override String get custom_amount => 'カスタム金額';
@override String get confirm => '確認';
@override String get comment => 'コメント';
- @override String button_zap_ready({ required Object amount}) => '${amount} satsをザップする';
+ @override String button_zap_ready({required Object amount}) => '${amount} satsをザップする';
@override String get button_zap => 'ザップ';
@override String get button_open_wallet => 'ウォレットで開く';
@override String get copy => 'クリップボードにコピー';
@@ -163,8 +164,8 @@ class _TranslationsZapJa implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileJa implements TranslationsProfileEn {
- _TranslationsProfileJa._(this._root);
+class _TranslationsProfileJa extends TranslationsProfileEn {
+ _TranslationsProfileJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileJa implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginJa implements TranslationsLoginEn {
- _TranslationsLoginJa._(this._root);
+class _TranslationsLoginJa extends TranslationsLoginEn {
+ _TranslationsLoginJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginJa implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusJa implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusJa._(this._root);
+class _TranslationsStreamStatusJa extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusJa implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatJa implements TranslationsStreamChatEn {
- _TranslationsStreamChatJa._(this._root);
+class _TranslationsStreamChatJa extends TranslationsStreamChatEn {
+ _TranslationsStreamChatJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get disabled => 'チャット無効';
- @override String disabled_timeout({ required Object time}) => 'タイムアウト: ${time}';
+ @override String disabled_timeout({required Object time}) => 'タイムアウト: ${time}';
/// タイムアウトイベントを表示するチャットメッセージ
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' タイムアウト '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// チャットの下にストリーム終了のフッター
@override String get ended => '配信終了';
/// ストリームのザッピングを表示するチャットメッセージ
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' が '),
amount,
const TextSpan(text: ' sats をザップしました'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteJa write = _TranslationsStreamChatWriteJa._(_root);
@override late final _TranslationsStreamChatBadgeJa badge = _TranslationsStreamChatBadgeJa._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatJa implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorJa implements TranslationsZapErrorEn {
- _TranslationsZapErrorJa._(this._root);
+class _TranslationsZapErrorJa extends TranslationsZapErrorEn {
+ _TranslationsZapErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorJa implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditJa implements TranslationsProfileEditEn {
- _TranslationsProfileEditJa._(this._root);
+class _TranslationsProfileEditJa extends TranslationsProfileEditEn {
+ _TranslationsProfileEditJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditJa implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorJa implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorJa._(this._root);
+class _TranslationsLoginErrorJa extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorJa implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteJa implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteJa._(this._root);
+class _TranslationsStreamChatWriteJa extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteJa implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeJa implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeJa._(this._root);
+class _TranslationsStreamChatBadgeJa extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeJa implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidJa implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidJa._(this._root);
+class _TranslationsStreamChatRaidJa extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
/// 別のストリームへのチャット襲撃メッセージ
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// 他のストリームからのチャット襲撃メッセージ
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// 自動騎乗のカウントダウン・タイマー
- @override String countdown({ required Object time}) => '${time}における襲撃';
+ @override String countdown({required Object time}) => '${time}における襲撃';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorJa implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorJa._(this._root);
+class _TranslationsProfileEditErrorJa extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsJa {
case 'stream.status.live': return 'ライブ';
case 'stream.status.ended': return '終了';
case 'stream.status.planned': return '予定';
- case 'stream.started': return ({ required Object timestamp}) => '${timestamp} を開始';
+ case 'stream.started': return ({required Object timestamp}) => '${timestamp} を開始';
case 'stream.chat.disabled': return 'チャット無効';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'タイムアウト: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'タイムアウト: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' タイムアウト '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return '配信終了';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' が '),
amount,
const TextSpan(text: ' sats をザップしました'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'メッセージを書く';
case 'stream.chat.write.no_signer': return 'npubログインでメッセージが書けない';
case 'stream.chat.write.login': return 'メッセージを送信するにはログインしてください';
case 'stream.chat.badge.awarded_to': return '受賞者';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => '${time}における襲撃';
- case 'goal.title': return ({ required Object amount}) => '目標額: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => '残り: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => '${time}における襲撃';
+ case 'goal.title': return ({required Object amount}) => '目標額: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => '残り: ${amount}';
case 'goal.complete': return '完了';
case 'button.login': return 'ログイン';
case 'button.logout': return 'ログアウト';
@@ -380,18 +381,18 @@ extension on TranslationsJa {
case 'button.unmute': return 'ミュート解除';
case 'button.share': return '共有';
case 'button.save': return '保存';
- case 'embed.article_by': return ({ required Object name}) => '記事: ${name}';
- case 'embed.note_by': return ({ required Object name}) => '${name} の投稿';
- case 'embed.live_stream_by': return ({ required Object name}) => 'ライブ・ストリーム ${name}';
+ case 'embed.article_by': return ({required Object name}) => '記事: ${name}';
+ case 'embed.note_by': return ({required Object name}) => '${name} の投稿';
+ case 'embed.live_stream_by': return ({required Object name}) => 'ライブ・ストリーム ${name}';
case 'stream_list.following': return 'フォロー中';
case 'stream_list.live': return 'ライブ配信中';
case 'stream_list.planned': return '予定あり';
case 'stream_list.ended': return '終了しました';
- case 'zap.title': return ({ required Object name}) => '${name} をザップ';
+ case 'zap.title': return ({required Object name}) => '${name} をザップ';
case 'zap.custom_amount': return 'カスタム金額';
case 'zap.confirm': return '確認';
case 'zap.comment': return 'コメント';
- case 'zap.button_zap_ready': return ({ required Object amount}) => '${amount} satsをザップする';
+ case 'zap.button_zap_ready': return ({required Object amount}) => '${amount} satsをザップする';
case 'zap.button_zap': return 'ザップ';
case 'zap.button_open_wallet': return 'ウォレットで開く';
case 'zap.copy': return 'クリップボードにコピー';
diff --git a/lib/i18n/strings_ko.g.dart b/lib/i18n/strings_ko.g.dart
index 6982b94..7dd72cf 100644
--- a/lib/i18n/strings_ko.g.dart
+++ b/lib/i18n/strings_ko.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsKo implements Translations {
+class TranslationsKo extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsKo({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsKo implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsKo implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsKo _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsKo implements Translations {
}
// Path: stream
-class _TranslationsStreamKo implements TranslationsStreamEn {
- _TranslationsStreamKo._(this._root);
+class _TranslationsStreamKo extends TranslationsStreamEn {
+ _TranslationsStreamKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusKo status = _TranslationsStreamStatusKo._(_root);
- @override String started({ required Object timestamp}) => '시작 ${timestamp}';
+ @override String started({required Object timestamp}) => '시작 ${timestamp}';
@override late final _TranslationsStreamChatKo chat = _TranslationsStreamChatKo._(_root);
}
// Path: goal
-class _TranslationsGoalKo implements TranslationsGoalEn {
- _TranslationsGoalKo._(this._root);
+class _TranslationsGoalKo extends TranslationsGoalEn {
+ _TranslationsGoalKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => '목표: ${amount}';
- @override String remaining({ required Object amount}) => '남음: ${amount}';
+ @override String title({required Object amount}) => '목표: ${amount}';
+ @override String remaining({required Object amount}) => '남음: ${amount}';
@override String get complete => '완료';
}
// Path: button
-class _TranslationsButtonKo implements TranslationsButtonEn {
- _TranslationsButtonKo._(this._root);
+class _TranslationsButtonKo extends TranslationsButtonEn {
+ _TranslationsButtonKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonKo implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedKo implements TranslationsEmbedEn {
- _TranslationsEmbedKo._(this._root);
+class _TranslationsEmbedKo extends TranslationsEmbedEn {
+ _TranslationsEmbedKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => '작성자: ${name}';
- @override String note_by({ required Object name}) => '노트 작성됨: ${name}';
- @override String live_stream_by({ required Object name}) => '라이브 스트리밍: ${name}';
+ @override String article_by({required Object name}) => '작성자: ${name}';
+ @override String note_by({required Object name}) => '노트 작성됨: ${name}';
+ @override String live_stream_by({required Object name}) => '라이브 스트리밍: ${name}';
}
// Path: stream_list
-class _TranslationsStreamListKo implements TranslationsStreamListEn {
- _TranslationsStreamListKo._(this._root);
+class _TranslationsStreamListKo extends TranslationsStreamListEn {
+ _TranslationsStreamListKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListKo implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapKo implements TranslationsZapEn {
- _TranslationsZapKo._(this._root);
+class _TranslationsZapKo extends TranslationsZapEn {
+ _TranslationsZapKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => '사용자 지정 금액';
@override String get confirm => '확인';
@override String get comment => '댓글';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => '지갑에서 열기';
@override String get copy => '클립보드에 복사';
@@ -163,8 +164,8 @@ class _TranslationsZapKo implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileKo implements TranslationsProfileEn {
- _TranslationsProfileKo._(this._root);
+class _TranslationsProfileKo extends TranslationsProfileEn {
+ _TranslationsProfileKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileKo implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginKo implements TranslationsLoginEn {
- _TranslationsLoginKo._(this._root);
+class _TranslationsLoginKo extends TranslationsLoginEn {
+ _TranslationsLoginKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginKo implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusKo implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusKo._(this._root);
+class _TranslationsStreamStatusKo extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusKo implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatKo implements TranslationsStreamChatEn {
- _TranslationsStreamChatKo._(this._root);
+class _TranslationsStreamChatKo extends TranslationsStreamChatEn {
+ _TranslationsStreamChatKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get disabled => '채팅 사용 안 함';
- @override String disabled_timeout({ required Object time}) => '시간 초과가 만료되었습니다: ${time}';
+ @override String disabled_timeout({required Object time}) => '시간 초과가 만료되었습니다: ${time}';
/// 시간 초과 이벤트를 표시하는 채팅 메시지
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 시간 초과됨 '),
user,
const TextSpan(text: ' '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// 채팅 하단의 스트림 종료 푸터
@override String get ended => '스트림 종료';
/// 채팅 메시지 스트림 끊김 표시
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' ZAPP '),
amount,
const TextSpan(text: ' SATS'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteKo write = _TranslationsStreamChatWriteKo._(_root);
@override late final _TranslationsStreamChatBadgeKo badge = _TranslationsStreamChatBadgeKo._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatKo implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorKo implements TranslationsZapErrorEn {
- _TranslationsZapErrorKo._(this._root);
+class _TranslationsZapErrorKo extends TranslationsZapErrorEn {
+ _TranslationsZapErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorKo implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditKo implements TranslationsProfileEditEn {
- _TranslationsProfileEditKo._(this._root);
+class _TranslationsProfileEditKo extends TranslationsProfileEditEn {
+ _TranslationsProfileEditKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditKo implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorKo implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorKo._(this._root);
+class _TranslationsLoginErrorKo extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorKo implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteKo implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteKo._(this._root);
+class _TranslationsStreamChatWriteKo extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteKo implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeKo implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeKo._(this._root);
+class _TranslationsStreamChatBadgeKo extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeKo implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidKo implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidKo._(this._root);
+class _TranslationsStreamChatRaidKo extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
/// 다른 스트림으로 채팅 레이드 메시지 보내기
- @override String to({ required Object name}) => 'RAIDing ${name}';
+ @override String to({required Object name}) => 'RAIDing ${name}';
/// 다른 스트림의 채팅 레이드 메시지
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// 자동 레이드를 위한 카운트다운 타이머
- @override String countdown({ required Object time}) => '${time}에서 레이드';
+ @override String countdown({required Object time}) => '${time}에서 레이드';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorKo implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorKo._(this._root);
+class _TranslationsProfileEditErrorKo extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsKo {
case 'stream.status.live': return '라이브';
case 'stream.status.ended': return '종료';
case 'stream.status.planned': return '계획된';
- case 'stream.started': return ({ required Object timestamp}) => '시작 ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => '시작 ${timestamp}';
case 'stream.chat.disabled': return '채팅 사용 안 함';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => '시간 초과가 만료되었습니다: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => '시간 초과가 만료되었습니다: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 시간 초과됨 '),
user,
const TextSpan(text: ' '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return '스트림 종료';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' ZAPP '),
amount,
const TextSpan(text: ' SATS'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return '메시지 작성';
case 'stream.chat.write.no_signer': return 'npub 로그인으로 메시지를 작성할 수 없습니다.';
case 'stream.chat.write.login': return '메시지를 보내려면 로그인하세요.';
case 'stream.chat.badge.awarded_to': return '수상 대상';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDing ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => '${time}에서 레이드';
- case 'goal.title': return ({ required Object amount}) => '목표: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => '남음: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDing ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => '${time}에서 레이드';
+ case 'goal.title': return ({required Object amount}) => '목표: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => '남음: ${amount}';
case 'goal.complete': return '완료';
case 'button.login': return '로그인';
case 'button.logout': return '로그아웃';
@@ -380,18 +381,18 @@ extension on TranslationsKo {
case 'button.unmute': return '뮤트 해제';
case 'button.share': return '공유';
case 'button.save': return '저장';
- case 'embed.article_by': return ({ required Object name}) => '작성자: ${name}';
- case 'embed.note_by': return ({ required Object name}) => '노트 작성됨: ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => '라이브 스트리밍: ${name}';
+ case 'embed.article_by': return ({required Object name}) => '작성자: ${name}';
+ case 'embed.note_by': return ({required Object name}) => '노트 작성됨: ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => '라이브 스트리밍: ${name}';
case 'stream_list.following': return '팔로잉';
case 'stream_list.live': return '라이브';
case 'stream_list.planned': return '계획된';
case 'stream_list.ended': return '종료됨';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return '사용자 지정 금액';
case 'zap.confirm': return '확인';
case 'zap.comment': return '댓글';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return '지갑에서 열기';
case 'zap.copy': return '클립보드에 복사';
diff --git a/lib/i18n/strings_nl.g.dart b/lib/i18n/strings_nl.g.dart
index 0651125..c882ac6 100644
--- a/lib/i18n/strings_nl.g.dart
+++ b/lib/i18n/strings_nl.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsNl implements Translations {
+class TranslationsNl extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsNl({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsNl implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsNl implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsNl _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsNl implements Translations {
}
// Path: stream
-class _TranslationsStreamNl implements TranslationsStreamEn {
- _TranslationsStreamNl._(this._root);
+class _TranslationsStreamNl extends TranslationsStreamEn {
+ _TranslationsStreamNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusNl status = _TranslationsStreamStatusNl._(_root);
- @override String started({ required Object timestamp}) => 'Begonnen met ${timestamp}';
+ @override String started({required Object timestamp}) => 'Begonnen met ${timestamp}';
@override late final _TranslationsStreamChatNl chat = _TranslationsStreamChatNl._(_root);
}
// Path: goal
-class _TranslationsGoalNl implements TranslationsGoalEn {
- _TranslationsGoalNl._(this._root);
+class _TranslationsGoalNl extends TranslationsGoalEn {
+ _TranslationsGoalNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Doel: ${amount}';
- @override String remaining({ required Object amount}) => 'Overblijvend: ${amount}';
+ @override String title({required Object amount}) => 'Doel: ${amount}';
+ @override String remaining({required Object amount}) => 'Overblijvend: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonNl implements TranslationsButtonEn {
- _TranslationsButtonNl._(this._root);
+class _TranslationsButtonNl extends TranslationsButtonEn {
+ _TranslationsButtonNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonNl implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedNl implements TranslationsEmbedEn {
- _TranslationsEmbedNl._(this._root);
+class _TranslationsEmbedNl extends TranslationsEmbedEn {
+ _TranslationsEmbedNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artikel door ${name}';
- @override String note_by({ required Object name}) => 'Opmerking door ${name}';
- @override String live_stream_by({ required Object name}) => 'Live stream via ${name}';
+ @override String article_by({required Object name}) => 'Artikel door ${name}';
+ @override String note_by({required Object name}) => 'Opmerking door ${name}';
+ @override String live_stream_by({required Object name}) => 'Live stream via ${name}';
}
// Path: stream_list
-class _TranslationsStreamListNl implements TranslationsStreamListEn {
- _TranslationsStreamListNl._(this._root);
+class _TranslationsStreamListNl extends TranslationsStreamListEn {
+ _TranslationsStreamListNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListNl implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapNl implements TranslationsZapEn {
- _TranslationsZapNl._(this._root);
+class _TranslationsZapNl extends TranslationsZapEn {
+ _TranslationsZapNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Aangepast bedrag';
@override String get confirm => 'Bevestig';
@override String get comment => 'Opmerking';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Openen in portefeuille';
@override String get copy => 'Gekopieerd naar klembord';
@@ -163,8 +164,8 @@ class _TranslationsZapNl implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileNl implements TranslationsProfileEn {
- _TranslationsProfileNl._(this._root);
+class _TranslationsProfileNl extends TranslationsProfileEn {
+ _TranslationsProfileNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileNl implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginNl implements TranslationsLoginEn {
- _TranslationsLoginNl._(this._root);
+class _TranslationsLoginNl extends TranslationsLoginEn {
+ _TranslationsLoginNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginNl implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusNl implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusNl._(this._root);
+class _TranslationsStreamStatusNl extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusNl implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatNl implements TranslationsStreamChatEn {
- _TranslationsStreamChatNl._(this._root);
+class _TranslationsStreamChatNl extends TranslationsStreamChatEn {
+ _TranslationsStreamChatNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT UITGESCHAKELD';
- @override String disabled_timeout({ required Object time}) => 'Time-out loopt af: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Time-out loopt af: ${time}';
/// Chatbericht met time-outgebeurtenissen
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' voor '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Voettekst einde stream onderaan chat
@override String get ended => 'STREAM BEËINDIGD';
/// Chatbericht met stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteNl write = _TranslationsStreamChatWriteNl._(_root);
@override late final _TranslationsStreamChatBadgeNl badge = _TranslationsStreamChatBadgeNl._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatNl implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorNl implements TranslationsZapErrorEn {
- _TranslationsZapErrorNl._(this._root);
+class _TranslationsZapErrorNl extends TranslationsZapErrorEn {
+ _TranslationsZapErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorNl implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditNl implements TranslationsProfileEditEn {
- _TranslationsProfileEditNl._(this._root);
+class _TranslationsProfileEditNl extends TranslationsProfileEditEn {
+ _TranslationsProfileEditNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditNl implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorNl implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorNl._(this._root);
+class _TranslationsLoginErrorNl extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorNl implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteNl implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteNl._(this._root);
+class _TranslationsStreamChatWriteNl extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteNl implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeNl implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeNl._(this._root);
+class _TranslationsStreamChatBadgeNl extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeNl implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidNl implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidNl._(this._root);
+class _TranslationsStreamChatRaidNl extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
/// Chat raid bericht naar een andere stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat invalbericht van een andere stream
- @override String from({ required Object name}) => 'RAID VAN ${name}';
+ @override String from({required Object name}) => 'RAID VAN ${name}';
/// Afteltimer voor automatisch rijden
- @override String countdown({ required Object time}) => 'Overvallen in ${time}';
+ @override String countdown({required Object time}) => 'Overvallen in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorNl implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorNl._(this._root);
+class _TranslationsProfileEditErrorNl extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsNl {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'GESLOTEN';
case 'stream.status.planned': return 'GEPLAND';
- case 'stream.started': return ({ required Object timestamp}) => 'Begonnen met ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Begonnen met ${timestamp}';
case 'stream.chat.disabled': return 'CHAT UITGESCHAKELD';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Time-out loopt af: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Time-out loopt af: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' voor '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM BEËINDIGD';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Schrijf bericht';
case 'stream.chat.write.no_signer': return 'Kan geen berichten schrijven met npub login';
case 'stream.chat.write.login': return 'Log in om berichten te verzenden';
case 'stream.chat.badge.awarded_to': return 'Toegekend aan:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID VAN ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Overvallen in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Doel: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Overblijvend: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID VAN ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Overvallen in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Doel: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Overblijvend: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Inloggen';
case 'button.logout': return 'Uitloggen';
@@ -380,18 +381,18 @@ extension on TranslationsNl {
case 'button.unmute': return 'Niet langer negeren';
case 'button.share': return 'Deel';
case 'button.save': return 'Opslaan';
- case 'embed.article_by': return ({ required Object name}) => 'Artikel door ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Opmerking door ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream via ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artikel door ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Opmerking door ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream via ${name}';
case 'stream_list.following': return 'Volgt';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Gepland';
case 'stream_list.ended': return 'Beëindigd';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Aangepast bedrag';
case 'zap.confirm': return 'Bevestig';
case 'zap.comment': return 'Opmerking';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Openen in portefeuille';
case 'zap.copy': return 'Gekopieerd naar klembord';
diff --git a/lib/i18n/strings_no.g.dart b/lib/i18n/strings_no.g.dart
index 8d291c5..b4af3cf 100644
--- a/lib/i18n/strings_no.g.dart
+++ b/lib/i18n/strings_no.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsNo implements Translations {
+class TranslationsNo extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsNo({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsNo implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsNo implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsNo _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsNo implements Translations {
}
// Path: stream
-class _TranslationsStreamNo implements TranslationsStreamEn {
- _TranslationsStreamNo._(this._root);
+class _TranslationsStreamNo extends TranslationsStreamEn {
+ _TranslationsStreamNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusNo status = _TranslationsStreamStatusNo._(_root);
- @override String started({ required Object timestamp}) => 'Started ${timestamp}';
+ @override String started({required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatNo chat = _TranslationsStreamChatNo._(_root);
}
// Path: goal
-class _TranslationsGoalNo implements TranslationsGoalEn {
- _TranslationsGoalNo._(this._root);
+class _TranslationsGoalNo extends TranslationsGoalEn {
+ _TranslationsGoalNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Goal: ${amount}';
- @override String remaining({ required Object amount}) => 'Remaining: ${amount}';
+ @override String title({required Object amount}) => 'Goal: ${amount}';
+ @override String remaining({required Object amount}) => 'Remaining: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonNo implements TranslationsButtonEn {
- _TranslationsButtonNo._(this._root);
+class _TranslationsButtonNo extends TranslationsButtonEn {
+ _TranslationsButtonNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonNo implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedNo implements TranslationsEmbedEn {
- _TranslationsEmbedNo._(this._root);
+class _TranslationsEmbedNo extends TranslationsEmbedEn {
+ _TranslationsEmbedNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Article by ${name}';
- @override String note_by({ required Object name}) => 'Note by ${name}';
- @override String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ @override String article_by({required Object name}) => 'Article by ${name}';
+ @override String note_by({required Object name}) => 'Note by ${name}';
+ @override String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
-class _TranslationsStreamListNo implements TranslationsStreamListEn {
- _TranslationsStreamListNo._(this._root);
+class _TranslationsStreamListNo extends TranslationsStreamListEn {
+ _TranslationsStreamListNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListNo implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapNo implements TranslationsZapEn {
- _TranslationsZapNo._(this._root);
+class _TranslationsZapNo extends TranslationsZapEn {
+ _TranslationsZapNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Custom Amount';
@override String get confirm => 'Confirm';
@override String get comment => 'Comment';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@@ -163,8 +164,8 @@ class _TranslationsZapNo implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileNo implements TranslationsProfileEn {
- _TranslationsProfileNo._(this._root);
+class _TranslationsProfileNo extends TranslationsProfileEn {
+ _TranslationsProfileNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileNo implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginNo implements TranslationsLoginEn {
- _TranslationsLoginNo._(this._root);
+class _TranslationsLoginNo extends TranslationsLoginEn {
+ _TranslationsLoginNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginNo implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusNo implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusNo._(this._root);
+class _TranslationsStreamStatusNo extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusNo implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatNo implements TranslationsStreamChatEn {
- _TranslationsStreamChatNo._(this._root);
+class _TranslationsStreamChatNo extends TranslationsStreamChatEn {
+ _TranslationsStreamChatNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
- @override String disabled_timeout({ required Object time}) => 'Timeout expires: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timeout expires: ${time}';
/// Chat message showing timeout events
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
@override String get ended => 'STREAM ENDED';
/// Chat message showing stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteNo write = _TranslationsStreamChatWriteNo._(_root);
@override late final _TranslationsStreamChatBadgeNo badge = _TranslationsStreamChatBadgeNo._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatNo implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorNo implements TranslationsZapErrorEn {
- _TranslationsZapErrorNo._(this._root);
+class _TranslationsZapErrorNo extends TranslationsZapErrorEn {
+ _TranslationsZapErrorNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorNo implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditNo implements TranslationsProfileEditEn {
- _TranslationsProfileEditNo._(this._root);
+class _TranslationsProfileEditNo extends TranslationsProfileEditEn {
+ _TranslationsProfileEditNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditNo implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorNo implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorNo._(this._root);
+class _TranslationsLoginErrorNo extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorNo implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteNo implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteNo._(this._root);
+class _TranslationsStreamChatWriteNo extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteNo implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeNo implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeNo._(this._root);
+class _TranslationsStreamChatBadgeNo extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeNo implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidNo implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidNo._(this._root);
+class _TranslationsStreamChatRaidNo extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
- @override String countdown({ required Object time}) => 'Raiding in ${time}';
+ @override String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorNo implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorNo._(this._root);
+class _TranslationsProfileEditErrorNo extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorNo._(TranslationsNo root) : this._root = root, super.internal(root);
final TranslationsNo _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsNo {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'PLANNED';
- case 'stream.started': return ({ required Object timestamp}) => 'Started ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Started ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout expires: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Write message';
case 'stream.chat.write.no_signer': return 'Can\'t write messages with npub login';
case 'stream.chat.write.login': return 'Please login to send messages';
case 'stream.chat.badge.awarded_to': return 'Awarded to:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Goal: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Remaining: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Goal: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Remaining: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -380,18 +381,18 @@ extension on TranslationsNo {
case 'button.unmute': return 'Unmute';
case 'button.share': return 'Share';
case 'button.save': return 'Save';
- case 'embed.article_by': return ({ required Object name}) => 'Article by ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note by ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Article by ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note by ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return 'Following';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planned';
case 'stream_list.ended': return 'Ended';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Custom Amount';
case 'zap.confirm': return 'Confirm';
case 'zap.comment': return 'Comment';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Open in Wallet';
case 'zap.copy': return 'Copied to clipboard';
diff --git a/lib/i18n/strings_pl.g.dart b/lib/i18n/strings_pl.g.dart
index b1eba37..9fa0c52 100644
--- a/lib/i18n/strings_pl.g.dart
+++ b/lib/i18n/strings_pl.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsPl implements Translations {
+class TranslationsPl extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsPl({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsPl implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsPl implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsPl _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsPl implements Translations {
}
// Path: stream
-class _TranslationsStreamPl implements TranslationsStreamEn {
- _TranslationsStreamPl._(this._root);
+class _TranslationsStreamPl extends TranslationsStreamEn {
+ _TranslationsStreamPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusPl status = _TranslationsStreamStatusPl._(_root);
- @override String started({ required Object timestamp}) => 'Start ${timestamp}';
+ @override String started({required Object timestamp}) => 'Start ${timestamp}';
@override late final _TranslationsStreamChatPl chat = _TranslationsStreamChatPl._(_root);
}
// Path: goal
-class _TranslationsGoalPl implements TranslationsGoalEn {
- _TranslationsGoalPl._(this._root);
+class _TranslationsGoalPl extends TranslationsGoalEn {
+ _TranslationsGoalPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Cel: ${amount}';
- @override String remaining({ required Object amount}) => 'Pozostałe: ${amount}';
+ @override String title({required Object amount}) => 'Cel: ${amount}';
+ @override String remaining({required Object amount}) => 'Pozostałe: ${amount}';
@override String get complete => 'ZAKOŃCZONE';
}
// Path: button
-class _TranslationsButtonPl implements TranslationsButtonEn {
- _TranslationsButtonPl._(this._root);
+class _TranslationsButtonPl extends TranslationsButtonEn {
+ _TranslationsButtonPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonPl implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedPl implements TranslationsEmbedEn {
- _TranslationsEmbedPl._(this._root);
+class _TranslationsEmbedPl extends TranslationsEmbedEn {
+ _TranslationsEmbedPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artykuł autorstwa ${name}';
- @override String note_by({ required Object name}) => 'Uwaga ${name}';
- @override String live_stream_by({ required Object name}) => 'Transmisja na żywo przez ${name}';
+ @override String article_by({required Object name}) => 'Artykuł autorstwa ${name}';
+ @override String note_by({required Object name}) => 'Uwaga ${name}';
+ @override String live_stream_by({required Object name}) => 'Transmisja na żywo przez ${name}';
}
// Path: stream_list
-class _TranslationsStreamListPl implements TranslationsStreamListEn {
- _TranslationsStreamListPl._(this._root);
+class _TranslationsStreamListPl extends TranslationsStreamListEn {
+ _TranslationsStreamListPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListPl implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapPl implements TranslationsZapEn {
- _TranslationsZapPl._(this._root);
+class _TranslationsZapPl extends TranslationsZapEn {
+ _TranslationsZapPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Kwota niestandardowa';
@override String get confirm => 'Potwierdzenie';
@override String get comment => 'Komentarz';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Otwórz w portfelu';
@override String get copy => 'Skopiowane do schowka';
@@ -163,8 +164,8 @@ class _TranslationsZapPl implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfilePl implements TranslationsProfileEn {
- _TranslationsProfilePl._(this._root);
+class _TranslationsProfilePl extends TranslationsProfileEn {
+ _TranslationsProfilePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfilePl implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginPl implements TranslationsLoginEn {
- _TranslationsLoginPl._(this._root);
+class _TranslationsLoginPl extends TranslationsLoginEn {
+ _TranslationsLoginPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginPl implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusPl implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusPl._(this._root);
+class _TranslationsStreamStatusPl extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusPl implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatPl implements TranslationsStreamChatEn {
- _TranslationsStreamChatPl._(this._root);
+class _TranslationsStreamChatPl extends TranslationsStreamChatEn {
+ _TranslationsStreamChatPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get disabled => 'CZAT WYŁĄCZONY';
- @override String disabled_timeout({ required Object time}) => 'Upłynął limit czasu: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Upłynął limit czasu: ${time}';
/// Komunikat czatu pokazujący zdarzenia przekroczenia limitu czasu
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' upłynął limit czasu '),
user,
const TextSpan(text: ' dla '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream zakończył stopkę na dole czatu
@override String get ended => 'TRANSMISJA ZAKOŃCZONA';
/// Wiadomość na czacie pokazująca zapy strumienia
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWritePl write = _TranslationsStreamChatWritePl._(_root);
@override late final _TranslationsStreamChatBadgePl badge = _TranslationsStreamChatBadgePl._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatPl implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorPl implements TranslationsZapErrorEn {
- _TranslationsZapErrorPl._(this._root);
+class _TranslationsZapErrorPl extends TranslationsZapErrorEn {
+ _TranslationsZapErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorPl implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditPl implements TranslationsProfileEditEn {
- _TranslationsProfileEditPl._(this._root);
+class _TranslationsProfileEditPl extends TranslationsProfileEditEn {
+ _TranslationsProfileEditPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditPl implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorPl implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorPl._(this._root);
+class _TranslationsLoginErrorPl extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorPl implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWritePl implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWritePl._(this._root);
+class _TranslationsStreamChatWritePl extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWritePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWritePl implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgePl implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgePl._(this._root);
+class _TranslationsStreamChatBadgePl extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgePl implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidPl implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidPl._(this._root);
+class _TranslationsStreamChatRaidPl extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
/// Przesyłanie wiadomości na czacie do innego strumienia
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Nalot na czat z innego strumienia
- @override String from({ required Object name}) => 'RAID Z ${name}';
+ @override String from({required Object name}) => 'RAID Z ${name}';
/// Zegar odliczający czas do automatycznej jazdy
- @override String countdown({ required Object time}) => 'Naloty w ${time}';
+ @override String countdown({required Object time}) => 'Naloty w ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorPl implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorPl._(this._root);
+class _TranslationsProfileEditErrorPl extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsPl {
case 'stream.status.live': return 'NA ŻYWO';
case 'stream.status.ended': return 'ZAKOŃCZONY';
case 'stream.status.planned': return 'PLANOWANE';
- case 'stream.started': return ({ required Object timestamp}) => 'Start ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Start ${timestamp}';
case 'stream.chat.disabled': return 'CZAT WYŁĄCZONY';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Upłynął limit czasu: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Upłynął limit czasu: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' upłynął limit czasu '),
user,
const TextSpan(text: ' dla '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'TRANSMISJA ZAKOŃCZONA';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Napisz wiadomość';
case 'stream.chat.write.no_signer': return 'Nie można pisać wiadomości z loginem npub';
case 'stream.chat.write.login': return 'Zaloguj się, aby wysyłać wiadomości';
case 'stream.chat.badge.awarded_to': return 'Przyznano:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID Z ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Naloty w ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Cel: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Pozostałe: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID Z ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Naloty w ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Cel: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Pozostałe: ${amount}';
case 'goal.complete': return 'ZAKOŃCZONE';
case 'button.login': return 'Logowanie';
case 'button.logout': return 'Wylogowanie';
@@ -380,18 +381,18 @@ extension on TranslationsPl {
case 'button.unmute': return 'Wyłącz wyciszenie';
case 'button.share': return 'Udział';
case 'button.save': return 'Zapisz';
- case 'embed.article_by': return ({ required Object name}) => 'Artykuł autorstwa ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Uwaga ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Transmisja na żywo przez ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artykuł autorstwa ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Uwaga ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Transmisja na żywo przez ${name}';
case 'stream_list.following': return 'Następujący';
case 'stream_list.live': return 'Na żywo';
case 'stream_list.planned': return 'Planowane';
case 'stream_list.ended': return 'Zakończony';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Kwota niestandardowa';
case 'zap.confirm': return 'Potwierdzenie';
case 'zap.comment': return 'Komentarz';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Otwórz w portfelu';
case 'zap.copy': return 'Skopiowane do schowka';
diff --git a/lib/i18n/strings_pt.g.dart b/lib/i18n/strings_pt.g.dart
index 50c28f0..6a741f1 100644
--- a/lib/i18n/strings_pt.g.dart
+++ b/lib/i18n/strings_pt.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsPt implements Translations {
+class TranslationsPt extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsPt({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsPt implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsPt implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsPt _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsPt implements Translations {
}
// Path: stream
-class _TranslationsStreamPt implements TranslationsStreamEn {
- _TranslationsStreamPt._(this._root);
+class _TranslationsStreamPt extends TranslationsStreamEn {
+ _TranslationsStreamPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusPt status = _TranslationsStreamStatusPt._(_root);
- @override String started({ required Object timestamp}) => 'Iniciado em ${timestamp}';
+ @override String started({required Object timestamp}) => 'Iniciado em ${timestamp}';
@override late final _TranslationsStreamChatPt chat = _TranslationsStreamChatPt._(_root);
}
// Path: goal
-class _TranslationsGoalPt implements TranslationsGoalEn {
- _TranslationsGoalPt._(this._root);
+class _TranslationsGoalPt extends TranslationsGoalEn {
+ _TranslationsGoalPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Meta: ${amount}';
- @override String remaining({ required Object amount}) => 'Restante: ${amount}';
+ @override String title({required Object amount}) => 'Meta: ${amount}';
+ @override String remaining({required Object amount}) => 'Restante: ${amount}';
@override String get complete => 'COMPLETO';
}
// Path: button
-class _TranslationsButtonPt implements TranslationsButtonEn {
- _TranslationsButtonPt._(this._root);
+class _TranslationsButtonPt extends TranslationsButtonEn {
+ _TranslationsButtonPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonPt implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedPt implements TranslationsEmbedEn {
- _TranslationsEmbedPt._(this._root);
+class _TranslationsEmbedPt extends TranslationsEmbedEn {
+ _TranslationsEmbedPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artigo de ${name}';
- @override String note_by({ required Object name}) => 'Nota de ${name}';
- @override String live_stream_by({ required Object name}) => 'Transmissão ao vivo pelo site ${name}';
+ @override String article_by({required Object name}) => 'Artigo de ${name}';
+ @override String note_by({required Object name}) => 'Nota de ${name}';
+ @override String live_stream_by({required Object name}) => 'Transmissão ao vivo pelo site ${name}';
}
// Path: stream_list
-class _TranslationsStreamListPt implements TranslationsStreamListEn {
- _TranslationsStreamListPt._(this._root);
+class _TranslationsStreamListPt extends TranslationsStreamListEn {
+ _TranslationsStreamListPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListPt implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapPt implements TranslationsZapEn {
- _TranslationsZapPt._(this._root);
+class _TranslationsZapPt extends TranslationsZapEn {
+ _TranslationsZapPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Valor personalizado';
@override String get confirm => 'Confirmar';
@override String get comment => 'Comentar';
- @override String button_zap_ready({ required Object amount}) => 'Enviar Zap de ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Enviar Zap de ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Abrir na carteira';
@override String get copy => 'Copiado para a área de transferência';
@@ -163,8 +164,8 @@ class _TranslationsZapPt implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfilePt implements TranslationsProfileEn {
- _TranslationsProfilePt._(this._root);
+class _TranslationsProfilePt extends TranslationsProfileEn {
+ _TranslationsProfilePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfilePt implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginPt implements TranslationsLoginEn {
- _TranslationsLoginPt._(this._root);
+class _TranslationsLoginPt extends TranslationsLoginEn {
+ _TranslationsLoginPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginPt implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusPt implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusPt._(this._root);
+class _TranslationsStreamStatusPt extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusPt implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatPt implements TranslationsStreamChatEn {
- _TranslationsStreamChatPt._(this._root);
+class _TranslationsStreamChatPt extends TranslationsStreamChatEn {
+ _TranslationsStreamChatPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get disabled => 'BATE-PAPO DESATIVADO';
- @override String disabled_timeout({ required Object time}) => 'O tempo limite expira: ${time}';
+ @override String disabled_timeout({required Object time}) => 'O tempo limite expira: ${time}';
/// Mensagem de bate-papo mostrando eventos de tempo limite
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Tempo esgotado '),
user,
const TextSpan(text: ' para '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// O rodapé do fluxo terminou na parte inferior do bate-papo
@override String get ended => 'TRANSMISSÃO ENCERRADA';
/// Mensagem de bate-papo mostrando zaps de fluxo
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapeou '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWritePt write = _TranslationsStreamChatWritePt._(_root);
@override late final _TranslationsStreamChatBadgePt badge = _TranslationsStreamChatBadgePt._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatPt implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorPt implements TranslationsZapErrorEn {
- _TranslationsZapErrorPt._(this._root);
+class _TranslationsZapErrorPt extends TranslationsZapErrorEn {
+ _TranslationsZapErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorPt implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditPt implements TranslationsProfileEditEn {
- _TranslationsProfileEditPt._(this._root);
+class _TranslationsProfileEditPt extends TranslationsProfileEditEn {
+ _TranslationsProfileEditPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditPt implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorPt implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorPt._(this._root);
+class _TranslationsLoginErrorPt extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorPt implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWritePt implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWritePt._(this._root);
+class _TranslationsStreamChatWritePt extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWritePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWritePt implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgePt implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgePt._(this._root);
+class _TranslationsStreamChatBadgePt extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgePt implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidPt implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidPt._(this._root);
+class _TranslationsStreamChatRaidPt extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
/// Mensagem de invasão de bate-papo para outro fluxo
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Mensagem de invasão de bate-papo de outro fluxo
- @override String from({ required Object name}) => 'RAID DE ${name}';
+ @override String from({required Object name}) => 'RAID DE ${name}';
/// Cronômetro de contagem regressiva para o ataque automático
- @override String countdown({ required Object time}) => 'Incursões em ${time}';
+ @override String countdown({required Object time}) => 'Incursões em ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorPt implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorPt._(this._root);
+class _TranslationsProfileEditErrorPt extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsPt {
case 'stream.status.live': return 'AO VIVO';
case 'stream.status.ended': return 'FINALIZADO';
case 'stream.status.planned': return 'PLANEJADO';
- case 'stream.started': return ({ required Object timestamp}) => 'Iniciado em ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Iniciado em ${timestamp}';
case 'stream.chat.disabled': return 'BATE-PAPO DESATIVADO';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'O tempo limite expira: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'O tempo limite expira: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Tempo esgotado '),
user,
const TextSpan(text: ' para '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'TRANSMISSÃO ENCERRADA';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapeou '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Escrever mensagem';
case 'stream.chat.write.no_signer': return 'Não é possível escrever mensagens com o login do npub';
case 'stream.chat.write.login': return 'Faça login para enviar mensagens';
case 'stream.chat.badge.awarded_to': return 'Prêmio concedido a:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID DE ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Incursões em ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Meta: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Restante: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID DE ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Incursões em ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Meta: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Restante: ${amount}';
case 'goal.complete': return 'COMPLETO';
case 'button.login': return 'Entrar';
case 'button.logout': return 'Sair';
@@ -380,18 +381,18 @@ extension on TranslationsPt {
case 'button.unmute': return 'Desmutar';
case 'button.share': return 'Compartilhar';
case 'button.save': return 'Salvar';
- case 'embed.article_by': return ({ required Object name}) => 'Artigo de ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Nota de ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Transmissão ao vivo pelo site ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artigo de ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Nota de ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Transmissão ao vivo pelo site ${name}';
case 'stream_list.following': return 'Seguindo';
case 'stream_list.live': return 'Ao vivo';
case 'stream_list.planned': return 'Planejado';
case 'stream_list.ended': return 'Encerrado';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Valor personalizado';
case 'zap.confirm': return 'Confirmar';
case 'zap.comment': return 'Comentar';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Enviar Zap de ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Enviar Zap de ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Abrir na carteira';
case 'zap.copy': return 'Copiado para a área de transferência';
diff --git a/lib/i18n/strings_ro.g.dart b/lib/i18n/strings_ro.g.dart
index 361b869..852034a 100644
--- a/lib/i18n/strings_ro.g.dart
+++ b/lib/i18n/strings_ro.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsRo implements Translations {
+class TranslationsRo extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsRo({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsRo implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsRo implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsRo _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsRo implements Translations {
}
// Path: stream
-class _TranslationsStreamRo implements TranslationsStreamEn {
- _TranslationsStreamRo._(this._root);
+class _TranslationsStreamRo extends TranslationsStreamEn {
+ _TranslationsStreamRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusRo status = _TranslationsStreamStatusRo._(_root);
- @override String started({ required Object timestamp}) => 'A început ${timestamp}';
+ @override String started({required Object timestamp}) => 'A început ${timestamp}';
@override late final _TranslationsStreamChatRo chat = _TranslationsStreamChatRo._(_root);
}
// Path: goal
-class _TranslationsGoalRo implements TranslationsGoalEn {
- _TranslationsGoalRo._(this._root);
+class _TranslationsGoalRo extends TranslationsGoalEn {
+ _TranslationsGoalRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Obiectiv: ${amount}';
- @override String remaining({ required Object amount}) => 'Rămase: ${amount}';
+ @override String title({required Object amount}) => 'Obiectiv: ${amount}';
+ @override String remaining({required Object amount}) => 'Rămase: ${amount}';
@override String get complete => 'COMPLET';
}
// Path: button
-class _TranslationsButtonRo implements TranslationsButtonEn {
- _TranslationsButtonRo._(this._root);
+class _TranslationsButtonRo extends TranslationsButtonEn {
+ _TranslationsButtonRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonRo implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedRo implements TranslationsEmbedEn {
- _TranslationsEmbedRo._(this._root);
+class _TranslationsEmbedRo extends TranslationsEmbedEn {
+ _TranslationsEmbedRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Articol de ${name}';
- @override String note_by({ required Object name}) => 'Notă de la ${name}';
- @override String live_stream_by({ required Object name}) => 'Transmisiune live prin ${name}';
+ @override String article_by({required Object name}) => 'Articol de ${name}';
+ @override String note_by({required Object name}) => 'Notă de la ${name}';
+ @override String live_stream_by({required Object name}) => 'Transmisiune live prin ${name}';
}
// Path: stream_list
-class _TranslationsStreamListRo implements TranslationsStreamListEn {
- _TranslationsStreamListRo._(this._root);
+class _TranslationsStreamListRo extends TranslationsStreamListEn {
+ _TranslationsStreamListRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListRo implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapRo implements TranslationsZapEn {
- _TranslationsZapRo._(this._root);
+class _TranslationsZapRo extends TranslationsZapEn {
+ _TranslationsZapRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Sumă personalizată';
@override String get confirm => 'Confirmați';
@override String get comment => 'Comentariu';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Deschide în portofel';
@override String get copy => 'Copiat în clipboard';
@@ -163,8 +164,8 @@ class _TranslationsZapRo implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileRo implements TranslationsProfileEn {
- _TranslationsProfileRo._(this._root);
+class _TranslationsProfileRo extends TranslationsProfileEn {
+ _TranslationsProfileRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileRo implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginRo implements TranslationsLoginEn {
- _TranslationsLoginRo._(this._root);
+class _TranslationsLoginRo extends TranslationsLoginEn {
+ _TranslationsLoginRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginRo implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusRo implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusRo._(this._root);
+class _TranslationsStreamStatusRo extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusRo implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatRo implements TranslationsStreamChatEn {
- _TranslationsStreamChatRo._(this._root);
+class _TranslationsStreamChatRo extends TranslationsStreamChatEn {
+ _TranslationsStreamChatRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DEZACTIVAT';
- @override String disabled_timeout({ required Object time}) => 'Timpul expiră: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timpul expiră: ${time}';
/// Mesaj de chat care afișează evenimentele de timeout
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Timed out '),
user,
const TextSpan(text: ' pentru '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream a încheiat footer-ul în partea de jos a chat-ului
@override String get ended => 'STREAM ÎNCHEIAT';
/// Mesaj de chat care arată zapsuri de flux
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteRo write = _TranslationsStreamChatWriteRo._(_root);
@override late final _TranslationsStreamChatBadgeRo badge = _TranslationsStreamChatBadgeRo._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatRo implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorRo implements TranslationsZapErrorEn {
- _TranslationsZapErrorRo._(this._root);
+class _TranslationsZapErrorRo extends TranslationsZapErrorEn {
+ _TranslationsZapErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorRo implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditRo implements TranslationsProfileEditEn {
- _TranslationsProfileEditRo._(this._root);
+class _TranslationsProfileEditRo extends TranslationsProfileEditEn {
+ _TranslationsProfileEditRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditRo implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorRo implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorRo._(this._root);
+class _TranslationsLoginErrorRo extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorRo implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteRo implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteRo._(this._root);
+class _TranslationsStreamChatWriteRo extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteRo implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeRo implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeRo._(this._root);
+class _TranslationsStreamChatBadgeRo extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeRo implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidRo implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidRo._(this._root);
+class _TranslationsStreamChatRaidRo extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
/// Chat mesaj raid la un alt flux
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid mesaj din alt flux
- @override String from({ required Object name}) => 'RAID DE LA ${name}';
+ @override String from({required Object name}) => 'RAID DE LA ${name}';
/// Cronometru cu numărătoare inversă pentru auto-raid
- @override String countdown({ required Object time}) => 'Raiduri în ${time}';
+ @override String countdown({required Object time}) => 'Raiduri în ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorRo implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorRo._(this._root);
+class _TranslationsProfileEditErrorRo extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsRo {
case 'stream.status.live': return 'ÎN DIRECT';
case 'stream.status.ended': return 'TERMINAT';
case 'stream.status.planned': return 'PLANIFICATE';
- case 'stream.started': return ({ required Object timestamp}) => 'A început ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'A început ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DEZACTIVAT';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timpul expiră: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timpul expiră: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Timed out '),
user,
const TextSpan(text: ' pentru '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ÎNCHEIAT';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Scrieți mesajul';
case 'stream.chat.write.no_signer': return 'Nu se pot scrie mesaje cu autentificarea npub';
case 'stream.chat.write.login': return 'Vă rugăm să vă autentificați pentru a trimite mesaje';
case 'stream.chat.badge.awarded_to': return 'Premiat pentru:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID DE LA ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiduri în ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Obiectiv: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Rămase: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID DE LA ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiduri în ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Obiectiv: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Rămase: ${amount}';
case 'goal.complete': return 'COMPLET';
case 'button.login': return 'Autentificare';
case 'button.logout': return 'Ieșire';
@@ -380,18 +381,18 @@ extension on TranslationsRo {
case 'button.unmute': return 'Dezactivați';
case 'button.share': return 'Share';
case 'button.save': return 'Salvați';
- case 'embed.article_by': return ({ required Object name}) => 'Articol de ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Notă de la ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Transmisiune live prin ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Articol de ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Notă de la ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Transmisiune live prin ${name}';
case 'stream_list.following': return 'În urma';
case 'stream_list.live': return 'În direct';
case 'stream_list.planned': return 'Planificate';
case 'stream_list.ended': return 'Încheiat';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Sumă personalizată';
case 'zap.confirm': return 'Confirmați';
case 'zap.comment': return 'Comentariu';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Deschide în portofel';
case 'zap.copy': return 'Copiat în clipboard';
diff --git a/lib/i18n/strings_ru.g.dart b/lib/i18n/strings_ru.g.dart
index cf2dfae..cb8238e 100644
--- a/lib/i18n/strings_ru.g.dart
+++ b/lib/i18n/strings_ru.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsRu implements Translations {
+class TranslationsRu extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsRu({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsRu implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsRu implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsRu _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsRu implements Translations {
}
// Path: stream
-class _TranslationsStreamRu implements TranslationsStreamEn {
- _TranslationsStreamRu._(this._root);
+class _TranslationsStreamRu extends TranslationsStreamEn {
+ _TranslationsStreamRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusRu status = _TranslationsStreamStatusRu._(_root);
- @override String started({ required Object timestamp}) => 'Начало ${timestamp}';
+ @override String started({required Object timestamp}) => 'Начало ${timestamp}';
@override late final _TranslationsStreamChatRu chat = _TranslationsStreamChatRu._(_root);
}
// Path: goal
-class _TranslationsGoalRu implements TranslationsGoalEn {
- _TranslationsGoalRu._(this._root);
+class _TranslationsGoalRu extends TranslationsGoalEn {
+ _TranslationsGoalRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Цель: ${amount}';
- @override String remaining({ required Object amount}) => 'Осталось: ${amount}';
+ @override String title({required Object amount}) => 'Цель: ${amount}';
+ @override String remaining({required Object amount}) => 'Осталось: ${amount}';
@override String get complete => 'КОМПЛЕКТ';
}
// Path: button
-class _TranslationsButtonRu implements TranslationsButtonEn {
- _TranslationsButtonRu._(this._root);
+class _TranslationsButtonRu extends TranslationsButtonEn {
+ _TranslationsButtonRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonRu implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedRu implements TranslationsEmbedEn {
- _TranslationsEmbedRu._(this._root);
+class _TranslationsEmbedRu extends TranslationsEmbedEn {
+ _TranslationsEmbedRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Статья ${name}';
- @override String note_by({ required Object name}) => 'Заметка на сайте ${name}';
- @override String live_stream_by({ required Object name}) => 'Прямая трансляция: ${name}';
+ @override String article_by({required Object name}) => 'Статья ${name}';
+ @override String note_by({required Object name}) => 'Заметка на сайте ${name}';
+ @override String live_stream_by({required Object name}) => 'Прямая трансляция: ${name}';
}
// Path: stream_list
-class _TranslationsStreamListRu implements TranslationsStreamListEn {
- _TranslationsStreamListRu._(this._root);
+class _TranslationsStreamListRu extends TranslationsStreamListEn {
+ _TranslationsStreamListRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListRu implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapRu implements TranslationsZapEn {
- _TranslationsZapRu._(this._root);
+class _TranslationsZapRu extends TranslationsZapEn {
+ _TranslationsZapRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Запнуть (${name}';
+ @override String title({required Object name}) => 'Запнуть (${name}';
@override String get custom_amount => 'Пользовательская сумма';
@override String get confirm => 'Подтвердить';
@override String get comment => 'Комментарий';
- @override String button_zap_ready({ required Object amount}) => 'Запнуть ${amount} сат';
+ @override String button_zap_ready({required Object amount}) => 'Запнуть ${amount} сат';
@override String get button_zap => 'Зап';
@override String get button_open_wallet => 'Открыть в кошельке';
@override String get copy => 'Скопировано в буфер обмена';
@@ -163,8 +164,8 @@ class _TranslationsZapRu implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileRu implements TranslationsProfileEn {
- _TranslationsProfileRu._(this._root);
+class _TranslationsProfileRu extends TranslationsProfileEn {
+ _TranslationsProfileRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileRu implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginRu implements TranslationsLoginEn {
- _TranslationsLoginRu._(this._root);
+class _TranslationsLoginRu extends TranslationsLoginEn {
+ _TranslationsLoginRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginRu implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusRu implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusRu._(this._root);
+class _TranslationsStreamStatusRu extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusRu implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatRu implements TranslationsStreamChatEn {
- _TranslationsStreamChatRu._(this._root);
+class _TranslationsStreamChatRu extends TranslationsStreamChatEn {
+ _TranslationsStreamChatRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get disabled => 'ЧАТ ОТКЛЮЧЕН';
- @override String disabled_timeout({ required Object time}) => 'Таймаут истекает: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Таймаут истекает: ${time}';
/// Сообщение в чате, показывающее события по тайм-ауту
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' тайм-аут '),
user,
const TextSpan(text: ' для '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Поток закончился в нижней части чата
@override String get ended => 'ТРАНСЛЯЦИЯ ОКОНЧЕНА';
/// Сообщение в чате, отображающее потоковые зазоры
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' запнул '),
amount,
const TextSpan(text: ' сат'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteRu write = _TranslationsStreamChatWriteRu._(_root);
@override late final _TranslationsStreamChatBadgeRu badge = _TranslationsStreamChatBadgeRu._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatRu implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorRu implements TranslationsZapErrorEn {
- _TranslationsZapErrorRu._(this._root);
+class _TranslationsZapErrorRu extends TranslationsZapErrorEn {
+ _TranslationsZapErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorRu implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditRu implements TranslationsProfileEditEn {
- _TranslationsProfileEditRu._(this._root);
+class _TranslationsProfileEditRu extends TranslationsProfileEditEn {
+ _TranslationsProfileEditRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditRu implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorRu implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorRu._(this._root);
+class _TranslationsLoginErrorRu extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorRu implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteRu implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteRu._(this._root);
+class _TranslationsStreamChatWriteRu extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteRu implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeRu implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeRu._(this._root);
+class _TranslationsStreamChatBadgeRu extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeRu implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidRu implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidRu._(this._root);
+class _TranslationsStreamChatRaidRu extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
/// Сообщение о рейде в чате в другой поток
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Сообщение о рейде в чате из другого потока
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Таймер обратного отсчета для автопоездки
- @override String countdown({ required Object time}) => 'Рейды в ${time}';
+ @override String countdown({required Object time}) => 'Рейды в ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorRu implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorRu._(this._root);
+class _TranslationsProfileEditErrorRu extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsRu {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'КОНЕЦ';
case 'stream.status.planned': return 'ПЛАНИРУЕМЫЙ';
- case 'stream.started': return ({ required Object timestamp}) => 'Начало ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Начало ${timestamp}';
case 'stream.chat.disabled': return 'ЧАТ ОТКЛЮЧЕН';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Таймаут истекает: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Таймаут истекает: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' тайм-аут '),
user,
const TextSpan(text: ' для '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'ТРАНСЛЯЦИЯ ОКОНЧЕНА';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' запнул '),
amount,
const TextSpan(text: ' сат'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Написать сообщение';
case 'stream.chat.write.no_signer': return 'Невозможно писать сообщения с логином npub';
case 'stream.chat.write.login': return 'Пожалуйста, войдите в систему, чтобы отправлять сообщения';
case 'stream.chat.badge.awarded_to': return 'Награждается:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Рейды в ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Цель: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Осталось: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Рейды в ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Цель: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Осталось: ${amount}';
case 'goal.complete': return 'КОМПЛЕКТ';
case 'button.login': return 'Логин';
case 'button.logout': return 'Выйти';
@@ -380,18 +381,18 @@ extension on TranslationsRu {
case 'button.unmute': return 'Включить уведомления';
case 'button.share': return 'Поделиться';
case 'button.save': return 'Сохранить';
- case 'embed.article_by': return ({ required Object name}) => 'Статья ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Заметка на сайте ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Прямая трансляция: ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Статья ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Заметка на сайте ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Прямая трансляция: ${name}';
case 'stream_list.following': return 'Подписки';
case 'stream_list.live': return 'Прямой эфир';
case 'stream_list.planned': return 'Запланировано';
case 'stream_list.ended': return 'Завершено';
- case 'zap.title': return ({ required Object name}) => 'Запнуть (${name}';
+ case 'zap.title': return ({required Object name}) => 'Запнуть (${name}';
case 'zap.custom_amount': return 'Пользовательская сумма';
case 'zap.confirm': return 'Подтвердить';
case 'zap.comment': return 'Комментарий';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Запнуть ${amount} сат';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Запнуть ${amount} сат';
case 'zap.button_zap': return 'Зап';
case 'zap.button_open_wallet': return 'Открыть в кошельке';
case 'zap.copy': return 'Скопировано в буфер обмена';
diff --git a/lib/i18n/strings_sr.g.dart b/lib/i18n/strings_sr.g.dart
index 9fea6a0..3882e2f 100644
--- a/lib/i18n/strings_sr.g.dart
+++ b/lib/i18n/strings_sr.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsSr implements Translations {
+class TranslationsSr extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsSr({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsSr implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsSr implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsSr _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsSr implements Translations {
}
// Path: stream
-class _TranslationsStreamSr implements TranslationsStreamEn {
- _TranslationsStreamSr._(this._root);
+class _TranslationsStreamSr extends TranslationsStreamEn {
+ _TranslationsStreamSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusSr status = _TranslationsStreamStatusSr._(_root);
- @override String started({ required Object timestamp}) => 'Started ${timestamp}';
+ @override String started({required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatSr chat = _TranslationsStreamChatSr._(_root);
}
// Path: goal
-class _TranslationsGoalSr implements TranslationsGoalEn {
- _TranslationsGoalSr._(this._root);
+class _TranslationsGoalSr extends TranslationsGoalEn {
+ _TranslationsGoalSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Goal: ${amount}';
- @override String remaining({ required Object amount}) => 'Remaining: ${amount}';
+ @override String title({required Object amount}) => 'Goal: ${amount}';
+ @override String remaining({required Object amount}) => 'Remaining: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonSr implements TranslationsButtonEn {
- _TranslationsButtonSr._(this._root);
+class _TranslationsButtonSr extends TranslationsButtonEn {
+ _TranslationsButtonSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonSr implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedSr implements TranslationsEmbedEn {
- _TranslationsEmbedSr._(this._root);
+class _TranslationsEmbedSr extends TranslationsEmbedEn {
+ _TranslationsEmbedSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Article by ${name}';
- @override String note_by({ required Object name}) => 'Note by ${name}';
- @override String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ @override String article_by({required Object name}) => 'Article by ${name}';
+ @override String note_by({required Object name}) => 'Note by ${name}';
+ @override String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
-class _TranslationsStreamListSr implements TranslationsStreamListEn {
- _TranslationsStreamListSr._(this._root);
+class _TranslationsStreamListSr extends TranslationsStreamListEn {
+ _TranslationsStreamListSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListSr implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapSr implements TranslationsZapEn {
- _TranslationsZapSr._(this._root);
+class _TranslationsZapSr extends TranslationsZapEn {
+ _TranslationsZapSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Custom Amount';
@override String get confirm => 'Confirm';
@override String get comment => 'Comment';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@@ -163,8 +164,8 @@ class _TranslationsZapSr implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileSr implements TranslationsProfileEn {
- _TranslationsProfileSr._(this._root);
+class _TranslationsProfileSr extends TranslationsProfileEn {
+ _TranslationsProfileSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileSr implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginSr implements TranslationsLoginEn {
- _TranslationsLoginSr._(this._root);
+class _TranslationsLoginSr extends TranslationsLoginEn {
+ _TranslationsLoginSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginSr implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusSr implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusSr._(this._root);
+class _TranslationsStreamStatusSr extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusSr implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatSr implements TranslationsStreamChatEn {
- _TranslationsStreamChatSr._(this._root);
+class _TranslationsStreamChatSr extends TranslationsStreamChatEn {
+ _TranslationsStreamChatSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
- @override String disabled_timeout({ required Object time}) => 'Timeout expires: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timeout expires: ${time}';
/// Chat message showing timeout events
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
@override String get ended => 'STREAM ENDED';
/// Chat message showing stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteSr write = _TranslationsStreamChatWriteSr._(_root);
@override late final _TranslationsStreamChatBadgeSr badge = _TranslationsStreamChatBadgeSr._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatSr implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorSr implements TranslationsZapErrorEn {
- _TranslationsZapErrorSr._(this._root);
+class _TranslationsZapErrorSr extends TranslationsZapErrorEn {
+ _TranslationsZapErrorSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorSr implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditSr implements TranslationsProfileEditEn {
- _TranslationsProfileEditSr._(this._root);
+class _TranslationsProfileEditSr extends TranslationsProfileEditEn {
+ _TranslationsProfileEditSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditSr implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorSr implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorSr._(this._root);
+class _TranslationsLoginErrorSr extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorSr implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteSr implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteSr._(this._root);
+class _TranslationsStreamChatWriteSr extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteSr implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeSr implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeSr._(this._root);
+class _TranslationsStreamChatBadgeSr extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeSr implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidSr implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidSr._(this._root);
+class _TranslationsStreamChatRaidSr extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
- @override String countdown({ required Object time}) => 'Raiding in ${time}';
+ @override String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorSr implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorSr._(this._root);
+class _TranslationsProfileEditErrorSr extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorSr._(TranslationsSr root) : this._root = root, super.internal(root);
final TranslationsSr _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsSr {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'PLANNED';
- case 'stream.started': return ({ required Object timestamp}) => 'Started ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Started ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout expires: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Write message';
case 'stream.chat.write.no_signer': return 'Can\'t write messages with npub login';
case 'stream.chat.write.login': return 'Please login to send messages';
case 'stream.chat.badge.awarded_to': return 'Awarded to:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Goal: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Remaining: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Goal: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Remaining: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -380,18 +381,18 @@ extension on TranslationsSr {
case 'button.unmute': return 'Unmute';
case 'button.share': return 'Share';
case 'button.save': return 'Save';
- case 'embed.article_by': return ({ required Object name}) => 'Article by ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note by ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Article by ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note by ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return 'Following';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planned';
case 'stream_list.ended': return 'Ended';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Custom Amount';
case 'zap.confirm': return 'Confirm';
case 'zap.comment': return 'Comment';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Open in Wallet';
case 'zap.copy': return 'Copied to clipboard';
diff --git a/lib/i18n/strings_sv.g.dart b/lib/i18n/strings_sv.g.dart
index ac0552f..4f90214 100644
--- a/lib/i18n/strings_sv.g.dart
+++ b/lib/i18n/strings_sv.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsSv implements Translations {
+class TranslationsSv extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsSv({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsSv implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsSv implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsSv _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsSv implements Translations {
}
// Path: stream
-class _TranslationsStreamSv implements TranslationsStreamEn {
- _TranslationsStreamSv._(this._root);
+class _TranslationsStreamSv extends TranslationsStreamEn {
+ _TranslationsStreamSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusSv status = _TranslationsStreamStatusSv._(_root);
- @override String started({ required Object timestamp}) => 'Startade ${timestamp}';
+ @override String started({required Object timestamp}) => 'Startade ${timestamp}';
@override late final _TranslationsStreamChatSv chat = _TranslationsStreamChatSv._(_root);
}
// Path: goal
-class _TranslationsGoalSv implements TranslationsGoalEn {
- _TranslationsGoalSv._(this._root);
+class _TranslationsGoalSv extends TranslationsGoalEn {
+ _TranslationsGoalSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Mål: ${amount}';
- @override String remaining({ required Object amount}) => 'Kvarvarande: ${amount}';
+ @override String title({required Object amount}) => 'Mål: ${amount}';
+ @override String remaining({required Object amount}) => 'Kvarvarande: ${amount}';
@override String get complete => 'KOMPLETT';
}
// Path: button
-class _TranslationsButtonSv implements TranslationsButtonEn {
- _TranslationsButtonSv._(this._root);
+class _TranslationsButtonSv extends TranslationsButtonEn {
+ _TranslationsButtonSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonSv implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedSv implements TranslationsEmbedEn {
- _TranslationsEmbedSv._(this._root);
+class _TranslationsEmbedSv extends TranslationsEmbedEn {
+ _TranslationsEmbedSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Artikel av ${name}';
- @override String note_by({ required Object name}) => 'Anteckning av ${name}';
- @override String live_stream_by({ required Object name}) => 'Direktsändning via ${name}';
+ @override String article_by({required Object name}) => 'Artikel av ${name}';
+ @override String note_by({required Object name}) => 'Anteckning av ${name}';
+ @override String live_stream_by({required Object name}) => 'Direktsändning via ${name}';
}
// Path: stream_list
-class _TranslationsStreamListSv implements TranslationsStreamListEn {
- _TranslationsStreamListSv._(this._root);
+class _TranslationsStreamListSv extends TranslationsStreamListEn {
+ _TranslationsStreamListSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListSv implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapSv implements TranslationsZapEn {
- _TranslationsZapSv._(this._root);
+class _TranslationsZapSv extends TranslationsZapEn {
+ _TranslationsZapSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Anpassat belopp';
@override String get confirm => 'Bekräfta';
@override String get comment => 'Kommentar';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Öppna i plånboken';
@override String get copy => 'Kopieras till urklipp';
@@ -163,8 +164,8 @@ class _TranslationsZapSv implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileSv implements TranslationsProfileEn {
- _TranslationsProfileSv._(this._root);
+class _TranslationsProfileSv extends TranslationsProfileEn {
+ _TranslationsProfileSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileSv implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginSv implements TranslationsLoginEn {
- _TranslationsLoginSv._(this._root);
+class _TranslationsLoginSv extends TranslationsLoginEn {
+ _TranslationsLoginSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginSv implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusSv implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusSv._(this._root);
+class _TranslationsStreamStatusSv extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusSv implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatSv implements TranslationsStreamChatEn {
- _TranslationsStreamChatSv._(this._root);
+class _TranslationsStreamChatSv extends TranslationsStreamChatEn {
+ _TranslationsStreamChatSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT AVSTÄNGD';
- @override String disabled_timeout({ required Object time}) => 'Tidsgränsen går ut: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Tidsgränsen går ut: ${time}';
/// Chattmeddelande som visar timeout-händelser
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' tidsbegränsad '),
user,
const TextSpan(text: ' för '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream avslutade sidfoten längst ner på chatten
@override String get ended => 'STREAM AVSLUTAD';
/// Chattmeddelande som visar strömavbrott
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteSv write = _TranslationsStreamChatWriteSv._(_root);
@override late final _TranslationsStreamChatBadgeSv badge = _TranslationsStreamChatBadgeSv._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatSv implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorSv implements TranslationsZapErrorEn {
- _TranslationsZapErrorSv._(this._root);
+class _TranslationsZapErrorSv extends TranslationsZapErrorEn {
+ _TranslationsZapErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorSv implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditSv implements TranslationsProfileEditEn {
- _TranslationsProfileEditSv._(this._root);
+class _TranslationsProfileEditSv extends TranslationsProfileEditEn {
+ _TranslationsProfileEditSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditSv implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorSv implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorSv._(this._root);
+class _TranslationsLoginErrorSv extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorSv implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteSv implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteSv._(this._root);
+class _TranslationsStreamChatWriteSv extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteSv implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeSv implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeSv._(this._root);
+class _TranslationsStreamChatBadgeSv extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeSv implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidSv implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidSv._(this._root);
+class _TranslationsStreamChatRaidSv extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
/// Chatta raidmeddelande till en annan ström
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid-meddelande från en annan ström
- @override String from({ required Object name}) => 'RAID FRÅN ${name}';
+ @override String from({required Object name}) => 'RAID FRÅN ${name}';
/// Nedräkningstimer för auto-raiding
- @override String countdown({ required Object time}) => 'Raiding på ${time}';
+ @override String countdown({required Object time}) => 'Raiding på ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorSv implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorSv._(this._root);
+class _TranslationsProfileEditErrorSv extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsSv {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'AVSLUTAD';
case 'stream.status.planned': return 'PLANERADE';
- case 'stream.started': return ({ required Object timestamp}) => 'Startade ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Startade ${timestamp}';
case 'stream.chat.disabled': return 'CHAT AVSTÄNGD';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Tidsgränsen går ut: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Tidsgränsen går ut: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' tidsbegränsad '),
user,
const TextSpan(text: ' för '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM AVSLUTAD';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Skriv meddelande';
case 'stream.chat.write.no_signer': return 'Det går inte att skriva meddelanden med npub-inloggning';
case 'stream.chat.write.login': return 'Logga in för att skicka meddelanden';
case 'stream.chat.badge.awarded_to': return 'Tilldelas till:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FRÅN ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding på ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Mål: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Kvarvarande: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FRÅN ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding på ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Mål: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Kvarvarande: ${amount}';
case 'goal.complete': return 'KOMPLETT';
case 'button.login': return 'Logga in';
case 'button.logout': return 'Logga ut';
@@ -380,18 +381,18 @@ extension on TranslationsSv {
case 'button.unmute': return 'Avtysta';
case 'button.share': return 'Dela';
case 'button.save': return 'Spara';
- case 'embed.article_by': return ({ required Object name}) => 'Artikel av ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Anteckning av ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Direktsändning via ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Artikel av ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Anteckning av ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Direktsändning via ${name}';
case 'stream_list.following': return 'Följer';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planerade';
case 'stream_list.ended': return 'Avslutade';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Anpassat belopp';
case 'zap.confirm': return 'Bekräfta';
case 'zap.comment': return 'Kommentar';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Öppna i plånboken';
case 'zap.copy': return 'Kopieras till urklipp';
diff --git a/lib/i18n/strings_tr.g.dart b/lib/i18n/strings_tr.g.dart
index e9ba8cc..872b3ae 100644
--- a/lib/i18n/strings_tr.g.dart
+++ b/lib/i18n/strings_tr.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsTr implements Translations {
+class TranslationsTr extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsTr({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsTr implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsTr implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsTr _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsTr implements Translations {
}
// Path: stream
-class _TranslationsStreamTr implements TranslationsStreamEn {
- _TranslationsStreamTr._(this._root);
+class _TranslationsStreamTr extends TranslationsStreamEn {
+ _TranslationsStreamTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusTr status = _TranslationsStreamStatusTr._(_root);
- @override String started({ required Object timestamp}) => 'Başlatıldı ${timestamp}';
+ @override String started({required Object timestamp}) => 'Başlatıldı ${timestamp}';
@override late final _TranslationsStreamChatTr chat = _TranslationsStreamChatTr._(_root);
}
// Path: goal
-class _TranslationsGoalTr implements TranslationsGoalEn {
- _TranslationsGoalTr._(this._root);
+class _TranslationsGoalTr extends TranslationsGoalEn {
+ _TranslationsGoalTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Hedef: ${amount}';
- @override String remaining({ required Object amount}) => 'Kalan: ${amount}';
+ @override String title({required Object amount}) => 'Hedef: ${amount}';
+ @override String remaining({required Object amount}) => 'Kalan: ${amount}';
@override String get complete => 'TAMAMLANDI';
}
// Path: button
-class _TranslationsButtonTr implements TranslationsButtonEn {
- _TranslationsButtonTr._(this._root);
+class _TranslationsButtonTr extends TranslationsButtonEn {
+ _TranslationsButtonTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonTr implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedTr implements TranslationsEmbedEn {
- _TranslationsEmbedTr._(this._root);
+class _TranslationsEmbedTr extends TranslationsEmbedEn {
+ _TranslationsEmbedTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Makale ${name}';
- @override String note_by({ required Object name}) => 'Not: ${name}';
- @override String live_stream_by({ required Object name}) => 'Canlı yayın: ${name}';
+ @override String article_by({required Object name}) => 'Makale ${name}';
+ @override String note_by({required Object name}) => 'Not: ${name}';
+ @override String live_stream_by({required Object name}) => 'Canlı yayın: ${name}';
}
// Path: stream_list
-class _TranslationsStreamListTr implements TranslationsStreamListEn {
- _TranslationsStreamListTr._(this._root);
+class _TranslationsStreamListTr extends TranslationsStreamListEn {
+ _TranslationsStreamListTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListTr implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapTr implements TranslationsZapEn {
- _TranslationsZapTr._(this._root);
+class _TranslationsZapTr extends TranslationsZapEn {
+ _TranslationsZapTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Özel Tutar';
@override String get confirm => 'Onaylayın';
@override String get comment => 'Yorum';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Cüzdanda Aç';
@override String get copy => 'Panoya kopyalandı';
@@ -163,8 +164,8 @@ class _TranslationsZapTr implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileTr implements TranslationsProfileEn {
- _TranslationsProfileTr._(this._root);
+class _TranslationsProfileTr extends TranslationsProfileEn {
+ _TranslationsProfileTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileTr implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginTr implements TranslationsLoginEn {
- _TranslationsLoginTr._(this._root);
+class _TranslationsLoginTr extends TranslationsLoginEn {
+ _TranslationsLoginTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginTr implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusTr implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusTr._(this._root);
+class _TranslationsStreamStatusTr extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusTr implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatTr implements TranslationsStreamChatEn {
- _TranslationsStreamChatTr._(this._root);
+class _TranslationsStreamChatTr extends TranslationsStreamChatEn {
+ _TranslationsStreamChatTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get disabled => 'SOHBET DEVRE DIŞI';
- @override String disabled_timeout({ required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
/// Zaman aşımı olaylarını gösteren sohbet mesajı
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' zaman aşımına uğradı '),
user,
const TextSpan(text: ' için '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Sohbetin alt kısmında akış sona erdi altbilgisi
@override String get ended => 'YAYIN SONLANDI';
/// Akış zaplarını gösteren sohbet mesajı
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteTr write = _TranslationsStreamChatWriteTr._(_root);
@override late final _TranslationsStreamChatBadgeTr badge = _TranslationsStreamChatBadgeTr._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatTr implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorTr implements TranslationsZapErrorEn {
- _TranslationsZapErrorTr._(this._root);
+class _TranslationsZapErrorTr extends TranslationsZapErrorEn {
+ _TranslationsZapErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorTr implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditTr implements TranslationsProfileEditEn {
- _TranslationsProfileEditTr._(this._root);
+class _TranslationsProfileEditTr extends TranslationsProfileEditEn {
+ _TranslationsProfileEditTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditTr implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorTr implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorTr._(this._root);
+class _TranslationsLoginErrorTr extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorTr implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteTr implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteTr._(this._root);
+class _TranslationsStreamChatWriteTr extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteTr implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeTr implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeTr._(this._root);
+class _TranslationsStreamChatBadgeTr extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeTr implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidTr implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidTr._(this._root);
+class _TranslationsStreamChatRaidTr extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
/// Başka bir akışa sohbet baskını mesajı
- @override String to({ required Object name}) => 'RAIDING ${name}S';
+ @override String to({required Object name}) => 'RAIDING ${name}S';
/// Başka bir akıştan sohbet baskını mesajı
- @override String from({ required Object name}) => '${name} ADRESINDEN RAID';
+ @override String from({required Object name}) => '${name} ADRESINDEN RAID';
/// Otomatik sürüş için geri sayım sayacı
- @override String countdown({ required Object time}) => '${time} adresinde baskın';
+ @override String countdown({required Object time}) => '${time} adresinde baskın';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorTr implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorTr._(this._root);
+class _TranslationsProfileEditErrorTr extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsTr {
case 'stream.status.live': return 'CANLI';
case 'stream.status.ended': return 'SONLANDI';
case 'stream.status.planned': return 'PLANLANMIŞ';
- case 'stream.started': return ({ required Object timestamp}) => 'Başlatıldı ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Başlatıldı ${timestamp}';
case 'stream.chat.disabled': return 'SOHBET DEVRE DIŞI';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' zaman aşımına uğradı '),
user,
const TextSpan(text: ' için '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'YAYIN SONLANDI';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Mesaj yaz';
case 'stream.chat.write.no_signer': return 'Npub girişi ile mesaj yazılamıyor';
case 'stream.chat.write.login': return 'Mesaj göndermek için lütfen giriş yapın';
case 'stream.chat.badge.awarded_to': return 'Ödüllendirildi:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}S';
- case 'stream.chat.raid.from': return ({ required Object name}) => '${name} ADRESINDEN RAID';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => '${time} adresinde baskın';
- case 'goal.title': return ({ required Object amount}) => 'Hedef: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Kalan: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}S';
+ case 'stream.chat.raid.from': return ({required Object name}) => '${name} ADRESINDEN RAID';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => '${time} adresinde baskın';
+ case 'goal.title': return ({required Object amount}) => 'Hedef: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Kalan: ${amount}';
case 'goal.complete': return 'TAMAMLANDI';
case 'button.login': return 'Giriş';
case 'button.logout': return 'Oturum Kapatma';
@@ -380,18 +381,18 @@ extension on TranslationsTr {
case 'button.unmute': return 'Sesi aç';
case 'button.share': return 'Paylaş';
case 'button.save': return 'Kaydet';
- case 'embed.article_by': return ({ required Object name}) => 'Makale ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Not: ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Canlı yayın: ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Makale ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Not: ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Canlı yayın: ${name}';
case 'stream_list.following': return 'Aşağıdaki';
case 'stream_list.live': return 'Canlı';
case 'stream_list.planned': return 'Planlanmış';
case 'stream_list.ended': return 'Bitti';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Özel Tutar';
case 'zap.confirm': return 'Onaylayın';
case 'zap.comment': return 'Yorum';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Cüzdanda Aç';
case 'zap.copy': return 'Panoya kopyalandı';
diff --git a/lib/i18n/strings_uk.g.dart b/lib/i18n/strings_uk.g.dart
index bef68aa..2ce6b96 100644
--- a/lib/i18n/strings_uk.g.dart
+++ b/lib/i18n/strings_uk.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsUk implements Translations {
+class TranslationsUk extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsUk({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsUk implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsUk implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsUk _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsUk implements Translations {
}
// Path: stream
-class _TranslationsStreamUk implements TranslationsStreamEn {
- _TranslationsStreamUk._(this._root);
+class _TranslationsStreamUk extends TranslationsStreamEn {
+ _TranslationsStreamUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusUk status = _TranslationsStreamStatusUk._(_root);
- @override String started({ required Object timestamp}) => 'Запустив ${timestamp}';
+ @override String started({required Object timestamp}) => 'Запустив ${timestamp}';
@override late final _TranslationsStreamChatUk chat = _TranslationsStreamChatUk._(_root);
}
// Path: goal
-class _TranslationsGoalUk implements TranslationsGoalEn {
- _TranslationsGoalUk._(this._root);
+class _TranslationsGoalUk extends TranslationsGoalEn {
+ _TranslationsGoalUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Мета: ${amount}';
- @override String remaining({ required Object amount}) => 'Залишилося: ${amount}';
+ @override String title({required Object amount}) => 'Мета: ${amount}';
+ @override String remaining({required Object amount}) => 'Залишилося: ${amount}';
@override String get complete => 'ЗАВЕРШИТИ';
}
// Path: button
-class _TranslationsButtonUk implements TranslationsButtonEn {
- _TranslationsButtonUk._(this._root);
+class _TranslationsButtonUk extends TranslationsButtonEn {
+ _TranslationsButtonUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonUk implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedUk implements TranslationsEmbedEn {
- _TranslationsEmbedUk._(this._root);
+class _TranslationsEmbedUk extends TranslationsEmbedEn {
+ _TranslationsEmbedUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Стаття за посиланням ${name}';
- @override String note_by({ required Object name}) => 'Примітка ${name}';
- @override String live_stream_by({ required Object name}) => 'Пряма трансляція на ${name}';
+ @override String article_by({required Object name}) => 'Стаття за посиланням ${name}';
+ @override String note_by({required Object name}) => 'Примітка ${name}';
+ @override String live_stream_by({required Object name}) => 'Пряма трансляція на ${name}';
}
// Path: stream_list
-class _TranslationsStreamListUk implements TranslationsStreamListEn {
- _TranslationsStreamListUk._(this._root);
+class _TranslationsStreamListUk extends TranslationsStreamListEn {
+ _TranslationsStreamListUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListUk implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapUk implements TranslationsZapEn {
- _TranslationsZapUk._(this._root);
+class _TranslationsZapUk extends TranslationsZapEn {
+ _TranslationsZapUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Нестандартна сума';
@override String get confirm => 'Підтвердити';
@override String get comment => 'Коментар';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap!';
@override String get button_open_wallet => 'Відкрити в Гаманці';
@override String get copy => 'Скопійовано в буфер обміну';
@@ -163,8 +164,8 @@ class _TranslationsZapUk implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileUk implements TranslationsProfileEn {
- _TranslationsProfileUk._(this._root);
+class _TranslationsProfileUk extends TranslationsProfileEn {
+ _TranslationsProfileUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileUk implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginUk implements TranslationsLoginEn {
- _TranslationsLoginUk._(this._root);
+class _TranslationsLoginUk extends TranslationsLoginEn {
+ _TranslationsLoginUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginUk implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusUk implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusUk._(this._root);
+class _TranslationsStreamStatusUk extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusUk implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatUk implements TranslationsStreamChatEn {
- _TranslationsStreamChatUk._(this._root);
+class _TranslationsStreamChatUk extends TranslationsStreamChatEn {
+ _TranslationsStreamChatUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get disabled => 'ЧАТ ВІДКЛЮЧЕНО';
- @override String disabled_timeout({ required Object time}) => 'Тайм-аут закінчився: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Тайм-аут закінчився: ${time}';
/// Повідомлення в чаті про події тайм-ауту
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' таймінг '),
user,
const TextSpan(text: ' для '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Нижній колонтитул кінця потоку внизу чату
@override String get ended => 'СТРІМ ЗАКІНЧИВСЯ';
/// Повідомлення в чаті, що показує затримки потоку
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteUk write = _TranslationsStreamChatWriteUk._(_root);
@override late final _TranslationsStreamChatBadgeUk badge = _TranslationsStreamChatBadgeUk._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatUk implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorUk implements TranslationsZapErrorEn {
- _TranslationsZapErrorUk._(this._root);
+class _TranslationsZapErrorUk extends TranslationsZapErrorEn {
+ _TranslationsZapErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorUk implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditUk implements TranslationsProfileEditEn {
- _TranslationsProfileEditUk._(this._root);
+class _TranslationsProfileEditUk extends TranslationsProfileEditEn {
+ _TranslationsProfileEditUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditUk implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorUk implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorUk._(this._root);
+class _TranslationsLoginErrorUk extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorUk implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteUk implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteUk._(this._root);
+class _TranslationsStreamChatWriteUk extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteUk implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeUk implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeUk._(this._root);
+class _TranslationsStreamChatBadgeUk extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeUk implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidUk implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidUk._(this._root);
+class _TranslationsStreamChatRaidUk extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
/// Повідомлення про рейд чату в інший потік
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Повідомлення про наліт на чат з іншого потоку
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Таймер зворотного відліку для авторейду
- @override String countdown({ required Object time}) => 'Рейд у ${time}';
+ @override String countdown({required Object time}) => 'Рейд у ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorUk implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorUk._(this._root);
+class _TranslationsProfileEditErrorUk extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsUk {
case 'stream.status.live': return 'НАЖИВО';
case 'stream.status.ended': return 'ЗАКІНЧЕНО';
case 'stream.status.planned': return 'ЗАПЛАНОВАНО';
- case 'stream.started': return ({ required Object timestamp}) => 'Запустив ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Запустив ${timestamp}';
case 'stream.chat.disabled': return 'ЧАТ ВІДКЛЮЧЕНО';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Тайм-аут закінчився: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Тайм-аут закінчився: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' таймінг '),
user,
const TextSpan(text: ' для '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'СТРІМ ЗАКІНЧИВСЯ';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Написати повідомлення';
case 'stream.chat.write.no_signer': return 'Неможливо писати повідомлення з логіном npub';
case 'stream.chat.write.login': return 'Будь ласка, авторизуйтесь, щоб надсилати повідомлення';
case 'stream.chat.badge.awarded_to': return 'Нагороджується:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Рейд у ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Мета: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Залишилося: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Рейд у ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Мета: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Залишилося: ${amount}';
case 'goal.complete': return 'ЗАВЕРШИТИ';
case 'button.login': return 'Логін';
case 'button.logout': return 'Вийти з системи';
@@ -380,18 +381,18 @@ extension on TranslationsUk {
case 'button.unmute': return 'Увімкнути звук.';
case 'button.share': return 'Поділіться';
case 'button.save': return 'Зберегти';
- case 'embed.article_by': return ({ required Object name}) => 'Стаття за посиланням ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Примітка ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Пряма трансляція на ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Стаття за посиланням ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Примітка ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Пряма трансляція на ${name}';
case 'stream_list.following': return 'Після того, як';
case 'stream_list.live': return 'Наживо';
case 'stream_list.planned': return 'Заплановано';
case 'stream_list.ended': return 'Закінчилося';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Нестандартна сума';
case 'zap.confirm': return 'Підтвердити';
case 'zap.comment': return 'Коментар';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap!';
case 'zap.button_open_wallet': return 'Відкрити в Гаманці';
case 'zap.copy': return 'Скопійовано в буфер обміну';
diff --git a/lib/i18n/strings_vi.g.dart b/lib/i18n/strings_vi.g.dart
index a659cac..6221a26 100644
--- a/lib/i18n/strings_vi.g.dart
+++ b/lib/i18n/strings_vi.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsVi implements Translations {
+class TranslationsVi extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsVi({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsVi implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsVi implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsVi _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsVi implements Translations {
}
// Path: stream
-class _TranslationsStreamVi implements TranslationsStreamEn {
- _TranslationsStreamVi._(this._root);
+class _TranslationsStreamVi extends TranslationsStreamEn {
+ _TranslationsStreamVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusVi status = _TranslationsStreamStatusVi._(_root);
- @override String started({ required Object timestamp}) => 'Started ${timestamp}';
+ @override String started({required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatVi chat = _TranslationsStreamChatVi._(_root);
}
// Path: goal
-class _TranslationsGoalVi implements TranslationsGoalEn {
- _TranslationsGoalVi._(this._root);
+class _TranslationsGoalVi extends TranslationsGoalEn {
+ _TranslationsGoalVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => 'Goal: ${amount}';
- @override String remaining({ required Object amount}) => 'Remaining: ${amount}';
+ @override String title({required Object amount}) => 'Goal: ${amount}';
+ @override String remaining({required Object amount}) => 'Remaining: ${amount}';
@override String get complete => 'COMPLETE';
}
// Path: button
-class _TranslationsButtonVi implements TranslationsButtonEn {
- _TranslationsButtonVi._(this._root);
+class _TranslationsButtonVi extends TranslationsButtonEn {
+ _TranslationsButtonVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonVi implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedVi implements TranslationsEmbedEn {
- _TranslationsEmbedVi._(this._root);
+class _TranslationsEmbedVi extends TranslationsEmbedEn {
+ _TranslationsEmbedVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => 'Article by ${name}';
- @override String note_by({ required Object name}) => 'Note by ${name}';
- @override String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ @override String article_by({required Object name}) => 'Article by ${name}';
+ @override String note_by({required Object name}) => 'Note by ${name}';
+ @override String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
-class _TranslationsStreamListVi implements TranslationsStreamListEn {
- _TranslationsStreamListVi._(this._root);
+class _TranslationsStreamListVi extends TranslationsStreamListEn {
+ _TranslationsStreamListVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListVi implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapVi implements TranslationsZapEn {
- _TranslationsZapVi._(this._root);
+class _TranslationsZapVi extends TranslationsZapEn {
+ _TranslationsZapVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => 'Zap ${name}';
+ @override String title({required Object name}) => 'Zap ${name}';
@override String get custom_amount => 'Custom Amount';
@override String get confirm => 'Confirm';
@override String get comment => 'Comment';
- @override String button_zap_ready({ required Object amount}) => 'Zap ${amount} sats';
+ @override String button_zap_ready({required Object amount}) => 'Zap ${amount} sats';
@override String get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@@ -163,8 +164,8 @@ class _TranslationsZapVi implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileVi implements TranslationsProfileEn {
- _TranslationsProfileVi._(this._root);
+class _TranslationsProfileVi extends TranslationsProfileEn {
+ _TranslationsProfileVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileVi implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginVi implements TranslationsLoginEn {
- _TranslationsLoginVi._(this._root);
+class _TranslationsLoginVi extends TranslationsLoginEn {
+ _TranslationsLoginVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginVi implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusVi implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusVi._(this._root);
+class _TranslationsStreamStatusVi extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusVi implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatVi implements TranslationsStreamChatEn {
- _TranslationsStreamChatVi._(this._root);
+class _TranslationsStreamChatVi extends TranslationsStreamChatEn {
+ _TranslationsStreamChatVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
- @override String disabled_timeout({ required Object time}) => 'Timeout expires: ${time}';
+ @override String disabled_timeout({required Object time}) => 'Timeout expires: ${time}';
/// Chat message showing timeout events
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// Stream ended footer at bottom of chat
@override String get ended => 'STREAM ENDED';
/// Chat message showing stream zaps
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteVi write = _TranslationsStreamChatWriteVi._(_root);
@override late final _TranslationsStreamChatBadgeVi badge = _TranslationsStreamChatBadgeVi._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatVi implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorVi implements TranslationsZapErrorEn {
- _TranslationsZapErrorVi._(this._root);
+class _TranslationsZapErrorVi extends TranslationsZapErrorEn {
+ _TranslationsZapErrorVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorVi implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditVi implements TranslationsProfileEditEn {
- _TranslationsProfileEditVi._(this._root);
+class _TranslationsProfileEditVi extends TranslationsProfileEditEn {
+ _TranslationsProfileEditVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditVi implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorVi implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorVi._(this._root);
+class _TranslationsLoginErrorVi extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorVi implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteVi implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteVi._(this._root);
+class _TranslationsStreamChatWriteVi extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteVi implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeVi implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeVi._(this._root);
+class _TranslationsStreamChatBadgeVi extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeVi implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidVi implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidVi._(this._root);
+class _TranslationsStreamChatRaidVi extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
- @override String countdown({ required Object time}) => 'Raiding in ${time}';
+ @override String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorVi implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorVi._(this._root);
+class _TranslationsProfileEditErrorVi extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorVi._(TranslationsVi root) : this._root = root, super.internal(root);
final TranslationsVi _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsVi {
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.planned': return 'PLANNED';
- case 'stream.started': return ({ required Object timestamp}) => 'Started ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => 'Started ${timestamp}';
case 'stream.chat.disabled': return 'CHAT DISABLED';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Timeout expires: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return 'STREAM ENDED';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return 'Write message';
case 'stream.chat.write.no_signer': return 'Can\'t write messages with npub login';
case 'stream.chat.write.login': return 'Please login to send messages';
case 'stream.chat.badge.awarded_to': return 'Awarded to:';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding in ${time}';
- case 'goal.title': return ({ required Object amount}) => 'Goal: ${amount}';
- case 'goal.remaining': return ({ required Object amount}) => 'Remaining: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding in ${time}';
+ case 'goal.title': return ({required Object amount}) => 'Goal: ${amount}';
+ case 'goal.remaining': return ({required Object amount}) => 'Remaining: ${amount}';
case 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
@@ -380,18 +381,18 @@ extension on TranslationsVi {
case 'button.unmute': return 'Unmute';
case 'button.share': return 'Share';
case 'button.save': return 'Save';
- case 'embed.article_by': return ({ required Object name}) => 'Article by ${name}';
- case 'embed.note_by': return ({ required Object name}) => 'Note by ${name}';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'embed.article_by': return ({required Object name}) => 'Article by ${name}';
+ case 'embed.note_by': return ({required Object name}) => 'Note by ${name}';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return 'Following';
case 'stream_list.live': return 'Live';
case 'stream_list.planned': return 'Planned';
case 'stream_list.ended': return 'Ended';
- case 'zap.title': return ({ required Object name}) => 'Zap ${name}';
+ case 'zap.title': return ({required Object name}) => 'Zap ${name}';
case 'zap.custom_amount': return 'Custom Amount';
case 'zap.confirm': return 'Confirm';
case 'zap.comment': return 'Comment';
- case 'zap.button_zap_ready': return ({ required Object amount}) => 'Zap ${amount} sats';
+ case 'zap.button_zap_ready': return ({required Object amount}) => 'Zap ${amount} sats';
case 'zap.button_zap': return 'Zap';
case 'zap.button_open_wallet': return 'Open in Wallet';
case 'zap.copy': return 'Copied to clipboard';
diff --git a/lib/i18n/strings_zh.g.dart b/lib/i18n/strings_zh.g.dart
index dc91431..a821898 100644
--- a/lib/i18n/strings_zh.g.dart
+++ b/lib/i18n/strings_zh.g.dart
@@ -4,14 +4,13 @@
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
-import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path:
-class TranslationsZh implements Translations {
+class TranslationsZh extends Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsZh({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta})
@@ -21,7 +20,9 @@ class TranslationsZh implements Translations {
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
- ) {
+ ),
+ super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
+ super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
$meta.setFlatMapFunction(_flatMapFunction);
}
@@ -29,7 +30,7 @@ class TranslationsZh implements Translations {
@override final TranslationMetadata $meta;
/// Access flat map
- @override dynamic operator[](String key) => $meta.getTranslation(key);
+ @override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsZh _root = this; // ignore: unused_field
@@ -70,32 +71,32 @@ class TranslationsZh implements Translations {
}
// Path: stream
-class _TranslationsStreamZh implements TranslationsStreamEn {
- _TranslationsStreamZh._(this._root);
+class _TranslationsStreamZh extends TranslationsStreamEn {
+ _TranslationsStreamZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusZh status = _TranslationsStreamStatusZh._(_root);
- @override String started({ required Object timestamp}) => '開始 ${timestamp}';
+ @override String started({required Object timestamp}) => '開始 ${timestamp}';
@override late final _TranslationsStreamChatZh chat = _TranslationsStreamChatZh._(_root);
}
// Path: goal
-class _TranslationsGoalZh implements TranslationsGoalEn {
- _TranslationsGoalZh._(this._root);
+class _TranslationsGoalZh extends TranslationsGoalEn {
+ _TranslationsGoalZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
- @override String title({ required Object amount}) => '目標:${amount}';
- @override String remaining({ required Object amount}) => '剩餘: ${amount}';
+ @override String title({required Object amount}) => '目標:${amount}';
+ @override String remaining({required Object amount}) => '剩餘: ${amount}';
@override String get complete => '完成';
}
// Path: button
-class _TranslationsButtonZh implements TranslationsButtonEn {
- _TranslationsButtonZh._(this._root);
+class _TranslationsButtonZh extends TranslationsButtonEn {
+ _TranslationsButtonZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -120,20 +121,20 @@ class _TranslationsButtonZh implements TranslationsButtonEn {
}
// Path: embed
-class _TranslationsEmbedZh implements TranslationsEmbedEn {
- _TranslationsEmbedZh._(this._root);
+class _TranslationsEmbedZh extends TranslationsEmbedEn {
+ _TranslationsEmbedZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
- @override String article_by({ required Object name}) => '文章來源: ${name}';
- @override String note_by({ required Object name}) => '${name} 的筆記';
- @override String live_stream_by({ required Object name}) => 'Live stream by ${name}';
+ @override String article_by({required Object name}) => '文章來源: ${name}';
+ @override String note_by({required Object name}) => '${name} 的筆記';
+ @override String live_stream_by({required Object name}) => 'Live stream by ${name}';
}
// Path: stream_list
-class _TranslationsStreamListZh implements TranslationsStreamListEn {
- _TranslationsStreamListZh._(this._root);
+class _TranslationsStreamListZh extends TranslationsStreamListEn {
+ _TranslationsStreamListZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -145,17 +146,17 @@ class _TranslationsStreamListZh implements TranslationsStreamListEn {
}
// Path: zap
-class _TranslationsZapZh implements TranslationsZapEn {
- _TranslationsZapZh._(this._root);
+class _TranslationsZapZh extends TranslationsZapEn {
+ _TranslationsZapZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
- @override String title({ required Object name}) => '打閃${name}';
+ @override String title({required Object name}) => '打閃${name}';
@override String get custom_amount => '自訂金額';
@override String get confirm => '確認';
@override String get comment => '評論';
- @override String button_zap_ready({ required Object amount}) => '打閃 ${amount} 聰';
+ @override String button_zap_ready({required Object amount}) => '打閃 ${amount} 聰';
@override String get button_zap => '打閃';
@override String get button_open_wallet => '在錢包中開啟';
@override String get copy => '複製到剪貼簿';
@@ -163,8 +164,8 @@ class _TranslationsZapZh implements TranslationsZapEn {
}
// Path: profile
-class _TranslationsProfileZh implements TranslationsProfileEn {
- _TranslationsProfileZh._(this._root);
+class _TranslationsProfileZh extends TranslationsProfileEn {
+ _TranslationsProfileZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -174,8 +175,8 @@ class _TranslationsProfileZh implements TranslationsProfileEn {
}
// Path: login
-class _TranslationsLoginZh implements TranslationsLoginEn {
- _TranslationsLoginZh._(this._root);
+class _TranslationsLoginZh extends TranslationsLoginEn {
+ _TranslationsLoginZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -188,8 +189,8 @@ class _TranslationsLoginZh implements TranslationsLoginEn {
}
// Path: stream.status
-class _TranslationsStreamStatusZh implements TranslationsStreamStatusEn {
- _TranslationsStreamStatusZh._(this._root);
+class _TranslationsStreamStatusZh extends TranslationsStreamStatusEn {
+ _TranslationsStreamStatusZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -200,34 +201,34 @@ class _TranslationsStreamStatusZh implements TranslationsStreamStatusEn {
}
// Path: stream.chat
-class _TranslationsStreamChatZh implements TranslationsStreamChatEn {
- _TranslationsStreamChatZh._(this._root);
+class _TranslationsStreamChatZh extends TranslationsStreamChatEn {
+ _TranslationsStreamChatZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get disabled => '關閉聊天';
- @override String disabled_timeout({ required Object time}) => '超時過期: ${time}';
+ @override String disabled_timeout({required Object time}) => '超時過期: ${time}';
/// 顯示逾時事件的聊天訊息
- @override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 超時 '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
/// 聊天底部的流結束頁尾
@override String get ended => '串流結束';
/// 聊天訊息顯示串流斷點
- @override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ @override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' 打閃了 '),
amount,
const TextSpan(text: ' 聰'),
- ], style: style, recognizer: recognizer);
+ ]);
@override late final _TranslationsStreamChatWriteZh write = _TranslationsStreamChatWriteZh._(_root);
@override late final _TranslationsStreamChatBadgeZh badge = _TranslationsStreamChatBadgeZh._(_root);
@@ -235,8 +236,8 @@ class _TranslationsStreamChatZh implements TranslationsStreamChatEn {
}
// Path: zap.error
-class _TranslationsZapErrorZh implements TranslationsZapErrorEn {
- _TranslationsZapErrorZh._(this._root);
+class _TranslationsZapErrorZh extends TranslationsZapErrorEn {
+ _TranslationsZapErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -247,8 +248,8 @@ class _TranslationsZapErrorZh implements TranslationsZapErrorEn {
}
// Path: profile.edit
-class _TranslationsProfileEditZh implements TranslationsProfileEditEn {
- _TranslationsProfileEditZh._(this._root);
+class _TranslationsProfileEditZh extends TranslationsProfileEditEn {
+ _TranslationsProfileEditZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -261,8 +262,8 @@ class _TranslationsProfileEditZh implements TranslationsProfileEditEn {
}
// Path: login.error
-class _TranslationsLoginErrorZh implements TranslationsLoginErrorEn {
- _TranslationsLoginErrorZh._(this._root);
+class _TranslationsLoginErrorZh extends TranslationsLoginErrorEn {
+ _TranslationsLoginErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -271,8 +272,8 @@ class _TranslationsLoginErrorZh implements TranslationsLoginErrorEn {
}
// Path: stream.chat.write
-class _TranslationsStreamChatWriteZh implements TranslationsStreamChatWriteEn {
- _TranslationsStreamChatWriteZh._(this._root);
+class _TranslationsStreamChatWriteZh extends TranslationsStreamChatWriteEn {
+ _TranslationsStreamChatWriteZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -289,8 +290,8 @@ class _TranslationsStreamChatWriteZh implements TranslationsStreamChatWriteEn {
}
// Path: stream.chat.badge
-class _TranslationsStreamChatBadgeZh implements TranslationsStreamChatBadgeEn {
- _TranslationsStreamChatBadgeZh._(this._root);
+class _TranslationsStreamChatBadgeZh extends TranslationsStreamChatBadgeEn {
+ _TranslationsStreamChatBadgeZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -301,26 +302,26 @@ class _TranslationsStreamChatBadgeZh implements TranslationsStreamChatBadgeEn {
}
// Path: stream.chat.raid
-class _TranslationsStreamChatRaidZh implements TranslationsStreamChatRaidEn {
- _TranslationsStreamChatRaidZh._(this._root);
+class _TranslationsStreamChatRaidZh extends TranslationsStreamChatRaidEn {
+ _TranslationsStreamChatRaidZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
/// 聊天突擊消息到另一個串流
- @override String to({ required Object name}) => 'RAIDING ${name}';
+ @override String to({required Object name}) => 'RAIDING ${name}';
/// 來自其他串流的聊天突襲訊息
- @override String from({ required Object name}) => 'RAID FROM ${name}';
+ @override String from({required Object name}) => 'RAID FROM ${name}';
/// 自動騎乘倒數計時器
- @override String countdown({ required Object time}) => '突襲 ${time}';
+ @override String countdown({required Object time}) => '突襲 ${time}';
}
// Path: profile.edit.error
-class _TranslationsProfileEditErrorZh implements TranslationsProfileEditErrorEn {
- _TranslationsProfileEditErrorZh._(this._root);
+class _TranslationsProfileEditErrorZh extends TranslationsProfileEditErrorEn {
+ _TranslationsProfileEditErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@@ -344,32 +345,32 @@ extension on TranslationsZh {
case 'stream.status.live': return '直播';
case 'stream.status.ended': return '結束';
case 'stream.status.planned': return '計劃';
- case 'stream.started': return ({ required Object timestamp}) => '開始 ${timestamp}';
+ case 'stream.started': return ({required Object timestamp}) => '開始 ${timestamp}';
case 'stream.chat.disabled': return '關閉聊天';
- case 'stream.chat.disabled_timeout': return ({ required Object time}) => '超時過期: ${time}';
- case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.disabled_timeout': return ({required Object time}) => '超時過期: ${time}';
+ case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 超時 '),
user,
const TextSpan(text: ' for '),
time,
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.ended': return '串流結束';
- case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
+ case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' 打閃了 '),
amount,
const TextSpan(text: ' 聰'),
- ], style: style, recognizer: recognizer);
+ ]);
case 'stream.chat.write.label': return '寫訊息';
case 'stream.chat.write.no_signer': return '無法使用 npub 登入撰寫訊息';
case 'stream.chat.write.login': return '請登入以傳送訊息';
case 'stream.chat.badge.awarded_to': return '頒發給';
- case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
- case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FROM ${name}';
- case 'stream.chat.raid.countdown': return ({ required Object time}) => '突襲 ${time}';
- case 'goal.title': return ({ required Object amount}) => '目標:${amount}';
- case 'goal.remaining': return ({ required Object amount}) => '剩餘: ${amount}';
+ case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
+ case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FROM ${name}';
+ case 'stream.chat.raid.countdown': return ({required Object time}) => '突襲 ${time}';
+ case 'goal.title': return ({required Object amount}) => '目標:${amount}';
+ case 'goal.remaining': return ({required Object amount}) => '剩餘: ${amount}';
case 'goal.complete': return '完成';
case 'button.login': return '登錄';
case 'button.logout': return '登出';
@@ -380,18 +381,18 @@ extension on TranslationsZh {
case 'button.unmute': return '解除静音';
case 'button.share': return '分享';
case 'button.save': return '保存';
- case 'embed.article_by': return ({ required Object name}) => '文章來源: ${name}';
- case 'embed.note_by': return ({ required Object name}) => '${name} 的筆記';
- case 'embed.live_stream_by': return ({ required Object name}) => 'Live stream by ${name}';
+ case 'embed.article_by': return ({required Object name}) => '文章來源: ${name}';
+ case 'embed.note_by': return ({required Object name}) => '${name} 的筆記';
+ case 'embed.live_stream_by': return ({required Object name}) => 'Live stream by ${name}';
case 'stream_list.following': return '已關注';
case 'stream_list.live': return '直播';
case 'stream_list.planned': return '已計畫';
case 'stream_list.ended': return '已結束';
- case 'zap.title': return ({ required Object name}) => '打閃${name}';
+ case 'zap.title': return ({required Object name}) => '打閃${name}';
case 'zap.custom_amount': return '自訂金額';
case 'zap.confirm': return '確認';
case 'zap.comment': return '評論';
- case 'zap.button_zap_ready': return ({ required Object amount}) => '打閃 ${amount} 聰';
+ case 'zap.button_zap_ready': return ({required Object amount}) => '打閃 ${amount} 聰';
case 'zap.button_zap': return '打閃';
case 'zap.button_open_wallet': return '在錢包中開啟';
case 'zap.copy': return '複製到剪貼簿';
diff --git a/lib/i18n/translated/af.i18n.yaml b/lib/i18n/translated/af.i18n.yaml
index 5258519..a6eaef7 100644
--- a/lib/i18n/translated/af.i18n.yaml
+++ b/lib/i18n/translated/af.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: Upload Avatar
-"@upload_avatar":
+"@upload_avatar":
description: Text prompting user to hit avatar placeholder to begin upload
most_zapped_streamers: Most Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Heading over listed top streamers by zaps
no_user_found: No user found
-"@no_user_found":
+"@no_user_found":
description: No user found when searching
anon: Anon
-viewers:
+viewers:
one: 1 viewer
other: $n viewers
-"@viewers":
+"@viewers":
description: Number of viewers of the stream
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: An anonymous user
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: PLANNED
started: Started $timestamp
- chat:
+ chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for $time
- "@timeout":
+ "@timeout":
description: Chat message showing timeout events
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chat message showing stream zaps
- write:
+ write:
label: Write message
- "@label":
+ "@label":
description: Label on the chat message input box
no_signer: Can't write messages with npub login
- "@no_signer":
+ "@no_signer":
description: Chat input message shown when the user is logged in only with pubkey
login: Please login to send messages
- "@login":
+ "@login":
description: Chat input message shown when the user is logged out
- badge:
+ badge:
awarded_to: "Awarded to:"
- "@awarded_to":
+ "@awarded_to":
description: Heading over list of users who are awarded a badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid message to another stream
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid message from another stream
countdown: Raiding in $time
- "@countdown":
+ "@countdown":
description: Countdown timer for auto-raiding
-goal:
+goal:
title: "Goal: $amount"
remaining: "Remaining: $amount"
complete: COMPLETE
-button:
+button:
login: Login
logout: Logout
edit_profile: Edit Profile
- "@login":
+ "@login":
description: Button text for the login button
follow: Follow
- "@follow":
+ "@follow":
description: Button text for the follow button
unfollow: Unfollow
- "@unfollow":
+ "@unfollow":
description: Button text for the unfollow button
mute: Mute
unmute: Unmute
share: Share
save: Save
-embed:
+embed:
article_by: Article by $name
note_by: Note by $name
live_stream_by: Live stream by $name
-stream_list:
+stream_list:
following: Following
live: Live
planned: Planned
ended: Ended
-"@stream_list":
+"@stream_list":
description: Headings on stream lists by stream type live/ended/planned etc.
-zap:
+zap:
title: Zap $name
custom_amount: Custom Amount
confirm: Confirm
@@ -100,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Open in Wallet
copy: Copied to clipboard
- error:
+ error:
invalid_custom_amount: Invalid custom amount
no_wallet: No lightning wallet installed
no_lud16: No lightning address found
-profile:
+profile:
past_streams: Past Streams
- edit:
+ edit:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
- error:
+ error:
logged_out: Cant edit profile when logged out
-login:
+login:
username: Username
amber: Login with Amber
key: Login with Key
create: Create Account
- error:
+ error:
invalid_key: Invalid key
diff --git a/lib/i18n/translated/ar.i18n.yaml b/lib/i18n/translated/ar.i18n.yaml
index cfbe794..93ef75f 100644
--- a/lib/i18n/translated/ar.i18n.yaml
+++ b/lib/i18n/translated/ar.i18n.yaml
@@ -1,98 +1,97 @@
upload_avatar: تحميل الصورة الرمزية
-"@upload_avatar":
+"@upload_avatar":
description: نص يطالب المستخدم بالضغط على العنصر النائب للصورة الرمزية لبدء التحميل
most_zapped_streamers: معظم اللافتات التي يتم بثها
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: التوجه فوق اللافتات العلوية المدرجة من قبل zaps
no_user_found: لم يتم العثور على مستخدم
-"@no_user_found":
+"@no_user_found":
description: لم يتم العثور على مستخدم عند البحث
anon: هوية مخفية
-viewers:
+viewers:
one: 1 مشاهد
other: $n المشاهدون
-"@viewers":
+"@viewers":
description: عدد مشاهدي البث
- placeholders:
- n:
+ placeholders:
+ n:
type: في
-"@anon":
+"@anon":
description: مستخدم مجهول
-stream:
- status:
+stream:
+ status:
live: بث مباشر
ended: انتهى
planned: مخطط
started: بدأ $timestamp
- chat:
+ chat:
disabled: تم تعطيل الدردشة
disabled_timeout: "تنتهي المهلة: $time"
timeout(rich): $mod انتهى الوقت $user لـ $time
- "@timeout":
+ "@timeout":
description: رسالة دردشة تظهر أحداث المهلة
ended: انتهى البث
- "@ended":
+ "@ended":
description: تيار انتهى التذييل في أسفل الدردشة
zap(rich): $user انطلق $amount ساتس
- "@zap":
+ "@zap":
description: رسالة الدردشة التي تُظهر البث المباشر
- write:
+ write:
label: اكتب رسالة
- "@label":
+ "@label":
description: التسمية على مربع إدخال رسالة الدردشة
no_signer: لا يمكن كتابة الرسائل باستخدام تسجيل الدخول إلى npub
- "@no_signer":
- description: تظهر رسالة إدخال الدردشة عندما يقوم المستخدم بتسجيل الدخول باستخدام
- مفتاح الحانة فقط
+ "@no_signer":
+ description: تظهر رسالة إدخال الدردشة عندما يقوم المستخدم بتسجيل الدخول باستخدام مفتاح الحانة فقط
login: الرجاء تسجيل الدخول لإرسال الرسائل
- "@login":
+ "@login":
description: تظهر رسالة إدخال الدردشة عند تسجيل خروج المستخدم من المحادثة
- badge:
+ badge:
awarded_to: مُنحت الجائزة لـ
- "@awarded_to":
+ "@awarded_to":
description: العنوان فوق قائمة المستخدمين الذين حصلوا على شارة
- raid:
+ raid:
to: التصفح $name
- "@to":
+ "@to":
description: رسالة غارة الدردشة إلى دفق آخر
from: RAID من $name
- "@from":
+ "@from":
description: رسالة غارة الدردشة من دفق آخر
countdown: الإغارة في $time
- "@countdown":
+ "@countdown":
description: مؤقت العد التنازلي للقيادة التلقائية
-goal:
+goal:
title: "الهدف: $amount"
remaining: "المتبقي: $amount"
complete: مكتمل
-button:
+button:
login: تسجيل الدخول
logout: تسجيل الخروج
edit_profile: تعديل الملف الشخصي
- "@login":
+ "@login":
description: نص الزر الخاص بزر تسجيل الدخول
follow: متابعة
- "@follow":
+ "@follow":
description: نص الزر الخاص بزر المتابعة
unfollow: الغاء المتابعة
- "@unfollow":
+ "@unfollow":
description: نص الزر لزر إلغاء المتابعة
mute: كتم
unmute: رفع الكتم
share: مشاركة
save: حفظ
-embed:
+embed:
article_by: مقال بقلم $name
note_by: ملاحظة من $name
live_stream_by: بث مباشر من $name
-stream_list:
+stream_list:
following: المتابَعون
live: بث مباشر
planned: مخطط
ended: انتهى
-"@stream_list":
+"@stream_list":
description: العناوين في قوائم البث حسب نوع البث المباشر/المُنتهي/المخطط له وما إلى ذلك.
-zap:
+zap:
title: زاب $name
custom_amount: المبلغ المخصص
confirm: تأكيد
@@ -101,23 +100,23 @@ zap:
button_zap: زاب
button_open_wallet: فتح في المحفظة
copy: نسخ إلى الحافظة
- error:
+ error:
invalid_custom_amount: مبلغ مخصص غير صالح
no_wallet: لا توجد محفظة برق مثبتة
no_lud16: لم يتم العثور على عنوان البرق
-profile:
+profile:
past_streams: التدفقات السابقة
- edit:
+ edit:
display_name: اسم العرض
about: نبذة
nip05: عنوان نوستر
lud16: عنوان البرق
- error:
+ error:
logged_out: لا يمكن تحرير ملف التعريف عند تسجيل الخروج
-login:
+login:
username: اسم المستخدم
amber: تسجيل الدخول مع آمبر
key: تسجيل الدخول بالمفتاح
create: إنشاء حساب
- error:
+ error:
invalid_key: مفتاح غير صالح
diff --git a/lib/i18n/translated/ca.i18n.yaml b/lib/i18n/translated/ca.i18n.yaml
index 5258519..a6eaef7 100644
--- a/lib/i18n/translated/ca.i18n.yaml
+++ b/lib/i18n/translated/ca.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: Upload Avatar
-"@upload_avatar":
+"@upload_avatar":
description: Text prompting user to hit avatar placeholder to begin upload
most_zapped_streamers: Most Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Heading over listed top streamers by zaps
no_user_found: No user found
-"@no_user_found":
+"@no_user_found":
description: No user found when searching
anon: Anon
-viewers:
+viewers:
one: 1 viewer
other: $n viewers
-"@viewers":
+"@viewers":
description: Number of viewers of the stream
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: An anonymous user
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: PLANNED
started: Started $timestamp
- chat:
+ chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for $time
- "@timeout":
+ "@timeout":
description: Chat message showing timeout events
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chat message showing stream zaps
- write:
+ write:
label: Write message
- "@label":
+ "@label":
description: Label on the chat message input box
no_signer: Can't write messages with npub login
- "@no_signer":
+ "@no_signer":
description: Chat input message shown when the user is logged in only with pubkey
login: Please login to send messages
- "@login":
+ "@login":
description: Chat input message shown when the user is logged out
- badge:
+ badge:
awarded_to: "Awarded to:"
- "@awarded_to":
+ "@awarded_to":
description: Heading over list of users who are awarded a badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid message to another stream
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid message from another stream
countdown: Raiding in $time
- "@countdown":
+ "@countdown":
description: Countdown timer for auto-raiding
-goal:
+goal:
title: "Goal: $amount"
remaining: "Remaining: $amount"
complete: COMPLETE
-button:
+button:
login: Login
logout: Logout
edit_profile: Edit Profile
- "@login":
+ "@login":
description: Button text for the login button
follow: Follow
- "@follow":
+ "@follow":
description: Button text for the follow button
unfollow: Unfollow
- "@unfollow":
+ "@unfollow":
description: Button text for the unfollow button
mute: Mute
unmute: Unmute
share: Share
save: Save
-embed:
+embed:
article_by: Article by $name
note_by: Note by $name
live_stream_by: Live stream by $name
-stream_list:
+stream_list:
following: Following
live: Live
planned: Planned
ended: Ended
-"@stream_list":
+"@stream_list":
description: Headings on stream lists by stream type live/ended/planned etc.
-zap:
+zap:
title: Zap $name
custom_amount: Custom Amount
confirm: Confirm
@@ -100,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Open in Wallet
copy: Copied to clipboard
- error:
+ error:
invalid_custom_amount: Invalid custom amount
no_wallet: No lightning wallet installed
no_lud16: No lightning address found
-profile:
+profile:
past_streams: Past Streams
- edit:
+ edit:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
- error:
+ error:
logged_out: Cant edit profile when logged out
-login:
+login:
username: Username
amber: Login with Amber
key: Login with Key
create: Create Account
- error:
+ error:
invalid_key: Invalid key
diff --git a/lib/i18n/translated/cs.i18n.yaml b/lib/i18n/translated/cs.i18n.yaml
index 96fe8e3..d02cf5f 100644
--- a/lib/i18n/translated/cs.i18n.yaml
+++ b/lib/i18n/translated/cs.i18n.yaml
@@ -1,99 +1,97 @@
upload_avatar: Nahrát avatar
-"@upload_avatar":
- description: Text vyzývající uživatele, aby stiskl zástupný symbol avatara pro
- zahájení nahrávání
+"@upload_avatar":
+ description: Text vyzývající uživatele, aby stiskl zástupný symbol avatara pro zahájení nahrávání
most_zapped_streamers: Nejvíce zapnutých streamerů
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Směřování přes uvedené horní streamery podle zaps
no_user_found: Nebyl nalezen žádný uživatel
-"@no_user_found":
+"@no_user_found":
description: Při vyhledávání nebyl nalezen žádný uživatel
anon: Anon
-viewers:
+viewers:
one: 1 divák
other: $n diváci
-"@viewers":
+"@viewers":
description: Počet diváků streamu
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Anonymní uživatel
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: KONEC
planned: PLÁNOVANÉ
started: Založeno $timestamp
- chat:
+ chat:
disabled: CHAT ZRUŠEN
disabled_timeout: "Časový limit vyprší: $time"
timeout(rich): $mod vypršel čas $user pro $time
- "@timeout":
+ "@timeout":
description: Zpráva chatu zobrazující události časového limitu
ended: STREAM UKONČEN
- "@ended":
+ "@ended":
description: Zápatí v dolní části chatu ukončilo stream
zap(rich): $user Zapped $amount sats
- "@zap":
+ "@zap":
description: Zpráva chatu zobrazující proud zaps
- write:
+ write:
label: Napište zprávu
- "@label":
+ "@label":
description: Popisek na vstupním poli zprávy chatu
no_signer: Nelze psát zprávy s přihlášením npub
- "@no_signer":
- description: Vstupní zpráva chatu se zobrazí, když je uživatel přihlášen pouze
- pomocí pubkey
+ "@no_signer":
+ description: Vstupní zpráva chatu se zobrazí, když je uživatel přihlášen pouze pomocí pubkey
login: Pro odesílání zpráv se prosím přihlaste
- "@login":
+ "@login":
description: Vstupní zpráva chatu zobrazená při odhlášení uživatele
- badge:
+ badge:
awarded_to: "Uděleno:"
- "@awarded_to":
+ "@awarded_to":
description: Záhlaví nad seznamem uživatelů, kterým byl udělen odznak
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Zpráva o nájezdu chatu do jiného proudu
from: RAID Z $name
- "@from":
+ "@from":
description: Zpráva o nájezdu chatu z jiného proudu
countdown: Nájezdy na $time
- "@countdown":
+ "@countdown":
description: Časovač odpočítávání pro automatický nájezd
-goal:
+goal:
title: "Cíl: $amount"
remaining: "Zbývá: $amount"
complete: KOMPLETNÍ
-button:
+button:
login: Přihlášení
logout: Odhlášení
edit_profile: Upravit profil
- "@login":
+ "@login":
description: Text tlačítka pro přihlašovací tlačítko
follow: Sledujte
- "@follow":
+ "@follow":
description: Text tlačítka pro tlačítko sledovat
unfollow: Zrušit sledování
- "@unfollow":
+ "@unfollow":
description: Text tlačítka pro zrušení sledování
mute: Ztlumit
unmute: Zrušit ztlumení
share: Sdílet
save: Uložit
-embed:
+embed:
article_by: Článek na $name
note_by: Poznámka $name
live_stream_by: Přímý přenos na adrese $name
-stream_list:
+stream_list:
following: Po
live: Živě
planned: Plánované
ended: Ukončeno
-"@stream_list":
+"@stream_list":
description: Nadpisy v seznamech proudů podle typu proudu živě/konec/plánovaně atd.
-zap:
+zap:
title: Zap $name
custom_amount: Vlastní částka
confirm: Potvrďte
@@ -102,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Otevřít v peněžence
copy: Zkopírováno do schránky
- error:
+ error:
invalid_custom_amount: Neplatná vlastní částka
no_wallet: Není nainstalována blesková peněženka
no_lud16: Nebyla nalezena žádná adresa blesku
-profile:
+profile:
past_streams: Minulé proudy
- edit:
+ edit:
display_name: Zobrazení názvu
about: O stránkách
nip05: Adresa Nostr
lud16: Adresa blesku
- error:
+ error:
logged_out: Nelze upravit profil, když je odhlášený
-login:
+login:
username: Uživatelské jméno
amber: Přihlášení pomocí Amber
key: Přihlášení pomocí klíče
create: Vytvořit účet
- error:
+ error:
invalid_key: Neplatný klíč
diff --git a/lib/i18n/translated/da.i18n.yaml b/lib/i18n/translated/da.i18n.yaml
index 90d9474..29a6790 100644
--- a/lib/i18n/translated/da.i18n.yaml
+++ b/lib/i18n/translated/da.i18n.yaml
@@ -1,99 +1,97 @@
upload_avatar: Upload avatar
-"@upload_avatar":
- description: Tekst, der beder brugeren om at trykke på avatar-pladsholderen for
- at begynde at uploade
+"@upload_avatar":
+ description: Tekst, der beder brugeren om at trykke på avatar-pladsholderen for at begynde at uploade
most_zapped_streamers: De fleste zappede streamere
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: På vej over listede topstreamere af zaps
no_user_found: Ingen bruger fundet
-"@no_user_found":
+"@no_user_found":
description: Ingen bruger fundet ved søgning
anon: Anon
-viewers:
+viewers:
one: 1 seer
other: $n Seere
-"@viewers":
+"@viewers":
description: Antal seere af streamingen
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: En anonym bruger
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: AFSLUTTET
planned: PLANLAGT
started: Startet $timestamp
- chat:
+ chat:
disabled: CHAT DEAKTIVERET
disabled_timeout: "Timeout udløber: $time"
timeout(rich): $mod udløbet $user for $time
- "@timeout":
+ "@timeout":
description: Chatbesked, der viser timeout-hændelser
ended: STREAM AFSLUTTET
- "@ended":
+ "@ended":
description: Stream afsluttede footer i bunden af chatten
zap(rich): $user zappet $amount sats
- "@zap":
+ "@zap":
description: Chatbesked, der viser stream-zaps
- write:
+ write:
label: Skriv en besked
- "@label":
+ "@label":
description: Label på chatbeskedens inputfelt
no_signer: Kan ikke skrive beskeder med npub-login
- "@no_signer":
+ "@no_signer":
description: Chat-inputmeddelelse vises, når brugeren kun er logget ind med pubkey
login: Log ind for at sende beskeder
- "@login":
+ "@login":
description: Chat-inputmeddelelse vises, når brugeren er logget ud
- badge:
+ badge:
awarded_to: "Tildelt til:"
- "@awarded_to":
+ "@awarded_to":
description: Overskrift over liste over brugere, der har fået tildelt et badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid-besked til en anden stream
from: RAID FRA $name
- "@from":
+ "@from":
description: Chat raid-besked fra en anden stream
countdown: Raiding i $time
- "@countdown":
+ "@countdown":
description: Nedtællingstimer til auto-raiding
-goal:
+goal:
title: "Mål: $amount"
remaining: "Resterende: $amount"
complete: KOMPLET
-button:
+button:
login: Login
logout: Log ud
edit_profile: Rediger profil
- "@login":
+ "@login":
description: Knaptekst til login-knappen
follow: Følg med
- "@follow":
+ "@follow":
description: Knaptekst til følg-knappen
unfollow: Ikke følge
- "@unfollow":
+ "@unfollow":
description: Knaptekst til unfollow-knappen
mute: Dæmpet
unmute: Slå lyden fra
share: Del
save: Gemme
-embed:
+embed:
article_by: Artikel af $name
note_by: Note fra $name
live_stream_by: Livestream på $name
-stream_list:
+stream_list:
following: Efterfølgende
live: Live
planned: Planlagt
ended: Afsluttet
-"@stream_list":
- description: Overskrifter på streaminglister efter streamingtype
- live/afsluttet/planlagt osv.
-zap:
+"@stream_list":
+ description: Overskrifter på streaminglister efter streamingtype live/afsluttet/planlagt osv.
+zap:
title: Zap $name
custom_amount: Brugerdefineret beløb
confirm: Bekræft
@@ -102,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Åbn i tegnebogen
copy: Kopieret til udklipsholder
- error:
+ error:
invalid_custom_amount: Ugyldigt brugerdefineret beløb
no_wallet: Ingen lightning wallet installeret
no_lud16: Ingen lyn-adresse fundet
-profile:
+profile:
past_streams: Tidligere strømme
- edit:
+ edit:
display_name: Vis navn
about: Omkring
nip05: Nostr-adresse
lud16: Adresse for lynnedslag
- error:
+ error:
logged_out: Kan ikke redigere profil, når jeg er logget ud
-login:
+login:
username: Brugernavn
amber: Log ind med Amber
key: Login med nøgle
create: Opret konto
- error:
+ error:
invalid_key: Ugyldig nøgle
diff --git a/lib/i18n/translated/de.i18n.yaml b/lib/i18n/translated/de.i18n.yaml
index e26224d..7e6a4b3 100644
--- a/lib/i18n/translated/de.i18n.yaml
+++ b/lib/i18n/translated/de.i18n.yaml
@@ -1,100 +1,97 @@
upload_avatar: Avatar hochladen
-"@upload_avatar":
- description: Text, der den Benutzer auffordert, auf den Avatar-Platzhalter zu
- klicken, um den Upload zu starten
+"@upload_avatar":
+ description: Text, der den Benutzer auffordert, auf den Avatar-Platzhalter zu klicken, um den Upload zu starten
most_zapped_streamers: Meistgezappte Streamer
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Überschrift über gelistete Top-Streamer von zaps
no_user_found: Kein Benutzer gefunden
-"@no_user_found":
+"@no_user_found":
description: Kein Benutzer bei der Suche gefunden
anon: Anon
-viewers:
+viewers:
one: 1 Zuschauer
other: $n Zuschauer
-"@viewers":
+"@viewers":
description: Anzahl der Betrachter des Streams
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Ein anonymer Benutzer
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: GEPLANT
started: Gestartet $timestamp
- chat:
+ chat:
disabled: CHAT DEAKTIVIERT
disabled_timeout: "Die Zeitüberschreitung läuft ab: $time"
timeout(rich): $mod Zeitüberschreitung $user für $time
- "@timeout":
+ "@timeout":
description: Chat-Nachricht mit Zeitüberschreitungsereignissen
ended: STREAM BEENDET
- "@ended":
+ "@ended":
description: Stream beendet Fußzeile am Ende des Chats
zap(rich): $user hat $amount sats gezappt
- "@zap":
+ "@zap":
description: Chatnachricht mit Stream Zaps
- write:
+ write:
label: Nachricht schreiben
- "@label":
+ "@label":
description: Beschriftung des Eingabefeldes für Chatnachrichten
no_signer: Mit npub-Login können keine Nachrichten geschrieben werden
- "@no_signer":
- description: Chat-Eingabemeldung wird angezeigt, wenn der Benutzer nur mit
- Pubkey eingeloggt ist
+ "@no_signer":
+ description: Chat-Eingabemeldung wird angezeigt, wenn der Benutzer nur mit Pubkey eingeloggt ist
login: Bitte anmelden, um Nachrichten zu senden
- "@login":
+ "@login":
description: Chat-Eingabemeldung wird angezeigt, wenn der Benutzer abgemeldet ist
- badge:
+ badge:
awarded_to: "Verliehen an:"
- "@awarded_to":
- description: Überschrift über der Liste der Benutzer, die ein Abzeichen erhalten
- haben
- raid:
+ "@awarded_to":
+ description: Überschrift über der Liste der Benutzer, die ein Abzeichen erhalten haben
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat-Überfallnachricht an einen anderen Stream
from: RAID VON $name
- "@from":
+ "@from":
description: Chat-Raid-Nachricht aus einem anderen Stream
countdown: Raubzüge auf $time
- "@countdown":
+ "@countdown":
description: Countdown-Timer für automatisches Reiten
-goal:
+goal:
title: "Ziel: $amount"
remaining: "Verbleibend: $amount"
complete: COMPLETE
-button:
+button:
login: Anmelden
logout: Abmelden
edit_profile: Profil anpassen
- "@login":
+ "@login":
description: Schaltflächentext für die Anmeldeschaltfläche
follow: Folgen
- "@follow":
+ "@follow":
description: Schaltflächentext für die Schaltfläche "Folgen
unfollow: Entfolgen
- "@unfollow":
+ "@unfollow":
description: Schaltflächentext für die "Unfollow"-Schaltfläche
mute: Stummschalten
unmute: Entstummen
share: Teilen
save: Speichern
-embed:
+embed:
article_by: Artikel von $name
note_by: Note von $name
live_stream_by: Live-Stream von $name
-stream_list:
+stream_list:
following: Folge ich
live: Live
planned: Geplant
ended: Beendet
-"@stream_list":
+"@stream_list":
description: Überschriften auf Stream-Listen nach Stream-Typ live/beendet/geplant usw.
-zap:
+zap:
title: $name zappen
custom_amount: Benutzerdefinierter Betrag
confirm: Bestätigen
@@ -103,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: In Brieftasche öffnen
copy: In die Zwischenablage kopiert
- error:
+ error:
invalid_custom_amount: Ungültiger benutzerdefinierter Betrag
no_wallet: Keine Lightning-Brieftasche installiert
no_lud16: Keine Blitzadresse gefunden
-profile:
+profile:
past_streams: Vergangene Streams
- edit:
+ edit:
display_name: Name anzeigen
about: Über
nip05: Nostr-Adresse
lud16: Lightning-Adresse
- error:
+ error:
logged_out: Profil kann nicht bearbeitet werden, wenn es abgemeldet ist
-login:
+login:
username: Benutzername
amber: Anmeldung mit Amber
key: Anmeldung mit Schlüssel
create: Konto erstellen
- error:
+ error:
invalid_key: Ungültiger Schlüssel
diff --git a/lib/i18n/translated/el.i18n.yaml b/lib/i18n/translated/el.i18n.yaml
index 44c516e..c5ec102 100644
--- a/lib/i18n/translated/el.i18n.yaml
+++ b/lib/i18n/translated/el.i18n.yaml
@@ -1,102 +1,97 @@
upload_avatar: Ανέβασμα Avatar
-"@upload_avatar":
- description: Κείμενο που προτρέπει τον χρήστη να πατήσει το εικονίδιο avatar για
- να ξεκινήσει το ανέβασμα
+"@upload_avatar":
+ description: Κείμενο που προτρέπει τον χρήστη να πατήσει το εικονίδιο avatar για να ξεκινήσει το ανέβασμα
most_zapped_streamers: Τα περισσότερα Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Επικεφαλής πάνω από τα αναφερόμενα κορυφαία streamers από zaps
no_user_found: Δεν βρέθηκε χρήστης
-"@no_user_found":
+"@no_user_found":
description: Δεν βρέθηκε χρήστης κατά την αναζήτηση
anon: Anon
-viewers:
+viewers:
one: 1 θεατής
other: $n θεατές
-"@viewers":
+"@viewers":
description: Αριθμός θεατών της ροής
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Ένας ανώνυμος χρήστης
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: ΣΧΕΔΙΑΣΜΟΣ
started: Ξεκίνησε $timestamp
- chat:
+ chat:
disabled: ΑΠΕΝΕΡΓΟΠΟΙΗΜΈΝΗ ΣΥΝΟΜΙΛΊΑ
disabled_timeout: "Το χρονικό όριο λήγει: $time"
timeout(rich): $mod χρονομετρημένη λήξη $user για $time
- "@timeout":
+ "@timeout":
description: Μήνυμα συνομιλίας που εμφανίζει συμβάντα timeout
ended: STREAM ΤΕΛΕΙΩΣΕ
- "@ended":
+ "@ended":
description: Η ροή τελείωσε το υποσέλιδο στο κάτω μέρος της συνομιλίας
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Μήνυμα συνομιλίας που δείχνει ροή ροής zaps
- write:
+ write:
label: Γράψτε μήνυμα
- "@label":
+ "@label":
description: Ετικέτα στο πλαίσιο εισαγωγής μηνύματος συνομιλίας
no_signer: Δεν μπορείτε να γράψετε μηνύματα με σύνδεση στο npub
- "@no_signer":
- description: Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης είναι
- συνδεδεμένος μόνο με το κλειδί pubkey
+ "@no_signer":
+ description: Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης είναι συνδεδεμένος μόνο με το κλειδί pubkey
login: Παρακαλώ συνδεθείτε για να στείλετε μηνύματα
- "@login":
- description: Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης έχει
- αποσυνδεθεί
- badge:
+ "@login":
+ description: Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης έχει αποσυνδεθεί
+ badge:
awarded_to: "Απονέμεται σε:"
- "@awarded_to":
- description: Επικεφαλίδα πάνω από τη λίστα των χρηστών στους οποίους έχει
- απονεμηθεί ένα σήμα
- raid:
+ "@awarded_to":
+ description: Επικεφαλίδα πάνω από τη λίστα των χρηστών στους οποίους έχει απονεμηθεί ένα σήμα
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Μήνυμα επιδρομής συνομιλίας σε άλλη ροή
from: RAID FROM $name
- "@from":
+ "@from":
description: Μήνυμα επιδρομής συνομιλίας από άλλη ροή
countdown: Επιδρομές στο $time
- "@countdown":
+ "@countdown":
description: Χρονοδιακόπτης αντίστροφης μέτρησης για αυτόματη ιππασία
-goal:
+goal:
title: "Στόχος: $amount"
remaining: "Υπόλοιπο: $amount"
complete: ΠΛΗΡΗΣ
-button:
+button:
login: Σύνδεση
logout: Αποσύνδεση
edit_profile: Επεξεργασία προφίλ
- "@login":
+ "@login":
description: Κείμενο κουμπιού για το κουμπί σύνδεσης
follow: Ακολουθήστε το
- "@follow":
+ "@follow":
description: Κείμενο κουμπιού για το κουμπί follow
unfollow: Ακολουθήστε το
- "@unfollow":
+ "@unfollow":
description: Κείμενο κουμπιού για το κουμπί unfollow
mute: Σίγαση
unmute: Αποσυνδέστε τη φωνή σας από το
share: Μοιραστείτε το
save: Αποθήκευση
-embed:
+embed:
article_by: Άρθρο από $name
note_by: Σημείωση του $name
live_stream_by: Ζωντανή μετάδοση από το $name
-stream_list:
+stream_list:
following: Ακολουθώντας το
live: Ζωντανό
planned: Προγραμματισμένο
ended: Τελείωσε
-"@stream_list":
- description: Επικεφαλίδες στις λίστες ροής ανά τύπο ροής
- ζωντανή/τελειωμένη/προγραμματισμένη κ.λπ.
-zap:
+"@stream_list":
+ description: Επικεφαλίδες στις λίστες ροής ανά τύπο ροής ζωντανή/τελειωμένη/προγραμματισμένη κ.λπ.
+zap:
title: Zap $name
custom_amount: Προσαρμοσμένο ποσό
confirm: Επιβεβαίωση
@@ -105,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Άνοιγμα στο πορτοφόλι
copy: Αντιγραφή στο πρόχειρο
- error:
+ error:
invalid_custom_amount: Μη έγκυρο προσαρμοσμένο ποσό
no_wallet: Δεν έχει εγκατασταθεί πορτοφόλι αστραπής
no_lud16: Δεν βρέθηκε διεύθυνση κεραυνού
-profile:
+profile:
past_streams: Προηγούμενα ρεύματα
- edit:
+ edit:
display_name: Όνομα οθόνης
about: Σχετικά με το
nip05: Διεύθυνση Nostr
lud16: Διεύθυνση Lightning
- error:
+ error:
logged_out: Δεν μπορείτε να επεξεργαστείτε το προφίλ όταν έχετε αποσυνδεθεί
-login:
+login:
username: Όνομα χρήστη
amber: Σύνδεση με Amber
key: Σύνδεση με κλειδί
create: Δημιουργία λογαριασμού
- error:
+ error:
invalid_key: Μη έγκυρο κλειδί
diff --git a/lib/i18n/translated/en.i18n.yaml b/lib/i18n/translated/en.i18n.yaml
deleted file mode 100644
index 5258519..0000000
--- a/lib/i18n/translated/en.i18n.yaml
+++ /dev/null
@@ -1,122 +0,0 @@
-upload_avatar: Upload Avatar
-"@upload_avatar":
- description: Text prompting user to hit avatar placeholder to begin upload
-most_zapped_streamers: Most Zapped Streamers
-"@most_zapped_streamers":
- description: Heading over listed top streamers by zaps
-no_user_found: No user found
-"@no_user_found":
- description: No user found when searching
-anon: Anon
-viewers:
- one: 1 viewer
- other: $n viewers
-"@viewers":
- description: Number of viewers of the stream
- placeholders:
- n:
- type: int
-"@anon":
- description: An anonymous user
-stream:
- status:
- live: LIVE
- ended: ENDED
- planned: PLANNED
- started: Started $timestamp
- chat:
- disabled: CHAT DISABLED
- disabled_timeout: "Timeout expires: $time"
- timeout(rich): $mod timed out $user for $time
- "@timeout":
- description: Chat message showing timeout events
- ended: STREAM ENDED
- "@ended":
- description: Stream ended footer at bottom of chat
- zap(rich): $user zapped $amount sats
- "@zap":
- description: Chat message showing stream zaps
- write:
- label: Write message
- "@label":
- description: Label on the chat message input box
- no_signer: Can't write messages with npub login
- "@no_signer":
- description: Chat input message shown when the user is logged in only with pubkey
- login: Please login to send messages
- "@login":
- description: Chat input message shown when the user is logged out
- badge:
- awarded_to: "Awarded to:"
- "@awarded_to":
- description: Heading over list of users who are awarded a badge
- raid:
- to: RAIDING $name
- "@to":
- description: Chat raid message to another stream
- from: RAID FROM $name
- "@from":
- description: Chat raid message from another stream
- countdown: Raiding in $time
- "@countdown":
- description: Countdown timer for auto-raiding
-goal:
- title: "Goal: $amount"
- remaining: "Remaining: $amount"
- complete: COMPLETE
-button:
- login: Login
- logout: Logout
- edit_profile: Edit Profile
- "@login":
- description: Button text for the login button
- follow: Follow
- "@follow":
- description: Button text for the follow button
- unfollow: Unfollow
- "@unfollow":
- description: Button text for the unfollow button
- mute: Mute
- unmute: Unmute
- share: Share
- save: Save
-embed:
- article_by: Article by $name
- note_by: Note by $name
- live_stream_by: Live stream by $name
-stream_list:
- following: Following
- live: Live
- planned: Planned
- ended: Ended
-"@stream_list":
- description: Headings on stream lists by stream type live/ended/planned etc.
-zap:
- title: Zap $name
- custom_amount: Custom Amount
- confirm: Confirm
- comment: Comment
- button_zap_ready: Zap $amount sats
- button_zap: Zap
- button_open_wallet: Open in Wallet
- copy: Copied to clipboard
- error:
- invalid_custom_amount: Invalid custom amount
- no_wallet: No lightning wallet installed
- no_lud16: No lightning address found
-profile:
- past_streams: Past Streams
- edit:
- display_name: Display Name
- about: About
- nip05: Nostr Address
- lud16: Lightning Address
- error:
- logged_out: Cant edit profile when logged out
-login:
- username: Username
- amber: Login with Amber
- key: Login with Key
- create: Create Account
- error:
- invalid_key: Invalid key
diff --git a/lib/i18n/translated/es.i18n.yaml b/lib/i18n/translated/es.i18n.yaml
index c461474..430cd2b 100644
--- a/lib/i18n/translated/es.i18n.yaml
+++ b/lib/i18n/translated/es.i18n.yaml
@@ -1,102 +1,97 @@
upload_avatar: Subir avatar
-"@upload_avatar":
- description: Texto que indica al usuario que pulse el marcador de avatar para
- iniciar la carga
+"@upload_avatar":
+ description: Texto que indica al usuario que pulse el marcador de avatar para iniciar la carga
most_zapped_streamers: Serpentinas más derribadas
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Encabezando streamers superiores listados por zaps
no_user_found: No se ha encontrado ningún usuario
-"@no_user_found":
+"@no_user_found":
description: No se ha encontrado ningún usuario al realizar la búsqueda
anon: Anónimo
-viewers:
+viewers:
one: 1 espectador
other: $n espectadores
-"@viewers":
+"@viewers":
description: Número de espectadores del flujo
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Un usuario anónimo
-stream:
- status:
+stream:
+ status:
live: EN VIVO
ended: FIN
planned: PLANIFICADO
started: Comenzó $timestamp
- chat:
+ chat:
disabled: CHAT DESHABILITADO
disabled_timeout: "El tiempo de espera expira: $time"
timeout(rich): $mod timed out $user para $time
- "@timeout":
+ "@timeout":
description: Mensaje de chat que muestra los eventos de tiempo de espera
ended: STREAM FINED
- "@ended":
+ "@ended":
description: Stream finalizó en la parte inferior del chat
zap(rich): $user zapearon $amount sats
- "@zap":
+ "@zap":
description: Mensaje de chat que muestra zaps de flujo
- write:
+ write:
label: Escribir mensaje
- "@label":
+ "@label":
description: Etiqueta del cuadro de entrada de mensajes de chat
no_signer: No se pueden escribir mensajes con el login npub
- "@no_signer":
- description: Mensaje de entrada en el chat que se muestra cuando el usuario está
- conectado sólo con pubkey
+ "@no_signer":
+ description: Mensaje de entrada en el chat que se muestra cuando el usuario está conectado sólo con pubkey
login: Inicie sesión para enviar mensajes
- "@login":
- description: Mensaje de entrada al chat que se muestra cuando el usuario cierra
- la sesión
- badge:
+ "@login":
+ description: Mensaje de entrada al chat que se muestra cuando el usuario cierra la sesión
+ badge:
awarded_to: "Concedido a:"
- "@awarded_to":
- description: Encabezamiento de la lista de usuarios a los que se ha concedido
- una insignia
- raid:
+ "@awarded_to":
+ description: Encabezamiento de la lista de usuarios a los que se ha concedido una insignia
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Mensaje de raid de chat a otro flujo
from: RAID DESDE $name
- "@from":
+ "@from":
description: Mensaje de incursión en el chat desde otro flujo
countdown: Incursiones en $time
- "@countdown":
+ "@countdown":
description: Temporizador de cuenta atrás para auto-raiding
-goal:
+goal:
title: "Objetivo: $amount"
remaining: "Resto: $amount"
complete: COMPLETAR
-button:
+button:
login: Iniciar Sesión
logout: Cerrar sesión
edit_profile: Editar Perfil
- "@login":
+ "@login":
description: Texto del botón de inicio de sesión
follow: Seguir
- "@follow":
+ "@follow":
description: Texto del botón de seguimiento
unfollow: Dejar de seguir
- "@unfollow":
+ "@unfollow":
description: Texto del botón "Dejar de seguir
mute: Silenciar
unmute: Dejar de silenciar
share: Compartir
save: Guardar
-embed:
+embed:
article_by: Artículo de $name
note_by: Nota de $name
live_stream_by: Transmisión en directo por $name
-stream_list:
+stream_list:
following: Siguiendo
live: En directo
planned: Planificado
ended: Finalizado
-"@stream_list":
- description: Encabezamientos en las listas de flujos por tipo de flujo en
- directo/finalizado/planificado, etc.
-zap:
+"@stream_list":
+ description: Encabezamientos en las listas de flujos por tipo de flujo en directo/finalizado/planificado, etc.
+zap:
title: Zap $name
custom_amount: Importe personalizado
confirm: Confirmar
@@ -105,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Abrir en cartera
copy: Copiado al portapapeles
- error:
+ error:
invalid_custom_amount: Importe personalizado no válido
no_wallet: Sin monedero relámpago instalado
no_lud16: No se ha encontrado ninguna dirección de rayos
-profile:
+profile:
past_streams: Transmisiones anteriores
- edit:
+ edit:
display_name: Mostrar nombre
about: Sobre ti
nip05: Dirección Nostr
lud16: Dirección del rayo
- error:
+ error:
logged_out: No se puede editar el perfil cuando se cierra la sesión
-login:
+login:
username: Usuario
amber: Iniciar sesión con Amber
key: Inicio de sesión con clave
create: Crear una cuenta
- error:
+ error:
invalid_key: Clave no válida
diff --git a/lib/i18n/translated/fi.i18n.yaml b/lib/i18n/translated/fi.i18n.yaml
index c09f2ee..9e187a3 100644
--- a/lib/i18n/translated/fi.i18n.yaml
+++ b/lib/i18n/translated/fi.i18n.yaml
@@ -1,100 +1,97 @@
upload_avatar: Lataa avatar
-"@upload_avatar":
- description: Teksti, joka kehottaa käyttäjää painamaan avatar-merkkiä
- aloittaakseen lataamisen.
+"@upload_avatar":
+ description: Teksti, joka kehottaa käyttäjää painamaan avatar-merkkiä aloittaakseen lataamisen.
most_zapped_streamers: Eniten Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Päällekkäin lueteltujen alkuun streamers by zaps
no_user_found: Käyttäjää ei löytynyt
-"@no_user_found":
+"@no_user_found":
description: Käyttäjää ei löytynyt haun yhteydessä
anon: Anon
-viewers:
+viewers:
one: 1 katsoja
other: $n katsojaa
-"@viewers":
+"@viewers":
description: Streamin katsojien määrä
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Nimetön käyttäjä
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: SUUNNITELTU
started: Aloitettu $timestamp
- chat:
+ chat:
disabled: CHAT POISTETTU KÄYTÖSTÄ
disabled_timeout: "Aikakatkaisu päättyy: $time"
timeout(rich): $mod ajastettu $user for $time
- "@timeout":
+ "@timeout":
description: Chat-viesti, joka näyttää aikakatkaisutapahtumat
ended: STREAM PÄÄTTYNYT
- "@ended":
+ "@ended":
description: Virta päättyi alatunnisteen alareunaan chatissa
zap(rich): $user zappasi $amount satsia
- "@zap":
+ "@zap":
description: Chat-viestin näyttäminen stream zaps
- write:
+ write:
label: Kirjoita viesti
- "@label":
+ "@label":
description: Chat-viestin syöttöruudun tarra
no_signer: Ei voi kirjoittaa viestejä npub-kirjautumisella
- "@no_signer":
- description: Chat-syöttöviesti näytetään, kun käyttäjä on kirjautunut sisään
- vain pubkey-avaimella.
+ "@no_signer":
+ description: Chat-syöttöviesti näytetään, kun käyttäjä on kirjautunut sisään vain pubkey-avaimella.
login: Kirjaudu sisään lähettääksesi viestejä
- "@login":
+ "@login":
description: Chat-syötteen viesti näytetään, kun käyttäjä on kirjautunut ulos.
- badge:
+ badge:
awarded_to: "Myönnetty:"
- "@awarded_to":
+ "@awarded_to":
description: Merkin saaneiden käyttäjien luettelon otsikko
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat-viesti toiseen streamiin
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid viesti toisesta virrasta
countdown: Ryöstöretket osoitteessa $time
- "@countdown":
+ "@countdown":
description: Lähtölaskenta ajastin automaattista ratsastusta varten
-goal:
+goal:
title: "Tavoite: $amount"
remaining: "Jäljellä: $amount"
complete: TÄYDELLINEN
-button:
+button:
login: Kirjaudu sisään
logout: Kirjaudu ulos
edit_profile: Muokkaa profiilia
- "@login":
+ "@login":
description: Kirjautumispainikkeen teksti
follow: Seuraa
- "@follow":
+ "@follow":
description: Seuraa-painikkeen painikkeen teksti
unfollow: Älä seuraa
- "@unfollow":
+ "@unfollow":
description: Seuraa-painikkeen teksti
mute: Mykistä
unmute: Poista mykistys
share: Jaa
save: Tallenna
-embed:
+embed:
article_by: Artikkeli $name
note_by: Viesti lähettäjältä $name
live_stream_by: Suora lähetys osoitteessa $name
-stream_list:
+stream_list:
following: Seuraa
live: Live
planned: Suunniteltu
ended: Päättynyt
-"@stream_list":
- description: Stream-luetteloiden otsikot stream-tyypeittäin
- live/päättynyt/suunniteltu jne.
-zap:
+"@stream_list":
+ description: Stream-luetteloiden otsikot stream-tyypeittäin live/päättynyt/suunniteltu jne.
+zap:
title: Zap $name
custom_amount: Mukautettu määrä
confirm: Vahvista
@@ -103,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Avaa lompakossa
copy: Kopioitu leikepöydälle
- error:
+ error:
invalid_custom_amount: Virheellinen mukautettu määrä
no_wallet: Ei asennettua salamalompakkoa
no_lud16: Salamaosoitetta ei löytynyt
-profile:
+profile:
past_streams: Aikaisemmat lähetykset
- edit:
+ edit:
display_name: Näytön nimi
about: Tietoja
nip05: Nostr-osoite
lud16: Lightning-osoite
- error:
+ error:
logged_out: Ei voi muokata profiilia, kun on kirjautunut ulos
-login:
+login:
username: Käyttäjätunnus
amber: Kirjaudu sisään Amber kanssa
key: Kirjaudu sisään avaimella
create: Luo tili
- error:
+ error:
invalid_key: Virheellinen avain
diff --git a/lib/i18n/translated/fr.i18n.yaml b/lib/i18n/translated/fr.i18n.yaml
index fe7ae5a..08a3f71 100644
--- a/lib/i18n/translated/fr.i18n.yaml
+++ b/lib/i18n/translated/fr.i18n.yaml
@@ -1,99 +1,97 @@
upload_avatar: Télécharger l'avatar
-"@upload_avatar":
- description: Texte invitant l'utilisateur à cliquer sur l'espace réservé à
- l'avatar pour commencer le téléchargement
+"@upload_avatar":
+ description: Texte invitant l'utilisateur à cliquer sur l'espace réservé à l'avatar pour commencer le téléchargement
most_zapped_streamers: Les Streamers les plus zappés
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Les têtes d'affiche sont listées par zaps.
no_user_found: Aucun utilisateur trouvé
-"@no_user_found":
+"@no_user_found":
description: Aucun utilisateur n'a été trouvé lors de la recherche
anon: Anonyme
-viewers:
+viewers:
one: 1 téléspectateur
other: $n spectateurs
-"@viewers":
+"@viewers":
description: Nombre de spectateurs du flux
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Un utilisateur anonyme
-stream:
- status:
+stream:
+ status:
live: VIVRE
ended: FINI
planned: PRÉVU
started: Commencé à $timestamp
- chat:
+ chat:
disabled: CHAT DISABLED
disabled_timeout: "Le délai expire : $time"
timeout(rich): $mod $user a expiré dans le temps pour $time
- "@timeout":
+ "@timeout":
description: Message de chat indiquant les événements de dépassement de délai
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user a zappé $amount sats
- "@zap":
+ "@zap":
description: Message de chat montrant des zaps de flux
- write:
+ write:
label: Message écrit
- "@label":
+ "@label":
description: Étiquette sur la boîte de saisie du message de chat
no_signer: Impossible d'écrire des messages avec le login npub
- "@no_signer":
- description: Message d'entrée du chat affiché lorsque l'utilisateur n'est
- connecté qu'avec pubkey
+ "@no_signer":
+ description: Message d'entrée du chat affiché lorsque l'utilisateur n'est connecté qu'avec pubkey
login: Veuillez vous connecter pour envoyer des messages
- "@login":
+ "@login":
description: Message d'entrée du chat affiché lorsque l'utilisateur est déconnecté
- badge:
+ badge:
awarded_to: "Attribué à :"
- "@awarded_to":
+ "@awarded_to":
description: Titre sur la liste des utilisateurs qui ont reçu un badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Message de raid par chat vers un autre flux
from: RAID FROM $name
- "@from":
+ "@from":
description: Message de raid sur le chat à partir d'un autre flux
countdown: Raid sur $time
- "@countdown":
+ "@countdown":
description: Compte à rebours pour l'auto-raid
-goal:
+goal:
title: "Objectif : $amount"
remaining: "Reste : $amount"
complete: COMPLET
-button:
+button:
login: Se Connecter
logout: Se déconnecter
edit_profile: Modifier le Profil
- "@login":
+ "@login":
description: Texte du bouton de connexion
follow: Suivre
- "@follow":
+ "@follow":
description: Texte du bouton de suivi
unfollow: Ne plus suivre
- "@unfollow":
+ "@unfollow":
description: Texte du bouton pour le bouton "unfollow
mute: Muet
unmute: Retirer sourdine
share: Partager
save: Sauvegarder
-embed:
+embed:
article_by: Article par $name
note_by: Note par $name
live_stream_by: Retransmission en direct sur $name
-stream_list:
+stream_list:
following: Abonnements
live: En direct
planned: Planifié
ended: Terminé
-"@stream_list":
+"@stream_list":
description: Rubriques sur les listes de flux par type de flux en direct/fini/prévu, etc.
-zap:
+zap:
title: Zap $name
custom_amount: Montant personnalisé
confirm: Confirmer
@@ -102,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Ouvrir dans le portefeuille
copy: Copié dans le presse-papiers
- error:
+ error:
invalid_custom_amount: Montant personnalisé non valide
no_wallet: Pas de porte-monnaie électronique installé
no_lud16: Pas d'adresse éclair trouvée
-profile:
+profile:
past_streams: Streams passés
- edit:
+ edit:
display_name: Nom d'affichage
about: À propos
nip05: Adresse Nostr
lud16: Adresse Lightning
- error:
+ error:
logged_out: Impossible de modifier le profil lorsque l'on est déconnecté
-login:
+login:
username: Nom d’utilisateur
amber: Se connecter avec Amber
key: Connexion avec la clé
create: Créer un Compte
- error:
+ error:
invalid_key: Clé non valide
diff --git a/lib/i18n/translated/he.i18n.yaml b/lib/i18n/translated/he.i18n.yaml
index 5258519..a6eaef7 100644
--- a/lib/i18n/translated/he.i18n.yaml
+++ b/lib/i18n/translated/he.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: Upload Avatar
-"@upload_avatar":
+"@upload_avatar":
description: Text prompting user to hit avatar placeholder to begin upload
most_zapped_streamers: Most Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Heading over listed top streamers by zaps
no_user_found: No user found
-"@no_user_found":
+"@no_user_found":
description: No user found when searching
anon: Anon
-viewers:
+viewers:
one: 1 viewer
other: $n viewers
-"@viewers":
+"@viewers":
description: Number of viewers of the stream
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: An anonymous user
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: PLANNED
started: Started $timestamp
- chat:
+ chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for $time
- "@timeout":
+ "@timeout":
description: Chat message showing timeout events
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chat message showing stream zaps
- write:
+ write:
label: Write message
- "@label":
+ "@label":
description: Label on the chat message input box
no_signer: Can't write messages with npub login
- "@no_signer":
+ "@no_signer":
description: Chat input message shown when the user is logged in only with pubkey
login: Please login to send messages
- "@login":
+ "@login":
description: Chat input message shown when the user is logged out
- badge:
+ badge:
awarded_to: "Awarded to:"
- "@awarded_to":
+ "@awarded_to":
description: Heading over list of users who are awarded a badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid message to another stream
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid message from another stream
countdown: Raiding in $time
- "@countdown":
+ "@countdown":
description: Countdown timer for auto-raiding
-goal:
+goal:
title: "Goal: $amount"
remaining: "Remaining: $amount"
complete: COMPLETE
-button:
+button:
login: Login
logout: Logout
edit_profile: Edit Profile
- "@login":
+ "@login":
description: Button text for the login button
follow: Follow
- "@follow":
+ "@follow":
description: Button text for the follow button
unfollow: Unfollow
- "@unfollow":
+ "@unfollow":
description: Button text for the unfollow button
mute: Mute
unmute: Unmute
share: Share
save: Save
-embed:
+embed:
article_by: Article by $name
note_by: Note by $name
live_stream_by: Live stream by $name
-stream_list:
+stream_list:
following: Following
live: Live
planned: Planned
ended: Ended
-"@stream_list":
+"@stream_list":
description: Headings on stream lists by stream type live/ended/planned etc.
-zap:
+zap:
title: Zap $name
custom_amount: Custom Amount
confirm: Confirm
@@ -100,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Open in Wallet
copy: Copied to clipboard
- error:
+ error:
invalid_custom_amount: Invalid custom amount
no_wallet: No lightning wallet installed
no_lud16: No lightning address found
-profile:
+profile:
past_streams: Past Streams
- edit:
+ edit:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
- error:
+ error:
logged_out: Cant edit profile when logged out
-login:
+login:
username: Username
amber: Login with Amber
key: Login with Key
create: Create Account
- error:
+ error:
invalid_key: Invalid key
diff --git a/lib/i18n/translated/hu.i18n.yaml b/lib/i18n/translated/hu.i18n.yaml
index 8f54426..6f70f93 100644
--- a/lib/i18n/translated/hu.i18n.yaml
+++ b/lib/i18n/translated/hu.i18n.yaml
@@ -1,99 +1,97 @@
upload_avatar: Avatár feltöltése
-"@upload_avatar":
- description: Szöveg, amely arra kéri a felhasználót, hogy a feltöltés
- megkezdéséhez nyomja meg az avatar helyőrzőt
+"@upload_avatar":
+ description: Szöveg, amely arra kéri a felhasználót, hogy a feltöltés megkezdéséhez nyomja meg az avatar helyőrzőt
most_zapped_streamers: A legtöbb Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Irány a felsorolt top streamerek fölött zaps által
no_user_found: Nem talált felhasználó
-"@no_user_found":
+"@no_user_found":
description: Kereséskor nem talált felhasználó
anon: Névtelen
-viewers:
+viewers:
one: 1 néző
other: $n néző
-"@viewers":
+"@viewers":
description: A stream nézőinek száma
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Egy névtelen felhasználó
-stream:
- status:
+stream:
+ status:
live: ÉLŐ
ended: ENDED
planned: TERVEZETT
started: Elindult $timestamp
- chat:
+ chat:
disabled: CHAT KIKAPCSOLVA
disabled_timeout: "Az időkorlát lejár: $time"
timeout(rich): $mod időzített $user a $time számára
- "@timeout":
+ "@timeout":
description: Chat üzenet az időkorlátos események megjelenítésével
ended: STREAM MEGSZÜNTETETT
- "@ended":
+ "@ended":
description: A stream véget ért lábléc a chat alján
zap(rich): $user zap-elt $amount sats
- "@zap":
+ "@zap":
description: Csevegőüzenet, amely stream zapokat mutat
- write:
+ write:
label: Üzenet írása
- "@label":
+ "@label":
description: Címke a csevegőüzenet beviteli mezőjén
no_signer: Nem tud üzeneteket írni az npub bejelentkezéssel
- "@no_signer":
- description: A csevegés bemeneti üzenete megjelenik, ha a felhasználó csak
- pubkey-vel van bejelentkezve
+ "@no_signer":
+ description: A csevegés bemeneti üzenete megjelenik, ha a felhasználó csak pubkey-vel van bejelentkezve
login: Kérjük, jelentkezzen be az üzenetek küldéséhez
- "@login":
+ "@login":
description: A felhasználó kijelentkezésekor megjelenő csevegési beviteli üzenet
- badge:
+ badge:
awarded_to: "Elnyerte:"
- "@awarded_to":
+ "@awarded_to":
description: Fejléc a jelvényt kapott felhasználók listája fölött
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid üzenet egy másik folyamba
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid üzenet egy másik folyamból
countdown: Raiding a $time oldalon
- "@countdown":
+ "@countdown":
description: Visszaszámláló időzítő az automatikus lovagláshoz
-goal:
+goal:
title: "Cél: $amount"
remaining: "Maradék: $amount"
complete: TELJES
-button:
+button:
login: Bejelentkezés
logout: Kijelentkezés
edit_profile: Profil szerkesztése
- "@login":
+ "@login":
description: A bejelentkezési gomb szövege
follow: Követés
- "@follow":
+ "@follow":
description: A követés gomb szövege
unfollow: Követés megszüntetése
- "@unfollow":
+ "@unfollow":
description: A követés megszüntetése gomb szövege
mute: Némítás
unmute: Némítás visszavonása
share: Megosztás
save: Mentés
-embed:
+embed:
article_by: A $name cikke.
note_by: $name bejegyzése
live_stream_by: Élő közvetítés a $name oldalon
-stream_list:
+stream_list:
following: Követettek bejegyzései
live: Élő
planned: Tervezett
ended: Véget ért
-"@stream_list":
+"@stream_list":
description: A stream-listák címsorai stream-típusonként élő/befejezett/tervezett stb.
-zap:
+zap:
title: Zap $name
custom_amount: Egyéni összeg
confirm: Megerősítés
@@ -102,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Megnyitás a pénztárcában
copy: Vágólapra másolva
- error:
+ error:
invalid_custom_amount: Érvénytelen egyéni összeg
no_wallet: Nincs telepített villám tárca
no_lud16: Nem talált villámcím
-profile:
+profile:
past_streams: Múltbeli Streamek
- edit:
+ edit:
display_name: Megjelenített név
about: Névjegy
nip05: Nostr-cím
lud16: Lightning-cím
- error:
+ error:
logged_out: Kijelentkezve nem lehet profilt szerkeszteni
-login:
+login:
username: Felhasználónév
amber: Bejelentkezés Amber segítségével
key: Bejelentkezés kulccsal
create: Fiók Létrehozása
- error:
+ error:
invalid_key: Érvénytelen kulcs
diff --git a/lib/i18n/translated/it.i18n.yaml b/lib/i18n/translated/it.i18n.yaml
index 8f1b7ba..7d8cc2a 100644
--- a/lib/i18n/translated/it.i18n.yaml
+++ b/lib/i18n/translated/it.i18n.yaml
@@ -1,100 +1,97 @@
upload_avatar: Carica Avatar
-"@upload_avatar":
- description: Testo che richiede all'utente di premere il segnaposto dell'avatar
- per iniziare il caricamento
+"@upload_avatar":
+ description: Testo che richiede all'utente di premere il segnaposto dell'avatar per iniziare il caricamento
most_zapped_streamers: Il maggior numero di streamer bloccati
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Direzione sopra elencata top streamers da zaps
no_user_found: Nessun utente trovato
-"@no_user_found":
+"@no_user_found":
description: Nessun utente trovato durante la ricerca
anon: Anonimo
-viewers:
+viewers:
one: 1 spettatore
other: $n spettatori
-"@viewers":
+"@viewers":
description: Numero di spettatori del flusso
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Un utente anonimo
-stream:
- status:
+stream:
+ status:
live: IN DIRETTA
ended: FINE
planned: PREVISTO
started: Avviato $timestamp
- chat:
+ chat:
disabled: CHAT DISABILITATA
disabled_timeout: "Il timeout scade: $time"
timeout(rich): $mod time out $user per $time
- "@timeout":
+ "@timeout":
description: Messaggio di chat che mostra gli eventi di timeout
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Il flusso si è concluso con un piè di pagina in fondo alla chat
zap(rich): $user ha effettuato uno zap di $amount sats
- "@zap":
+ "@zap":
description: Messaggio di chat che mostra gli zap del flusso
- write:
+ write:
label: Scrivi il messaggio
- "@label":
+ "@label":
description: Etichetta della casella di immissione del messaggio di chat
no_signer: Impossibile scrivere messaggi con il login npub
- "@no_signer":
- description: Messaggio di ingresso alla chat mostrato quando l'utente è connesso
- solo con la pubkey
+ "@no_signer":
+ description: Messaggio di ingresso alla chat mostrato quando l'utente è connesso solo con la pubkey
login: Effettuare il login per inviare messaggi
- "@login":
+ "@login":
description: Messaggio di input della chat mostrato quando l'utente è disconnesso
- badge:
+ badge:
awarded_to: "Assegnato a:"
- "@awarded_to":
+ "@awarded_to":
description: Intestazione dell'elenco degli utenti a cui è stato assegnato un badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Messaggio di chat raid in un altro flusso
from: RAID DA $name
- "@from":
+ "@from":
description: Messaggio di chat raid da un altro flusso
countdown: Raid in $time
- "@countdown":
+ "@countdown":
description: Timer per il conto alla rovescia per l'auto-raid
-goal:
+goal:
title: "Obiettivo: $amount"
remaining: "Restante: $amount"
complete: COMPLETO
-button:
+button:
login: Login
logout: Logout
edit_profile: Modifica profilo
- "@login":
+ "@login":
description: Testo del pulsante per il pulsante di accesso
follow: Segui
- "@follow":
+ "@follow":
description: Testo del pulsante per il pulsante Segui
unfollow: Smetti di seguire
- "@unfollow":
+ "@unfollow":
description: Testo del pulsante per il pulsante unfollow
mute: Silenzia
unmute: Riattiva
share: Condividi
save: Salva
-embed:
+embed:
article_by: Articolo di $name
note_by: Nota di $name
live_stream_by: Streaming in diretta da $name
-stream_list:
+stream_list:
following: Seguiti
live: Dal vivo
planned: Pianificato
ended: Terminato
-"@stream_list":
- description: Titoli sugli elenchi dei flussi per tipo di flusso
- live/finito/pianificato ecc.
-zap:
+"@stream_list":
+ description: Titoli sugli elenchi dei flussi per tipo di flusso live/finito/pianificato ecc.
+zap:
title: Zap $name
custom_amount: Importo personalizzato
confirm: Conferma
@@ -103,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Aprire nel portafoglio
copy: Copiato negli appunti
- error:
+ error:
invalid_custom_amount: Importo personalizzato non valido
no_wallet: Nessun portafoglio Lightning installato
no_lud16: Nessun indirizzo di fulmine trovato
-profile:
+profile:
past_streams: Flussi passati
- edit:
+ edit:
display_name: Nome visualizzato
about: Info
nip05: Indirizzo Nostr
lud16: Indirizzo del fulmine
- error:
+ error:
logged_out: Impossibile modificare il profilo quando si è disconnessi
-login:
+login:
username: Nome utente
amber: Accesso con Amber
key: Accesso con chiave
create: Crea un account
- error:
+ error:
invalid_key: Chiave non valida
diff --git a/lib/i18n/translated/ja.i18n.yaml b/lib/i18n/translated/ja.i18n.yaml
index 4c0eb44..76461f5 100644
--- a/lib/i18n/translated/ja.i18n.yaml
+++ b/lib/i18n/translated/ja.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: アバターのアップロード
-"@upload_avatar":
+"@upload_avatar":
description: アバターのプレースホルダーを押してアップロードを開始するよう促すテキスト
most_zapped_streamers: 最もザッピングされたストリーマー
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: ザップによるリストの上のストリーマーに向かう
no_user_found: ユーザーが見つかりません
-"@no_user_found":
+"@no_user_found":
description: 検索してもユーザーが見つからない
anon: 匿名
-viewers:
+viewers:
one: 1 視聴者
other: $n 人が視聴中
-"@viewers":
+"@viewers":
description: ストリームの視聴者数
- placeholders:
- n:
+ placeholders:
+ n:
type: イント
-"@anon":
+"@anon":
description: 匿名ユーザー
-stream:
- status:
+stream:
+ status:
live: ライブ
ended: 終了
planned: 予定
started: $timestamp を開始
- chat:
+ chat:
disabled: チャット無効
disabled_timeout: タイムアウト: $time
timeout(rich): $mod タイムアウト $user for $time
- "@timeout":
+ "@timeout":
description: タイムアウトイベントを表示するチャットメッセージ
ended: 配信終了
- "@ended":
+ "@ended":
description: チャットの下にストリーム終了のフッター
zap(rich): $user が $amount sats をザップしました
- "@zap":
+ "@zap":
description: ストリームのザッピングを表示するチャットメッセージ
- write:
+ write:
label: メッセージを書く
- "@label":
+ "@label":
description: チャットメッセージ入力ボックスのラベル
no_signer: npubログインでメッセージが書けない
- "@no_signer":
+ "@no_signer":
description: ユーザーがpubkeyのみでログインしている場合に表示されるチャット入力メッセージ
login: メッセージを送信するにはログインしてください
- "@login":
+ "@login":
description: ログアウト時に表示されるチャット入力メッセージ
- badge:
+ badge:
awarded_to: 受賞者
- "@awarded_to":
+ "@awarded_to":
description: バッジを授与されたユーザーのリスト上の見出し
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: 別のストリームへのチャット襲撃メッセージ
from: RAID FROM $name
- "@from":
+ "@from":
description: 他のストリームからのチャット襲撃メッセージ
countdown: $timeにおける襲撃
- "@countdown":
+ "@countdown":
description: 自動騎乗のカウントダウン・タイマー
-goal:
+goal:
title: 目標額: $amount
remaining: 残り: $amount
complete: 完了
-button:
+button:
login: ログイン
logout: ログアウト
edit_profile: プロフィールを編集
- "@login":
+ "@login":
description: ログインボタンのテキスト
follow: フォロー
- "@follow":
+ "@follow":
description: フォローボタンのテキスト
unfollow: フォロー解除
- "@unfollow":
+ "@unfollow":
description: フォロー解除ボタンのテキスト
mute: ミュート
unmute: ミュート解除
share: 共有
save: 保存
-embed:
+embed:
article_by: 記事: $name
note_by: $name の投稿
live_stream_by: ライブ・ストリーム $name
-stream_list:
+stream_list:
following: フォロー中
live: ライブ配信中
planned: 予定あり
ended: 終了しました
-"@stream_list":
+"@stream_list":
description: ライブ/終了/予定など、ストリーム・タイプ別のストリーム・リストの見出し。
-zap:
+zap:
title: $name をザップ
custom_amount: カスタム金額
confirm: 確認
@@ -100,23 +100,23 @@ zap:
button_zap: ザップ
button_open_wallet: ウォレットで開く
copy: クリップボードにコピー
- error:
+ error:
invalid_custom_amount: 無効なカスタム金額
no_wallet: Lightningウォレット未装着
no_lud16: 雷アドレスが見つかりません
-profile:
+profile:
past_streams: 過去の配信
- edit:
+ edit:
display_name: 表示名
about: 自己紹介
nip05: Nostrアドレス
lud16: ライトニングアドレス
- error:
+ error:
logged_out: ログアウトするとプロフィールが編集できない
-login:
+login:
username: ユーザー名
amber: 琥珀でログイン
key: キーでログイン
create: アカウントを作成する
- error:
+ error:
invalid_key: 無効なキー
diff --git a/lib/i18n/translated/ko.i18n.yaml b/lib/i18n/translated/ko.i18n.yaml
index 9a3f101..2ee35c2 100644
--- a/lib/i18n/translated/ko.i18n.yaml
+++ b/lib/i18n/translated/ko.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: 아바타 업로드
-"@upload_avatar":
+"@upload_avatar":
description: 아바타 플레이스홀더를 눌러 업로드를 시작하라는 메시지를 표시하는 텍스트
most_zapped_streamers: 가장 많이 재핑된 스트리머
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: 나열된 상위 스트리머를 잽별로 살펴보기
no_user_found: 사용자를 찾을 수 없습니다.
-"@no_user_found":
+"@no_user_found":
description: 검색 시 사용자를 찾을 수 없음
anon: Anon
-viewers:
+viewers:
one: 시청자 1명
other: $n 시청자
-"@viewers":
+"@viewers":
description: 스트림 시청자 수
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: 익명 사용자
-stream:
- status:
+stream:
+ status:
live: 라이브
ended: 종료
planned: 계획된
started: 시작 $timestamp
- chat:
+ chat:
disabled: 채팅 사용 안 함
disabled_timeout: "시간 초과가 만료되었습니다: $time"
timeout(rich): $mod 시간 초과됨 $user $time
- "@timeout":
+ "@timeout":
description: 시간 초과 이벤트를 표시하는 채팅 메시지
ended: 스트림 종료
- "@ended":
+ "@ended":
description: 채팅 하단의 스트림 종료 푸터
zap(rich): $user ZAPP $amount SATS
- "@zap":
+ "@zap":
description: 채팅 메시지 스트림 끊김 표시
- write:
+ write:
label: 메시지 작성
- "@label":
+ "@label":
description: 채팅 메시지 입력 상자의 라벨
no_signer: npub 로그인으로 메시지를 작성할 수 없습니다.
- "@no_signer":
+ "@no_signer":
description: 사용자가 공개 키로만 로그인한 경우에 표시되는 채팅 입력 메시지
login: 메시지를 보내려면 로그인하세요.
- "@login":
+ "@login":
description: 사용자가 로그아웃할 때 표시되는 채팅 입력 메시지
- badge:
+ badge:
awarded_to: 수상 대상
- "@awarded_to":
+ "@awarded_to":
description: 배지를 받은 사용자 목록으로 이동하기
- raid:
+ raid:
to: RAIDing $name
- "@to":
+ "@to":
description: 다른 스트림으로 채팅 레이드 메시지 보내기
from: RAID FROM $name
- "@from":
+ "@from":
description: 다른 스트림의 채팅 레이드 메시지
countdown: $time에서 레이드
- "@countdown":
+ "@countdown":
description: 자동 레이드를 위한 카운트다운 타이머
-goal:
+goal:
title: "목표: $amount"
remaining: "남음: $amount"
complete: 완료
-button:
+button:
login: 로그인
logout: 로그아웃
edit_profile: 프로필 수정
- "@login":
+ "@login":
description: 로그인 버튼의 버튼 텍스트
follow: 팔로우
- "@follow":
+ "@follow":
description: 팔로우 버튼의 버튼 텍스트
unfollow: 언팔로우
- "@unfollow":
+ "@unfollow":
description: 언팔로우 버튼의 버튼 텍스트
mute: 뮤트
unmute: 뮤트 해제
share: 공유
save: 저장
-embed:
+embed:
article_by: "작성자: $name"
note_by: "노트 작성됨: $name"
live_stream_by: "라이브 스트리밍: $name"
-stream_list:
+stream_list:
following: 팔로잉
live: 라이브
planned: 계획된
ended: 종료됨
-"@stream_list":
+"@stream_list":
description: 실시간/종료/예정 등 스트림 유형별로 스트림 목록의 제목을 표시합니다.
-zap:
+zap:
title: Zap $name
custom_amount: 사용자 지정 금액
confirm: 확인
@@ -100,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: 지갑에서 열기
copy: 클립보드에 복사
- error:
+ error:
invalid_custom_amount: 잘못된 사용자 지정 금액
no_wallet: 라이트닝 월렛이 설치되지 않았습니다.
no_lud16: 번개 주소를 찾을 수 없습니다.
-profile:
+profile:
past_streams: 과거 스트림
- edit:
+ edit:
display_name: 표시 이름
about: 정보
nip05: 노스트르 주소
lud16: 라이트닝 주소
- error:
+ error:
logged_out: 로그아웃 시 프로필 수정 불가
-login:
+login:
username: 사용자 이름
amber: Amber로 로그인
key: 키로 로그인
create: 계정 만들기
- error:
+ error:
invalid_key: 잘못된 키
diff --git a/lib/i18n/translated/nl.i18n.yaml b/lib/i18n/translated/nl.i18n.yaml
index c93283c..1777047 100644
--- a/lib/i18n/translated/nl.i18n.yaml
+++ b/lib/i18n/translated/nl.i18n.yaml
@@ -1,100 +1,97 @@
upload_avatar: Avatar uploaden
-"@upload_avatar":
- description: Tekst die de gebruiker vraagt om op de avatar-plaatshouder te
- klikken om te beginnen met uploaden
+"@upload_avatar":
+ description: Tekst die de gebruiker vraagt om op de avatar-plaatshouder te klikken om te beginnen met uploaden
most_zapped_streamers: Meeste Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Koers over beursgenoteerde topstreamers door zaps
no_user_found: Geen gebruiker gevonden
-"@no_user_found":
+"@no_user_found":
description: Geen gebruiker gevonden bij het zoeken
anon: Anon
-viewers:
+viewers:
one: 1 kijker
other: $n kijkers
-"@viewers":
+"@viewers":
description: Aantal kijkers van de stream
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Een anonieme gebruiker
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: GESLOTEN
planned: GEPLAND
started: Begonnen met $timestamp
- chat:
+ chat:
disabled: CHAT UITGESCHAKELD
disabled_timeout: "Time-out loopt af: $time"
timeout(rich): $mod timed out $user voor $time
- "@timeout":
+ "@timeout":
description: Chatbericht met time-outgebeurtenissen
ended: STREAM BEËINDIGD
- "@ended":
+ "@ended":
description: Voettekst einde stream onderaan chat
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chatbericht met stream zaps
- write:
+ write:
label: Schrijf bericht
- "@label":
+ "@label":
description: Label op het invoerveld voor chatberichten
no_signer: Kan geen berichten schrijven met npub login
- "@no_signer":
- description: Chatinvoerbericht getoond wanneer de gebruiker alleen is ingelogd
- met pubkey
+ "@no_signer":
+ description: Chatinvoerbericht getoond wanneer de gebruiker alleen is ingelogd met pubkey
login: Log in om berichten te verzenden
- "@login":
- description: Chatinvoerbericht dat wordt weergegeven wanneer de gebruiker is
- uitgelogd
- badge:
+ "@login":
+ description: Chatinvoerbericht dat wordt weergegeven wanneer de gebruiker is uitgelogd
+ badge:
awarded_to: "Toegekend aan:"
- "@awarded_to":
+ "@awarded_to":
description: Kop boven de lijst met gebruikers die een badge hebben gekregen
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid bericht naar een andere stream
from: RAID VAN $name
- "@from":
+ "@from":
description: Chat invalbericht van een andere stream
countdown: Overvallen in $time
- "@countdown":
+ "@countdown":
description: Afteltimer voor automatisch rijden
-goal:
+goal:
title: "Doel: $amount"
remaining: "Overblijvend: $amount"
complete: COMPLETE
-button:
+button:
login: Inloggen
logout: Uitloggen
edit_profile: Bewerk Profiel
- "@login":
+ "@login":
description: Knoptekst voor de aanmeldknop
follow: Volgen
- "@follow":
+ "@follow":
description: Knoptekst voor de volgknop
unfollow: Ontvolgen
- "@unfollow":
+ "@unfollow":
description: Knoptekst voor de knop Ontvolgen
mute: Dempen
unmute: Niet langer negeren
share: Deel
save: Opslaan
-embed:
+embed:
article_by: Artikel door $name
note_by: Opmerking door $name
live_stream_by: Live stream via $name
-stream_list:
+stream_list:
following: Volgt
live: Live
planned: Gepland
ended: Beëindigd
-"@stream_list":
+"@stream_list":
description: Rubrieken op streamlijsten per streamtype live/beëindigd/gepland etc.
-zap:
+zap:
title: Zap $name
custom_amount: Aangepast bedrag
confirm: Bevestig
@@ -103,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Openen in portefeuille
copy: Gekopieerd naar klembord
- error:
+ error:
invalid_custom_amount: Ongeldig aangepast bedrag
no_wallet: Geen bliksemportemonnee geïnstalleerd
no_lud16: Geen bliksemadres gevonden
-profile:
+profile:
past_streams: Afgelopen Streams
- edit:
+ edit:
display_name: Naam weergeven
about: Over ons
nip05: Nostr Adres
lud16: Lightning adres
- error:
+ error:
logged_out: Kan profiel niet bewerken als ik ben uitgelogd
-login:
+login:
username: Gebruikersnaam
amber: Inloggen met Amber
key: Inloggen met sleutel
create: Account aanmaken
- error:
+ error:
invalid_key: Ongeldige sleutel
diff --git a/lib/i18n/translated/no.i18n.yaml b/lib/i18n/translated/no.i18n.yaml
index 5258519..a6eaef7 100644
--- a/lib/i18n/translated/no.i18n.yaml
+++ b/lib/i18n/translated/no.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: Upload Avatar
-"@upload_avatar":
+"@upload_avatar":
description: Text prompting user to hit avatar placeholder to begin upload
most_zapped_streamers: Most Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Heading over listed top streamers by zaps
no_user_found: No user found
-"@no_user_found":
+"@no_user_found":
description: No user found when searching
anon: Anon
-viewers:
+viewers:
one: 1 viewer
other: $n viewers
-"@viewers":
+"@viewers":
description: Number of viewers of the stream
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: An anonymous user
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: PLANNED
started: Started $timestamp
- chat:
+ chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for $time
- "@timeout":
+ "@timeout":
description: Chat message showing timeout events
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chat message showing stream zaps
- write:
+ write:
label: Write message
- "@label":
+ "@label":
description: Label on the chat message input box
no_signer: Can't write messages with npub login
- "@no_signer":
+ "@no_signer":
description: Chat input message shown when the user is logged in only with pubkey
login: Please login to send messages
- "@login":
+ "@login":
description: Chat input message shown when the user is logged out
- badge:
+ badge:
awarded_to: "Awarded to:"
- "@awarded_to":
+ "@awarded_to":
description: Heading over list of users who are awarded a badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid message to another stream
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid message from another stream
countdown: Raiding in $time
- "@countdown":
+ "@countdown":
description: Countdown timer for auto-raiding
-goal:
+goal:
title: "Goal: $amount"
remaining: "Remaining: $amount"
complete: COMPLETE
-button:
+button:
login: Login
logout: Logout
edit_profile: Edit Profile
- "@login":
+ "@login":
description: Button text for the login button
follow: Follow
- "@follow":
+ "@follow":
description: Button text for the follow button
unfollow: Unfollow
- "@unfollow":
+ "@unfollow":
description: Button text for the unfollow button
mute: Mute
unmute: Unmute
share: Share
save: Save
-embed:
+embed:
article_by: Article by $name
note_by: Note by $name
live_stream_by: Live stream by $name
-stream_list:
+stream_list:
following: Following
live: Live
planned: Planned
ended: Ended
-"@stream_list":
+"@stream_list":
description: Headings on stream lists by stream type live/ended/planned etc.
-zap:
+zap:
title: Zap $name
custom_amount: Custom Amount
confirm: Confirm
@@ -100,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Open in Wallet
copy: Copied to clipboard
- error:
+ error:
invalid_custom_amount: Invalid custom amount
no_wallet: No lightning wallet installed
no_lud16: No lightning address found
-profile:
+profile:
past_streams: Past Streams
- edit:
+ edit:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
- error:
+ error:
logged_out: Cant edit profile when logged out
-login:
+login:
username: Username
amber: Login with Amber
key: Login with Key
create: Create Account
- error:
+ error:
invalid_key: Invalid key
diff --git a/lib/i18n/translated/pl.i18n.yaml b/lib/i18n/translated/pl.i18n.yaml
index 5067086..56fadf1 100644
--- a/lib/i18n/translated/pl.i18n.yaml
+++ b/lib/i18n/translated/pl.i18n.yaml
@@ -1,100 +1,97 @@
upload_avatar: Prześlij awatar
-"@upload_avatar":
- description: Tekst zachęcający użytkownika do kliknięcia symbolu zastępczego
- awatara w celu rozpoczęcia przesyłania.
+"@upload_avatar":
+ description: Tekst zachęcający użytkownika do kliknięcia symbolu zastępczego awatara w celu rozpoczęcia przesyłania.
most_zapped_streamers: Większość zapped streamerów
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Przechodzenie nad wymienionymi topowymi streamerami przez zapy
no_user_found: Nie znaleziono użytkownika
-"@no_user_found":
+"@no_user_found":
description: Nie znaleziono użytkownika podczas wyszukiwania
anon: Anon
-viewers:
+viewers:
one: 1 przeglądarka
other: $n widzowie
-"@viewers":
+"@viewers":
description: Liczba widzów strumienia
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Anonimowy użytkownik
-stream:
- status:
+stream:
+ status:
live: NA ŻYWO
ended: ZAKOŃCZONY
planned: PLANOWANE
started: Start $timestamp
- chat:
+ chat:
disabled: CZAT WYŁĄCZONY
disabled_timeout: "Upłynął limit czasu: $time"
timeout(rich): $mod upłynął limit czasu $user dla $time
- "@timeout":
+ "@timeout":
description: Komunikat czatu pokazujący zdarzenia przekroczenia limitu czasu
ended: TRANSMISJA ZAKOŃCZONA
- "@ended":
+ "@ended":
description: Stream zakończył stopkę na dole czatu
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Wiadomość na czacie pokazująca zapy strumienia
- write:
+ write:
label: Napisz wiadomość
- "@label":
+ "@label":
description: Etykieta w polu wprowadzania wiadomości czatu
no_signer: Nie można pisać wiadomości z loginem npub
- "@no_signer":
- description: Komunikat wejściowy czatu wyświetlany, gdy użytkownik jest
- zalogowany tylko za pomocą klucza pubkey
+ "@no_signer":
+ description: Komunikat wejściowy czatu wyświetlany, gdy użytkownik jest zalogowany tylko za pomocą klucza pubkey
login: Zaloguj się, aby wysyłać wiadomości
- "@login":
+ "@login":
description: Komunikat wejściowy czatu wyświetlany, gdy użytkownik jest wylogowany
- badge:
+ badge:
awarded_to: "Przyznano:"
- "@awarded_to":
+ "@awarded_to":
description: Nagłówek nad listą użytkowników, którzy otrzymali odznakę
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Przesyłanie wiadomości na czacie do innego strumienia
from: RAID Z $name
- "@from":
+ "@from":
description: Nalot na czat z innego strumienia
countdown: Naloty w $time
- "@countdown":
+ "@countdown":
description: Zegar odliczający czas do automatycznej jazdy
-goal:
+goal:
title: "Cel: $amount"
remaining: "Pozostałe: $amount"
complete: ZAKOŃCZONE
-button:
+button:
login: Logowanie
logout: Wylogowanie
edit_profile: Edytuj profil
- "@login":
+ "@login":
description: Tekst przycisku logowania
follow: Śledź
- "@follow":
+ "@follow":
description: Tekst przycisku dla przycisku śledzenia
unfollow: Nie obserwuj
- "@unfollow":
+ "@unfollow":
description: Tekst przycisku cofnięcia obserwowania
mute: Wyciszenie
unmute: Wyłącz wyciszenie
share: Udział
save: Zapisz
-embed:
+embed:
article_by: Artykuł autorstwa $name
note_by: Uwaga $name
live_stream_by: Transmisja na żywo przez $name
-stream_list:
+stream_list:
following: Następujący
live: Na żywo
planned: Planowane
ended: Zakończony
-"@stream_list":
- description: Nagłówki na listach strumieni według typu strumienia na żywo /
- zakończony / planowany itp.
-zap:
+"@stream_list":
+ description: Nagłówki na listach strumieni według typu strumienia na żywo / zakończony / planowany itp.
+zap:
title: Zap $name
custom_amount: Kwota niestandardowa
confirm: Potwierdzenie
@@ -103,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Otwórz w portfelu
copy: Skopiowane do schowka
- error:
+ error:
invalid_custom_amount: Nieprawidłowa kwota niestandardowa
no_wallet: Brak zainstalowanego portfela Lightning
no_lud16: Nie znaleziono adresu pioruna
-profile:
+profile:
past_streams: Poprzednie strumienie
- edit:
+ edit:
display_name: Wyświetlana nazwa
about: O
nip05: Adres Nostr
lud16: Adres błyskawicy
- error:
+ error:
logged_out: Nie można edytować profilu po wylogowaniu
-login:
+login:
username: Nazwa użytkownika
amber: Zaloguj się za pomocą Amber
key: Logowanie za pomocą klucza
create: Utwórz konto
- error:
+ error:
invalid_key: Nieprawidłowy klucz
diff --git a/lib/i18n/translated/pt.i18n.yaml b/lib/i18n/translated/pt.i18n.yaml
index 8da7f80..3b05714 100644
--- a/lib/i18n/translated/pt.i18n.yaml
+++ b/lib/i18n/translated/pt.i18n.yaml
@@ -1,100 +1,97 @@
upload_avatar: Carregar Avatar
-"@upload_avatar":
- description: Texto solicitando que o usuário clique no espaço reservado do
- avatar para iniciar o upload
+"@upload_avatar":
+ description: Texto solicitando que o usuário clique no espaço reservado do avatar para iniciar o upload
most_zapped_streamers: Streamers mais afetados
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Dirigindo-se para as principais serpentinas listadas por zaps
no_user_found: Nenhum usuário encontrado
-"@no_user_found":
+"@no_user_found":
description: Nenhum usuário foi encontrado durante a pesquisa
anon: Anônimo
-viewers:
+viewers:
one: 1 visualizador
other: $n espectadores
-"@viewers":
+"@viewers":
description: Número de espectadores da transmissão
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Um usuário anônimo
-stream:
- status:
+stream:
+ status:
live: AO VIVO
ended: FINALIZADO
planned: PLANEJADO
started: Iniciado em $timestamp
- chat:
+ chat:
disabled: BATE-PAPO DESATIVADO
disabled_timeout: "O tempo limite expira: $time"
timeout(rich): $mod Tempo esgotado $user para $time
- "@timeout":
+ "@timeout":
description: Mensagem de bate-papo mostrando eventos de tempo limite
ended: TRANSMISSÃO ENCERRADA
- "@ended":
+ "@ended":
description: O rodapé do fluxo terminou na parte inferior do bate-papo
zap(rich): $user zapeou $amount sats
- "@zap":
+ "@zap":
description: Mensagem de bate-papo mostrando zaps de fluxo
- write:
+ write:
label: Escrever mensagem
- "@label":
+ "@label":
description: Rótulo na caixa de entrada da mensagem de bate-papo
no_signer: Não é possível escrever mensagens com o login do npub
- "@no_signer":
- description: Mensagem de entrada de bate-papo exibida quando o usuário está
- conectado apenas com a pubkey
+ "@no_signer":
+ description: Mensagem de entrada de bate-papo exibida quando o usuário está conectado apenas com a pubkey
login: Faça login para enviar mensagens
- "@login":
+ "@login":
description: Mensagem de entrada de chat exibida quando o usuário está desconectado
- badge:
+ badge:
awarded_to: "Prêmio concedido a:"
- "@awarded_to":
+ "@awarded_to":
description: Cabeçalho sobre a lista de usuários que receberam um emblema
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Mensagem de invasão de bate-papo para outro fluxo
from: RAID DE $name
- "@from":
+ "@from":
description: Mensagem de invasão de bate-papo de outro fluxo
countdown: Incursões em $time
- "@countdown":
+ "@countdown":
description: Cronômetro de contagem regressiva para o ataque automático
-goal:
+goal:
title: "Meta: $amount"
remaining: "Restante: $amount"
complete: COMPLETO
-button:
+button:
login: Entrar
logout: Sair
edit_profile: Editar perfil
- "@login":
+ "@login":
description: Texto do botão para o botão de login
follow: Seguir
- "@follow":
+ "@follow":
description: Texto do botão para o botão Seguir
unfollow: Deixar de seguir
- "@unfollow":
+ "@unfollow":
description: Texto do botão para o botão deixar de seguir
mute: Silenciar
unmute: Desmutar
share: Compartilhar
save: Salvar
-embed:
+embed:
article_by: Artigo de $name
note_by: Nota de $name
live_stream_by: Transmissão ao vivo pelo site $name
-stream_list:
+stream_list:
following: Seguindo
live: Ao vivo
planned: Planejado
ended: Encerrado
-"@stream_list":
- description: Cabeçalhos nas listas de transmissões por tipo de transmissão ao
- vivo/terminada/planejada etc.
-zap:
+"@stream_list":
+ description: Cabeçalhos nas listas de transmissões por tipo de transmissão ao vivo/terminada/planejada etc.
+zap:
title: Zap $name
custom_amount: Valor personalizado
confirm: Confirmar
@@ -103,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Abrir na carteira
copy: Copiado para a área de transferência
- error:
+ error:
invalid_custom_amount: Valor personalizado inválido
no_wallet: Nenhuma carteira lightning instalada
no_lud16: Nenhum endereço de raio encontrado
-profile:
+profile:
past_streams: Transmissões Passadas
- edit:
+ edit:
display_name: Nome de exibição
about: Sobre
nip05: Endereço do Nostr
lud16: Endereço Lightning
- error:
+ error:
logged_out: Não é possível editar o perfil quando se está desconectado
-login:
+login:
username: Nome de usuário
amber: Faça login com o Amber
key: Login com chave
create: Criar Conta
- error:
+ error:
invalid_key: Chave inválida
diff --git a/lib/i18n/translated/ro.i18n.yaml b/lib/i18n/translated/ro.i18n.yaml
index 55330b1..f3b6266 100644
--- a/lib/i18n/translated/ro.i18n.yaml
+++ b/lib/i18n/translated/ro.i18n.yaml
@@ -1,101 +1,97 @@
upload_avatar: Încărcați Avatar
-"@upload_avatar":
- description: Text care solicită utilizatorului să atingă marcajul avatar pentru
- a începe încărcarea
+"@upload_avatar":
+ description: Text care solicită utilizatorului să atingă marcajul avatar pentru a începe încărcarea
most_zapped_streamers: Cele mai multe Streamers Zapped
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Cap peste streamers de top enumerate de zaps
no_user_found: Niciun utilizator găsit
-"@no_user_found":
+"@no_user_found":
description: Nu s-a găsit niciun utilizator la căutare
anon: Anon
-viewers:
+viewers:
one: 1 vizualizator
other: $n telespectatori
-"@viewers":
+"@viewers":
description: Numărul de telespectatori ai fluxului
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Un utilizator anonim
-stream:
- status:
+stream:
+ status:
live: ÎN DIRECT
ended: TERMINAT
planned: PLANIFICATE
started: A început $timestamp
- chat:
+ chat:
disabled: CHAT DEZACTIVAT
disabled_timeout: "Timpul expiră: $time"
timeout(rich): $mod Timed out $user pentru $time
- "@timeout":
+ "@timeout":
description: Mesaj de chat care afișează evenimentele de timeout
ended: STREAM ÎNCHEIAT
- "@ended":
+ "@ended":
description: Stream a încheiat footer-ul în partea de jos a chat-ului
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Mesaj de chat care arată zapsuri de flux
- write:
+ write:
label: Scrieți mesajul
- "@label":
+ "@label":
description: Etichetă pe caseta de introducere a mesajului de chat
no_signer: Nu se pot scrie mesaje cu autentificarea npub
- "@no_signer":
- description: Mesajul de intrare în chat afișat atunci când utilizatorul este
- conectat doar cu pubkey
+ "@no_signer":
+ description: Mesajul de intrare în chat afișat atunci când utilizatorul este conectat doar cu pubkey
login: Vă rugăm să vă autentificați pentru a trimite mesaje
- "@login":
- description: Mesajul de intrare în chat afișat atunci când utilizatorul este
- deconectat
- badge:
+ "@login":
+ description: Mesajul de intrare în chat afișat atunci când utilizatorul este deconectat
+ badge:
awarded_to: "Premiat pentru:"
- "@awarded_to":
+ "@awarded_to":
description: Antet peste lista de utilizatori care au primit o insignă
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat mesaj raid la un alt flux
from: RAID DE LA $name
- "@from":
+ "@from":
description: Chat raid mesaj din alt flux
countdown: Raiduri în $time
- "@countdown":
+ "@countdown":
description: Cronometru cu numărătoare inversă pentru auto-raid
-goal:
+goal:
title: "Obiectiv: $amount"
remaining: "Rămase: $amount"
complete: COMPLET
-button:
+button:
login: Autentificare
logout: Ieșire
edit_profile: Editare profil
- "@login":
+ "@login":
description: Textul butonului pentru butonul de conectare
follow: Urmați
- "@follow":
+ "@follow":
description: Textul butonului pentru butonul de urmărire
unfollow: Unfollow
- "@unfollow":
+ "@unfollow":
description: Textul butonului pentru butonul unfollow
mute: Mut
unmute: Dezactivați
share: Share
save: Salvați
-embed:
+embed:
article_by: Articol de $name
note_by: Notă de la $name
live_stream_by: Transmisiune live prin $name
-stream_list:
+stream_list:
following: În urma
live: În direct
planned: Planificate
ended: Încheiat
-"@stream_list":
- description: Rubrici pe listele de fluxuri în funcție de tipul fluxului în
- direct/terminat/planificat etc.
-zap:
+"@stream_list":
+ description: Rubrici pe listele de fluxuri în funcție de tipul fluxului în direct/terminat/planificat etc.
+zap:
title: Zap $name
custom_amount: Sumă personalizată
confirm: Confirmați
@@ -104,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Deschide în portofel
copy: Copiat în clipboard
- error:
+ error:
invalid_custom_amount: Sumă personalizată invalidă
no_wallet: Nu este instalat niciun portofel Lightning
no_lud16: Nu a fost găsită nicio adresă de fulgere
-profile:
+profile:
past_streams: Fluxuri trecute
- edit:
+ edit:
display_name: Nume afișat
about: Despre
nip05: Adresa Nostr
lud16: Adresa fulgerului
- error:
+ error:
logged_out: Nu pot edita profilul când sunt deconectat
-login:
+login:
username: Nume utilizator
amber: Conectați-vă cu Amber
key: Autentificare cu cheie
create: Creare cont
- error:
+ error:
invalid_key: Cheie invalidă
diff --git a/lib/i18n/translated/ru.i18n.yaml b/lib/i18n/translated/ru.i18n.yaml
index fff82cc..eab2a2f 100644
--- a/lib/i18n/translated/ru.i18n.yaml
+++ b/lib/i18n/translated/ru.i18n.yaml
@@ -1,101 +1,97 @@
upload_avatar: Загрузить аватар
-"@upload_avatar":
- description: Текст, побуждающий пользователя нажать кнопку с изображением
- аватара, чтобы начать загрузку
+"@upload_avatar":
+ description: Текст, побуждающий пользователя нажать кнопку с изображением аватара, чтобы начать загрузку
most_zapped_streamers: Самые прыткие стримеры
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Направляясь по перечисленным верхним стримерам с помощью запс
no_user_found: Пользователь не найден
-"@no_user_found":
+"@no_user_found":
description: Пользователь не найден при поиске
anon: Аноним
-viewers:
+viewers:
one: 1 зритель
other: $n зрителей
-"@viewers":
+"@viewers":
description: Количество зрителей потока
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Анонимный пользователь
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: КОНЕЦ
planned: ПЛАНИРУЕМЫЙ
started: Начало $timestamp
- chat:
+ chat:
disabled: ЧАТ ОТКЛЮЧЕН
disabled_timeout: "Таймаут истекает: $time"
timeout(rich): $mod тайм-аут $user для $time
- "@timeout":
+ "@timeout":
description: Сообщение в чате, показывающее события по тайм-ауту
ended: ТРАНСЛЯЦИЯ ОКОНЧЕНА
- "@ended":
+ "@ended":
description: Поток закончился в нижней части чата
zap(rich): $user запнул $amount сат
- "@zap":
+ "@zap":
description: Сообщение в чате, отображающее потоковые зазоры
- write:
+ write:
label: Написать сообщение
- "@label":
+ "@label":
description: Надпись на поле ввода сообщения чата
no_signer: Невозможно писать сообщения с логином npub
- "@no_signer":
- description: Сообщение о входе в чат, отображаемое при входе пользователя только
- с pubkey
+ "@no_signer":
+ description: Сообщение о входе в чат, отображаемое при входе пользователя только с pubkey
login: Пожалуйста, войдите в систему, чтобы отправлять сообщения
- "@login":
- description: Сообщение о входе в чат, отображаемое при выходе пользователя из
- системы
- badge:
+ "@login":
+ description: Сообщение о входе в чат, отображаемое при выходе пользователя из системы
+ badge:
awarded_to: "Награждается:"
- "@awarded_to":
+ "@awarded_to":
description: Заголовок над списком пользователей, награжденных значком
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Сообщение о рейде в чате в другой поток
from: RAID FROM $name
- "@from":
+ "@from":
description: Сообщение о рейде в чате из другого потока
countdown: Рейды в $time
- "@countdown":
+ "@countdown":
description: Таймер обратного отсчета для автопоездки
-goal:
+goal:
title: "Цель: $amount"
remaining: "Осталось: $amount"
complete: КОМПЛЕКТ
-button:
+button:
login: Логин
logout: Выйти
edit_profile: Редактировать профиль
- "@login":
+ "@login":
description: Текст кнопки для входа в систему
follow: Подписаться
- "@follow":
+ "@follow":
description: Текст кнопки для кнопки следования
unfollow: Отписаться
- "@unfollow":
+ "@unfollow":
description: Текст кнопки для кнопки "Развернуть
mute: Заглушить
unmute: Включить уведомления
share: Поделиться
save: Сохранить
-embed:
+embed:
article_by: Статья $name
note_by: Заметка на сайте $name
live_stream_by: "Прямая трансляция: $name"
-stream_list:
+stream_list:
following: Подписки
live: Прямой эфир
planned: Запланировано
ended: Завершено
-"@stream_list":
- description: Заголовки в списках потоков по типу потока -
- живой/законченный/запланированный и т. д.
-zap:
+"@stream_list":
+ description: Заголовки в списках потоков по типу потока - живой/законченный/запланированный и т. д.
+zap:
title: Запнуть ($name
custom_amount: Пользовательская сумма
confirm: Подтвердить
@@ -104,23 +100,23 @@ zap:
button_zap: Зап
button_open_wallet: Открыть в кошельке
copy: Скопировано в буфер обмена
- error:
+ error:
invalid_custom_amount: Недопустимая пользовательская сумма
no_wallet: Кошелек молнии не установлен
no_lud16: Адрес молнии не найден
-profile:
+profile:
past_streams: Предыдущие трансляции
- edit:
+ edit:
display_name: Отображаемое имя
about: О себе
nip05: Nostr адрес
lud16: Lightning Адрес
- error:
+ error:
logged_out: Невозможно редактировать профиль при выходе из системы
-login:
+login:
username: Имя пользователя
amber: Войти с помощью Amber
key: Вход в систему с помощью ключа
create: Создать аккаунт
- error:
+ error:
invalid_key: Неверный ключ
diff --git a/lib/i18n/translated/sr.i18n.yaml b/lib/i18n/translated/sr.i18n.yaml
index 5258519..a6eaef7 100644
--- a/lib/i18n/translated/sr.i18n.yaml
+++ b/lib/i18n/translated/sr.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: Upload Avatar
-"@upload_avatar":
+"@upload_avatar":
description: Text prompting user to hit avatar placeholder to begin upload
most_zapped_streamers: Most Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Heading over listed top streamers by zaps
no_user_found: No user found
-"@no_user_found":
+"@no_user_found":
description: No user found when searching
anon: Anon
-viewers:
+viewers:
one: 1 viewer
other: $n viewers
-"@viewers":
+"@viewers":
description: Number of viewers of the stream
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: An anonymous user
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: PLANNED
started: Started $timestamp
- chat:
+ chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for $time
- "@timeout":
+ "@timeout":
description: Chat message showing timeout events
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chat message showing stream zaps
- write:
+ write:
label: Write message
- "@label":
+ "@label":
description: Label on the chat message input box
no_signer: Can't write messages with npub login
- "@no_signer":
+ "@no_signer":
description: Chat input message shown when the user is logged in only with pubkey
login: Please login to send messages
- "@login":
+ "@login":
description: Chat input message shown when the user is logged out
- badge:
+ badge:
awarded_to: "Awarded to:"
- "@awarded_to":
+ "@awarded_to":
description: Heading over list of users who are awarded a badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid message to another stream
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid message from another stream
countdown: Raiding in $time
- "@countdown":
+ "@countdown":
description: Countdown timer for auto-raiding
-goal:
+goal:
title: "Goal: $amount"
remaining: "Remaining: $amount"
complete: COMPLETE
-button:
+button:
login: Login
logout: Logout
edit_profile: Edit Profile
- "@login":
+ "@login":
description: Button text for the login button
follow: Follow
- "@follow":
+ "@follow":
description: Button text for the follow button
unfollow: Unfollow
- "@unfollow":
+ "@unfollow":
description: Button text for the unfollow button
mute: Mute
unmute: Unmute
share: Share
save: Save
-embed:
+embed:
article_by: Article by $name
note_by: Note by $name
live_stream_by: Live stream by $name
-stream_list:
+stream_list:
following: Following
live: Live
planned: Planned
ended: Ended
-"@stream_list":
+"@stream_list":
description: Headings on stream lists by stream type live/ended/planned etc.
-zap:
+zap:
title: Zap $name
custom_amount: Custom Amount
confirm: Confirm
@@ -100,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Open in Wallet
copy: Copied to clipboard
- error:
+ error:
invalid_custom_amount: Invalid custom amount
no_wallet: No lightning wallet installed
no_lud16: No lightning address found
-profile:
+profile:
past_streams: Past Streams
- edit:
+ edit:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
- error:
+ error:
logged_out: Cant edit profile when logged out
-login:
+login:
username: Username
amber: Login with Amber
key: Login with Key
create: Create Account
- error:
+ error:
invalid_key: Invalid key
diff --git a/lib/i18n/translated/sv.i18n.yaml b/lib/i18n/translated/sv.i18n.yaml
index b866340..e0432b9 100644
--- a/lib/i18n/translated/sv.i18n.yaml
+++ b/lib/i18n/translated/sv.i18n.yaml
@@ -1,99 +1,97 @@
upload_avatar: Ladda upp avatar
-"@upload_avatar":
- description: Text som uppmanar användaren att trycka på avatarplatshållaren för
- att påbörja uppladdningen
+"@upload_avatar":
+ description: Text som uppmanar användaren att trycka på avatarplatshållaren för att påbörja uppladdningen
most_zapped_streamers: De flesta zappade streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Rubrik över listade toppstreamers av zaps
no_user_found: Ingen användare hittades
-"@no_user_found":
+"@no_user_found":
description: Ingen användare hittades vid sökning
anon: Anon
-viewers:
+viewers:
one: 1 tittare
other: $n tittare
-"@viewers":
+"@viewers":
description: Antal tittare på streamingen
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: En anonym användare
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: AVSLUTAD
planned: PLANERADE
started: Startade $timestamp
- chat:
+ chat:
disabled: CHAT AVSTÄNGD
disabled_timeout: "Tidsgränsen går ut: $time"
timeout(rich): $mod tidsbegränsad $user för $time
- "@timeout":
+ "@timeout":
description: Chattmeddelande som visar timeout-händelser
ended: STREAM AVSLUTAD
- "@ended":
+ "@ended":
description: Stream avslutade sidfoten längst ner på chatten
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chattmeddelande som visar strömavbrott
- write:
+ write:
label: Skriv meddelande
- "@label":
+ "@label":
description: Etikett på inmatningsrutan för chattmeddelanden
no_signer: Det går inte att skriva meddelanden med npub-inloggning
- "@no_signer":
- description: Chattinmatningsmeddelande som visas när användaren endast är
- inloggad med pubkey
+ "@no_signer":
+ description: Chattinmatningsmeddelande som visas när användaren endast är inloggad med pubkey
login: Logga in för att skicka meddelanden
- "@login":
+ "@login":
description: Chattinmatningsmeddelande som visas när användaren är utloggad
- badge:
+ badge:
awarded_to: "Tilldelas till:"
- "@awarded_to":
+ "@awarded_to":
description: Rubrik över lista över användare som tilldelats en badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chatta raidmeddelande till en annan ström
from: RAID FRÅN $name
- "@from":
+ "@from":
description: Chat raid-meddelande från en annan ström
countdown: Raiding på $time
- "@countdown":
+ "@countdown":
description: Nedräkningstimer för auto-raiding
-goal:
+goal:
title: "Mål: $amount"
remaining: "Kvarvarande: $amount"
complete: KOMPLETT
-button:
+button:
login: Logga in
logout: Logga ut
edit_profile: Redigera profil
- "@login":
+ "@login":
description: Knapptext för inloggningsknappen
follow: Följ
- "@follow":
+ "@follow":
description: Knapptext för följ-knappen
unfollow: Sluta följa
- "@unfollow":
+ "@unfollow":
description: Knapptext för avföljningsknappen
mute: Tysta
unmute: Avtysta
share: Dela
save: Spara
-embed:
+embed:
article_by: Artikel av $name
note_by: Anteckning av $name
live_stream_by: Direktsändning via $name
-stream_list:
+stream_list:
following: Följer
live: Live
planned: Planerade
ended: Avslutade
-"@stream_list":
+"@stream_list":
description: Rubriker på strömlistor efter strömtyp live/avslutad/planerad etc.
-zap:
+zap:
title: Zap $name
custom_amount: Anpassat belopp
confirm: Bekräfta
@@ -102,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Öppna i plånboken
copy: Kopieras till urklipp
- error:
+ error:
invalid_custom_amount: Ogiltigt anpassat belopp
no_wallet: Ingen blixtplånbok installerad
no_lud16: Ingen blixtadress hittades
-profile:
+profile:
past_streams: Tidigare streamar
- edit:
+ edit:
display_name: Visa namn
about: Om
nip05: Nostr Adress
lud16: Lightning-adress
- error:
+ error:
logged_out: Kan inte redigera profil när jag är utloggad
-login:
+login:
username: Användarnamn
amber: Logga in med Amber
key: Logga in med nyckel
create: Skapa konto
- error:
+ error:
invalid_key: Ogiltig nyckel
diff --git a/lib/i18n/translated/tr.i18n.yaml b/lib/i18n/translated/tr.i18n.yaml
index 457d2a1..654de2d 100644
--- a/lib/i18n/translated/tr.i18n.yaml
+++ b/lib/i18n/translated/tr.i18n.yaml
@@ -1,99 +1,97 @@
upload_avatar: Avatar Yükle
-"@upload_avatar":
- description: Kullanıcının yüklemeye başlamak için avatar yer tutucusuna
- basmasını isteyen metin
+"@upload_avatar":
+ description: Kullanıcının yüklemeye başlamak için avatar yer tutucusuna basmasını isteyen metin
most_zapped_streamers: En Çok Zaplanan Flamalar
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Zaps tarafından listelenen üst flamalar üzerinde ilerliyor
no_user_found: Kullanıcı bulunamadı
-"@no_user_found":
+"@no_user_found":
description: Arama yaparken kullanıcı bulunamadı
anon: Anon
-viewers:
+viewers:
one: 1 izleyici
other: $n izleyiciler
-"@viewers":
+"@viewers":
description: Akışı izleyenlerin sayısı
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Anonim bir kullanıcı
-stream:
- status:
+stream:
+ status:
live: CANLI
ended: SONLANDI
planned: PLANLANMIŞ
started: Başlatıldı $timestamp
- chat:
+ chat:
disabled: SOHBET DEVRE DIŞI
disabled_timeout: "Zaman aşımı sona eriyor: $time"
timeout(rich): $mod zaman aşımına uğradı $user için $time
- "@timeout":
+ "@timeout":
description: Zaman aşımı olaylarını gösteren sohbet mesajı
ended: YAYIN SONLANDI
- "@ended":
+ "@ended":
description: Sohbetin alt kısmında akış sona erdi altbilgisi
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Akış zaplarını gösteren sohbet mesajı
- write:
+ write:
label: Mesaj yaz
- "@label":
+ "@label":
description: Sohbet mesajı giriş kutusundaki etiket
no_signer: Npub girişi ile mesaj yazılamıyor
- "@no_signer":
- description: Kullanıcı yalnızca pubkey ile oturum açtığında gösterilen sohbet
- giriş mesajı
+ "@no_signer":
+ description: Kullanıcı yalnızca pubkey ile oturum açtığında gösterilen sohbet giriş mesajı
login: Mesaj göndermek için lütfen giriş yapın
- "@login":
+ "@login":
description: Kullanıcı oturumu kapatıldığında gösterilen sohbet giriş mesajı
- badge:
+ badge:
awarded_to: "Ödüllendirildi:"
- "@awarded_to":
+ "@awarded_to":
description: Rozet verilen kullanıcıların listesi üzerinde başlık
- raid:
+ raid:
to: RAIDING ${name}S
- "@to":
+ "@to":
description: Başka bir akışa sohbet baskını mesajı
from: $name ADRESINDEN RAID
- "@from":
+ "@from":
description: Başka bir akıştan sohbet baskını mesajı
countdown: $time adresinde baskın
- "@countdown":
+ "@countdown":
description: Otomatik sürüş için geri sayım sayacı
-goal:
+goal:
title: "Hedef: $amount"
remaining: "Kalan: $amount"
complete: TAMAMLANDI
-button:
+button:
login: Giriş
logout: Oturum Kapatma
edit_profile: Profil Düzenle
- "@login":
+ "@login":
description: Oturum açma düğmesi için düğme metni
follow: Takip et
- "@follow":
+ "@follow":
description: Takip et düğmesi için düğme metni
unfollow: Takibi bırak
- "@unfollow":
+ "@unfollow":
description: Takibi bırak düğmesi için düğme metni
mute: Sessiz
unmute: Sesi aç
share: Paylaş
save: Kaydet
-embed:
+embed:
article_by: Makale $name
note_by: "Not: $name"
live_stream_by: "Canlı yayın: $name"
-stream_list:
+stream_list:
following: Aşağıdaki
live: Canlı
planned: Planlanmış
ended: Bitti
-"@stream_list":
+"@stream_list":
description: Akış türüne göre akış listelerindeki başlıklar canlı/bitmiş/planlanan vb.
-zap:
+zap:
title: Zap $name
custom_amount: Özel Tutar
confirm: Onaylayın
@@ -102,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Cüzdanda Aç
copy: Panoya kopyalandı
- error:
+ error:
invalid_custom_amount: Geçersiz özel tutar
no_wallet: Lightning cüzdan yüklü değil
no_lud16: Yıldırım adresi bulunamadı
-profile:
+profile:
past_streams: Geçmiş Akışlar
- edit:
+ edit:
display_name: Ekran Adı
about: Hakkında
nip05: Nostr Adres
lud16: Yıldırım Adres
- error:
+ error:
logged_out: Çıkış yapıldığında profil düzenlenemiyor
-login:
+login:
username: Kullanıcı Adı
amber: Amber ile Giriş Yapın
key: Anahtar ile Giriş Yapın
create: Hesap Oluştur
- error:
+ error:
invalid_key: Geçersiz anahtar
diff --git a/lib/i18n/translated/uk.i18n.yaml b/lib/i18n/translated/uk.i18n.yaml
index 140f3c2..e605109 100644
--- a/lib/i18n/translated/uk.i18n.yaml
+++ b/lib/i18n/translated/uk.i18n.yaml
@@ -1,101 +1,97 @@
upload_avatar: Завантажити аватар
-"@upload_avatar":
- description: Текст, що пропонує користувачеві натиснути на заповнювач аватара,
- щоб почати завантаження
+"@upload_avatar":
+ description: Текст, що пропонує користувачеві натиснути на заповнювач аватара, щоб почати завантаження
most_zapped_streamers: Більшість стримерів, які були під напругою
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Перехід до переліку найкращих стрімерів за запитами
no_user_found: Користувача не знайдено
-"@no_user_found":
+"@no_user_found":
description: Користувача не знайдено при пошуку
anon: Анонім.
-viewers:
+viewers:
one: 1 глядач
other: $n глядачі
-"@viewers":
+"@viewers":
description: Кількість глядачів стріму
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: Анонімний користувач
-stream:
- status:
+stream:
+ status:
live: НАЖИВО
ended: ЗАКІНЧЕНО
planned: ЗАПЛАНОВАНО
started: Запустив $timestamp
- chat:
+ chat:
disabled: ЧАТ ВІДКЛЮЧЕНО
disabled_timeout: "Тайм-аут закінчився: $time"
timeout(rich): $mod таймінг $user для $time
- "@timeout":
+ "@timeout":
description: Повідомлення в чаті про події тайм-ауту
ended: СТРІМ ЗАКІНЧИВСЯ
- "@ended":
+ "@ended":
description: Нижній колонтитул кінця потоку внизу чату
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Повідомлення в чаті, що показує затримки потоку
- write:
+ write:
label: Написати повідомлення
- "@label":
+ "@label":
description: Мітка у вікні введення повідомлення чату
no_signer: Неможливо писати повідомлення з логіном npub
- "@no_signer":
- description: Повідомлення в чаті, що відображається, коли користувач увійшов до
- системи лише з ключем pubkey
+ "@no_signer":
+ description: Повідомлення в чаті, що відображається, коли користувач увійшов до системи лише з ключем pubkey
login: Будь ласка, авторизуйтесь, щоб надсилати повідомлення
- "@login":
- description: Повідомлення для введення в чаті, що відображається, коли
- користувач вийшов з системи
- badge:
+ "@login":
+ description: Повідомлення для введення в чаті, що відображається, коли користувач вийшов з системи
+ badge:
awarded_to: "Нагороджується:"
- "@awarded_to":
+ "@awarded_to":
description: Над списком користувачів, яким присвоєно бейдж
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Повідомлення про рейд чату в інший потік
from: RAID FROM $name
- "@from":
+ "@from":
description: Повідомлення про наліт на чат з іншого потоку
countdown: Рейд у $time
- "@countdown":
+ "@countdown":
description: Таймер зворотного відліку для авторейду
-goal:
+goal:
title: "Мета: $amount"
remaining: "Залишилося: $amount"
complete: ЗАВЕРШИТИ
-button:
+button:
login: Логін
logout: Вийти з системи
edit_profile: Редагувати профіль
- "@login":
+ "@login":
description: Текст для кнопки входу в систему
follow: Підпишіться
- "@follow":
+ "@follow":
description: Текст для кнопки переходу
unfollow: Скасувати відповідь
- "@unfollow":
+ "@unfollow":
description: Текст для кнопки відписки
mute: Вимкнути звук.
unmute: Увімкнути звук.
share: Поділіться
save: Зберегти
-embed:
+embed:
article_by: Стаття за посиланням $name
note_by: Примітка $name
live_stream_by: Пряма трансляція на $name
-stream_list:
+stream_list:
following: Після того, як
live: Наживо
planned: Заплановано
ended: Закінчилося
-"@stream_list":
- description: "Заголовки у списках трансляцій за типом трансляції:
- наживо/закінчилася/запланована тощо."
-zap:
+"@stream_list":
+ description: "Заголовки у списках трансляцій за типом трансляції: наживо/закінчилася/запланована тощо."
+zap:
title: Zap $name
custom_amount: Нестандартна сума
confirm: Підтвердити
@@ -104,23 +100,23 @@ zap:
button_zap: Zap!
button_open_wallet: Відкрити в Гаманці
copy: Скопійовано в буфер обміну
- error:
+ error:
invalid_custom_amount: Неправильна сума замовлення
no_wallet: Не встановлено гаманець-блискавку
no_lud16: Адреса блискавки не знайдена
-profile:
+profile:
past_streams: Минулі потоки
- edit:
+ edit:
display_name: Ім'я користувача
about: Про
nip05: Nostr Адреса
lud16: Блискавична адреса
- error:
+ error:
logged_out: Неможливо редагувати профіль, коли ви вийшли з системи
-login:
+login:
username: Ім'я користувача
amber: Увійдіть за допомогою Amber
key: Увійдіть за допомогою ключа
create: Створити обліковий запис
- error:
+ error:
invalid_key: Неправильний ключ
diff --git a/lib/i18n/translated/vi.i18n.yaml b/lib/i18n/translated/vi.i18n.yaml
index 5258519..a6eaef7 100644
--- a/lib/i18n/translated/vi.i18n.yaml
+++ b/lib/i18n/translated/vi.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: Upload Avatar
-"@upload_avatar":
+"@upload_avatar":
description: Text prompting user to hit avatar placeholder to begin upload
most_zapped_streamers: Most Zapped Streamers
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: Heading over listed top streamers by zaps
no_user_found: No user found
-"@no_user_found":
+"@no_user_found":
description: No user found when searching
anon: Anon
-viewers:
+viewers:
one: 1 viewer
other: $n viewers
-"@viewers":
+"@viewers":
description: Number of viewers of the stream
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: An anonymous user
-stream:
- status:
+stream:
+ status:
live: LIVE
ended: ENDED
planned: PLANNED
started: Started $timestamp
- chat:
+ chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for $time
- "@timeout":
+ "@timeout":
description: Chat message showing timeout events
ended: STREAM ENDED
- "@ended":
+ "@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user zapped $amount sats
- "@zap":
+ "@zap":
description: Chat message showing stream zaps
- write:
+ write:
label: Write message
- "@label":
+ "@label":
description: Label on the chat message input box
no_signer: Can't write messages with npub login
- "@no_signer":
+ "@no_signer":
description: Chat input message shown when the user is logged in only with pubkey
login: Please login to send messages
- "@login":
+ "@login":
description: Chat input message shown when the user is logged out
- badge:
+ badge:
awarded_to: "Awarded to:"
- "@awarded_to":
+ "@awarded_to":
description: Heading over list of users who are awarded a badge
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: Chat raid message to another stream
from: RAID FROM $name
- "@from":
+ "@from":
description: Chat raid message from another stream
countdown: Raiding in $time
- "@countdown":
+ "@countdown":
description: Countdown timer for auto-raiding
-goal:
+goal:
title: "Goal: $amount"
remaining: "Remaining: $amount"
complete: COMPLETE
-button:
+button:
login: Login
logout: Logout
edit_profile: Edit Profile
- "@login":
+ "@login":
description: Button text for the login button
follow: Follow
- "@follow":
+ "@follow":
description: Button text for the follow button
unfollow: Unfollow
- "@unfollow":
+ "@unfollow":
description: Button text for the unfollow button
mute: Mute
unmute: Unmute
share: Share
save: Save
-embed:
+embed:
article_by: Article by $name
note_by: Note by $name
live_stream_by: Live stream by $name
-stream_list:
+stream_list:
following: Following
live: Live
planned: Planned
ended: Ended
-"@stream_list":
+"@stream_list":
description: Headings on stream lists by stream type live/ended/planned etc.
-zap:
+zap:
title: Zap $name
custom_amount: Custom Amount
confirm: Confirm
@@ -100,23 +100,23 @@ zap:
button_zap: Zap
button_open_wallet: Open in Wallet
copy: Copied to clipboard
- error:
+ error:
invalid_custom_amount: Invalid custom amount
no_wallet: No lightning wallet installed
no_lud16: No lightning address found
-profile:
+profile:
past_streams: Past Streams
- edit:
+ edit:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
- error:
+ error:
logged_out: Cant edit profile when logged out
-login:
+login:
username: Username
amber: Login with Amber
key: Login with Key
create: Create Account
- error:
+ error:
invalid_key: Invalid key
diff --git a/lib/i18n/translated/zh.i18n.yaml b/lib/i18n/translated/zh.i18n.yaml
index 251368a..4a3eab8 100644
--- a/lib/i18n/translated/zh.i18n.yaml
+++ b/lib/i18n/translated/zh.i18n.yaml
@@ -1,97 +1,97 @@
upload_avatar: 上傳頭像
-"@upload_avatar":
+"@upload_avatar":
description: 提示使用者點擊頭像占位符開始上傳的文字
most_zapped_streamers: 最多被擊中的溪流
-"@most_zapped_streamers":
+"@most_zapped_streamers":
description: ヘッドランドから列されている頂幡からずった
no_user_found: 未找到使用者
-"@no_user_found":
+"@no_user_found":
description: 搜尋時未找到使用者
anon: 匿名
-viewers:
+viewers:
one: 1 個檢視器
other: $n 觀眾
-"@viewers":
+"@viewers":
description: 串流的觀看者人數
- placeholders:
- n:
+ placeholders:
+ n:
type: int
-"@anon":
+"@anon":
description: 匿名使用者
-stream:
- status:
+stream:
+ status:
live: 直播
ended: 結束
planned: 計劃
started: 開始 $timestamp
- chat:
+ chat:
disabled: 關閉聊天
disabled_timeout: 超時過期: $time
timeout(rich): $mod 超時 $user for $time
- "@timeout":
+ "@timeout":
description: 顯示逾時事件的聊天訊息
ended: 串流結束
- "@ended":
+ "@ended":
description: 聊天底部的流結束頁尾
zap(rich): $user 打閃了 $amount 聰
- "@zap":
+ "@zap":
description: 聊天訊息顯示串流斷點
- write:
+ write:
label: 寫訊息
- "@label":
+ "@label":
description: 聊天訊息輸入方塊上的標籤
no_signer: 無法使用 npub 登入撰寫訊息
- "@no_signer":
+ "@no_signer":
description: 當使用者僅使用 pubkey 登入時,會顯示聊天輸入訊息
login: 請登入以傳送訊息
- "@login":
+ "@login":
description: 使用者登出時顯示聊天輸入訊息
- badge:
+ badge:
awarded_to: 頒發給
- "@awarded_to":
+ "@awarded_to":
description: 被授予徽章的使用者清單上的標題
- raid:
+ raid:
to: RAIDING $name
- "@to":
+ "@to":
description: 聊天突擊消息到另一個串流
from: RAID FROM $name
- "@from":
+ "@from":
description: 來自其他串流的聊天突襲訊息
countdown: 突襲 $time
- "@countdown":
+ "@countdown":
description: 自動騎乘倒數計時器
-goal:
+goal:
title: 目標:$amount
remaining: 剩餘: $amount
complete: 完成
-button:
+button:
login: 登錄
logout: 登出
edit_profile: 編輯個人檔案
- "@login":
+ "@login":
description: 登入按鈕的按鈕文字
follow: 關注
- "@follow":
+ "@follow":
description: 跟蹤按鈕的按鈕文字
unfollow: 取消關注
- "@unfollow":
+ "@unfollow":
description: 取消關注按鈕的按鈕文字
mute: 靜音
unmute: 解除静音
share: 分享
save: 保存
-embed:
+embed:
article_by: 文章來源: $name
note_by: $name 的筆記
live_stream_by: Live stream by $name
-stream_list:
+stream_list:
following: 已關注
live: 直播
planned: 已計畫
ended: 已結束
-"@stream_list":
+"@stream_list":
description: 串流清單上的標題依串流類型為現場/結束/計劃中等。
-zap:
+zap:
title: 打閃$name
custom_amount: 自訂金額
confirm: 確認
@@ -100,23 +100,23 @@ zap:
button_zap: 打閃
button_open_wallet: 在錢包中開啟
copy: 複製到剪貼簿
- error:
+ error:
invalid_custom_amount: 無效自訂金額
no_wallet: 未安裝閃電錢夾
no_lud16: 未找到閃電地址
-profile:
+profile:
past_streams: 過去的直播
- edit:
+ edit:
display_name: 顯示名稱
about: 關於
nip05: Nostr 地址
lud16: 閃電地址
- error:
+ error:
logged_out: 登出時無法編輯個人資料
-login:
+login:
username: 用戶名
amber: 使用 Amber 登入
key: 使用鑰匙登入
create: 創建帳戶
- error:
+ error:
invalid_key: 無效按鍵
diff --git a/lib/login.dart b/lib/login.dart
index ec1bd68..683dd76 100644
--- a/lib/login.dart
+++ b/lib/login.dart
@@ -1,24 +1,82 @@
import 'dart:convert';
import 'dart:developer' as developer;
+import 'package:collection/collection.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
-import 'package:ndk/domain_layer/entities/account.dart';
+import 'package:ndk/ndk.dart';
import 'package:ndk/shared/nips/nip01/bip340.dart';
import 'package:ndk/shared/nips/nip19/nip19.dart';
+import 'package:zap_stream_flutter/const.dart';
import 'package:zap_stream_flutter/utils.dart';
+enum WalletType { nwc }
+
+class WalletConfig {
+ final WalletType type;
+ final String data;
+ final String? privateKey;
+
+ WalletConfig({required this.type, required this.data, this.privateKey});
+
+ Map toJson() {
+ return {"type": type.name, "data": data, "privateKey": privateKey};
+ }
+
+ static WalletConfig fromJson(Map json) {
+ final type = WalletType.values.firstWhereOrNull(
+ (v) => v.name == json["type"],
+ );
+ if (type == null) {
+ throw "Invalid wallet type: ${json["type"]}";
+ }
+ return WalletConfig(
+ type: type,
+ data: json["data"],
+ privateKey: json["privateKey"],
+ );
+ }
+}
+
+abstract class SimpleWallet {
+ Future payInvoice(String pr);
+}
+
+class NWCWrapper extends SimpleWallet {
+ final NwcConnection _conn;
+
+ NWCWrapper({required NwcConnection conn}) : _conn = conn;
+
+ @override
+ Future payInvoice(String pr) async {
+ final rsp = await ndk.nwc.payInvoice(
+ _conn,
+ invoice: pr,
+ timeout: Duration(seconds: 60),
+ );
+ if (rsp.preimage == null) {
+ throw "Payment failed, preimage missing";
+ } else {
+ return rsp.preimage!;
+ }
+ }
+}
+
class LoginAccount {
final AccountType type;
final String pubkey;
final String? privateKey;
final List? signerRelays;
+ final WalletConfig? wallet;
- LoginAccount._({
+ SimpleWallet? _cachedWallet;
+
+ LoginAccount({
required this.type,
required this.pubkey,
this.privateKey,
this.signerRelays,
+ this.wallet,
});
static LoginAccount nip19(String key) {
@@ -26,7 +84,7 @@ class LoginAccount {
final pubkey =
Nip19.isKey("nsec", key) ? Bip340.getPublicKey(keyData) : keyData;
final privateKey = Nip19.isKey("npub", key) ? null : keyData;
- return LoginAccount._(
+ return LoginAccount(
type:
Nip19.isKey("npub", key)
? AccountType.publicKey
@@ -37,7 +95,7 @@ class LoginAccount {
}
static LoginAccount privateKeyHex(String key) {
- return LoginAccount._(
+ return LoginAccount(
type: AccountType.privateKey,
privateKey: key,
pubkey: Bip340.getPublicKey(key),
@@ -45,7 +103,7 @@ class LoginAccount {
}
static LoginAccount externalPublicKeyHex(String key) {
- return LoginAccount._(type: AccountType.externalSigner, pubkey: key);
+ return LoginAccount(type: AccountType.externalSigner, pubkey: key);
}
static LoginAccount bunker(
@@ -53,7 +111,7 @@ class LoginAccount {
String pubkey,
List relays,
) {
- return LoginAccount._(
+ return LoginAccount(
type: AccountType.externalSigner,
pubkey: pubkey,
privateKey: privateKey,
@@ -65,6 +123,7 @@ class LoginAccount {
"type": acc?.type.name,
"pubKey": acc?.pubkey,
"privateKey": acc?.privateKey,
+ "wallet": acc?.wallet?.toJson(),
};
static LoginAccount? fromJson(Map json) {
@@ -78,16 +137,38 @@ class LoginAccount {
throw "Invalid privateKey, length != 64";
}
}
- return LoginAccount._(
+ return LoginAccount(
type: AccountType.values.firstWhere(
(v) => v.toString().endsWith(json["type"] as String),
),
pubkey: json["pubKey"],
privateKey: json["privateKey"],
+ wallet:
+ json.containsKey("wallet")
+ ? WalletConfig.fromJson(json["wallet"])
+ : null,
);
}
return null;
}
+
+ Future getWallet() async {
+ if (_cachedWallet == null && wallet != null) {
+ switch (wallet!.type) {
+ case WalletType.nwc:
+ {
+ try {
+ final conn = await ndk.nwc.connect(wallet!.data);
+ _cachedWallet = NWCWrapper(conn: conn);
+ } catch (e) {
+ developer.log("Failed to setup wallet: $e");
+ }
+ break;
+ }
+ }
+ }
+ return _cachedWallet;
+ }
}
class LoginData extends ValueNotifier {
@@ -119,4 +200,4 @@ class LoginData extends ValueNotifier {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/lib/pages/login.dart b/lib/pages/login.dart
index f631b24..d43be55 100644
--- a/lib/pages/login.dart
+++ b/lib/pages/login.dart
@@ -24,7 +24,7 @@ class LoginPage extends StatelessWidget {
if (state.data ?? false) {
return BasicButton.text(
t.login.amber,
- onTap: () async {
+ onTap: (context) async {
final amber = Amberflutter();
final result = await amber.getPublicKey();
if (result['signature'] != null) {
@@ -41,7 +41,7 @@ class LoginPage extends StatelessWidget {
}
},
),
- BasicButton.text(t.login.key, onTap: () => context.push("/login/key")),
+ BasicButton.text(t.login.key, onTap: (context) => context.push("/login/key")),
Container(
margin: EdgeInsets.symmetric(vertical: 20),
height: 1,
@@ -51,7 +51,7 @@ class LoginPage extends StatelessWidget {
),
BasicButton.text(
t.login.create,
- onTap: () => context.push("/login/new"),
+ onTap: (context) => context.push("/login/new"),
),
],
);
diff --git a/lib/pages/login_input.dart b/lib/pages/login_input.dart
index a31d623..2d69951 100644
--- a/lib/pages/login_input.dart
+++ b/lib/pages/login_input.dart
@@ -29,7 +29,7 @@ class _LoginInputPage extends State {
),
BasicButton.text(
t.button.login,
- onTap: () async {
+ onTap: (context) async {
try {
if (_controller.text.startsWith("bunker://")) {
// not supported yet in ndk
diff --git a/lib/pages/new_account.dart b/lib/pages/new_account.dart
index 3425431..d81c270 100644
--- a/lib/pages/new_account.dart
+++ b/lib/pages/new_account.dart
@@ -74,7 +74,7 @@ class _NewAccountPage extends State {
return BasicButton.text(
t.button.login,
disabled: _loading || value.text.isEmpty,
- onTap: () {
+ onTap: (context) {
setState(() {
_loading = true;
_nameFocus.unfocus();
diff --git a/lib/pages/profile.dart b/lib/pages/profile.dart
index 0318528..dc016f4 100644
--- a/lib/pages/profile.dart
+++ b/lib/pages/profile.dart
@@ -76,7 +76,7 @@ class ProfilePage extends StatelessWidget {
children: [
BasicButton.text(
t.button.logout,
- onTap: () {
+ onTap: (context) {
loginData.logout();
ndk.accounts.logout();
context.go("/");
@@ -84,7 +84,7 @@ class ProfilePage extends StatelessWidget {
),
BasicButton.text(
t.button.edit_profile,
- onTap: () {
+ onTap: (context) {
context.push("/settings/profile");
},
),
diff --git a/lib/pages/settings_profile.dart b/lib/pages/settings_profile.dart
index 220217f..df9cb19 100644
--- a/lib/pages/settings_profile.dart
+++ b/lib/pages/settings_profile.dart
@@ -87,7 +87,7 @@ class SettingsProfilePage extends StatelessWidget {
BasicButton.text(
t.button.save,
disabled: v,
- onTap: () async {
+ onTap: (context) async {
_loading.value = true;
try {
final newMeta = Metadata(
diff --git a/lib/pages/settings_wallet.dart b/lib/pages/settings_wallet.dart
new file mode 100644
index 0000000..42e7ecb
--- /dev/null
+++ b/lib/pages/settings_wallet.dart
@@ -0,0 +1,77 @@
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+import 'package:zap_stream_flutter/const.dart';
+import 'package:zap_stream_flutter/i18n/strings.g.dart';
+import 'package:zap_stream_flutter/login.dart';
+import 'package:zap_stream_flutter/theme.dart';
+import 'package:zap_stream_flutter/widgets/button.dart';
+
+class SettingsWalletPage extends StatefulWidget {
+ const SettingsWalletPage({super.key});
+
+ @override
+ State createState() => _Inner();
+}
+
+class _Inner extends State {
+ late final TextEditingController _uri;
+ String? _error;
+
+ @override
+ void initState() {
+ _uri = TextEditingController();
+ super.initState();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final pubkey = ndk.accounts.getPublicKey();
+ if (pubkey == null) return Text(t.wallet.error.logged_out);
+
+ return ValueListenableBuilder(
+ valueListenable: loginData,
+ builder: (context, state, child) {
+ if (state?.wallet == null) {
+ return Column(
+ spacing: 8,
+ children: [
+ TextField(
+ controller: _uri,
+ decoration: InputDecoration(labelText: t.wallet.connect_wallet),
+ ),
+ BasicButton.text(
+ t.button.connect,
+ onTap: (context) async {
+ try {
+ await ndk.nwc.connect(_uri.text);
+ final cfg = WalletConfig(
+ type: WalletType.nwc,
+ data: _uri.text,
+ );
+ loginData.value = LoginAccount(
+ type: loginData.value!.type,
+ pubkey: loginData.value!.pubkey,
+ privateKey: loginData.value!.privateKey,
+ signerRelays: loginData.value!.signerRelays,
+ wallet: cfg,
+ );
+ if (context.mounted) {
+ context.pop();
+ }
+ } catch (e) {
+ setState(() {
+ _error = e is String ? e : e.toString();
+ });
+ }
+ },
+ ),
+ if (_error != null)
+ Text(_error!, style: TextStyle(color: WARNING)),
+ ],
+ );
+ }
+ return SizedBox.shrink();
+ },
+ );
+ }
+}
diff --git a/lib/pages/stream.dart b/lib/pages/stream.dart
index 173612f..b59e30f 100644
--- a/lib/pages/stream.dart
+++ b/lib/pages/stream.dart
@@ -169,7 +169,7 @@ class _StreamPage extends State with RouteAware {
color: PRIMARY_1,
borderRadius: DEFAULT_BR,
),
- onTap: () {
+ onTap: (context) {
showModalBottomSheet(
context: context,
constraints: BoxConstraints.expand(),
diff --git a/lib/widgets/button.dart b/lib/widgets/button.dart
index 07e3538..ade0385 100644
--- a/lib/widgets/button.dart
+++ b/lib/widgets/button.dart
@@ -6,7 +6,7 @@ class BasicButton extends StatelessWidget {
final BoxDecoration? decoration;
final EdgeInsetsGeometry? padding;
final EdgeInsetsGeometry? margin;
- final void Function()? onTap;
+ final void Function(BuildContext)? onTap;
final bool? disabled;
const BasicButton(
@@ -24,7 +24,7 @@ class BasicButton extends StatelessWidget {
BoxDecoration? decoration,
EdgeInsetsGeometry? padding,
EdgeInsetsGeometry? margin,
- void Function()? onTap,
+ void Function(BuildContext)? onTap,
double? fontSize,
bool? disabled,
Icon? icon,
@@ -66,7 +66,7 @@ class BasicButton extends StatelessWidget {
return GestureDetector(
onTap: () {
if (!(disabled ?? false) && onTap != null) {
- onTap!();
+ onTap!(context);
}
},
child: (disabled ?? false) ? Opacity(opacity: 0.5, child: inner) : inner,
diff --git a/lib/widgets/button_follow.dart b/lib/widgets/button_follow.dart
index fb514b2..4b5e2c4 100644
--- a/lib/widgets/button_follow.dart
+++ b/lib/widgets/button_follow.dart
@@ -63,7 +63,7 @@ class FollowButton extends StatelessWidget {
borderRadius: DEFAULT_BR,
color: LAYER_2,
),
- onTap: () async {
+ onTap: (_) async {
_loading.value = true;
try {
if (onTap != null) {
diff --git a/lib/widgets/chat_modal.dart b/lib/widgets/chat_modal.dart
index 7c855c3..91d33b6 100644
--- a/lib/widgets/chat_modal.dart
+++ b/lib/widgets/chat_modal.dart
@@ -1,5 +1,6 @@
import 'package:duration/duration.dart';
import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
import 'package:ndk/ndk.dart';
import 'package:zap_stream_flutter/const.dart';
import 'package:zap_stream_flutter/theme.dart';
@@ -34,8 +35,7 @@ class _ChatModalWidget extends State {
@override
Widget build(BuildContext context) {
- final isModerator =
- widget.stream.info.host == ndk.accounts.getPublicKey();
+ final isModerator = widget.stream.info.host == ndk.accounts.getPublicKey();
return Container(
padding: EdgeInsets.fromLTRB(5, 10, 5, 0),
@@ -74,13 +74,16 @@ class _ChatModalWidget extends State {
),
),
onPressed: () {
- Navigator.pop(context);
+ context.pop();
showModalBottomSheet(
context: context,
- builder: (ctx) {
+ builder: (context) {
return ZapWidget(
pubkey: widget.event.pubKey,
target: widget.event,
+ onPaid: (_) {
+ context.pop();
+ },
);
},
);
diff --git a/lib/widgets/mute_button.dart b/lib/widgets/mute_button.dart
index f8a3032..79de50a 100644
--- a/lib/widgets/mute_button.dart
+++ b/lib/widgets/mute_button.dart
@@ -44,7 +44,7 @@ class MuteButton extends StatelessWidget {
color: isMuted ? LAYER_2 : WARNING,
borderRadius: DEFAULT_BR,
),
- onTap: () async {
+ onTap: (_) async {
if (onTap != null) {
onTap!();
}
diff --git a/lib/widgets/stream_info.dart b/lib/widgets/stream_info.dart
index 3f52048..ab85cc3 100644
--- a/lib/widgets/stream_info.dart
+++ b/lib/widgets/stream_info.dart
@@ -48,7 +48,7 @@ class StreamInfoWidget extends StatelessWidget {
BasicButton.text(
t.button.share,
icon: Icon(Icons.share, size: 16),
- onTap: () {
+ onTap: (_) {
SharePlus.instance.share(
ShareParams(
title: stream.info.title,
diff --git a/lib/widgets/zap.dart b/lib/widgets/zap.dart
index da64b22..42d77ec 100644
--- a/lib/widgets/zap.dart
+++ b/lib/widgets/zap.dart
@@ -4,6 +4,7 @@ import 'package:clipboard/clipboard.dart';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
+import 'package:go_router/go_router.dart';
import 'package:ndk/domain_layer/usecases/lnurl/lnurl.dart';
import 'package:ndk/ndk.dart';
import 'package:qr_flutter/qr_flutter.dart';
@@ -20,6 +21,7 @@ class ZapWidget extends StatefulWidget {
final Nip01Event? target;
final List? otherTargets;
final List>? zapTags;
+ final void Function(String preimage)? onPaid;
const ZapWidget({
super.key,
@@ -27,6 +29,7 @@ class ZapWidget extends StatefulWidget {
this.target,
this.zapTags,
this.otherTargets,
+ this.onPaid,
});
@override
@@ -57,6 +60,7 @@ class _ZapWidget extends State {
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(10),
+ width: double.maxFinite,
child: Column(
spacing: 10,
children: [
@@ -101,7 +105,7 @@ class _ZapWidget extends State {
),
BasicButton.text(
t.zap.confirm,
- onTap: () {
+ onTap: (context) {
final newAmount = int.tryParse(_customAmount.text);
if (newAmount != null) {
setState(() {
@@ -129,13 +133,13 @@ class _ZapWidget extends State {
: t.zap.button_zap,
disabled: _amount == null,
decoration: BoxDecoration(color: LAYER_3, borderRadius: DEFAULT_BR),
- onTap: () async {
+ onTap: (context) async {
try {
setState(() {
_error = null;
_loading = true;
});
- await _loadZap();
+ await _loadZap(context);
} catch (e) {
setState(() {
_error = e.toString();
@@ -192,7 +196,7 @@ class _ZapWidget extends State {
),
BasicButton.text(
t.zap.button_open_wallet,
- onTap: () async {
+ onTap: (_) async {
try {
await launchUrlString(prLink);
} catch (e) {
@@ -210,6 +214,13 @@ class _ZapWidget extends State {
}
},
),
+ if (loginData.value?.wallet == null)
+ BasicButton.text(
+ t.zap.button_connect_wallet,
+ onTap: (context) async {
+ context.push("/settings/wallet");
+ },
+ ),
if (_error != null)
Text(
@@ -259,7 +270,7 @@ class _ZapWidget extends State {
return event;
}
- Future _loadZap() async {
+ Future _loadZap(BuildContext context) async {
final profile = await ndk.metadata.loadMetadata(widget.pubkey);
if (profile?.lud16 == null) {
throw t.zap.error.no_lud16;
@@ -272,9 +283,24 @@ class _ZapWidget extends State {
zapRequest: zapRequest,
);
- setState(() {
- _pr = invoice?.invoice;
- });
+ final wallet = await loginData.value?.getWallet();
+ if (wallet != null && invoice != null) {
+ try {
+ final preimage = await wallet.payInvoice(invoice.invoice);
+ if (widget.onPaid != null) {
+ widget.onPaid!(preimage);
+ }
+ } catch (e) {
+ setState(() {
+ _error = e.toString();
+ _pr = invoice.invoice;
+ });
+ }
+ } else {
+ setState(() {
+ _pr = invoice?.invoice;
+ });
+ }
}
Widget _zapAmount(int n) {
diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist
index 4789daa..7a67f8c 100644
--- a/macos/Runner/Info.plist
+++ b/macos/Runner/Info.plist
@@ -28,5 +28,36 @@
MainMenu
NSPrincipalClass
NSApplication
+ CFBundleLocalizations
+
+ af
+ ar
+ ca
+ cs
+ da
+ de
+ el
+ en
+ es
+ fi
+ fr
+ he
+ hu
+ it
+ ja
+ ko
+ nl
+ no
+ pl
+ pt
+ ro
+ ru
+ sr
+ sv
+ tr
+ uk
+ vi
+ zh
+
diff --git a/slang.yaml b/slang.yaml
index 228118e..d7f9fcf 100644
--- a/slang.yaml
+++ b/slang.yaml
@@ -1,4 +1,5 @@
base_locale: en
input_directory: lib/i18n
input_file_pattern: .i18n.yaml
-output_directory: lib/i18n
\ No newline at end of file
+output_directory: lib/i18n
+fallback_strategy: base_locale
\ No newline at end of file