31 Commits

Author SHA1 Message Date
8e3a4cbd41 feat: wallet balance
closes #42
2025-05-29 12:32:10 +01:00
c66127cac2 feat: improve notifications 2025-05-29 11:03:15 +01:00
ab9fdd6b71 chore: bump version 2025-05-29 09:51:00 +01:00
99c163a51a fix: allow background player option 2025-05-28 16:40:34 +01:00
fb4821ffdd feat: background playback (wip)
https://github.com/ryanheise/audio_service/issues/1124
2025-05-28 16:28:24 +01:00
5789d9a7a1 chore: update translations 2025-05-28 13:51:47 +01:00
b854962b07 fix: viewers formatting 2025-05-28 13:24:52 +01:00
0295d49077 refactor: cleanup notifications bbutton signer requests 2025-05-28 13:17:45 +01:00
74c3ad9b9c fix: dont make notepush requests unless notifications is authorized 2025-05-28 12:49:51 +01:00
8bd9ff2a4c fix: scrolling stream cards on stream info modal 2025-05-28 12:41:15 +01:00
8516f2b3c1 refactor: move reactions to chat modal
fix: custom emoji reactions
2025-05-28 12:35:53 +01:00
344f2d31fc fix: mention overlay unfocus 2025-05-28 12:21:11 +01:00
c6168ec094 feat: preview media in modal
closes #38
2025-05-28 12:17:44 +01:00
2ec17c6c41 refactor: minor profile loader improvement 2025-05-28 11:40:53 +01:00
c6b76bc64d fix: close zap modal after zap
closes #37
2025-05-28 11:16:49 +01:00
d3a8c41f93 chore: bump version 2025-05-27 15:19:19 +01:00
04967910fa chore: ios build 2025-05-27 15:13:41 +01:00
9d2bc7456f fix: bundle id 2025-05-27 13:59:43 +01:00
cc53762e4b chore: build ios 2025-05-27 13:59:05 +01:00
0a474a1ca7 fix: name overflow on stream page 2025-05-27 13:53:33 +01:00
e9062f0265 feat: custom emoji picker
closes #14
2025-05-27 12:22:28 +01:00
8dae9a97f2 fix: render zap message as note text 2025-05-27 10:10:48 +01:00
a64cacb13c chore: bump ndk 2025-05-27 10:09:43 +01:00
19d50f2947 feat: 1-tap connection 2025-05-26 16:40:18 +01:00
f36f02e95a fix: unfocus tap outside 2025-05-26 13:58:07 +01:00
484bf67951 feat: disconnect wallet 2025-05-26 13:51:15 +01:00
47bed26df6 feat: simple NWC flow
closes #19
2025-05-26 13:28:00 +01:00
befd7c014b chore: bump version 2025-05-23 17:45:14 +01:00
0a75665bde fix: scroll tags on stream info widget 2025-05-23 16:30:10 +01:00
46b809ff58 refactor: disable reactions due to bad UX
ref #36
2025-05-23 15:54:52 +01:00
8f41ed6d0e feat: launch url for push notifications
closes #32
2025-05-23 12:38:36 +01:00
145 changed files with 5830 additions and 6136 deletions

View File

@ -53,5 +53,6 @@ jobs:
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.29.3
- run: flutter pub get
- run: flutter build ios --no-codesign

View File

@ -1,5 +1,4 @@
import com.android.build.api.dsl.ApkSigningConfig
import com.android.build.api.dsl.SigningConfig
import org.jetbrains.kotlin.gradle.targets.js.toHex
import java.io.FileInputStream
import java.util.Base64
@ -8,11 +7,9 @@ import java.util.Properties
plugins {
id("com.android.application")
// START: FlutterFire Configuration
id("com.google.gms.google-services")
// END: FlutterFire Configuration
id("kotlin-android")
id("dev.flutter.flutter-gradle-plugin")
id("com.google.gms.google-services")
}
fun getKeystoreFile(base64String: String?, hash: String, fileName: String): File {

View File

@ -3,6 +3,8 @@
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
</manifest>

View File

@ -1,46 +1,73 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<application
android:label="zap.stream"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
android:icon="@mipmap/ic_launcher"
android:label="zap.stream">
<activity
android:name=".MainActivity"
android:name="com.ryanheise.audioservice.AudioServiceActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="zap.stream" />
<data android:host="zap.stream" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="zswc" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<service
android:name="com.ryanheise.audioservice.AudioService"
android:exported="true"
android:foregroundServiceType="mediaPlayback"
android:permission="android.permission.FOREGROUND_SERVICE"
tools:ignore="Instantiatable">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
<receiver
android:name="com.ryanheise.audioservice.MediaButtonReceiver"
android:exported="true"
tools:ignore="Instantiatable">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
@ -49,10 +76,11 @@
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
<action android:name="android.intent.action.PROCESS_TEXT" />
<data android:mimeType="text/plain" />
</intent>
</queries>
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="33"
android:viewportHeight="23"
android:tint="#FFFFFF">
<group android:scaleX="0.777027"
android:scaleY="0.5415643"
android:translateX="3.679054"
android:translateY="5.272011">
<path
android:pathData="M32.788,1.721C32.356,0.677 31.344,0 30.216,0H10.68C10.674,0 10.667,0 10.661,0C10.655,0 10.648,0 10.642,0C6.542,0 3.21,3.332 3.21,7.425C3.21,9.578 4.138,11.582 5.704,12.975L0.812,17.867C0.013,18.666 -0.225,19.858 0.207,20.896C0.638,21.94 1.65,22.617 2.778,22.617H22.314C22.32,22.617 22.327,22.617 22.34,22.617C22.346,22.617 22.353,22.617 22.366,22.617C26.458,22.617 29.791,19.285 29.791,15.192C29.791,13.039 28.862,11.035 27.296,9.642L32.188,4.75C32.981,3.951 33.22,2.759 32.788,1.721ZM2.714,19.858C2.694,19.813 2.707,19.8 2.733,19.775L8.109,14.399L22.391,19.452C22.404,19.459 22.424,19.465 22.437,19.465C22.456,19.472 22.475,19.478 22.494,19.491C22.527,19.51 22.552,19.542 22.572,19.581C22.578,19.588 22.578,19.594 22.585,19.601C22.591,19.613 22.591,19.626 22.591,19.639C22.591,19.652 22.598,19.665 22.598,19.678C22.598,19.794 22.469,19.897 22.327,19.897H2.785C2.753,19.91 2.733,19.91 2.714,19.858ZM25.208,18.956C25.208,18.95 25.201,18.937 25.201,18.93C25.176,18.827 25.143,18.73 25.105,18.634C25.098,18.621 25.098,18.608 25.092,18.595C25.053,18.492 25.002,18.395 24.95,18.299C24.944,18.286 24.931,18.266 24.924,18.253C24.815,18.06 24.686,17.88 24.538,17.712C24.525,17.699 24.512,17.686 24.499,17.673C24.422,17.596 24.344,17.519 24.26,17.448C24.248,17.441 24.235,17.428 24.228,17.422C24.151,17.358 24.067,17.299 23.977,17.242C23.964,17.235 23.951,17.222 23.938,17.216C23.848,17.158 23.751,17.106 23.655,17.055C23.635,17.042 23.61,17.035 23.59,17.022C23.493,16.977 23.39,16.932 23.281,16.9L16.674,14.56L9.037,11.86L9.011,11.853C9.004,11.853 9.004,11.853 8.998,11.847C8.811,11.776 8.624,11.692 8.437,11.595C6.884,10.777 5.924,9.178 5.924,7.425C5.924,5.891 6.658,4.525 7.799,3.661C7.799,3.667 7.806,3.68 7.806,3.687C7.831,3.783 7.864,3.88 7.902,3.977C7.915,4.009 7.928,4.041 7.941,4.074C7.973,4.144 8.005,4.209 8.038,4.28C8.051,4.312 8.07,4.344 8.083,4.37C8.128,4.454 8.179,4.531 8.237,4.608C8.263,4.641 8.283,4.673 8.308,4.705C8.353,4.763 8.399,4.821 8.45,4.873C8.469,4.899 8.489,4.924 8.515,4.944C8.579,5.015 8.656,5.079 8.727,5.143C8.753,5.169 8.779,5.189 8.811,5.208C8.882,5.266 8.953,5.317 9.03,5.369C9.043,5.382 9.056,5.388 9.075,5.401C9.166,5.459 9.262,5.511 9.359,5.556C9.385,5.569 9.411,5.582 9.436,5.595C9.539,5.64 9.643,5.685 9.746,5.717L24.009,10.764C24.016,10.764 24.022,10.77 24.022,10.77C24.209,10.841 24.389,10.919 24.563,11.015C26.117,11.834 27.077,13.432 27.077,15.185C27.084,16.726 26.342,18.092 25.208,18.956ZM30.267,2.836L24.892,8.211C24.879,8.205 24.86,8.199 24.847,8.192L10.622,3.165C10.603,3.158 10.584,3.152 10.571,3.145H10.564C10.545,3.139 10.532,3.132 10.513,3.12C10.506,3.113 10.5,3.107 10.493,3.1C10.48,3.094 10.474,3.081 10.467,3.074C10.461,3.068 10.455,3.055 10.455,3.049C10.448,3.036 10.442,3.023 10.435,3.01C10.435,3.004 10.429,2.991 10.429,2.978C10.429,2.965 10.422,2.946 10.422,2.926C10.422,2.913 10.429,2.907 10.429,2.894C10.448,2.797 10.564,2.714 10.687,2.714H30.229C30.261,2.714 30.28,2.714 30.3,2.759C30.306,2.797 30.293,2.817 30.267,2.836Z"
android:fillColor="#ffffff"/>
</group>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

View File

@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>AIzaSyByygErXpki6Q7NXOXTHbRgg3-Tw-KCVO0</string>
<key>GCM_SENDER_ID</key>
<string>953923151748</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>io.nostrlabs.zap-stream</string>
<key>PROJECT_ID</key>
<string>nostrlabs</string>
<key>STORAGE_BUCKET</key>
<string>nostrlabs.firebasestorage.app</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:953923151748:ios:aef9c54f556258d39e9fd1</string>
</dict>
</plist>

43
ios/Podfile Normal file
View File

@ -0,0 +1,43 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end

208
ios/Podfile.lock Normal file
View File

@ -0,0 +1,208 @@
PODS:
- emoji_picker_flutter (0.0.1):
- Flutter
- Firebase/CoreOnly (11.10.0):
- FirebaseCore (~> 11.10.0)
- Firebase/Messaging (11.10.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 11.10.0)
- firebase_core (3.13.1):
- Firebase/CoreOnly (= 11.10.0)
- Flutter
- firebase_messaging (15.2.6):
- Firebase/Messaging (= 11.10.0)
- firebase_core
- Flutter
- FirebaseCore (11.10.0):
- FirebaseCoreInternal (~> 11.10.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/Logger (~> 8.0)
- FirebaseCoreInternal (11.10.0):
- "GoogleUtilities/NSData+zlib (~> 8.0)"
- FirebaseInstallations (11.10.0):
- FirebaseCore (~> 11.10.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0)
- PromisesObjC (~> 2.4)
- FirebaseMessaging (11.10.0):
- FirebaseCore (~> 11.10.0)
- FirebaseInstallations (~> 11.0)
- GoogleDataTransport (~> 10.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/Reachability (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0)
- nanopb (~> 3.30910.0)
- Flutter (1.0.0)
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_secure_storage (6.0.0):
- Flutter
- GoogleDataTransport (10.1.0):
- nanopb (~> 3.30910.0)
- PromisesObjC (~> 2.4)
- GoogleUtilities/AppDelegateSwizzler (8.1.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Privacy
- GoogleUtilities/Environment (8.1.0):
- GoogleUtilities/Privacy
- GoogleUtilities/Logger (8.1.0):
- GoogleUtilities/Environment
- GoogleUtilities/Privacy
- GoogleUtilities/Network (8.1.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Privacy
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (8.1.0)":
- GoogleUtilities/Privacy
- GoogleUtilities/Privacy (8.1.0)
- GoogleUtilities/Reachability (8.1.0):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- GoogleUtilities/UserDefaults (8.1.0):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- image_picker_ios (0.0.1):
- Flutter
- nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0)
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- ObjectBox (4.2.0)
- objectbox_flutter_libs (0.0.1):
- Flutter
- ObjectBox (= 4.2.0)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- PromisesObjC (2.4.0)
- protocol_handler_ios (0.0.1):
- Flutter
- rust_lib_ndk (0.0.1):
- Flutter
- share_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- sqflite_darwin (0.0.4):
- Flutter
- FlutterMacOS
- url_launcher_ios (0.0.1):
- Flutter
- video_player_avfoundation (0.0.1):
- Flutter
- FlutterMacOS
- wakelock_plus (0.0.1):
- Flutter
DEPENDENCIES:
- emoji_picker_flutter (from `.symlinks/plugins/emoji_picker_flutter/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- Flutter (from `Flutter`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- objectbox_flutter_libs (from `.symlinks/plugins/objectbox_flutter_libs/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- protocol_handler_ios (from `.symlinks/plugins/protocol_handler_ios/ios`)
- rust_lib_ndk (from `.symlinks/plugins/rust_lib_ndk/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
SPEC REPOS:
trunk:
- Firebase
- FirebaseCore
- FirebaseCoreInternal
- FirebaseInstallations
- FirebaseMessaging
- GoogleDataTransport
- GoogleUtilities
- nanopb
- ObjectBox
- PromisesObjC
EXTERNAL SOURCES:
emoji_picker_flutter:
:path: ".symlinks/plugins/emoji_picker_flutter/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
Flutter:
:path: Flutter
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_secure_storage:
:path: ".symlinks/plugins/flutter_secure_storage/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
objectbox_flutter_libs:
:path: ".symlinks/plugins/objectbox_flutter_libs/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
protocol_handler_ios:
:path: ".symlinks/plugins/protocol_handler_ios/ios"
rust_lib_ndk:
:path: ".symlinks/plugins/rust_lib_ndk/ios"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite_darwin:
:path: ".symlinks/plugins/sqflite_darwin/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
wakelock_plus:
:path: ".symlinks/plugins/wakelock_plus/ios"
SPEC CHECKSUMS:
emoji_picker_flutter: ece213fc274bdddefb77d502d33080dc54e616cc
Firebase: 1fe1c0a7d9aaea32efe01fbea5f0ebd8d70e53a2
firebase_core: ba71b44041571da878cb624ce0d80250bcbe58ad
firebase_messaging: 13129fe2ca166d1ed2d095062d76cee88943d067
FirebaseCore: 8344daef5e2661eb004b177488d6f9f0f24251b7
FirebaseCoreInternal: ef4505d2afb1d0ebbc33162cb3795382904b5679
FirebaseInstallations: 9980995bdd06ec8081dfb6ab364162bdd64245c3
FirebaseMessaging: 2b9f56aa4ed286e1f0ce2ee1d413aabb8f9f5cb9
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_local_notifications: a5a732f069baa862e728d839dd2ebb904737effb
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
ObjectBox: 2b4c925852ea99f070492f21328bf4002165cbd9
objectbox_flutter_libs: 50402e45f47f385d47fc041aba4607b89c4a3a1f
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
protocol_handler_ios: 59f23ee71f3ec602d67902ca7f669a80957888d5
rust_lib_ndk: bf974d06ca7805c0729bf19e400ba9d8a1d67e22
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b
wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556
PODFILE CHECKSUM: 4305caec6b40dde0ae97be1573c53de1882a07e5
COCOAPODS: 1.16.2

View File

@ -8,9 +8,12 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
283FBE47FA6371E399829C24 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5D6BBF654182E2B43AEE6CF /* Pods_Runner.framework */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
70887CE2EEA82E287D0F5E32 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF9F2521979EC3F259E9C06 /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
890FE2C12DE5F810002F606E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 890FE2C02DE5F810002F606E /* GoogleService-Info.plist */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
@ -42,12 +45,19 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
2CF9F2521979EC3F259E9C06 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3898346B5A5C027C9FA9F7CE /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
424535975AD213D6739D7587 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
609868B63798C72BBCCC36BC /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
725BF2C4E11E8D4BA045D24E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
890FE2BD2DE5F0A1002F606E /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
890FE2C02DE5F810002F606E /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -55,19 +65,53 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B6A06DA2BDF5319EBC10C29D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
D5D6BBF654182E2B43AEE6CF /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FCD68F499269973BDF0E58C7 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
87AF17021AFC993B1F4EBD74 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
70887CE2EEA82E287D0F5E32 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
283FBE47FA6371E399829C24 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
065520562861D7FEFAE4BB7B /* Frameworks */ = {
isa = PBXGroup;
children = (
D5D6BBF654182E2B43AEE6CF /* Pods_Runner.framework */,
2CF9F2521979EC3F259E9C06 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
20030AF4DA59ECDC7C15CF46 /* Pods */ = {
isa = PBXGroup;
children = (
725BF2C4E11E8D4BA045D24E /* Pods-Runner.debug.xcconfig */,
B6A06DA2BDF5319EBC10C29D /* Pods-Runner.release.xcconfig */,
424535975AD213D6739D7587 /* Pods-Runner.profile.xcconfig */,
3898346B5A5C027C9FA9F7CE /* Pods-RunnerTests.debug.xcconfig */,
609868B63798C72BBCCC36BC /* Pods-RunnerTests.release.xcconfig */,
FCD68F499269973BDF0E58C7 /* Pods-RunnerTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
@ -90,10 +134,13 @@
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
890FE2C02DE5F810002F606E /* GoogleService-Info.plist */,
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
20030AF4DA59ECDC7C15CF46 /* Pods */,
065520562861D7FEFAE4BB7B /* Frameworks */,
);
sourceTree = "<group>";
};
@ -109,6 +156,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
890FE2BD2DE5F0A1002F606E /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@ -128,8 +176,10 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
A1414F384F1233363335534B /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
87AF17021AFC993B1F4EBD74 /* Frameworks */,
);
buildRules = (
);
@ -145,12 +195,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
69481579FDF721E2538F77B8 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
EE4EB2C0965EE37F595A4359 /* [CP] Embed Pods Frameworks */,
6A0665F4C04FEAEA070B0BE1 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@ -214,6 +267,7 @@
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
890FE2C12DE5F810002F606E /* GoogleService-Info.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
@ -238,6 +292,49 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
69481579FDF721E2538F77B8 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
6A0665F4C04FEAEA070B0BE1 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@ -253,6 +350,49 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
A1414F384F1233363335534B /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
EE4EB2C0965EE37F595A4359 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -361,14 +501,17 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 24VGVR4CHC;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = io.nostrlabs.zapStreamFlutter;
PRODUCT_BUNDLE_IDENTIFIER = "io.nostrlabs.zap-stream";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@ -378,6 +521,7 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3898346B5A5C027C9FA9F7CE /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -395,6 +539,7 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 609868B63798C72BBCCC36BC /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -410,6 +555,7 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = FCD68F499269973BDF0E58C7 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -427,7 +573,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@ -484,7 +630,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@ -540,14 +686,17 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 24VGVR4CHC;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = io.nostrlabs.zapStreamFlutter;
PRODUCT_BUNDLE_IDENTIFIER = "io.nostrlabs.zap-stream";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -562,14 +711,17 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 24VGVR4CHC;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = io.nostrlabs.zapStreamFlutter;
PRODUCT_BUNDLE_IDENTIFIER = "io.nostrlabs.zap-stream";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;

View File

@ -4,4 +4,7 @@
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,122 +1 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
{"images":[{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@3x.png","scale":"3x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@3x.png","scale":"3x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@3x.png","scale":"3x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@1x.png","scale":"1x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@3x.png","scale":"3x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@1x.png","scale":"1x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@1x.png","scale":"1x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@1x.png","scale":"1x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@2x.png","scale":"2x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@1x.png","scale":"1x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@2x.png","scale":"2x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@1x.png","scale":"1x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@2x.png","scale":"2x"},{"size":"83.5x83.5","idiom":"ipad","filename":"Icon-App-83.5x83.5@2x.png","scale":"2x"},{"size":"1024x1024","idiom":"ios-marketing","filename":"Icon-App-1024x1024@1x.png","scale":"1x"}],"info":{"version":1,"author":"xcode"}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 704 B

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -2,16 +2,43 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Zap Stream Flutter</string>
<string>zap.stream</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLocalizations</key>
<array>
<string>ar</string>
<string>cs</string>
<string>da</string>
<string>de</string>
<string>el</string>
<string>en</string>
<string>es</string>
<string>fi</string>
<string>fr</string>
<string>hu</string>
<string>it</string>
<string>ja</string>
<string>ko</string>
<string>nl</string>
<string>pl</string>
<string>pt</string>
<string>ro</string>
<string>ru</string>
<string>sv</string>
<string>tr</string>
<string>uk</string>
<string>zh</string>
</array>
<key>CFBundleName</key>
<string>zap_stream_flutter</string>
<key>CFBundlePackageType</key>
@ -20,10 +47,33 @@
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleURLSchemes</key>
<array>
<string>zswc</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>FirebaseMessagingAutoInitEnabled</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
<string>audio</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
@ -41,9 +91,5 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:zap.stream</string>
<string>zswc</string>
</array>
</dict>
</plist>

View File

@ -10,7 +10,9 @@ import 'package:zap_stream_flutter/pages/login.dart';
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.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';
@ -23,10 +25,21 @@ void runZapStream() {
supportedLocales: AppLocaleUtils.supportedLocales,
localizationsDelegates: GlobalMaterialLocalizations.delegates,
theme: ThemeData.localize(
ThemeData(colorScheme: ColorScheme.dark(), highlightColor: PRIMARY_1),
ThemeData(
colorScheme: ColorScheme.dark(),
highlightColor: PRIMARY_1,
useMaterial3: true,
),
TextTheme(),
),
routerConfig: GoRouter(
redirect: (context, state) {
// redirect back to the wallet settings page
if (state.uri.scheme == "zswc") {
return "/settings/wallet";
}
return null;
},
routes: [
ShellRoute(
observers: [routeObserver],
@ -102,19 +115,22 @@ void runZapStream() {
},
),
ShellRoute(
observers: [routeObserver],
builder:
(context, state, child) =>
Column(children: [HeaderWidget(), child]),
routes: [
GoRoute(
path: "/settings",
builder: (context, state) => SizedBox(),
builder: (context, state) => SettingsPage(),
routes: [
GoRoute(
path: "profile",
builder: (context, state) => SettingsProfilePage(),
),
GoRoute(
path: "wallet",
builder: (context, state) => SettingsWalletPage(),
),
],
),
],

View File

@ -17,7 +17,7 @@ class NoVerify extends EventVerifier {
final ndkCache = DbObjectBox();
final eventVerifier = kDebugMode ? NoVerify() : RustEventVerifier();
var ndk = Ndk(
final ndk = Ndk(
NdkConfig(
eventVerifier: eventVerifier,
cache: ndkCache,
@ -35,6 +35,7 @@ const defaultRelays = [
"wss://relay.fountain.fm",
];
const searchRelays = ["wss://relay.nostr.band", "wss://search.nos.today"];
const nwcRelays = ["wss://relay.getalby.com/v1"];
final loginData = LoginData();
final RouteObserver<ModalRoute<void>> routeObserver =

View File

@ -59,11 +59,11 @@ class DefaultFirebaseOptions {
static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyByygErXpki6Q7NXOXTHbRgg3-Tw-KCVO0',
appId: '1:953923151748:ios:30ec9a230e55fe139e9fd1',
appId: '1:953923151748:ios:aef9c54f556258d39e9fd1',
messagingSenderId: '953923151748',
projectId: 'nostrlabs',
storageBucket: 'nostrlabs.firebasestorage.app',
iosBundleId: 'io.nostrlabs.zapStreamFlutter',
iosBundleId: 'io.nostrlabs.zap-stream',
);
static const FirebaseOptions macos = FirebaseOptions(
@ -83,4 +83,5 @@ class DefaultFirebaseOptions {
authDomain: 'nostrlabs.firebaseapp.com',
storageBucket: 'nostrlabs.firebasestorage.app',
);
}
}

View File

@ -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

View File

@ -3,24 +3,21 @@
/// Source: lib/i18n
/// To regenerate, run: `dart run slang`
///
/// Locales: 28
/// Strings: 1764 (63 per locale)
/// Locales: 22
/// Strings: 1653 (75 per locale)
///
/// Built on 2025-05-20 at 16:08 UTC
/// Built on 2025-05-29 at 11:29 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';
import 'package:slang_flutter/slang_flutter.dart';
export 'package:slang_flutter/slang_flutter.dart';
import 'strings_af.g.dart' deferred as l_af;
import 'strings_ar.g.dart' deferred as l_ar;
import 'strings_ca.g.dart' deferred as l_ca;
import 'strings_cs.g.dart' deferred as l_cs;
import 'strings_da.g.dart' deferred as l_da;
import 'strings_de.g.dart' deferred as l_de;
@ -28,22 +25,18 @@ import 'strings_el.g.dart' deferred as l_el;
import 'strings_es.g.dart' deferred as l_es;
import 'strings_fi.g.dart' deferred as l_fi;
import 'strings_fr.g.dart' deferred as l_fr;
import 'strings_he.g.dart' deferred as l_he;
import 'strings_hu.g.dart' deferred as l_hu;
import 'strings_it.g.dart' deferred as l_it;
import 'strings_ja.g.dart' deferred as l_ja;
import 'strings_ko.g.dart' deferred as l_ko;
import 'strings_nl.g.dart' deferred as l_nl;
import 'strings_no.g.dart' deferred as l_no;
import 'strings_pl.g.dart' deferred as l_pl;
import 'strings_pt.g.dart' deferred as l_pt;
import 'strings_ro.g.dart' deferred as l_ro;
import 'strings_ru.g.dart' deferred as l_ru;
import 'strings_sr.g.dart' deferred as l_sr;
import 'strings_sv.g.dart' deferred as l_sv;
import 'strings_tr.g.dart' deferred as l_tr;
import 'strings_uk.g.dart' deferred as l_uk;
import 'strings_vi.g.dart' deferred as l_vi;
import 'strings_zh.g.dart' deferred as l_zh;
part 'strings_en.g.dart';
@ -55,9 +48,7 @@ part 'strings_en.g.dart';
/// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check
enum AppLocale with BaseAppLocale<AppLocale, Translations> {
en(languageCode: 'en'),
af(languageCode: 'af'),
ar(languageCode: 'ar'),
ca(languageCode: 'ca'),
cs(languageCode: 'cs'),
da(languageCode: 'da'),
de(languageCode: 'de'),
@ -65,22 +56,18 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
es(languageCode: 'es'),
fi(languageCode: 'fi'),
fr(languageCode: 'fr'),
he(languageCode: 'he'),
hu(languageCode: 'hu'),
it(languageCode: 'it'),
ja(languageCode: 'ja'),
ko(languageCode: 'ko'),
nl(languageCode: 'nl'),
no(languageCode: 'no'),
pl(languageCode: 'pl'),
pt(languageCode: 'pt'),
ro(languageCode: 'ro'),
ru(languageCode: 'ru'),
sr(languageCode: 'sr'),
sv(languageCode: 'sv'),
tr(languageCode: 'tr'),
uk(languageCode: 'uk'),
vi(languageCode: 'vi'),
zh(languageCode: 'zh');
const AppLocale({
@ -106,13 +93,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.af:
await l_af.loadLibrary();
return l_af.TranslationsAf(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ar:
await l_ar.loadLibrary();
return l_ar.TranslationsAr(
@ -120,13 +100,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ca:
await l_ca.loadLibrary();
return l_ca.TranslationsCa(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.cs:
await l_cs.loadLibrary();
return l_cs.TranslationsCs(
@ -176,13 +149,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.he:
await l_he.loadLibrary();
return l_he.TranslationsHe(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.hu:
await l_hu.loadLibrary();
return l_hu.TranslationsHu(
@ -218,13 +184,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.no:
await l_no.loadLibrary();
return l_no.TranslationsNo(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.pl:
await l_pl.loadLibrary();
return l_pl.TranslationsPl(
@ -253,13 +212,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.sr:
await l_sr.loadLibrary();
return l_sr.TranslationsSr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.sv:
await l_sv.loadLibrary();
return l_sv.TranslationsSv(
@ -281,13 +233,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.vi:
await l_vi.loadLibrary();
return l_vi.TranslationsVi(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.zh:
await l_zh.loadLibrary();
return l_zh.TranslationsZh(
@ -311,24 +256,12 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.af:
return l_af.TranslationsAf(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ar:
return l_ar.TranslationsAr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ca:
return l_ca.TranslationsCa(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.cs:
return l_cs.TranslationsCs(
overrides: overrides,
@ -371,12 +304,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.he:
return l_he.TranslationsHe(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.hu:
return l_hu.TranslationsHu(
overrides: overrides,
@ -407,12 +334,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.no:
return l_no.TranslationsNo(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.pl:
return l_pl.TranslationsPl(
overrides: overrides,
@ -437,12 +358,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.sr:
return l_sr.TranslationsSr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.sv:
return l_sv.TranslationsSv(
overrides: overrides,
@ -461,12 +376,6 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.vi:
return l_vi.TranslationsVi(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.zh:
return l_zh.TranslationsZh(
overrides: overrides,

View File

@ -1,416 +0,0 @@
///
/// Generated file. Do not edit.
///
// 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: <root>
class TranslationsAf implements 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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.af,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <af>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
late final TranslationsAf _root = this; // ignore: unused_field
@override
TranslationsAf $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsAf(meta: meta ?? this.$meta);
// Translations
/// Text prompting user to hit avatar placeholder to begin upload
@override String get upload_avatar => 'Upload Avatar';
/// Heading over listed top streamers by zaps
@override String get most_zapped_streamers => 'Most Zapped Streamers';
/// No user found when searching
@override String get no_user_found => 'No user found';
/// An anonymous user
@override String get anon => 'Anon';
/// Number of viewers of the stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('af'))(n,
one: '1 viewer',
other: '${n} viewers',
);
@override late final _TranslationsStreamAf stream = _TranslationsStreamAf._(_root);
@override late final _TranslationsGoalAf goal = _TranslationsGoalAf._(_root);
@override late final _TranslationsButtonAf button = _TranslationsButtonAf._(_root);
@override late final _TranslationsEmbedAf embed = _TranslationsEmbedAf._(_root);
/// Headings on stream lists by stream type live/ended/planned etc.
@override late final _TranslationsStreamListAf stream_list = _TranslationsStreamListAf._(_root);
@override late final _TranslationsZapAf zap = _TranslationsZapAf._(_root);
@override late final _TranslationsProfileAf profile = _TranslationsProfileAf._(_root);
@override late final _TranslationsLoginAf login = _TranslationsLoginAf._(_root);
}
// Path: stream
class _TranslationsStreamAf implements TranslationsStreamEn {
_TranslationsStreamAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusAf status = _TranslationsStreamStatusAf._(_root);
@override String started({ required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatAf chat = _TranslationsStreamChatAf._(_root);
}
// Path: goal
class _TranslationsGoalAf implements TranslationsGoalEn {
_TranslationsGoalAf._(this._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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonAf implements TranslationsButtonEn {
_TranslationsButtonAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
/// Button text for the login button
@override String get login => 'Login';
@override String get logout => 'Logout';
@override String get edit_profile => 'Edit Profile';
/// Button text for the follow button
@override String get follow => 'Follow';
/// Button text for the unfollow button
@override String get unfollow => 'Unfollow';
@override String get mute => 'Mute';
@override String get unmute => 'Unmute';
@override String get share => 'Share';
@override String get save => 'Save';
}
// Path: embed
class _TranslationsEmbedAf implements TranslationsEmbedEn {
_TranslationsEmbedAf._(this._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}';
}
// Path: stream_list
class _TranslationsStreamListAf implements TranslationsStreamListEn {
_TranslationsStreamListAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get following => 'Following';
@override String get live => 'Live';
@override String get planned => 'Planned';
@override String get ended => 'Ended';
}
// Path: zap
class _TranslationsZapAf implements TranslationsZapEn {
_TranslationsZapAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@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 get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@override late final _TranslationsZapErrorAf error = _TranslationsZapErrorAf._(_root);
}
// Path: profile
class _TranslationsProfileAf implements TranslationsProfileEn {
_TranslationsProfileAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Past Streams';
@override late final _TranslationsProfileEditAf edit = _TranslationsProfileEditAf._(_root);
}
// Path: login
class _TranslationsLoginAf implements TranslationsLoginEn {
_TranslationsLoginAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get username => 'Username';
@override String get amber => 'Login with Amber';
@override String get key => 'Login with Key';
@override String get create => 'Create Account';
@override late final _TranslationsLoginErrorAf error = _TranslationsLoginErrorAf._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusAf implements TranslationsStreamStatusEn {
_TranslationsStreamStatusAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'PLANNED';
}
// Path: stream.chat
class _TranslationsStreamChatAf implements TranslationsStreamChatEn {
_TranslationsStreamChatAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
@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: [
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: [
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);
@override late final _TranslationsStreamChatRaidAf raid = _TranslationsStreamChatRaidAf._(_root);
}
// Path: zap.error
class _TranslationsZapErrorAf implements TranslationsZapErrorEn {
_TranslationsZapErrorAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Invalid custom amount';
@override String get no_wallet => 'No lightning wallet installed';
@override String get no_lud16 => 'No lightning address found';
}
// Path: profile.edit
class _TranslationsProfileEditAf implements TranslationsProfileEditEn {
_TranslationsProfileEditAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get display_name => 'Display Name';
@override String get about => 'About';
@override String get nip05 => 'Nostr Address';
@override String get lud16 => 'Lightning Address';
@override late final _TranslationsProfileEditErrorAf error = _TranslationsProfileEditErrorAf._(_root);
}
// Path: login.error
class _TranslationsLoginErrorAf implements TranslationsLoginErrorEn {
_TranslationsLoginErrorAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Invalid key';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteAf implements TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
/// Label on the chat message input box
@override String get label => 'Write message';
/// Chat input message shown when the user is logged in only with pubkey
@override String get no_signer => 'Can\'t write messages with npub login';
/// Chat input message shown when the user is logged out
@override String get login => 'Please login to send messages';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeAf implements TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
/// Heading over list of users who are awarded a badge
@override String get awarded_to => 'Awarded to:';
}
// Path: stream.chat.raid
class _TranslationsStreamChatRaidAf implements TranslationsStreamChatRaidEn {
_TranslationsStreamChatRaidAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
@override String to({ required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
@override String from({ required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
@override String countdown({ required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
class _TranslationsProfileEditErrorAf implements TranslationsProfileEditErrorEn {
_TranslationsProfileEditErrorAf._(this._root);
final TranslationsAf _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Cant edit profile when logged out';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsAf {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Upload Avatar';
case 'most_zapped_streamers': return 'Most Zapped Streamers';
case 'no_user_found': return 'No user found';
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('af'))(n,
one: '1 viewer',
other: '${n} viewers',
);
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.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: [
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: [
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
case 'button.edit_profile': return 'Edit Profile';
case 'button.follow': return 'Follow';
case 'button.unfollow': return 'Unfollow';
case 'button.mute': return 'Mute';
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 '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.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': return 'Zap';
case 'zap.button_open_wallet': return 'Open in 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';
case 'zap.error.no_lud16': return 'No lightning address found';
case 'profile.past_streams': return 'Past Streams';
case 'profile.edit.display_name': return 'Display Name';
case 'profile.edit.about': return 'About';
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 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
case 'login.create': return 'Create Account';
case 'login.error.invalid_key': return 'Invalid key';
default: return null;
}
}
}

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsAr implements Translations {
/// عدد مشاهدي البث
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ar'))(n,
one: '1 مشاهد',
other: '${n} المشاهدون',
other: '{n:decimalPattern} المشاهدين',
);
@override late final _TranslationsStreamAr stream = _TranslationsStreamAr._(_root);
@ -66,36 +67,38 @@ class TranslationsAr implements Translations {
@override late final _TranslationsZapAr zap = _TranslationsZapAr._(_root);
@override late final _TranslationsProfileAr profile = _TranslationsProfileAr._(_root);
@override late final _TranslationsSettingsAr settings = _TranslationsSettingsAr._(_root);
@override late final _TranslationsLoginAr login = _TranslationsLoginAr._(_root);
}
// 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 String notification({required Object name}) => '${name} بدأ البث المباشر!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonAr implements TranslationsButtonEn {
@override String get unmute => 'رفع الكتم';
@override String get share => 'مشاركة';
@override String get save => 'حفظ';
@override String get connect => 'الاتصال';
@override String get settings => 'الإعدادات';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'توصيل المحفظة';
@override String get copy => 'نسخ إلى الحافظة';
@override late final _TranslationsZapErrorAr error = _TranslationsZapErrorAr._(_root);
}
// 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
// Translations
@override String get past_streams => 'التدفقات السابقة';
@override late final _TranslationsProfileEditAr edit = _TranslationsProfileEditAr._(_root);
}
// Path: settings
class _TranslationsSettingsAr extends TranslationsSettingsEn {
_TranslationsSettingsAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get button_profile => 'تعديل الملف الشخصي';
@override String get button_wallet => 'إعدادات المحفظة';
@override late final _TranslationsSettingsProfileAr profile = _TranslationsSettingsProfileAr._(_root);
@override late final _TranslationsSettingsWalletAr wallet = _TranslationsSettingsWalletAr._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorAr implements TranslationsZapErrorEn {
@override String get no_lud16 => 'لم يتم العثور على عنوان البرق';
}
// Path: profile.edit
class _TranslationsProfileEditAr implements TranslationsProfileEditEn {
_TranslationsProfileEditAr._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileAr extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get display_name => 'اسم العرض';
@override String get about => 'نبذة';
@override String get about => 'نبذة عن';
@override String get nip05 => 'عنوان نوستر';
@override String get lud16 => 'عنوان البرق';
@override late final _TranslationsProfileEditErrorAr error = _TranslationsProfileEditErrorAr._(_root);
@override late final _TranslationsSettingsProfileErrorAr error = _TranslationsSettingsProfileErrorAr._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletAr extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'توصيل المحفظة (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'محفظة قطع الاتصال';
@override String get connect_1tap => '1-التوصيل بنقرة 1';
@override String get paste => 'لصق عنوان URL';
@override late final _TranslationsSettingsWalletErrorAr error = _TranslationsSettingsWalletErrorAr._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorAr extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorAr implements TranslationsProfileEditErrorEn
@override String get logged_out => 'لا يمكن تحرير ملف التعريف عند تسجيل الخروج';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorAr extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get logged_out => 'لا يمكن الاتصال بالمحفظة عند تسجيل الخروج';
@override String get nwc_auth_event_not_found => 'لم يتم العثور على حدث مصادقة المحفظة';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsAr {
@ -339,37 +382,38 @@ extension on TranslationsAr {
case 'anon': return 'هوية مخفية';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ar'))(n,
one: '1 مشاهد',
other: '${n} المشاهدون',
other: '{n:decimalPattern} المشاهدين',
);
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.notification': return ({required Object name}) => '${name} بدأ البث المباشر!';
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,30 +424,41 @@ 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 'button.connect': return 'الاتصال';
case 'button.settings': 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 '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.button_connect_wallet': return 'توصيل المحفظة';
case 'zap.copy': return 'نسخ إلى الحافظة';
case 'zap.error.invalid_custom_amount': return 'مبلغ مخصص غير صالح';
case 'zap.error.no_wallet': return 'لا توجد محفظة برق مثبتة';
case 'zap.error.no_lud16': return 'لم يتم العثور على عنوان البرق';
case 'profile.past_streams': return 'التدفقات السابقة';
case 'profile.edit.display_name': return 'اسم العرض';
case 'profile.edit.about': return 'نبذة';
case 'profile.edit.nip05': return 'عنوان نوستر';
case 'profile.edit.lud16': return 'عنوان البرق';
case 'profile.edit.error.logged_out': return 'لا يمكن تحرير ملف التعريف عند تسجيل الخروج';
case 'settings.button_profile': return 'تعديل الملف الشخصي';
case 'settings.button_wallet': return 'إعدادات المحفظة';
case 'settings.profile.display_name': return 'اسم العرض';
case 'settings.profile.about': return 'نبذة عن';
case 'settings.profile.nip05': return 'عنوان نوستر';
case 'settings.profile.lud16': return 'عنوان البرق';
case 'settings.profile.error.logged_out': return 'لا يمكن تحرير ملف التعريف عند تسجيل الخروج';
case 'settings.wallet.connect_wallet': return 'توصيل المحفظة (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'محفظة قطع الاتصال';
case 'settings.wallet.connect_1tap': return '1-التوصيل بنقرة 1';
case 'settings.wallet.paste': return 'لصق عنوان URL';
case 'settings.wallet.error.logged_out': return 'لا يمكن الاتصال بالمحفظة عند تسجيل الخروج';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'لم يتم العثور على حدث مصادقة المحفظة';
case 'login.username': return 'اسم المستخدم';
case 'login.amber': return 'تسجيل الدخول مع آمبر';
case 'login.key': return 'تسجيل الدخول بالمفتاح';

View File

@ -1,416 +0,0 @@
///
/// Generated file. Do not edit.
///
// 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: <root>
class TranslationsCa implements 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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.ca,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <ca>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
late final TranslationsCa _root = this; // ignore: unused_field
@override
TranslationsCa $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsCa(meta: meta ?? this.$meta);
// Translations
/// Text prompting user to hit avatar placeholder to begin upload
@override String get upload_avatar => 'Upload Avatar';
/// Heading over listed top streamers by zaps
@override String get most_zapped_streamers => 'Most Zapped Streamers';
/// No user found when searching
@override String get no_user_found => 'No user found';
/// An anonymous user
@override String get anon => 'Anon';
/// Number of viewers of the stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ca'))(n,
one: '1 viewer',
other: '${n} viewers',
);
@override late final _TranslationsStreamCa stream = _TranslationsStreamCa._(_root);
@override late final _TranslationsGoalCa goal = _TranslationsGoalCa._(_root);
@override late final _TranslationsButtonCa button = _TranslationsButtonCa._(_root);
@override late final _TranslationsEmbedCa embed = _TranslationsEmbedCa._(_root);
/// Headings on stream lists by stream type live/ended/planned etc.
@override late final _TranslationsStreamListCa stream_list = _TranslationsStreamListCa._(_root);
@override late final _TranslationsZapCa zap = _TranslationsZapCa._(_root);
@override late final _TranslationsProfileCa profile = _TranslationsProfileCa._(_root);
@override late final _TranslationsLoginCa login = _TranslationsLoginCa._(_root);
}
// Path: stream
class _TranslationsStreamCa implements TranslationsStreamEn {
_TranslationsStreamCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusCa status = _TranslationsStreamStatusCa._(_root);
@override String started({ required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatCa chat = _TranslationsStreamChatCa._(_root);
}
// Path: goal
class _TranslationsGoalCa implements TranslationsGoalEn {
_TranslationsGoalCa._(this._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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonCa implements TranslationsButtonEn {
_TranslationsButtonCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
/// Button text for the login button
@override String get login => 'Login';
@override String get logout => 'Logout';
@override String get edit_profile => 'Edit Profile';
/// Button text for the follow button
@override String get follow => 'Follow';
/// Button text for the unfollow button
@override String get unfollow => 'Unfollow';
@override String get mute => 'Mute';
@override String get unmute => 'Unmute';
@override String get share => 'Share';
@override String get save => 'Save';
}
// Path: embed
class _TranslationsEmbedCa implements TranslationsEmbedEn {
_TranslationsEmbedCa._(this._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}';
}
// Path: stream_list
class _TranslationsStreamListCa implements TranslationsStreamListEn {
_TranslationsStreamListCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get following => 'Following';
@override String get live => 'Live';
@override String get planned => 'Planned';
@override String get ended => 'Ended';
}
// Path: zap
class _TranslationsZapCa implements TranslationsZapEn {
_TranslationsZapCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@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 get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@override late final _TranslationsZapErrorCa error = _TranslationsZapErrorCa._(_root);
}
// Path: profile
class _TranslationsProfileCa implements TranslationsProfileEn {
_TranslationsProfileCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Past Streams';
@override late final _TranslationsProfileEditCa edit = _TranslationsProfileEditCa._(_root);
}
// Path: login
class _TranslationsLoginCa implements TranslationsLoginEn {
_TranslationsLoginCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get username => 'Username';
@override String get amber => 'Login with Amber';
@override String get key => 'Login with Key';
@override String get create => 'Create Account';
@override late final _TranslationsLoginErrorCa error = _TranslationsLoginErrorCa._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusCa implements TranslationsStreamStatusEn {
_TranslationsStreamStatusCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'PLANNED';
}
// Path: stream.chat
class _TranslationsStreamChatCa implements TranslationsStreamChatEn {
_TranslationsStreamChatCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
@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: [
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: [
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);
@override late final _TranslationsStreamChatRaidCa raid = _TranslationsStreamChatRaidCa._(_root);
}
// Path: zap.error
class _TranslationsZapErrorCa implements TranslationsZapErrorEn {
_TranslationsZapErrorCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Invalid custom amount';
@override String get no_wallet => 'No lightning wallet installed';
@override String get no_lud16 => 'No lightning address found';
}
// Path: profile.edit
class _TranslationsProfileEditCa implements TranslationsProfileEditEn {
_TranslationsProfileEditCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get display_name => 'Display Name';
@override String get about => 'About';
@override String get nip05 => 'Nostr Address';
@override String get lud16 => 'Lightning Address';
@override late final _TranslationsProfileEditErrorCa error = _TranslationsProfileEditErrorCa._(_root);
}
// Path: login.error
class _TranslationsLoginErrorCa implements TranslationsLoginErrorEn {
_TranslationsLoginErrorCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Invalid key';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteCa implements TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
/// Label on the chat message input box
@override String get label => 'Write message';
/// Chat input message shown when the user is logged in only with pubkey
@override String get no_signer => 'Can\'t write messages with npub login';
/// Chat input message shown when the user is logged out
@override String get login => 'Please login to send messages';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeCa implements TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
/// Heading over list of users who are awarded a badge
@override String get awarded_to => 'Awarded to:';
}
// Path: stream.chat.raid
class _TranslationsStreamChatRaidCa implements TranslationsStreamChatRaidEn {
_TranslationsStreamChatRaidCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
@override String to({ required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
@override String from({ required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
@override String countdown({ required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
class _TranslationsProfileEditErrorCa implements TranslationsProfileEditErrorEn {
_TranslationsProfileEditErrorCa._(this._root);
final TranslationsCa _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Cant edit profile when logged out';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsCa {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Upload Avatar';
case 'most_zapped_streamers': return 'Most Zapped Streamers';
case 'no_user_found': return 'No user found';
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ca'))(n,
one: '1 viewer',
other: '${n} viewers',
);
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.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: [
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: [
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
case 'button.edit_profile': return 'Edit Profile';
case 'button.follow': return 'Follow';
case 'button.unfollow': return 'Unfollow';
case 'button.mute': return 'Mute';
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 '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.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': return 'Zap';
case 'zap.button_open_wallet': return 'Open in 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';
case 'zap.error.no_lud16': return 'No lightning address found';
case 'profile.past_streams': return 'Past Streams';
case 'profile.edit.display_name': return 'Display Name';
case 'profile.edit.about': return 'About';
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 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
case 'login.create': return 'Create Account';
case 'login.error.invalid_key': return 'Invalid key';
default: return null;
}
}
}

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsCs implements Translations {
/// Počet diváků streamu
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('cs'))(n,
one: '1 divák',
other: '${n} diváci',
other: '${NumberFormat.decimalPattern('cs').format(n)} divá',
);
@override late final _TranslationsStreamCs stream = _TranslationsStreamCs._(_root);
@ -66,36 +67,38 @@ class TranslationsCs implements Translations {
@override late final _TranslationsZapCs zap = _TranslationsZapCs._(_root);
@override late final _TranslationsProfileCs profile = _TranslationsProfileCs._(_root);
@override late final _TranslationsSettingsCs settings = _TranslationsSettingsCs._(_root);
@override late final _TranslationsLoginCs login = _TranslationsLoginCs._(_root);
}
// 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 String notification({required Object name}) => '${name} byl spuštěn!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonCs implements TranslationsButtonEn {
@override String get unmute => 'Zrušit ztlumení';
@override String get share => 'Sdílet';
@override String get save => 'Uložit';
@override String get connect => 'Připojení';
@override String get settings => 'Nastavení';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Připojení peněženky';
@override String get copy => 'Zkopírováno do schránky';
@override late final _TranslationsZapErrorCs error = _TranslationsZapErrorCs._(_root);
}
// 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
// Translations
@override String get past_streams => 'Minulé proudy';
@override late final _TranslationsProfileEditCs edit = _TranslationsProfileEditCs._(_root);
}
// Path: settings
class _TranslationsSettingsCs extends TranslationsSettingsEn {
_TranslationsSettingsCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Upravit profil';
@override String get button_wallet => 'Nastavení peněženky';
@override late final _TranslationsSettingsProfileCs profile = _TranslationsSettingsProfileCs._(_root);
@override late final _TranslationsSettingsWalletCs wallet = _TranslationsSettingsWalletCs._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorCs implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Nebyla nalezena žádná adresa blesku';
}
// Path: profile.edit
class _TranslationsProfileEditCs implements TranslationsProfileEditEn {
_TranslationsProfileEditCs._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileCs extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@ -257,12 +275,26 @@ class _TranslationsProfileEditCs implements TranslationsProfileEditEn {
@override String get about => 'O stránkách';
@override String get nip05 => 'Adresa Nostr';
@override String get lud16 => 'Adresa blesku';
@override late final _TranslationsProfileEditErrorCs error = _TranslationsProfileEditErrorCs._(_root);
@override late final _TranslationsSettingsProfileErrorCs error = _TranslationsSettingsProfileErrorCs._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletCs extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Odpojení peněženky';
@override String get connect_1tap => 'Připojení 1 kohoutku';
@override String get paste => 'Vložit adresu URL';
@override late final _TranslationsSettingsWalletErrorCs error = _TranslationsSettingsWalletErrorCs._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorCs extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorCs implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Nelze upravit profil, když je odhlášený';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorCs extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Nelze se připojit k peněžence, když jste odhlášeni';
@override String get nwc_auth_event_not_found => 'Nebyla nalezena žádná událost autentizace peněženky';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsCs {
@ -339,37 +382,38 @@ extension on TranslationsCs {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('cs'))(n,
one: '1 divák',
other: '${n} diváci',
other: '${NumberFormat.decimalPattern('cs').format(n)} divá',
);
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.notification': return ({required Object name}) => '${name} byl spuštěn!';
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,30 +424,41 @@ 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 'button.connect': return 'Připojení';
case 'button.settings': return 'Nastavení';
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.button_connect_wallet': return 'Připojení peněženky';
case 'zap.copy': return 'Zkopírováno do schránky';
case 'zap.error.invalid_custom_amount': return 'Neplatná vlastní částka';
case 'zap.error.no_wallet': return 'Není nainstalována blesková peněženka';
case 'zap.error.no_lud16': return 'Nebyla nalezena žádná adresa blesku';
case 'profile.past_streams': return 'Minulé proudy';
case 'profile.edit.display_name': return 'Zobrazení názvu';
case 'profile.edit.about': return 'O stránkách';
case 'profile.edit.nip05': return 'Adresa Nostr';
case 'profile.edit.lud16': return 'Adresa blesku';
case 'profile.edit.error.logged_out': return 'Nelze upravit profil, když je odhlášený';
case 'settings.button_profile': return 'Upravit profil';
case 'settings.button_wallet': return 'Nastavení peněženky';
case 'settings.profile.display_name': return 'Zobrazení názvu';
case 'settings.profile.about': return 'O stránkách';
case 'settings.profile.nip05': return 'Adresa Nostr';
case 'settings.profile.lud16': return 'Adresa blesku';
case 'settings.profile.error.logged_out': return 'Nelze upravit profil, když je odhlášený';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Odpojení peněženky';
case 'settings.wallet.connect_1tap': return 'Připojení 1 kohoutku';
case 'settings.wallet.paste': return 'Vložit adresu URL';
case 'settings.wallet.error.logged_out': return 'Nelze se připojit k peněžence, když jste odhlášeni';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Nebyla nalezena žádná událost autentizace peněženky';
case 'login.username': return 'Uživatelské jméno';
case 'login.amber': return 'Přihlášení pomocí Amber';
case 'login.key': return 'Přihlášení pomocí klíče';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsDa implements Translations {
/// Antal seere af streamingen
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n,
one: '1 seer',
other: '${n} Seere',
other: '${NumberFormat.decimalPattern('da').format(n)} seere',
);
@override late final _TranslationsStreamDa stream = _TranslationsStreamDa._(_root);
@ -66,36 +67,38 @@ class TranslationsDa implements Translations {
@override late final _TranslationsZapDa zap = _TranslationsZapDa._(_root);
@override late final _TranslationsProfileDa profile = _TranslationsProfileDa._(_root);
@override late final _TranslationsSettingsDa settings = _TranslationsSettingsDa._(_root);
@override late final _TranslationsLoginDa login = _TranslationsLoginDa._(_root);
}
// 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 String notification({required Object name}) => '${name} gik live!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonDa implements TranslationsButtonEn {
@override String get unmute => 'Slå lyden fra';
@override String get share => 'Del';
@override String get save => 'Gemme';
@override String get connect => 'Opret forbindelse';
@override String get settings => 'Indstillinger';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Forbind tegnebog';
@override String get copy => 'Kopieret til udklipsholder';
@override late final _TranslationsZapErrorDa error = _TranslationsZapErrorDa._(_root);
}
// 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
// Translations
@override String get past_streams => 'Tidligere strømme';
@override late final _TranslationsProfileEditDa edit = _TranslationsProfileEditDa._(_root);
}
// Path: settings
class _TranslationsSettingsDa extends TranslationsSettingsEn {
_TranslationsSettingsDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Rediger profil';
@override String get button_wallet => 'Indstillinger for tegnebog';
@override late final _TranslationsSettingsProfileDa profile = _TranslationsSettingsProfileDa._(_root);
@override late final _TranslationsSettingsWalletDa wallet = _TranslationsSettingsWalletDa._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorDa implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Ingen lyn-adresse fundet';
}
// Path: profile.edit
class _TranslationsProfileEditDa implements TranslationsProfileEditEn {
_TranslationsProfileEditDa._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileDa extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@ -257,12 +275,26 @@ class _TranslationsProfileEditDa implements TranslationsProfileEditEn {
@override String get about => 'Omkring';
@override String get nip05 => 'Nostr-adresse';
@override String get lud16 => 'Adresse for lynnedslag';
@override late final _TranslationsProfileEditErrorDa error = _TranslationsProfileEditErrorDa._(_root);
@override late final _TranslationsSettingsProfileErrorDa error = _TranslationsSettingsProfileErrorDa._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletDa extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Afbryd forbindelsen til tegnebogen';
@override String get connect_1tap => '1-Tap-forbindelse';
@override String get paste => 'Indsæt URL';
@override late final _TranslationsSettingsWalletErrorDa error = _TranslationsSettingsWalletErrorDa._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorDa extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorDa implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Kan ikke redigere profil, når jeg er logget ud';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorDa extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Kan ikke oprette forbindelse til wallet, når jeg er logget ud';
@override String get nwc_auth_event_not_found => 'Ingen wallet-auth-begivenhed fundet';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsDa {
@ -339,37 +382,38 @@ extension on TranslationsDa {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n,
one: '1 seer',
other: '${n} Seere',
other: '${NumberFormat.decimalPattern('da').format(n)} seere',
);
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.notification': return ({required Object name}) => '${name} gik live!';
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,30 +424,41 @@ 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 'button.connect': return 'Opret forbindelse';
case 'button.settings': return 'Indstillinger';
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.button_connect_wallet': return 'Forbind tegnebog';
case 'zap.copy': return 'Kopieret til udklipsholder';
case 'zap.error.invalid_custom_amount': return 'Ugyldigt brugerdefineret beløb';
case 'zap.error.no_wallet': return 'Ingen lightning wallet installeret';
case 'zap.error.no_lud16': return 'Ingen lyn-adresse fundet';
case 'profile.past_streams': return 'Tidligere strømme';
case 'profile.edit.display_name': return 'Vis navn';
case 'profile.edit.about': return 'Omkring';
case 'profile.edit.nip05': return 'Nostr-adresse';
case 'profile.edit.lud16': return 'Adresse for lynnedslag';
case 'profile.edit.error.logged_out': return 'Kan ikke redigere profil, når jeg er logget ud';
case 'settings.button_profile': return 'Rediger profil';
case 'settings.button_wallet': return 'Indstillinger for tegnebog';
case 'settings.profile.display_name': return 'Vis navn';
case 'settings.profile.about': return 'Omkring';
case 'settings.profile.nip05': return 'Nostr-adresse';
case 'settings.profile.lud16': return 'Adresse for lynnedslag';
case 'settings.profile.error.logged_out': return 'Kan ikke redigere profil, når jeg er logget ud';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Afbryd forbindelsen til tegnebogen';
case 'settings.wallet.connect_1tap': return '1-Tap-forbindelse';
case 'settings.wallet.paste': return 'Indsæt URL';
case 'settings.wallet.error.logged_out': return 'Kan ikke oprette forbindelse til wallet, når jeg er logget ud';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Ingen wallet-auth-begivenhed fundet';
case 'login.username': return 'Brugernavn';
case 'login.amber': return 'Log ind med Amber';
case 'login.key': return 'Login med nøgle';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -41,7 +42,7 @@ class TranslationsDe implements Translations {
/// Text, der den Benutzer auffordert, auf den Avatar-Platzhalter zu klicken, um den Upload zu starten
@override String get upload_avatar => 'Avatar hochladen';
/// Überschrift über gelistete Top-Streamer von zaps
/// Überschrift über gelistete Top-Streamer nach Zaps
@override String get most_zapped_streamers => 'Meistgezappte Streamer';
/// Kein Benutzer bei der Suche gefunden
@ -50,10 +51,10 @@ class TranslationsDe implements Translations {
/// Ein anonymer Benutzer
@override String get anon => 'Anon';
/// Anzahl der Betrachter des Streams
/// Anzahl der Zuschauer des Streams
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n,
one: '1 Zuschauer',
other: '${n} Zuschauer',
other: '${NumberFormat.decimalPattern('de').format(n)} Zuschauer',
);
@override late final _TranslationsStreamDe stream = _TranslationsStreamDe._(_root);
@ -66,36 +67,38 @@ class TranslationsDe implements Translations {
@override late final _TranslationsZapDe zap = _TranslationsZapDe._(_root);
@override late final _TranslationsProfileDe profile = _TranslationsProfileDe._(_root);
@override late final _TranslationsSettingsDe settings = _TranslationsSettingsDe._(_root);
@override late final _TranslationsLoginDe login = _TranslationsLoginDe._(_root);
}
// 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 String notification({required Object name}) => '${name} ging live!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonDe implements TranslationsButtonEn {
@override String get unmute => 'Entstummen';
@override String get share => 'Teilen';
@override String get save => 'Speichern';
@override String get connect => 'Verbinden Sie';
@override String get settings => 'Einstellungen';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Brieftasche verbinden';
@override String get copy => 'In die Zwischenablage kopiert';
@override late final _TranslationsZapErrorDe error = _TranslationsZapErrorDe._(_root);
}
// 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
// Translations
@override String get past_streams => 'Vergangene Streams';
@override late final _TranslationsProfileEditDe edit = _TranslationsProfileEditDe._(_root);
}
// Path: settings
class _TranslationsSettingsDe extends TranslationsSettingsEn {
_TranslationsSettingsDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Profil bearbeiten';
@override String get button_wallet => 'Wallet-Einstellungen';
@override late final _TranslationsSettingsProfileDe profile = _TranslationsSettingsProfileDe._(_root);
@override late final _TranslationsSettingsWalletDe wallet = _TranslationsSettingsWalletDe._(_root);
}
// 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,46 +206,46 @@ 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
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get ended => 'BEENDET';
@override String get planned => 'GEPLANT';
}
// 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}) => 'Timeout 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: [
/// Chat-Nachricht mit Timeout-Ereignissen
@override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Zeitüberschreitung '),
const TextSpan(text: ' gibt '),
user,
const TextSpan(text: ' für '),
const TextSpan(text: ' einen Timeout 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: [
/// Chat-Nachricht mit Stream-Zaps
@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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorDe implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Keine Blitzadresse gefunden';
}
// Path: profile.edit
class _TranslationsProfileEditDe implements TranslationsProfileEditEn {
_TranslationsProfileEditDe._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileDe extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@ -256,13 +274,27 @@ class _TranslationsProfileEditDe implements TranslationsProfileEditEn {
@override String get display_name => 'Name anzeigen';
@override String get about => 'Über';
@override String get nip05 => 'Nostr-Adresse';
@override String get lud16 => 'Lightning-Adresse';
@override late final _TranslationsProfileEditErrorDe error = _TranslationsProfileEditErrorDe._(_root);
@override String get lud16 => 'Blitz-Adresse';
@override late final _TranslationsSettingsProfileErrorDe error = _TranslationsSettingsProfileErrorDe._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletDe extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Brieftasche abtrennen';
@override String get connect_1tap => '1-Tap-Verbindung';
@override String get paste => 'URL einfügen';
@override late final _TranslationsSettingsWalletErrorDe error = _TranslationsSettingsWalletErrorDe._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorDe extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorDe implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Profil kann nicht bearbeitet werden, wenn es abgemeldet ist';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorDe extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Kann keine Verbindung zur Brieftasche herstellen, wenn ich abgemeldet bin';
@override String get nwc_auth_event_not_found => 'Kein Wallet-Authentifizierungsereignis gefunden';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsDe {
@ -339,37 +382,38 @@ extension on TranslationsDe {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n,
one: '1 Zuschauer',
other: '${n} Zuschauer',
other: '${NumberFormat.decimalPattern('de').format(n)} Zuschauer',
);
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'ENDED';
case 'stream.status.ended': return 'BEENDET';
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.notification': return ({required Object name}) => '${name} ging live!';
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}) => 'Timeout 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 '),
const TextSpan(text: ' gibt '),
user,
const TextSpan(text: ' für '),
const TextSpan(text: ' einen Timeout 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,30 +424,41 @@ 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 'button.connect': return 'Verbinden Sie';
case 'button.settings': return 'Einstellungen';
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.button_connect_wallet': return 'Brieftasche verbinden';
case 'zap.copy': return 'In die Zwischenablage kopiert';
case 'zap.error.invalid_custom_amount': return 'Ungültiger benutzerdefinierter Betrag';
case 'zap.error.no_wallet': return 'Keine Lightning-Brieftasche installiert';
case 'zap.error.no_lud16': return 'Keine Blitzadresse gefunden';
case 'profile.past_streams': return 'Vergangene Streams';
case 'profile.edit.display_name': return 'Name anzeigen';
case 'profile.edit.about': return 'Über';
case 'profile.edit.nip05': return 'Nostr-Adresse';
case 'profile.edit.lud16': return 'Lightning-Adresse';
case 'profile.edit.error.logged_out': return 'Profil kann nicht bearbeitet werden, wenn es abgemeldet ist';
case 'settings.button_profile': return 'Profil bearbeiten';
case 'settings.button_wallet': return 'Wallet-Einstellungen';
case 'settings.profile.display_name': return 'Name anzeigen';
case 'settings.profile.about': return 'Über';
case 'settings.profile.nip05': return 'Nostr-Adresse';
case 'settings.profile.lud16': return 'Blitz-Adresse';
case 'settings.profile.error.logged_out': return 'Profil kann nicht bearbeitet werden, wenn es abgemeldet ist';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Brieftasche abtrennen';
case 'settings.wallet.connect_1tap': return '1-Tap-Verbindung';
case 'settings.wallet.paste': return 'URL einfügen';
case 'settings.wallet.error.logged_out': return 'Kann keine Verbindung zur Brieftasche herstellen, wenn ich abgemeldet bin';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Kein Wallet-Authentifizierungsereignis gefunden';
case 'login.username': return 'Benutzername';
case 'login.amber': return 'Anmeldung mit Amber';
case 'login.key': return 'Anmeldung mit Schlüssel';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsEl implements Translations {
/// Αριθμός θεατών της ροής
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('el'))(n,
one: '1 θεατής',
other: '${n} θεατές',
other: '${NumberFormat.decimalPattern('el').format(n)} θεατές',
);
@override late final _TranslationsStreamEl stream = _TranslationsStreamEl._(_root);
@ -66,36 +67,38 @@ class TranslationsEl implements Translations {
@override late final _TranslationsZapEl zap = _TranslationsZapEl._(_root);
@override late final _TranslationsProfileEl profile = _TranslationsProfileEl._(_root);
@override late final _TranslationsSettingsEl settings = _TranslationsSettingsEl._(_root);
@override late final _TranslationsLoginEl login = _TranslationsLoginEl._(_root);
}
// 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 String notification({required Object name}) => '${name} βγήκε ζωντανά!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonEl implements TranslationsButtonEn {
@override String get unmute => 'Αποσυνδέστε τη φωνή σας από το';
@override String get share => 'Μοιραστείτε το';
@override String get save => 'Αποθήκευση';
@override String get connect => 'Συνδέστε το';
@override String get settings => 'Ρυθμίσεις';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Connect Wallet';
@override String get copy => 'Αντιγραφή στο πρόχειρο';
@override late final _TranslationsZapErrorEl error = _TranslationsZapErrorEl._(_root);
}
// 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
// Translations
@override String get past_streams => 'Προηγούμενα ρεύματα';
@override late final _TranslationsProfileEditEl edit = _TranslationsProfileEditEl._(_root);
}
// Path: settings
class _TranslationsSettingsEl extends TranslationsSettingsEn {
_TranslationsSettingsEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Επεξεργασία προφίλ';
@override String get button_wallet => 'Ρυθμίσεις πορτοφολιού';
@override late final _TranslationsSettingsProfileEl profile = _TranslationsSettingsProfileEl._(_root);
@override late final _TranslationsSettingsWalletEl wallet = _TranslationsSettingsWalletEl._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorEl implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Δεν βρέθηκε διεύθυνση κεραυνού';
}
// Path: profile.edit
class _TranslationsProfileEditEl implements TranslationsProfileEditEn {
_TranslationsProfileEditEl._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileEl extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@ -257,12 +275,26 @@ class _TranslationsProfileEditEl implements TranslationsProfileEditEn {
@override String get about => 'Σχετικά με το';
@override String get nip05 => 'Διεύθυνση Nostr';
@override String get lud16 => 'Διεύθυνση Lightning';
@override late final _TranslationsProfileEditErrorEl error = _TranslationsProfileEditErrorEl._(_root);
@override late final _TranslationsSettingsProfileErrorEl error = _TranslationsSettingsProfileErrorEl._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletEl extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Αποσύνδεση πορτοφολιού';
@override String get connect_1tap => 'Σύνδεση 1 βρύσης';
@override String get paste => 'Επικόλληση URL';
@override late final _TranslationsSettingsWalletErrorEl error = _TranslationsSettingsWalletErrorEl._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorEl extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorEl implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Δεν μπορείτε να επεξεργαστείτε το προφίλ όταν έχετε αποσυνδεθεί';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorEl extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Δεν μπορώ να συνδεθώ με πορτοφόλι όταν έχω αποσυνδεθεί';
@override String get nwc_auth_event_not_found => 'Δεν βρέθηκε συμβάν εξουσιοδότησης πορτοφολιού';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsEl {
@ -339,37 +382,38 @@ extension on TranslationsEl {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('el'))(n,
one: '1 θεατής',
other: '${n} θεατές',
other: '${NumberFormat.decimalPattern('el').format(n)} θεατές',
);
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.notification': return ({required Object name}) => '${name} βγήκε ζωντανά!';
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,30 +424,41 @@ 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 'button.connect': return 'Συνδέστε το';
case 'button.settings': 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 '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.button_connect_wallet': return 'Connect Wallet';
case 'zap.copy': return 'Αντιγραφή στο πρόχειρο';
case 'zap.error.invalid_custom_amount': return 'Μη έγκυρο προσαρμοσμένο ποσό';
case 'zap.error.no_wallet': return 'Δεν έχει εγκατασταθεί πορτοφόλι αστραπής';
case 'zap.error.no_lud16': return 'Δεν βρέθηκε διεύθυνση κεραυνού';
case 'profile.past_streams': return 'Προηγούμενα ρεύματα';
case 'profile.edit.display_name': return 'Όνομα οθόνης';
case 'profile.edit.about': return 'Σχετικά με το';
case 'profile.edit.nip05': return 'Διεύθυνση Nostr';
case 'profile.edit.lud16': return 'Διεύθυνση Lightning';
case 'profile.edit.error.logged_out': return 'Δεν μπορείτε να επεξεργαστείτε το προφίλ όταν έχετε αποσυνδεθεί';
case 'settings.button_profile': return 'Επεξεργασία προφίλ';
case 'settings.button_wallet': return 'Ρυθμίσεις πορτοφολιού';
case 'settings.profile.display_name': return 'Όνομα οθόνης';
case 'settings.profile.about': return 'Σχετικά με το';
case 'settings.profile.nip05': return 'Διεύθυνση Nostr';
case 'settings.profile.lud16': return 'Διεύθυνση Lightning';
case 'settings.profile.error.logged_out': return 'Δεν μπορείτε να επεξεργαστείτε το προφίλ όταν έχετε αποσυνδεθεί';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Αποσύνδεση πορτοφολιού';
case 'settings.wallet.connect_1tap': return 'Σύνδεση 1 βρύσης';
case 'settings.wallet.paste': return 'Επικόλληση URL';
case 'settings.wallet.error.logged_out': return 'Δεν μπορώ να συνδεθώ με πορτοφόλι όταν έχω αποσυνδεθεί';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Δεν βρέθηκε συμβάν εξουσιοδότησης πορτοφολιού';
case 'login.username': return 'Όνομα χρήστη';
case 'login.amber': return 'Σύνδεση με Amber';
case 'login.key': return 'Σύνδεση με κλειδί';

View File

@ -52,52 +52,56 @@ class Translations implements BaseTranslations<AppLocale, Translations> {
/// An anonymous user
String get anon => 'Anon';
String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('en').format(n)} sats';
/// Number of viewers of the stream
String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
one: '1 viewer',
other: '${n} viewers',
other: '${NumberFormat.decimalPattern('en').format(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 TranslationsSettingsEn settings = TranslationsSettingsEn.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}';
String notification({required Object name}) => '${name} went live!';
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 +123,25 @@ class TranslationsButtonEn {
String get unmute => 'Unmute';
String get share => 'Share';
String get save => 'Save';
String get connect => 'Connect';
String get settings => 'Settings';
}
// 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 +154,49 @@ 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);
}
// Path: settings
class TranslationsSettingsEn {
TranslationsSettingsEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get button_profile => 'Edit Profile';
String get button_wallet => 'Wallet Settings';
late final TranslationsSettingsProfileEn profile = TranslationsSettingsProfileEn.internal(_root);
late final TranslationsSettingsWalletEn wallet = TranslationsSettingsWalletEn.internal(_root);
}
// Path: login
class TranslationsLoginEn {
TranslationsLoginEn._(this._root);
TranslationsLoginEn.internal(this._root);
final Translations _root; // ignore: unused_field
@ -186,12 +205,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 +222,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
@ -248,9 +267,9 @@ class TranslationsZapErrorEn {
String get no_lud16 => 'No lightning address found';
}
// Path: profile.edit
class TranslationsProfileEditEn {
TranslationsProfileEditEn._(this._root);
// Path: settings.profile
class TranslationsSettingsProfileEn {
TranslationsSettingsProfileEn.internal(this._root);
final Translations _root; // ignore: unused_field
@ -259,12 +278,28 @@ class TranslationsProfileEditEn {
String get about => 'About';
String get nip05 => 'Nostr Address';
String get lud16 => 'Lightning Address';
late final TranslationsProfileEditErrorEn error = TranslationsProfileEditErrorEn._(_root);
late final TranslationsSettingsProfileErrorEn error = TranslationsSettingsProfileErrorEn.internal(_root);
}
// Path: settings.wallet
class TranslationsSettingsWalletEn {
TranslationsSettingsWalletEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
String get disconnect_wallet => 'Disconnect Wallet';
String get connect_1tap => '1-Tap Connection';
String get paste => 'Paste URL';
String get balance => 'Balance';
String get name => 'Wallet';
late final TranslationsSettingsWalletErrorEn error = TranslationsSettingsWalletErrorEn.internal(_root);
}
// Path: login.error
class TranslationsLoginErrorEn {
TranslationsLoginErrorEn._(this._root);
TranslationsLoginErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
@ -274,7 +309,7 @@ class TranslationsLoginErrorEn {
// Path: stream.chat.write
class TranslationsStreamChatWriteEn {
TranslationsStreamChatWriteEn._(this._root);
TranslationsStreamChatWriteEn.internal(this._root);
final Translations _root; // ignore: unused_field
@ -292,7 +327,7 @@ class TranslationsStreamChatWriteEn {
// Path: stream.chat.badge
class TranslationsStreamChatBadgeEn {
TranslationsStreamChatBadgeEn._(this._root);
TranslationsStreamChatBadgeEn.internal(this._root);
final Translations _root; // ignore: unused_field
@ -304,25 +339,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);
// Path: settings.profile.error
class TranslationsSettingsProfileErrorEn {
TranslationsSettingsProfileErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
@ -330,6 +365,17 @@ class TranslationsProfileEditErrorEn {
String get logged_out => 'Cant edit profile when logged out';
}
// Path: settings.wallet.error
class TranslationsSettingsWalletErrorEn {
TranslationsSettingsWalletErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get logged_out => 'Cant connect wallet when logged out';
String get nwc_auth_event_not_found => 'No wallet auth event found';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on Translations {
@ -339,39 +385,41 @@ extension on Translations {
case 'most_zapped_streamers': return 'Most Zapped Streamers';
case 'no_user_found': return 'No user found';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('en').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
one: '1 viewer',
other: '${n} viewers',
other: '${NumberFormat.decimalPattern('en').format(n)} viewers',
);
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.notification': return ({required Object name}) => '${name} went live!';
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,30 +430,43 @@ 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 'button.settings': return 'Settings';
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';
case 'zap.error.no_lud16': return 'No lightning address found';
case 'profile.past_streams': return 'Past Streams';
case 'profile.edit.display_name': return 'Display Name';
case 'profile.edit.about': return 'About';
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 'settings.button_profile': return 'Edit Profile';
case 'settings.button_wallet': return 'Wallet Settings';
case 'settings.profile.display_name': return 'Display Name';
case 'settings.profile.about': return 'About';
case 'settings.profile.nip05': return 'Nostr Address';
case 'settings.profile.lud16': return 'Lightning Address';
case 'settings.profile.error.logged_out': return 'Cant edit profile when logged out';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Disconnect Wallet';
case 'settings.wallet.connect_1tap': return '1-Tap Connection';
case 'settings.wallet.paste': return 'Paste URL';
case 'settings.wallet.balance': return 'Balance';
case 'settings.wallet.name': return 'Wallet';
case 'settings.wallet.error.logged_out': return 'Cant connect wallet when logged out';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'No wallet auth event found';
case 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsEs implements Translations {
/// Número de espectadores del flujo
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n,
one: '1 espectador',
other: '${n} espectadores',
other: '${NumberFormat.decimalPattern('es').format(n)} espectadores',
);
@override late final _TranslationsStreamEs stream = _TranslationsStreamEs._(_root);
@ -66,36 +67,38 @@ class TranslationsEs implements Translations {
@override late final _TranslationsZapEs zap = _TranslationsZapEs._(_root);
@override late final _TranslationsProfileEs profile = _TranslationsProfileEs._(_root);
@override late final _TranslationsSettingsEs settings = _TranslationsSettingsEs._(_root);
@override late final _TranslationsLoginEs login = _TranslationsLoginEs._(_root);
}
// 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 String notification({required Object name}) => '${name} ¡se ha puesto en marcha!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonEs implements TranslationsButtonEn {
@override String get unmute => 'Dejar de silenciar';
@override String get share => 'Compartir';
@override String get save => 'Guardar';
@override String get connect => 'Conectar';
@override String get settings => 'Ajustes';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Billetera Connect';
@override String get copy => 'Copiado al portapapeles';
@override late final _TranslationsZapErrorEs error = _TranslationsZapErrorEs._(_root);
}
// 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
// Translations
@override String get past_streams => 'Transmisiones anteriores';
@override late final _TranslationsProfileEditEs edit = _TranslationsProfileEditEs._(_root);
}
// Path: settings
class _TranslationsSettingsEs extends TranslationsSettingsEn {
_TranslationsSettingsEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Editar perfil';
@override String get button_wallet => 'Configuración de la cartera';
@override late final _TranslationsSettingsProfileEs profile = _TranslationsSettingsProfileEs._(_root);
@override late final _TranslationsSettingsWalletEs wallet = _TranslationsSettingsWalletEs._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorEs implements TranslationsZapErrorEn {
@override String get no_lud16 => 'No se ha encontrado ninguna dirección de rayos';
}
// Path: profile.edit
class _TranslationsProfileEditEs implements TranslationsProfileEditEn {
_TranslationsProfileEditEs._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileEs extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get display_name => 'Mostrar nombre';
@override String get about => 'Sobre ti';
@override String get about => 'Acerca de';
@override String get nip05 => 'Dirección Nostr';
@override String get lud16 => 'Dirección del rayo';
@override late final _TranslationsProfileEditErrorEs error = _TranslationsProfileEditErrorEs._(_root);
@override late final _TranslationsSettingsProfileErrorEs error = _TranslationsSettingsProfileErrorEs._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletEs extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Cartera Connect (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Desconectar Cartera';
@override String get connect_1tap => 'Conexión de 1 toma';
@override String get paste => 'Pegar URL';
@override late final _TranslationsSettingsWalletErrorEs error = _TranslationsSettingsWalletErrorEs._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorEs extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorEs implements TranslationsProfileEditErrorEn
@override String get logged_out => 'No se puede editar el perfil cuando se cierra la sesión';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorEs extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get logged_out => 'No se puede conectar el monedero al cerrar la sesión';
@override String get nwc_auth_event_not_found => 'No se ha encontrado ningún evento de autenticación de cartera';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsEs {
@ -339,37 +382,38 @@ extension on TranslationsEs {
case 'anon': return 'Anónimo';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n,
one: '1 espectador',
other: '${n} espectadores',
other: '${NumberFormat.decimalPattern('es').format(n)} espectadores',
);
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.notification': return ({required Object name}) => '${name} ¡se ha puesto en marcha!';
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,30 +424,41 @@ 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 'button.connect': return 'Conectar';
case 'button.settings': return 'Ajustes';
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.button_connect_wallet': return 'Billetera Connect';
case 'zap.copy': return 'Copiado al portapapeles';
case 'zap.error.invalid_custom_amount': return 'Importe personalizado no válido';
case 'zap.error.no_wallet': return 'Sin monedero relámpago instalado';
case 'zap.error.no_lud16': return 'No se ha encontrado ninguna dirección de rayos';
case 'profile.past_streams': return 'Transmisiones anteriores';
case 'profile.edit.display_name': return 'Mostrar nombre';
case 'profile.edit.about': return 'Sobre ti';
case 'profile.edit.nip05': return 'Dirección Nostr';
case 'profile.edit.lud16': return 'Dirección del rayo';
case 'profile.edit.error.logged_out': return 'No se puede editar el perfil cuando se cierra la sesión';
case 'settings.button_profile': return 'Editar perfil';
case 'settings.button_wallet': return 'Configuración de la cartera';
case 'settings.profile.display_name': return 'Mostrar nombre';
case 'settings.profile.about': return 'Acerca de';
case 'settings.profile.nip05': return 'Dirección Nostr';
case 'settings.profile.lud16': return 'Dirección del rayo';
case 'settings.profile.error.logged_out': return 'No se puede editar el perfil cuando se cierra la sesión';
case 'settings.wallet.connect_wallet': return 'Cartera Connect (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Desconectar Cartera';
case 'settings.wallet.connect_1tap': return 'Conexión de 1 toma';
case 'settings.wallet.paste': return 'Pegar URL';
case 'settings.wallet.error.logged_out': return 'No se puede conectar el monedero al cerrar la sesión';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'No se ha encontrado ningún evento de autenticación de cartera';
case 'login.username': return 'Usuario';
case 'login.amber': return 'Iniciar sesión con Amber';
case 'login.key': return 'Inicio de sesión con clave';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsFi implements Translations {
/// Streamin katsojien määrä
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fi'))(n,
one: '1 katsoja',
other: '${n} katsojaa',
other: '${NumberFormat.decimalPattern('fi').format(n)} katsojat',
);
@override late final _TranslationsStreamFi stream = _TranslationsStreamFi._(_root);
@ -66,36 +67,38 @@ class TranslationsFi implements Translations {
@override late final _TranslationsZapFi zap = _TranslationsZapFi._(_root);
@override late final _TranslationsProfileFi profile = _TranslationsProfileFi._(_root);
@override late final _TranslationsSettingsFi settings = _TranslationsSettingsFi._(_root);
@override late final _TranslationsLoginFi login = _TranslationsLoginFi._(_root);
}
// 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 String notification({required Object name}) => '${name} meni suoraksi!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonFi implements TranslationsButtonEn {
@override String get unmute => 'Poista mykistys';
@override String get share => 'Jaa';
@override String get save => 'Tallenna';
@override String get connect => 'Yhdistä';
@override String get settings => 'Asetukset';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Yhdistä lompakko';
@override String get copy => 'Kopioitu leikepöydälle';
@override late final _TranslationsZapErrorFi error = _TranslationsZapErrorFi._(_root);
}
// 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
// Translations
@override String get past_streams => 'Aikaisemmat lähetykset';
@override late final _TranslationsProfileEditFi edit = _TranslationsProfileEditFi._(_root);
}
// Path: settings
class _TranslationsSettingsFi extends TranslationsSettingsEn {
_TranslationsSettingsFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Muokkaa profiilia';
@override String get button_wallet => 'Lompakon asetukset';
@override late final _TranslationsSettingsProfileFi profile = _TranslationsSettingsProfileFi._(_root);
@override late final _TranslationsSettingsWalletFi wallet = _TranslationsSettingsWalletFi._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorFi implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Salamaosoitetta ei löytynyt';
}
// Path: profile.edit
class _TranslationsProfileEditFi implements TranslationsProfileEditEn {
_TranslationsProfileEditFi._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileFi extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get display_name => 'Näytön nimi';
@override String get about => 'Tietoja';
@override String get nip05 => 'Nostr-osoite';
@override String get lud16 => 'Lightning-osoite';
@override late final _TranslationsProfileEditErrorFi error = _TranslationsProfileEditErrorFi._(_root);
@override String get nip05 => 'Nostr Osoite';
@override String get lud16 => 'Salama osoite';
@override late final _TranslationsSettingsProfileErrorFi error = _TranslationsSettingsProfileErrorFi._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletFi extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect-lompakko (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Irrota lompakko';
@override String get connect_1tap => '1-Tap-liitäntä';
@override String get paste => 'Liitä URL-osoite';
@override late final _TranslationsSettingsWalletErrorFi error = _TranslationsSettingsWalletErrorFi._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorFi extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorFi implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Ei voi muokata profiilia, kun on kirjautunut ulos';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorFi extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Ei voi muodostaa yhteyttä lompakkoon, kun on kirjautunut ulos';
@override String get nwc_auth_event_not_found => 'Ei lompakko-auth-tapahtumaa löydetty';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsFi {
@ -339,37 +382,38 @@ extension on TranslationsFi {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fi'))(n,
one: '1 katsoja',
other: '${n} katsojaa',
other: '${NumberFormat.decimalPattern('fi').format(n)} katsojat',
);
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.notification': return ({required Object name}) => '${name} meni suoraksi!';
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,30 +424,41 @@ 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 'button.connect': return 'Yhdistä';
case 'button.settings': return 'Asetukset';
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.button_connect_wallet': return 'Yhdistä lompakko';
case 'zap.copy': return 'Kopioitu leikepöydälle';
case 'zap.error.invalid_custom_amount': return 'Virheellinen mukautettu määrä';
case 'zap.error.no_wallet': return 'Ei asennettua salamalompakkoa';
case 'zap.error.no_lud16': return 'Salamaosoitetta ei löytynyt';
case 'profile.past_streams': return 'Aikaisemmat lähetykset';
case 'profile.edit.display_name': return 'Näytön nimi';
case 'profile.edit.about': return 'Tietoja';
case 'profile.edit.nip05': return 'Nostr-osoite';
case 'profile.edit.lud16': return 'Lightning-osoite';
case 'profile.edit.error.logged_out': return 'Ei voi muokata profiilia, kun on kirjautunut ulos';
case 'settings.button_profile': return 'Muokkaa profiilia';
case 'settings.button_wallet': return 'Lompakon asetukset';
case 'settings.profile.display_name': return 'Näytön nimi';
case 'settings.profile.about': return 'Tietoja';
case 'settings.profile.nip05': return 'Nostr Osoite';
case 'settings.profile.lud16': return 'Salama osoite';
case 'settings.profile.error.logged_out': return 'Ei voi muokata profiilia, kun on kirjautunut ulos';
case 'settings.wallet.connect_wallet': return 'Connect-lompakko (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Irrota lompakko';
case 'settings.wallet.connect_1tap': return '1-Tap-liitäntä';
case 'settings.wallet.paste': return 'Liitä URL-osoite';
case 'settings.wallet.error.logged_out': return 'Ei voi muodostaa yhteyttä lompakkoon, kun on kirjautunut ulos';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Ei lompakko-auth-tapahtumaa löydetty';
case 'login.username': return 'Käyttäjätunnus';
case 'login.amber': return 'Kirjaudu sisään Amber kanssa';
case 'login.key': return 'Kirjaudu sisään avaimella';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsFr implements Translations {
/// Nombre de spectateurs du flux
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n,
one: '1 téléspectateur',
other: '${n} spectateurs',
other: '{n:decimalPattern} téléspectateurs',
);
@override late final _TranslationsStreamFr stream = _TranslationsStreamFr._(_root);
@ -66,36 +67,38 @@ class TranslationsFr implements Translations {
@override late final _TranslationsZapFr zap = _TranslationsZapFr._(_root);
@override late final _TranslationsProfileFr profile = _TranslationsProfileFr._(_root);
@override late final _TranslationsSettingsFr settings = _TranslationsSettingsFr._(_root);
@override late final _TranslationsLoginFr login = _TranslationsLoginFr._(_root);
}
// 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 String notification({required Object name}) => '${name} est en ligne !';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonFr implements TranslationsButtonEn {
@override String get unmute => 'Retirer sourdine';
@override String get share => 'Partager';
@override String get save => 'Sauvegarder';
@override String get connect => 'Connecter';
@override String get settings => 'Paramètres';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Connecter le portefeuille';
@override String get copy => 'Copié dans le presse-papiers';
@override late final _TranslationsZapErrorFr error = _TranslationsZapErrorFr._(_root);
}
// 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
// Translations
@override String get past_streams => 'Streams passés';
@override late final _TranslationsProfileEditFr edit = _TranslationsProfileEditFr._(_root);
}
// Path: settings
class _TranslationsSettingsFr extends TranslationsSettingsEn {
_TranslationsSettingsFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Modifier le profil';
@override String get button_wallet => 'Paramètres du portefeuille';
@override late final _TranslationsSettingsProfileFr profile = _TranslationsSettingsProfileFr._(_root);
@override late final _TranslationsSettingsWalletFr wallet = _TranslationsSettingsWalletFr._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorFr implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Pas d\'adresse éclair trouvée';
}
// Path: profile.edit
class _TranslationsProfileEditFr implements TranslationsProfileEditEn {
_TranslationsProfileEditFr._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileFr extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get display_name => 'Nom d\'affichage';
@override String get about => 'À propos';
@override String get nip05 => 'Adresse Nostr';
@override String get lud16 => 'Adresse Lightning';
@override late final _TranslationsProfileEditErrorFr error = _TranslationsProfileEditErrorFr._(_root);
@override String get about => 'A propos de';
@override String get nip05 => 'Nostr Adresse';
@override String get lud16 => 'Adresse de la foudre';
@override late final _TranslationsSettingsProfileErrorFr error = _TranslationsSettingsProfileErrorFr._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletFr extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Portefeuille Connect (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Déconnecter le portefeuille';
@override String get connect_1tap => 'Connexion à 1 robinet';
@override String get paste => 'Coller l\'URL';
@override late final _TranslationsSettingsWalletErrorFr error = _TranslationsSettingsWalletErrorFr._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorFr extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorFr implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Impossible de modifier le profil lorsque l\'on est déconnecté';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorFr extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Impossible de se connecter au portefeuille lorsque l\'on est déconnecté';
@override String get nwc_auth_event_not_found => 'Aucun événement d\'authentification de portefeuille n\'a été trouvé';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsFr {
@ -339,37 +382,38 @@ extension on TranslationsFr {
case 'anon': return 'Anonyme';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n,
one: '1 téléspectateur',
other: '${n} spectateurs',
other: '{n:decimalPattern} téléspectateurs',
);
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.notification': return ({required Object name}) => '${name} est en ligne !';
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,30 +424,41 @@ 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 'button.connect': return 'Connecter';
case 'button.settings': return 'Paramètres';
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.button_connect_wallet': return 'Connecter le portefeuille';
case 'zap.copy': return 'Copié dans le presse-papiers';
case 'zap.error.invalid_custom_amount': return 'Montant personnalisé non valide';
case 'zap.error.no_wallet': return 'Pas de porte-monnaie électronique installé';
case 'zap.error.no_lud16': return 'Pas d\'adresse éclair trouvée';
case 'profile.past_streams': return 'Streams passés';
case 'profile.edit.display_name': return 'Nom d\'affichage';
case 'profile.edit.about': return 'À propos';
case 'profile.edit.nip05': return 'Adresse Nostr';
case 'profile.edit.lud16': return 'Adresse Lightning';
case 'profile.edit.error.logged_out': return 'Impossible de modifier le profil lorsque l\'on est déconnecté';
case 'settings.button_profile': return 'Modifier le profil';
case 'settings.button_wallet': return 'Paramètres du portefeuille';
case 'settings.profile.display_name': return 'Nom d\'affichage';
case 'settings.profile.about': return 'A propos de';
case 'settings.profile.nip05': return 'Nostr Adresse';
case 'settings.profile.lud16': return 'Adresse de la foudre';
case 'settings.profile.error.logged_out': return 'Impossible de modifier le profil lorsque l\'on est déconnecté';
case 'settings.wallet.connect_wallet': return 'Portefeuille Connect (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Déconnecter le portefeuille';
case 'settings.wallet.connect_1tap': return 'Connexion à 1 robinet';
case 'settings.wallet.paste': return 'Coller l\'URL';
case 'settings.wallet.error.logged_out': return 'Impossible de se connecter au portefeuille lorsque l\'on est déconnecté';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Aucun événement d\'authentification de portefeuille n\'a été trouvé';
case 'login.username': return 'Nom dutilisateur';
case 'login.amber': return 'Se connecter avec Amber';
case 'login.key': return 'Connexion avec la clé';

View File

@ -1,416 +0,0 @@
///
/// Generated file. Do not edit.
///
// 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: <root>
class TranslationsHe implements 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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.he,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <he>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
late final TranslationsHe _root = this; // ignore: unused_field
@override
TranslationsHe $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsHe(meta: meta ?? this.$meta);
// Translations
/// Text prompting user to hit avatar placeholder to begin upload
@override String get upload_avatar => 'Upload Avatar';
/// Heading over listed top streamers by zaps
@override String get most_zapped_streamers => 'Most Zapped Streamers';
/// No user found when searching
@override String get no_user_found => 'No user found';
/// An anonymous user
@override String get anon => 'Anon';
/// Number of viewers of the stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('he'))(n,
one: '1 viewer',
other: '${n} viewers',
);
@override late final _TranslationsStreamHe stream = _TranslationsStreamHe._(_root);
@override late final _TranslationsGoalHe goal = _TranslationsGoalHe._(_root);
@override late final _TranslationsButtonHe button = _TranslationsButtonHe._(_root);
@override late final _TranslationsEmbedHe embed = _TranslationsEmbedHe._(_root);
/// Headings on stream lists by stream type live/ended/planned etc.
@override late final _TranslationsStreamListHe stream_list = _TranslationsStreamListHe._(_root);
@override late final _TranslationsZapHe zap = _TranslationsZapHe._(_root);
@override late final _TranslationsProfileHe profile = _TranslationsProfileHe._(_root);
@override late final _TranslationsLoginHe login = _TranslationsLoginHe._(_root);
}
// Path: stream
class _TranslationsStreamHe implements TranslationsStreamEn {
_TranslationsStreamHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusHe status = _TranslationsStreamStatusHe._(_root);
@override String started({ required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatHe chat = _TranslationsStreamChatHe._(_root);
}
// Path: goal
class _TranslationsGoalHe implements TranslationsGoalEn {
_TranslationsGoalHe._(this._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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonHe implements TranslationsButtonEn {
_TranslationsButtonHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
/// Button text for the login button
@override String get login => 'Login';
@override String get logout => 'Logout';
@override String get edit_profile => 'Edit Profile';
/// Button text for the follow button
@override String get follow => 'Follow';
/// Button text for the unfollow button
@override String get unfollow => 'Unfollow';
@override String get mute => 'Mute';
@override String get unmute => 'Unmute';
@override String get share => 'Share';
@override String get save => 'Save';
}
// Path: embed
class _TranslationsEmbedHe implements TranslationsEmbedEn {
_TranslationsEmbedHe._(this._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}';
}
// Path: stream_list
class _TranslationsStreamListHe implements TranslationsStreamListEn {
_TranslationsStreamListHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get following => 'Following';
@override String get live => 'Live';
@override String get planned => 'Planned';
@override String get ended => 'Ended';
}
// Path: zap
class _TranslationsZapHe implements TranslationsZapEn {
_TranslationsZapHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@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 get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@override late final _TranslationsZapErrorHe error = _TranslationsZapErrorHe._(_root);
}
// Path: profile
class _TranslationsProfileHe implements TranslationsProfileEn {
_TranslationsProfileHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Past Streams';
@override late final _TranslationsProfileEditHe edit = _TranslationsProfileEditHe._(_root);
}
// Path: login
class _TranslationsLoginHe implements TranslationsLoginEn {
_TranslationsLoginHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get username => 'Username';
@override String get amber => 'Login with Amber';
@override String get key => 'Login with Key';
@override String get create => 'Create Account';
@override late final _TranslationsLoginErrorHe error = _TranslationsLoginErrorHe._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusHe implements TranslationsStreamStatusEn {
_TranslationsStreamStatusHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'PLANNED';
}
// Path: stream.chat
class _TranslationsStreamChatHe implements TranslationsStreamChatEn {
_TranslationsStreamChatHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
@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: [
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: [
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);
@override late final _TranslationsStreamChatRaidHe raid = _TranslationsStreamChatRaidHe._(_root);
}
// Path: zap.error
class _TranslationsZapErrorHe implements TranslationsZapErrorEn {
_TranslationsZapErrorHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Invalid custom amount';
@override String get no_wallet => 'No lightning wallet installed';
@override String get no_lud16 => 'No lightning address found';
}
// Path: profile.edit
class _TranslationsProfileEditHe implements TranslationsProfileEditEn {
_TranslationsProfileEditHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get display_name => 'Display Name';
@override String get about => 'About';
@override String get nip05 => 'Nostr Address';
@override String get lud16 => 'Lightning Address';
@override late final _TranslationsProfileEditErrorHe error = _TranslationsProfileEditErrorHe._(_root);
}
// Path: login.error
class _TranslationsLoginErrorHe implements TranslationsLoginErrorEn {
_TranslationsLoginErrorHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Invalid key';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteHe implements TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
/// Label on the chat message input box
@override String get label => 'Write message';
/// Chat input message shown when the user is logged in only with pubkey
@override String get no_signer => 'Can\'t write messages with npub login';
/// Chat input message shown when the user is logged out
@override String get login => 'Please login to send messages';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeHe implements TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
/// Heading over list of users who are awarded a badge
@override String get awarded_to => 'Awarded to:';
}
// Path: stream.chat.raid
class _TranslationsStreamChatRaidHe implements TranslationsStreamChatRaidEn {
_TranslationsStreamChatRaidHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
@override String to({ required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
@override String from({ required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
@override String countdown({ required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
class _TranslationsProfileEditErrorHe implements TranslationsProfileEditErrorEn {
_TranslationsProfileEditErrorHe._(this._root);
final TranslationsHe _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Cant edit profile when logged out';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsHe {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Upload Avatar';
case 'most_zapped_streamers': return 'Most Zapped Streamers';
case 'no_user_found': return 'No user found';
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('he'))(n,
one: '1 viewer',
other: '${n} viewers',
);
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.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: [
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: [
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
case 'button.edit_profile': return 'Edit Profile';
case 'button.follow': return 'Follow';
case 'button.unfollow': return 'Unfollow';
case 'button.mute': return 'Mute';
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 '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.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': return 'Zap';
case 'zap.button_open_wallet': return 'Open in 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';
case 'zap.error.no_lud16': return 'No lightning address found';
case 'profile.past_streams': return 'Past Streams';
case 'profile.edit.display_name': return 'Display Name';
case 'profile.edit.about': return 'About';
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 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
case 'login.create': return 'Create Account';
case 'login.error.invalid_key': return 'Invalid key';
default: return null;
}
}
}

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsHu implements Translations {
/// A stream nézőinek száma
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('hu'))(n,
one: '1 néző',
other: '${n} néző',
other: '${NumberFormat.decimalPattern('hu').format(n)} nézők',
);
@override late final _TranslationsStreamHu stream = _TranslationsStreamHu._(_root);
@ -66,36 +67,38 @@ class TranslationsHu implements Translations {
@override late final _TranslationsZapHu zap = _TranslationsZapHu._(_root);
@override late final _TranslationsProfileHu profile = _TranslationsProfileHu._(_root);
@override late final _TranslationsSettingsHu settings = _TranslationsSettingsHu._(_root);
@override late final _TranslationsLoginHu login = _TranslationsLoginHu._(_root);
}
// 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 String notification({required Object name}) => '${name} elindult!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonHu implements TranslationsButtonEn {
@override String get unmute => 'Némítás visszavonása';
@override String get share => 'Megosztás';
@override String get save => 'Mentés';
@override String get connect => 'Csatlakozás';
@override String get settings => 'Beállítások';
}
// 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}) => 'Cikk ${name}';
@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,37 +150,50 @@ 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 button_connect_wallet => 'Connect Wallet';
@override String get copy => 'Vágólapra másolva';
@override late final _TranslationsZapErrorHu error = _TranslationsZapErrorHu._(_root);
}
// 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
// Translations
@override String get past_streams => 'Múltbeli Streamek';
@override late final _TranslationsProfileEditHu edit = _TranslationsProfileEditHu._(_root);
}
// Path: settings
class _TranslationsSettingsHu extends TranslationsSettingsEn {
_TranslationsSettingsHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Profil szerkesztése';
@override String get button_wallet => 'Pénztárca beállítások';
@override late final _TranslationsSettingsProfileHu profile = _TranslationsSettingsProfileHu._(_root);
@override late final _TranslationsSettingsWalletHu wallet = _TranslationsSettingsWalletHu._(_root);
}
// 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 +206,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 +218,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);
const TextSpan(text: 'számára'),
]);
/// 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 +254,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
@ -247,23 +265,37 @@ class _TranslationsZapErrorHu implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Nem talált villámcím';
}
// Path: profile.edit
class _TranslationsProfileEditHu implements TranslationsProfileEditEn {
_TranslationsProfileEditHu._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileHu extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get display_name => 'Megjelenített név';
@override String get about => 'Névjegy';
@override String get nip05 => 'Nostr-cím';
@override String get lud16 => 'Lightning-cím';
@override late final _TranslationsProfileEditErrorHu error = _TranslationsProfileEditErrorHu._(_root);
@override String get about => 'A oldalról';
@override String get nip05 => 'Nostr cím';
@override String get lud16 => 'Villám cím';
@override late final _TranslationsSettingsProfileErrorHu error = _TranslationsSettingsProfileErrorHu._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletHu extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Pénztárca lekapcsolása';
@override String get connect_1tap => '1-Tap csatlakozás';
@override String get paste => 'URL beillesztése';
@override late final _TranslationsSettingsWalletErrorHu error = _TranslationsSettingsWalletErrorHu._(_root);
}
// 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 +304,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 +322,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 +334,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorHu extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
@ -329,6 +361,17 @@ class _TranslationsProfileEditErrorHu implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Kijelentkezve nem lehet profilt szerkeszteni';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorHu extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Kijelentkezve nem lehet csatlakozni a pénztárcához';
@override String get nwc_auth_event_not_found => 'Nem találtak pénztárca-auth eseményt';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsHu {
@ -340,38 +383,39 @@ extension on TranslationsHu {
case 'anon': return 'Névtelen';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('hu'))(n,
one: '1 néző',
other: '${n} néző',
other: '${NumberFormat.decimalPattern('hu').format(n)} nézők',
);
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.notification': return ({required Object name}) => '${name} elindult!';
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);
const TextSpan(text: 'számára'),
]);
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,30 +426,41 @@ 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 'button.connect': return 'Csatlakozás';
case 'button.settings': return 'Beállítások';
case 'embed.article_by': return ({required Object name}) => 'Cikk ${name}';
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.button_connect_wallet': return 'Connect Wallet';
case 'zap.copy': return 'Vágólapra másolva';
case 'zap.error.invalid_custom_amount': return 'Érvénytelen egyéni összeg';
case 'zap.error.no_wallet': return 'Nincs telepített villám tárca';
case 'zap.error.no_lud16': return 'Nem talált villámcím';
case 'profile.past_streams': return 'Múltbeli Streamek';
case 'profile.edit.display_name': return 'Megjelenített név';
case 'profile.edit.about': return 'Névjegy';
case 'profile.edit.nip05': return 'Nostr-cím';
case 'profile.edit.lud16': return 'Lightning-cím';
case 'profile.edit.error.logged_out': return 'Kijelentkezve nem lehet profilt szerkeszteni';
case 'settings.button_profile': return 'Profil szerkesztése';
case 'settings.button_wallet': return 'Pénztárca beállítások';
case 'settings.profile.display_name': return 'Megjelenített név';
case 'settings.profile.about': return 'A oldalról';
case 'settings.profile.nip05': return 'Nostr cím';
case 'settings.profile.lud16': return 'Villám cím';
case 'settings.profile.error.logged_out': return 'Kijelentkezve nem lehet profilt szerkeszteni';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Pénztárca lekapcsolása';
case 'settings.wallet.connect_1tap': return '1-Tap csatlakozás';
case 'settings.wallet.paste': return 'URL beillesztése';
case 'settings.wallet.error.logged_out': return 'Kijelentkezve nem lehet csatlakozni a pénztárcához';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Nem találtak pénztárca-auth eseményt';
case 'login.username': return 'Felhasználónév';
case 'login.amber': return 'Bejelentkezés Amber segítségével';
case 'login.key': return 'Bejelentkezés kulccsal';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsIt implements Translations {
/// Numero di spettatori del flusso
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n,
one: '1 spettatore',
other: '${n} spettatori',
other: '${NumberFormat.decimalPattern('it').format(n)} spettatori',
);
@override late final _TranslationsStreamIt stream = _TranslationsStreamIt._(_root);
@ -66,36 +67,38 @@ class TranslationsIt implements Translations {
@override late final _TranslationsZapIt zap = _TranslationsZapIt._(_root);
@override late final _TranslationsProfileIt profile = _TranslationsProfileIt._(_root);
@override late final _TranslationsSettingsIt settings = _TranslationsSettingsIt._(_root);
@override late final _TranslationsLoginIt login = _TranslationsLoginIt._(_root);
}
// 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 String notification({required Object name}) => '${name} è andato in onda!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonIt implements TranslationsButtonEn {
@override String get unmute => 'Riattiva';
@override String get share => 'Condividi';
@override String get save => 'Salva';
@override String get connect => 'Collegare';
@override String get settings => 'Impostazioni';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Portafoglio Connect';
@override String get copy => 'Copiato negli appunti';
@override late final _TranslationsZapErrorIt error = _TranslationsZapErrorIt._(_root);
}
// 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
// Translations
@override String get past_streams => 'Flussi passati';
@override late final _TranslationsProfileEditIt edit = _TranslationsProfileEditIt._(_root);
}
// Path: settings
class _TranslationsSettingsIt extends TranslationsSettingsEn {
_TranslationsSettingsIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Modifica profilo';
@override String get button_wallet => 'Impostazioni del portafoglio';
@override late final _TranslationsSettingsProfileIt profile = _TranslationsSettingsProfileIt._(_root);
@override late final _TranslationsSettingsWalletIt wallet = _TranslationsSettingsWalletIt._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorIt implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Nessun indirizzo di fulmine trovato';
}
// Path: profile.edit
class _TranslationsProfileEditIt implements TranslationsProfileEditEn {
_TranslationsProfileEditIt._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileIt extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get display_name => 'Nome visualizzato';
@override String get about => 'Info';
@override String get nip05 => 'Indirizzo Nostr';
@override String get about => 'Circa';
@override String get nip05 => 'Indirizzo';
@override String get lud16 => 'Indirizzo del fulmine';
@override late final _TranslationsProfileEditErrorIt error = _TranslationsProfileEditErrorIt._(_root);
@override late final _TranslationsSettingsProfileErrorIt error = _TranslationsSettingsProfileErrorIt._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletIt extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Portafoglio Connect (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Disconnettere il portafoglio';
@override String get connect_1tap => 'Connessione a 1 rubinetto';
@override String get paste => 'Incolla URL';
@override late final _TranslationsSettingsWalletErrorIt error = _TranslationsSettingsWalletErrorIt._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorIt extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorIt implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Impossibile modificare il profilo quando si è disconnessi';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorIt extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Impossibile connettere il portafoglio quando si è disconnessi';
@override String get nwc_auth_event_not_found => 'Nessun evento wallet auth trovato';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsIt {
@ -339,37 +382,38 @@ extension on TranslationsIt {
case 'anon': return 'Anonimo';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n,
one: '1 spettatore',
other: '${n} spettatori',
other: '${NumberFormat.decimalPattern('it').format(n)} spettatori',
);
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.notification': return ({required Object name}) => '${name} è andato in onda!';
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,30 +424,41 @@ 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 'button.connect': return 'Collegare';
case 'button.settings': return 'Impostazioni';
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.button_connect_wallet': return 'Portafoglio Connect';
case 'zap.copy': return 'Copiato negli appunti';
case 'zap.error.invalid_custom_amount': return 'Importo personalizzato non valido';
case 'zap.error.no_wallet': return 'Nessun portafoglio Lightning installato';
case 'zap.error.no_lud16': return 'Nessun indirizzo di fulmine trovato';
case 'profile.past_streams': return 'Flussi passati';
case 'profile.edit.display_name': return 'Nome visualizzato';
case 'profile.edit.about': return 'Info';
case 'profile.edit.nip05': return 'Indirizzo Nostr';
case 'profile.edit.lud16': return 'Indirizzo del fulmine';
case 'profile.edit.error.logged_out': return 'Impossibile modificare il profilo quando si è disconnessi';
case 'settings.button_profile': return 'Modifica profilo';
case 'settings.button_wallet': return 'Impostazioni del portafoglio';
case 'settings.profile.display_name': return 'Nome visualizzato';
case 'settings.profile.about': return 'Circa';
case 'settings.profile.nip05': return 'Indirizzo';
case 'settings.profile.lud16': return 'Indirizzo del fulmine';
case 'settings.profile.error.logged_out': return 'Impossibile modificare il profilo quando si è disconnessi';
case 'settings.wallet.connect_wallet': return 'Portafoglio Connect (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Disconnettere il portafoglio';
case 'settings.wallet.connect_1tap': return 'Connessione a 1 rubinetto';
case 'settings.wallet.paste': return 'Incolla URL';
case 'settings.wallet.error.logged_out': return 'Impossibile connettere il portafoglio quando si è disconnessi';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Nessun evento wallet auth trovato';
case 'login.username': return 'Nome utente';
case 'login.amber': return 'Accesso con Amber';
case 'login.key': return 'Accesso con chiave';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -39,7 +40,7 @@ class TranslationsJa implements Translations {
// Translations
/// アバターのプレースホルダーを押してアップロードを開始するよう促すテキスト
@override String get upload_avatar => 'アバターのアップロード';
@override String get upload_avatar => '画像アップロード';
/// ザップによるリストの上のストリーマーに向かう
@override String get most_zapped_streamers => '最もザッピングされたストリーマー';
@ -53,7 +54,7 @@ class TranslationsJa implements Translations {
/// ストリームの視聴者数
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n,
one: '1 視聴者',
other: '${n} 人が視聴中',
other: '${NumberFormat.decimalPattern('ja').format(n)} 人が視聴中',
);
@override late final _TranslationsStreamJa stream = _TranslationsStreamJa._(_root);
@ -66,36 +67,38 @@ class TranslationsJa implements Translations {
@override late final _TranslationsZapJa zap = _TranslationsZapJa._(_root);
@override late final _TranslationsProfileJa profile = _TranslationsProfileJa._(_root);
@override late final _TranslationsSettingsJa settings = _TranslationsSettingsJa._(_root);
@override late final _TranslationsLoginJa login = _TranslationsLoginJa._(_root);
}
// 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 String notification({required Object name}) => '${name} がライブを開始した!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonJa implements TranslationsButtonEn {
@override String get unmute => 'ミュート解除';
@override String get share => '共有';
@override String get save => '保存';
@override String get connect => '接続';
@override String get settings => '設定';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'コネクトウォレット';
@override String get copy => 'クリップボードにコピー';
@override late final _TranslationsZapErrorJa error = _TranslationsZapErrorJa._(_root);
}
// 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
// Translations
@override String get past_streams => '過去の配信';
@override late final _TranslationsProfileEditJa edit = _TranslationsProfileEditJa._(_root);
}
// Path: settings
class _TranslationsSettingsJa extends TranslationsSettingsEn {
_TranslationsSettingsJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get button_profile => 'プロフィール編集';
@override String get button_wallet => 'ウォレットの設定';
@override late final _TranslationsSettingsProfileJa profile = _TranslationsSettingsProfileJa._(_root);
@override late final _TranslationsSettingsWalletJa wallet = _TranslationsSettingsWalletJa._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorJa implements TranslationsZapErrorEn {
@override String get no_lud16 => '雷アドレスが見つかりません';
}
// Path: profile.edit
class _TranslationsProfileEditJa implements TranslationsProfileEditEn {
_TranslationsProfileEditJa._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileJa extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get display_name => '表示名';
@override String get about => '自己紹介';
@override String get nip05 => 'Nostrアドレス';
@override String get about => 'について';
@override String get nip05 => '住所';
@override String get lud16 => 'ライトニングアドレス';
@override late final _TranslationsProfileEditErrorJa error = _TranslationsProfileEditErrorJa._(_root);
@override late final _TranslationsSettingsProfileErrorJa error = _TranslationsSettingsProfileErrorJa._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletJa extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'コネクトウォレットNWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'ウォレットの切断';
@override String get connect_1tap => '1タップ接続';
@override String get paste => 'URLを貼り付ける';
@override late final _TranslationsSettingsWalletErrorJa error = _TranslationsSettingsWalletErrorJa._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorJa extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
@ -328,48 +360,60 @@ class _TranslationsProfileEditErrorJa implements TranslationsProfileEditErrorEn
@override String get logged_out => 'ログアウトするとプロフィールが編集できない';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorJa extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get logged_out => 'ログアウト時にウォレットに接続できない';
@override String get nwc_auth_event_not_found => 'ウォレットの認証イベントが見つかりません';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsJa {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'アバターのアップロード';
case 'upload_avatar': return '画像アップロード';
case 'most_zapped_streamers': return '最もザッピングされたストリーマー';
case 'no_user_found': return 'ユーザーが見つかりません';
case 'anon': return '匿名';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n,
one: '1 視聴者',
other: '${n} 人が視聴中',
other: '${NumberFormat.decimalPattern('ja').format(n)} 人が視聴中',
);
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.notification': return ({required Object name}) => '${name} がライブを開始した!';
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,30 +424,41 @@ 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 'button.connect': return '接続';
case 'button.settings': 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 '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.button_connect_wallet': return 'コネクトウォレット';
case 'zap.copy': return 'クリップボードにコピー';
case 'zap.error.invalid_custom_amount': return '無効なカスタム金額';
case 'zap.error.no_wallet': return 'Lightningウォレット未装着';
case 'zap.error.no_lud16': return '雷アドレスが見つかりません';
case 'profile.past_streams': return '過去の配信';
case 'profile.edit.display_name': return '表示名';
case 'profile.edit.about': return '自己紹介';
case 'profile.edit.nip05': return 'Nostrアドレス';
case 'profile.edit.lud16': return 'ライトニングアドレス';
case 'profile.edit.error.logged_out': return 'ログアウトするとプロフィールが編集できない';
case 'settings.button_profile': return 'プロフィール編集';
case 'settings.button_wallet': return 'ウォレットの設定';
case 'settings.profile.display_name': return '表示名';
case 'settings.profile.about': return 'について';
case 'settings.profile.nip05': return '住所';
case 'settings.profile.lud16': return 'ライトニングアドレス';
case 'settings.profile.error.logged_out': return 'ログアウトするとプロフィールが編集できない';
case 'settings.wallet.connect_wallet': return 'コネクトウォレットNWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'ウォレットの切断';
case 'settings.wallet.connect_1tap': return '1タップ接続';
case 'settings.wallet.paste': return 'URLを貼り付ける';
case 'settings.wallet.error.logged_out': return 'ログアウト時にウォレットに接続できない';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'ウォレットの認証イベントが見つかりません';
case 'login.username': return 'ユーザー名';
case 'login.amber': return '琥珀でログイン';
case 'login.key': return 'キーでログイン';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsKo implements Translations {
/// 스트림 시청자 수
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n,
one: '시청자 1명',
other: '${n} 시청자',
other: '{n:decimalPattern} 시청자',
);
@override late final _TranslationsStreamKo stream = _TranslationsStreamKo._(_root);
@ -66,36 +67,38 @@ class TranslationsKo implements Translations {
@override late final _TranslationsZapKo zap = _TranslationsZapKo._(_root);
@override late final _TranslationsProfileKo profile = _TranslationsProfileKo._(_root);
@override late final _TranslationsSettingsKo settings = _TranslationsSettingsKo._(_root);
@override late final _TranslationsLoginKo login = _TranslationsLoginKo._(_root);
}
// 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 String notification({required Object name}) => '${name} 라이브가 시작되었습니다!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonKo implements TranslationsButtonEn {
@override String get unmute => '뮤트 해제';
@override String get share => '공유';
@override String get save => '저장';
@override String get connect => '연결';
@override String get settings => '설정';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => '지갑 연결';
@override String get copy => '클립보드에 복사';
@override late final _TranslationsZapErrorKo error = _TranslationsZapErrorKo._(_root);
}
// 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
// Translations
@override String get past_streams => '과거 스트림';
@override late final _TranslationsProfileEditKo edit = _TranslationsProfileEditKo._(_root);
}
// Path: settings
class _TranslationsSettingsKo extends TranslationsSettingsEn {
_TranslationsSettingsKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get button_profile => '프로필 수정';
@override String get button_wallet => '지갑 설정';
@override late final _TranslationsSettingsProfileKo profile = _TranslationsSettingsProfileKo._(_root);
@override late final _TranslationsSettingsWalletKo wallet = _TranslationsSettingsWalletKo._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorKo implements TranslationsZapErrorEn {
@override String get no_lud16 => '번개 주소를 찾을 수 없습니다.';
}
// Path: profile.edit
class _TranslationsProfileEditKo implements TranslationsProfileEditEn {
_TranslationsProfileEditKo._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileKo extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@ -257,12 +275,26 @@ class _TranslationsProfileEditKo implements TranslationsProfileEditEn {
@override String get about => '정보';
@override String get nip05 => '노스트르 주소';
@override String get lud16 => '라이트닝 주소';
@override late final _TranslationsProfileEditErrorKo error = _TranslationsProfileEditErrorKo._(_root);
@override late final _TranslationsSettingsProfileErrorKo error = _TranslationsSettingsProfileErrorKo._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletKo extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get connect_wallet => '지갑 연결(NWC nostr+walletconnect://)';
@override String get disconnect_wallet => '지갑 연결 해제';
@override String get connect_1tap => '1-탭 연결';
@override String get paste => 'URL 붙여넣기';
@override late final _TranslationsSettingsWalletErrorKo error = _TranslationsSettingsWalletErrorKo._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorKo extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorKo implements TranslationsProfileEditErrorEn
@override String get logged_out => '로그아웃 시 프로필 수정 불가';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorKo extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get logged_out => '로그아웃 시 지갑 연결 불가';
@override String get nwc_auth_event_not_found => '지갑 인증 이벤트를 찾을 수 없습니다.';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsKo {
@ -339,37 +382,38 @@ extension on TranslationsKo {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n,
one: '시청자 1명',
other: '${n} 시청자',
other: '{n:decimalPattern} 시청자',
);
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.notification': return ({required Object name}) => '${name} 라이브가 시작되었습니다!';
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,30 +424,41 @@ 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 'button.connect': return '연결';
case 'button.settings': 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 '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.button_connect_wallet': return '지갑 연결';
case 'zap.copy': return '클립보드에 복사';
case 'zap.error.invalid_custom_amount': return '잘못된 사용자 지정 금액';
case 'zap.error.no_wallet': return '라이트닝 월렛이 설치되지 않았습니다.';
case 'zap.error.no_lud16': return '번개 주소를 찾을 수 없습니다.';
case 'profile.past_streams': return '과거 스트림';
case 'profile.edit.display_name': return '표시 이름';
case 'profile.edit.about': return '';
case 'profile.edit.nip05': return '노스트르 주소';
case 'profile.edit.lud16': return '라이트닝 주소';
case 'profile.edit.error.logged_out': return '로그아웃 시 프로필 수정 불가';
case 'settings.button_profile': return '프로필 수정';
case 'settings.button_wallet': return '지갑 설';
case 'settings.profile.display_name': return '표시 이름';
case 'settings.profile.about': return '정보';
case 'settings.profile.nip05': return '노스트르 주소';
case 'settings.profile.lud16': return '라이트닝 주소';
case 'settings.profile.error.logged_out': return '로그아웃 시 프로필 수정 불가';
case 'settings.wallet.connect_wallet': return '지갑 연결(NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return '지갑 연결 해제';
case 'settings.wallet.connect_1tap': return '1-탭 연결';
case 'settings.wallet.paste': return 'URL 붙여넣기';
case 'settings.wallet.error.logged_out': return '로그아웃 시 지갑 연결 불가';
case 'settings.wallet.error.nwc_auth_event_not_found': return '지갑 인증 이벤트를 찾을 수 없습니다.';
case 'login.username': return '사용자 이름';
case 'login.amber': return 'Amber로 로그인';
case 'login.key': return '키로 로그인';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsNl implements Translations {
/// Aantal kijkers van de stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n,
one: '1 kijker',
other: '${n} kijkers',
other: '${NumberFormat.decimalPattern('nl').format(n)} kijkers',
);
@override late final _TranslationsStreamNl stream = _TranslationsStreamNl._(_root);
@ -66,36 +67,38 @@ class TranslationsNl implements Translations {
@override late final _TranslationsZapNl zap = _TranslationsZapNl._(_root);
@override late final _TranslationsProfileNl profile = _TranslationsProfileNl._(_root);
@override late final _TranslationsSettingsNl settings = _TranslationsSettingsNl._(_root);
@override late final _TranslationsLoginNl login = _TranslationsLoginNl._(_root);
}
// 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 String notification({required Object name}) => '${name} ging live!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonNl implements TranslationsButtonEn {
@override String get unmute => 'Niet langer negeren';
@override String get share => 'Deel';
@override String get save => 'Opslaan';
@override String get connect => 'Maak verbinding met';
@override String get settings => 'Instellingen';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Portemonnee aansluiten';
@override String get copy => 'Gekopieerd naar klembord';
@override late final _TranslationsZapErrorNl error = _TranslationsZapErrorNl._(_root);
}
// 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
// Translations
@override String get past_streams => 'Afgelopen Streams';
@override late final _TranslationsProfileEditNl edit = _TranslationsProfileEditNl._(_root);
}
// Path: settings
class _TranslationsSettingsNl extends TranslationsSettingsEn {
_TranslationsSettingsNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Profiel bewerken';
@override String get button_wallet => 'Portemonnee-instellingen';
@override late final _TranslationsSettingsProfileNl profile = _TranslationsSettingsProfileNl._(_root);
@override late final _TranslationsSettingsWalletNl wallet = _TranslationsSettingsWalletNl._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorNl implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Geen bliksemadres gevonden';
}
// Path: profile.edit
class _TranslationsProfileEditNl implements TranslationsProfileEditEn {
_TranslationsProfileEditNl._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileNl extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get display_name => 'Naam weergeven';
@override String get about => 'Over ons';
@override String get about => 'Over';
@override String get nip05 => 'Nostr Adres';
@override String get lud16 => 'Lightning adres';
@override late final _TranslationsProfileEditErrorNl error = _TranslationsProfileEditErrorNl._(_root);
@override String get lud16 => 'Bliksemadres';
@override late final _TranslationsSettingsProfileErrorNl error = _TranslationsSettingsProfileErrorNl._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletNl extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Portemonnee verbinden (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Portefeuille loskoppelen';
@override String get connect_1tap => '1-Tap Aansluiting';
@override String get paste => 'URL plakken';
@override late final _TranslationsSettingsWalletErrorNl error = _TranslationsSettingsWalletErrorNl._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorNl extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorNl implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Kan profiel niet bewerken als ik ben uitgelogd';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorNl extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Kan geen verbinding maken met portemonnee als ik ben uitgelogd';
@override String get nwc_auth_event_not_found => 'Geen portemonnee-auth-gebeurtenis gevonden';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsNl {
@ -339,37 +382,38 @@ extension on TranslationsNl {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n,
one: '1 kijker',
other: '${n} kijkers',
other: '${NumberFormat.decimalPattern('nl').format(n)} kijkers',
);
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.notification': return ({required Object name}) => '${name} ging live!';
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,30 +424,41 @@ 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 'button.connect': return 'Maak verbinding met';
case 'button.settings': return 'Instellingen';
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.button_connect_wallet': return 'Portemonnee aansluiten';
case 'zap.copy': return 'Gekopieerd naar klembord';
case 'zap.error.invalid_custom_amount': return 'Ongeldig aangepast bedrag';
case 'zap.error.no_wallet': return 'Geen bliksemportemonnee geïnstalleerd';
case 'zap.error.no_lud16': return 'Geen bliksemadres gevonden';
case 'profile.past_streams': return 'Afgelopen Streams';
case 'profile.edit.display_name': return 'Naam weergeven';
case 'profile.edit.about': return 'Over ons';
case 'profile.edit.nip05': return 'Nostr Adres';
case 'profile.edit.lud16': return 'Lightning adres';
case 'profile.edit.error.logged_out': return 'Kan profiel niet bewerken als ik ben uitgelogd';
case 'settings.button_profile': return 'Profiel bewerken';
case 'settings.button_wallet': return 'Portemonnee-instellingen';
case 'settings.profile.display_name': return 'Naam weergeven';
case 'settings.profile.about': return 'Over';
case 'settings.profile.nip05': return 'Nostr Adres';
case 'settings.profile.lud16': return 'Bliksemadres';
case 'settings.profile.error.logged_out': return 'Kan profiel niet bewerken als ik ben uitgelogd';
case 'settings.wallet.connect_wallet': return 'Portemonnee verbinden (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Portefeuille loskoppelen';
case 'settings.wallet.connect_1tap': return '1-Tap Aansluiting';
case 'settings.wallet.paste': return 'URL plakken';
case 'settings.wallet.error.logged_out': return 'Kan geen verbinding maken met portemonnee als ik ben uitgelogd';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Geen portemonnee-auth-gebeurtenis gevonden';
case 'login.username': return 'Gebruikersnaam';
case 'login.amber': return 'Inloggen met Amber';
case 'login.key': return 'Inloggen met sleutel';

View File

@ -1,416 +0,0 @@
///
/// Generated file. Do not edit.
///
// 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: <root>
class TranslationsNo implements 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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.no,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <no>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
late final TranslationsNo _root = this; // ignore: unused_field
@override
TranslationsNo $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsNo(meta: meta ?? this.$meta);
// Translations
/// Text prompting user to hit avatar placeholder to begin upload
@override String get upload_avatar => 'Upload Avatar';
/// Heading over listed top streamers by zaps
@override String get most_zapped_streamers => 'Most Zapped Streamers';
/// No user found when searching
@override String get no_user_found => 'No user found';
/// An anonymous user
@override String get anon => 'Anon';
/// Number of viewers of the stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('no'))(n,
one: '1 viewer',
other: '${n} viewers',
);
@override late final _TranslationsStreamNo stream = _TranslationsStreamNo._(_root);
@override late final _TranslationsGoalNo goal = _TranslationsGoalNo._(_root);
@override late final _TranslationsButtonNo button = _TranslationsButtonNo._(_root);
@override late final _TranslationsEmbedNo embed = _TranslationsEmbedNo._(_root);
/// Headings on stream lists by stream type live/ended/planned etc.
@override late final _TranslationsStreamListNo stream_list = _TranslationsStreamListNo._(_root);
@override late final _TranslationsZapNo zap = _TranslationsZapNo._(_root);
@override late final _TranslationsProfileNo profile = _TranslationsProfileNo._(_root);
@override late final _TranslationsLoginNo login = _TranslationsLoginNo._(_root);
}
// Path: stream
class _TranslationsStreamNo implements TranslationsStreamEn {
_TranslationsStreamNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusNo status = _TranslationsStreamStatusNo._(_root);
@override String started({ required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatNo chat = _TranslationsStreamChatNo._(_root);
}
// Path: goal
class _TranslationsGoalNo implements TranslationsGoalEn {
_TranslationsGoalNo._(this._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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonNo implements TranslationsButtonEn {
_TranslationsButtonNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
/// Button text for the login button
@override String get login => 'Login';
@override String get logout => 'Logout';
@override String get edit_profile => 'Edit Profile';
/// Button text for the follow button
@override String get follow => 'Follow';
/// Button text for the unfollow button
@override String get unfollow => 'Unfollow';
@override String get mute => 'Mute';
@override String get unmute => 'Unmute';
@override String get share => 'Share';
@override String get save => 'Save';
}
// Path: embed
class _TranslationsEmbedNo implements TranslationsEmbedEn {
_TranslationsEmbedNo._(this._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}';
}
// Path: stream_list
class _TranslationsStreamListNo implements TranslationsStreamListEn {
_TranslationsStreamListNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get following => 'Following';
@override String get live => 'Live';
@override String get planned => 'Planned';
@override String get ended => 'Ended';
}
// Path: zap
class _TranslationsZapNo implements TranslationsZapEn {
_TranslationsZapNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@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 get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@override late final _TranslationsZapErrorNo error = _TranslationsZapErrorNo._(_root);
}
// Path: profile
class _TranslationsProfileNo implements TranslationsProfileEn {
_TranslationsProfileNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Past Streams';
@override late final _TranslationsProfileEditNo edit = _TranslationsProfileEditNo._(_root);
}
// Path: login
class _TranslationsLoginNo implements TranslationsLoginEn {
_TranslationsLoginNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get username => 'Username';
@override String get amber => 'Login with Amber';
@override String get key => 'Login with Key';
@override String get create => 'Create Account';
@override late final _TranslationsLoginErrorNo error = _TranslationsLoginErrorNo._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusNo implements TranslationsStreamStatusEn {
_TranslationsStreamStatusNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'PLANNED';
}
// Path: stream.chat
class _TranslationsStreamChatNo implements TranslationsStreamChatEn {
_TranslationsStreamChatNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
@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: [
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: [
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);
@override late final _TranslationsStreamChatRaidNo raid = _TranslationsStreamChatRaidNo._(_root);
}
// Path: zap.error
class _TranslationsZapErrorNo implements TranslationsZapErrorEn {
_TranslationsZapErrorNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Invalid custom amount';
@override String get no_wallet => 'No lightning wallet installed';
@override String get no_lud16 => 'No lightning address found';
}
// Path: profile.edit
class _TranslationsProfileEditNo implements TranslationsProfileEditEn {
_TranslationsProfileEditNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get display_name => 'Display Name';
@override String get about => 'About';
@override String get nip05 => 'Nostr Address';
@override String get lud16 => 'Lightning Address';
@override late final _TranslationsProfileEditErrorNo error = _TranslationsProfileEditErrorNo._(_root);
}
// Path: login.error
class _TranslationsLoginErrorNo implements TranslationsLoginErrorEn {
_TranslationsLoginErrorNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Invalid key';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteNo implements TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
/// Label on the chat message input box
@override String get label => 'Write message';
/// Chat input message shown when the user is logged in only with pubkey
@override String get no_signer => 'Can\'t write messages with npub login';
/// Chat input message shown when the user is logged out
@override String get login => 'Please login to send messages';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeNo implements TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
/// Heading over list of users who are awarded a badge
@override String get awarded_to => 'Awarded to:';
}
// Path: stream.chat.raid
class _TranslationsStreamChatRaidNo implements TranslationsStreamChatRaidEn {
_TranslationsStreamChatRaidNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
@override String to({ required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
@override String from({ required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
@override String countdown({ required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
class _TranslationsProfileEditErrorNo implements TranslationsProfileEditErrorEn {
_TranslationsProfileEditErrorNo._(this._root);
final TranslationsNo _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Cant edit profile when logged out';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsNo {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Upload Avatar';
case 'most_zapped_streamers': return 'Most Zapped Streamers';
case 'no_user_found': return 'No user found';
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('no'))(n,
one: '1 viewer',
other: '${n} viewers',
);
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.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: [
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: [
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
case 'button.edit_profile': return 'Edit Profile';
case 'button.follow': return 'Follow';
case 'button.unfollow': return 'Unfollow';
case 'button.mute': return 'Mute';
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 '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.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': return 'Zap';
case 'zap.button_open_wallet': return 'Open in 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';
case 'zap.error.no_lud16': return 'No lightning address found';
case 'profile.past_streams': return 'Past Streams';
case 'profile.edit.display_name': return 'Display Name';
case 'profile.edit.about': return 'About';
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 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
case 'login.create': return 'Create Account';
case 'login.error.invalid_key': return 'Invalid key';
default: return null;
}
}
}

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsPl implements Translations {
/// Liczba widzów strumienia
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n,
one: '1 przeglądarka',
other: '${n} widzowie',
other: '{n:decimalPattern} widzów',
);
@override late final _TranslationsStreamPl stream = _TranslationsStreamPl._(_root);
@ -66,36 +67,38 @@ class TranslationsPl implements Translations {
@override late final _TranslationsZapPl zap = _TranslationsZapPl._(_root);
@override late final _TranslationsProfilePl profile = _TranslationsProfilePl._(_root);
@override late final _TranslationsSettingsPl settings = _TranslationsSettingsPl._(_root);
@override late final _TranslationsLoginPl login = _TranslationsLoginPl._(_root);
}
// 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 String notification({required Object name}) => '${name} został uruchomiony!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonPl implements TranslationsButtonEn {
@override String get unmute => 'Wyłącz wyciszenie';
@override String get share => 'Udział';
@override String get save => 'Zapisz';
@override String get connect => 'Połączenie';
@override String get settings => 'Ustawienia';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Connect Wallet';
@override String get copy => 'Skopiowane do schowka';
@override late final _TranslationsZapErrorPl error = _TranslationsZapErrorPl._(_root);
}
// 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
// Translations
@override String get past_streams => 'Poprzednie strumienie';
@override late final _TranslationsProfileEditPl edit = _TranslationsProfileEditPl._(_root);
}
// Path: settings
class _TranslationsSettingsPl extends TranslationsSettingsEn {
_TranslationsSettingsPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Edytuj profil';
@override String get button_wallet => 'Ustawienia portfela';
@override late final _TranslationsSettingsProfilePl profile = _TranslationsSettingsProfilePl._(_root);
@override late final _TranslationsSettingsWalletPl wallet = _TranslationsSettingsWalletPl._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorPl implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Nie znaleziono adresu pioruna';
}
// Path: profile.edit
class _TranslationsProfileEditPl implements TranslationsProfileEditEn {
_TranslationsProfileEditPl._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfilePl extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfilePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@ -257,12 +275,26 @@ class _TranslationsProfileEditPl implements TranslationsProfileEditEn {
@override String get about => 'O';
@override String get nip05 => 'Adres Nostr';
@override String get lud16 => 'Adres błyskawicy';
@override late final _TranslationsProfileEditErrorPl error = _TranslationsProfileEditErrorPl._(_root);
@override late final _TranslationsSettingsProfileErrorPl error = _TranslationsSettingsProfileErrorPl._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletPl extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Odłącz portfel';
@override String get connect_1tap => 'Połączenie 1-wtykowe';
@override String get paste => 'Wklej adres URL';
@override late final _TranslationsSettingsWalletErrorPl error = _TranslationsSettingsWalletErrorPl._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorPl extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorPl implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Nie można edytować profilu po wylogowaniu';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorPl extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Nie można połączyć portfela po wylogowaniu';
@override String get nwc_auth_event_not_found => 'Nie znaleziono zdarzenia autoryzacji portfela';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsPl {
@ -339,37 +382,38 @@ extension on TranslationsPl {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n,
one: '1 przeglądarka',
other: '${n} widzowie',
other: '{n:decimalPattern} widzów',
);
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.notification': return ({required Object name}) => '${name} został uruchomiony!';
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,30 +424,41 @@ 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 'button.connect': return 'Połączenie';
case 'button.settings': return 'Ustawienia';
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.button_connect_wallet': return 'Connect Wallet';
case 'zap.copy': return 'Skopiowane do schowka';
case 'zap.error.invalid_custom_amount': return 'Nieprawidłowa kwota niestandardowa';
case 'zap.error.no_wallet': return 'Brak zainstalowanego portfela Lightning';
case 'zap.error.no_lud16': return 'Nie znaleziono adresu pioruna';
case 'profile.past_streams': return 'Poprzednie strumienie';
case 'profile.edit.display_name': return 'Wyświetlana nazwa';
case 'profile.edit.about': return 'O';
case 'profile.edit.nip05': return 'Adres Nostr';
case 'profile.edit.lud16': return 'Adres błyskawicy';
case 'profile.edit.error.logged_out': return 'Nie można edytować profilu po wylogowaniu';
case 'settings.button_profile': return 'Edytuj profil';
case 'settings.button_wallet': return 'Ustawienia portfela';
case 'settings.profile.display_name': return 'Wyświetlana nazwa';
case 'settings.profile.about': return 'O';
case 'settings.profile.nip05': return 'Adres Nostr';
case 'settings.profile.lud16': return 'Adres błyskawicy';
case 'settings.profile.error.logged_out': return 'Nie można edytować profilu po wylogowaniu';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Odłącz portfel';
case 'settings.wallet.connect_1tap': return 'Połączenie 1-wtykowe';
case 'settings.wallet.paste': return 'Wklej adres URL';
case 'settings.wallet.error.logged_out': return 'Nie można połączyć portfela po wylogowaniu';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Nie znaleziono zdarzenia autoryzacji portfela';
case 'login.username': return 'Nazwa użytkownika';
case 'login.amber': return 'Zaloguj się za pomocą Amber';
case 'login.key': return 'Logowanie za pomocą klucza';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsPt implements Translations {
/// Número de espectadores da transmissão
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n,
one: '1 visualizador',
other: '${n} espectadores',
other: '${NumberFormat.decimalPattern('pt').format(n)} espectadores',
);
@override late final _TranslationsStreamPt stream = _TranslationsStreamPt._(_root);
@ -66,36 +67,38 @@ class TranslationsPt implements Translations {
@override late final _TranslationsZapPt zap = _TranslationsZapPt._(_root);
@override late final _TranslationsProfilePt profile = _TranslationsProfilePt._(_root);
@override late final _TranslationsSettingsPt settings = _TranslationsSettingsPt._(_root);
@override late final _TranslationsLoginPt login = _TranslationsLoginPt._(_root);
}
// 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 String notification({required Object name}) => '${name} foi ao ar!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonPt implements TranslationsButtonEn {
@override String get unmute => 'Desmutar';
@override String get share => 'Compartilhar';
@override String get save => 'Salvar';
@override String get connect => 'Conectar';
@override String get settings => 'Configurações';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Conectar carteira';
@override String get copy => 'Copiado para a área de transferência';
@override late final _TranslationsZapErrorPt error = _TranslationsZapErrorPt._(_root);
}
// 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
// Translations
@override String get past_streams => 'Transmissões Passadas';
@override late final _TranslationsProfileEditPt edit = _TranslationsProfileEditPt._(_root);
}
// Path: settings
class _TranslationsSettingsPt extends TranslationsSettingsEn {
_TranslationsSettingsPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Editar perfil';
@override String get button_wallet => 'Configurações da carteira';
@override late final _TranslationsSettingsProfilePt profile = _TranslationsSettingsProfilePt._(_root);
@override late final _TranslationsSettingsWalletPt wallet = _TranslationsSettingsWalletPt._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorPt implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Nenhum endereço de raio encontrado';
}
// Path: profile.edit
class _TranslationsProfileEditPt implements TranslationsProfileEditEn {
_TranslationsProfileEditPt._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfilePt extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfilePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get display_name => 'Nome de exibição';
@override String get about => 'Sobre';
@override String get nip05 => 'Endereço do Nostr';
@override String get lud16 => 'Endereço Lightning';
@override late final _TranslationsProfileEditErrorPt error = _TranslationsProfileEditErrorPt._(_root);
@override String get nip05 => 'Endereço Nostr';
@override String get lud16 => 'Endereço para relâmpagos';
@override late final _TranslationsSettingsProfileErrorPt error = _TranslationsSettingsProfileErrorPt._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletPt extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Carteira Connect (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Desconectar carteira';
@override String get connect_1tap => 'Conexão de 1 torneira';
@override String get paste => 'Colar URL';
@override late final _TranslationsSettingsWalletErrorPt error = _TranslationsSettingsWalletErrorPt._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorPt extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorPt implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Não é possível editar o perfil quando se está desconectado';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorPt extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Não consigo conectar a carteira quando estou desconectado';
@override String get nwc_auth_event_not_found => 'Nenhum evento de autenticação de carteira encontrado';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsPt {
@ -339,37 +382,38 @@ extension on TranslationsPt {
case 'anon': return 'Anônimo';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n,
one: '1 visualizador',
other: '${n} espectadores',
other: '${NumberFormat.decimalPattern('pt').format(n)} espectadores',
);
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.notification': return ({required Object name}) => '${name} foi ao ar!';
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,30 +424,41 @@ 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 'button.connect': return 'Conectar';
case 'button.settings': return 'Configurações';
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.button_connect_wallet': return 'Conectar carteira';
case 'zap.copy': return 'Copiado para a área de transferência';
case 'zap.error.invalid_custom_amount': return 'Valor personalizado inválido';
case 'zap.error.no_wallet': return 'Nenhuma carteira lightning instalada';
case 'zap.error.no_lud16': return 'Nenhum endereço de raio encontrado';
case 'profile.past_streams': return 'Transmissões Passadas';
case 'profile.edit.display_name': return 'Nome de exibição';
case 'profile.edit.about': return 'Sobre';
case 'profile.edit.nip05': return 'Endereço do Nostr';
case 'profile.edit.lud16': return 'Endereço Lightning';
case 'profile.edit.error.logged_out': return 'Não é possível editar o perfil quando se está desconectado';
case 'settings.button_profile': return 'Editar perfil';
case 'settings.button_wallet': return 'Configurações da carteira';
case 'settings.profile.display_name': return 'Nome de exibição';
case 'settings.profile.about': return 'Sobre';
case 'settings.profile.nip05': return 'Endereço Nostr';
case 'settings.profile.lud16': return 'Endereço para relâmpagos';
case 'settings.profile.error.logged_out': return 'Não é possível editar o perfil quando se está desconectado';
case 'settings.wallet.connect_wallet': return 'Carteira Connect (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Desconectar carteira';
case 'settings.wallet.connect_1tap': return 'Conexão de 1 torneira';
case 'settings.wallet.paste': return 'Colar URL';
case 'settings.wallet.error.logged_out': return 'Não consigo conectar a carteira quando estou desconectado';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Nenhum evento de autenticação de carteira encontrado';
case 'login.username': return 'Nome de usuário';
case 'login.amber': return 'Faça login com o Amber';
case 'login.key': return 'Login com chave';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsRo implements Translations {
/// Numărul de telespectatori ai fluxului
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ro'))(n,
one: '1 vizualizator',
other: '${n} telespectatori',
other: '${NumberFormat.decimalPattern('ro').format(n)} telespectatori',
);
@override late final _TranslationsStreamRo stream = _TranslationsStreamRo._(_root);
@ -66,36 +67,38 @@ class TranslationsRo implements Translations {
@override late final _TranslationsZapRo zap = _TranslationsZapRo._(_root);
@override late final _TranslationsProfileRo profile = _TranslationsProfileRo._(_root);
@override late final _TranslationsSettingsRo settings = _TranslationsSettingsRo._(_root);
@override late final _TranslationsLoginRo login = _TranslationsLoginRo._(_root);
}
// 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 String notification({required Object name}) => '${name} a intrat în direct!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonRo implements TranslationsButtonEn {
@override String get unmute => 'Dezactivați';
@override String get share => 'Share';
@override String get save => 'Salvați';
@override String get connect => 'Conectare';
@override String get settings => 'Setări';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Conectați portofelul';
@override String get copy => 'Copiat în clipboard';
@override late final _TranslationsZapErrorRo error = _TranslationsZapErrorRo._(_root);
}
// 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
// Translations
@override String get past_streams => 'Fluxuri trecute';
@override late final _TranslationsProfileEditRo edit = _TranslationsProfileEditRo._(_root);
}
// Path: settings
class _TranslationsSettingsRo extends TranslationsSettingsEn {
_TranslationsSettingsRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Editare profil';
@override String get button_wallet => 'Setări portofel';
@override late final _TranslationsSettingsProfileRo profile = _TranslationsSettingsProfileRo._(_root);
@override late final _TranslationsSettingsWalletRo wallet = _TranslationsSettingsWalletRo._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorRo implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Nu a fost găsită nicio adresă de fulgere';
}
// Path: profile.edit
class _TranslationsProfileEditRo implements TranslationsProfileEditEn {
_TranslationsProfileEditRo._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileRo extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@ -257,12 +275,26 @@ class _TranslationsProfileEditRo implements TranslationsProfileEditEn {
@override String get about => 'Despre';
@override String get nip05 => 'Adresa Nostr';
@override String get lud16 => 'Adresa fulgerului';
@override late final _TranslationsProfileEditErrorRo error = _TranslationsProfileEditErrorRo._(_root);
@override late final _TranslationsSettingsProfileErrorRo error = _TranslationsSettingsProfileErrorRo._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletRo extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Conectați portofelul (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Deconectați portofelul';
@override String get connect_1tap => 'Conexiune 1-Tap';
@override String get paste => 'Lipiți URL';
@override late final _TranslationsSettingsWalletErrorRo error = _TranslationsSettingsWalletErrorRo._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorRo extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorRo implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Nu pot edita profilul când sunt deconectat';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorRo extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Nu puteți conecta portofelul atunci când sunteți deconectat';
@override String get nwc_auth_event_not_found => 'Nu a fost găsit niciun eveniment de autorizare a portofelului';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsRo {
@ -339,37 +382,38 @@ extension on TranslationsRo {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ro'))(n,
one: '1 vizualizator',
other: '${n} telespectatori',
other: '${NumberFormat.decimalPattern('ro').format(n)} telespectatori',
);
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.notification': return ({required Object name}) => '${name} a intrat în direct!';
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,30 +424,41 @@ 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 'button.connect': return 'Conectare';
case 'button.settings': return 'Setări';
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.button_connect_wallet': return 'Conectați portofelul';
case 'zap.copy': return 'Copiat în clipboard';
case 'zap.error.invalid_custom_amount': return 'Sumă personalizată invalidă';
case 'zap.error.no_wallet': return 'Nu este instalat niciun portofel Lightning';
case 'zap.error.no_lud16': return 'Nu a fost găsită nicio adresă de fulgere';
case 'profile.past_streams': return 'Fluxuri trecute';
case 'profile.edit.display_name': return 'Nume afișat';
case 'profile.edit.about': return 'Despre';
case 'profile.edit.nip05': return 'Adresa Nostr';
case 'profile.edit.lud16': return 'Adresa fulgerului';
case 'profile.edit.error.logged_out': return 'Nu pot edita profilul când sunt deconectat';
case 'settings.button_profile': return 'Editare profil';
case 'settings.button_wallet': return 'Setări portofel';
case 'settings.profile.display_name': return 'Nume afișat';
case 'settings.profile.about': return 'Despre';
case 'settings.profile.nip05': return 'Adresa Nostr';
case 'settings.profile.lud16': return 'Adresa fulgerului';
case 'settings.profile.error.logged_out': return 'Nu pot edita profilul când sunt deconectat';
case 'settings.wallet.connect_wallet': return 'Conectați portofelul (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Deconectați portofelul';
case 'settings.wallet.connect_1tap': return 'Conexiune 1-Tap';
case 'settings.wallet.paste': return 'Lipiți URL';
case 'settings.wallet.error.logged_out': return 'Nu puteți conecta portofelul atunci când sunteți deconectat';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Nu a fost găsit niciun eveniment de autorizare a portofelului';
case 'login.username': return 'Nume utilizator';
case 'login.amber': return 'Conectați-vă cu Amber';
case 'login.key': return 'Autentificare cu cheie';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsRu implements Translations {
/// Количество зрителей потока
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
one: '1 зритель',
other: '${n} зрителей',
other: '${NumberFormat.decimalPattern('ru').format(n)} зрителей',
);
@override late final _TranslationsStreamRu stream = _TranslationsStreamRu._(_root);
@ -66,36 +67,38 @@ class TranslationsRu implements Translations {
@override late final _TranslationsZapRu zap = _TranslationsZapRu._(_root);
@override late final _TranslationsProfileRu profile = _TranslationsProfileRu._(_root);
@override late final _TranslationsSettingsRu settings = _TranslationsSettingsRu._(_root);
@override late final _TranslationsLoginRu login = _TranslationsLoginRu._(_root);
}
// 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 String notification({required Object name}) => '${name} запустился!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonRu implements TranslationsButtonEn {
@override String get unmute => 'Включить уведомления';
@override String get share => 'Поделиться';
@override String get save => 'Сохранить';
@override String get connect => 'Подключайтесь';
@override String get settings => 'Настройки';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Подключить кошелек';
@override String get copy => 'Скопировано в буфер обмена';
@override late final _TranslationsZapErrorRu error = _TranslationsZapErrorRu._(_root);
}
// 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
// Translations
@override String get past_streams => 'Предыдущие трансляции';
@override late final _TranslationsProfileEditRu edit = _TranslationsProfileEditRu._(_root);
}
// Path: settings
class _TranslationsSettingsRu extends TranslationsSettingsEn {
_TranslationsSettingsRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Редактировать профиль';
@override String get button_wallet => 'Настройки кошелька';
@override late final _TranslationsSettingsProfileRu profile = _TranslationsSettingsProfileRu._(_root);
@override late final _TranslationsSettingsWalletRu wallet = _TranslationsSettingsWalletRu._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorRu implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Адрес молнии не найден';
}
// Path: profile.edit
class _TranslationsProfileEditRu implements TranslationsProfileEditEn {
_TranslationsProfileEditRu._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileRu extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get display_name => 'Отображаемое имя';
@override String get about => 'О себе';
@override String get nip05 => 'Nostr адрес';
@override String get lud16 => 'Lightning Адрес';
@override late final _TranslationsProfileEditErrorRu error = _TranslationsProfileEditErrorRu._(_root);
@override String get about => 'О сайте';
@override String get nip05 => 'Адрес Ностр';
@override String get lud16 => 'Адрес молнии';
@override late final _TranslationsSettingsProfileErrorRu error = _TranslationsSettingsProfileErrorRu._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletRu extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Кошелек Connect (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Отключить кошелек';
@override String get connect_1tap => '1-кратное соединение';
@override String get paste => 'Вставить URL';
@override late final _TranslationsSettingsWalletErrorRu error = _TranslationsSettingsWalletErrorRu._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorRu extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorRu implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Невозможно редактировать профиль при выходе из системы';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorRu extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Невозможно подключить кошелек при выходе из системы';
@override String get nwc_auth_event_not_found => 'Событие аутентификации кошелька не найдено';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsRu {
@ -339,37 +382,38 @@ extension on TranslationsRu {
case 'anon': return 'Аноним';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
one: '1 зритель',
other: '${n} зрителей',
other: '${NumberFormat.decimalPattern('ru').format(n)} зрителей',
);
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.notification': return ({required Object name}) => '${name} запустился!';
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,30 +424,41 @@ 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 'button.connect': return 'Подключайтесь';
case 'button.settings': 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 '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.button_connect_wallet': return 'Подключить кошелек';
case 'zap.copy': return 'Скопировано в буфер обмена';
case 'zap.error.invalid_custom_amount': return 'Недопустимая пользовательская сумма';
case 'zap.error.no_wallet': return 'Кошелек молнии не установлен';
case 'zap.error.no_lud16': return 'Адрес молнии не найден';
case 'profile.past_streams': return 'Предыдущие трансляции';
case 'profile.edit.display_name': return 'Отображаемое имя';
case 'profile.edit.about': return 'О себе';
case 'profile.edit.nip05': return 'Nostr адрес';
case 'profile.edit.lud16': return 'Lightning Адрес';
case 'profile.edit.error.logged_out': return 'Невозможно редактировать профиль при выходе из системы';
case 'settings.button_profile': return 'Редактировать профиль';
case 'settings.button_wallet': return 'Настройки кошелька';
case 'settings.profile.display_name': return 'Отображаемое имя';
case 'settings.profile.about': return 'О сайте';
case 'settings.profile.nip05': return 'Адрес Ностр';
case 'settings.profile.lud16': return 'Адрес молнии';
case 'settings.profile.error.logged_out': return 'Невозможно редактировать профиль при выходе из системы';
case 'settings.wallet.connect_wallet': return 'Кошелек Connect (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Отключить кошелек';
case 'settings.wallet.connect_1tap': return '1-кратное соединение';
case 'settings.wallet.paste': return 'Вставить URL';
case 'settings.wallet.error.logged_out': return 'Невозможно подключить кошелек при выходе из системы';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Событие аутентификации кошелька не найдено';
case 'login.username': return 'Имя пользователя';
case 'login.amber': return 'Войти с помощью Amber';
case 'login.key': return 'Вход в систему с помощью ключа';

View File

@ -1,416 +0,0 @@
///
/// Generated file. Do not edit.
///
// 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: <root>
class TranslationsSr implements 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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.sr,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <sr>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
late final TranslationsSr _root = this; // ignore: unused_field
@override
TranslationsSr $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsSr(meta: meta ?? this.$meta);
// Translations
/// Text prompting user to hit avatar placeholder to begin upload
@override String get upload_avatar => 'Upload Avatar';
/// Heading over listed top streamers by zaps
@override String get most_zapped_streamers => 'Most Zapped Streamers';
/// No user found when searching
@override String get no_user_found => 'No user found';
/// An anonymous user
@override String get anon => 'Anon';
/// Number of viewers of the stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sr'))(n,
one: '1 viewer',
other: '${n} viewers',
);
@override late final _TranslationsStreamSr stream = _TranslationsStreamSr._(_root);
@override late final _TranslationsGoalSr goal = _TranslationsGoalSr._(_root);
@override late final _TranslationsButtonSr button = _TranslationsButtonSr._(_root);
@override late final _TranslationsEmbedSr embed = _TranslationsEmbedSr._(_root);
/// Headings on stream lists by stream type live/ended/planned etc.
@override late final _TranslationsStreamListSr stream_list = _TranslationsStreamListSr._(_root);
@override late final _TranslationsZapSr zap = _TranslationsZapSr._(_root);
@override late final _TranslationsProfileSr profile = _TranslationsProfileSr._(_root);
@override late final _TranslationsLoginSr login = _TranslationsLoginSr._(_root);
}
// Path: stream
class _TranslationsStreamSr implements TranslationsStreamEn {
_TranslationsStreamSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusSr status = _TranslationsStreamStatusSr._(_root);
@override String started({ required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatSr chat = _TranslationsStreamChatSr._(_root);
}
// Path: goal
class _TranslationsGoalSr implements TranslationsGoalEn {
_TranslationsGoalSr._(this._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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonSr implements TranslationsButtonEn {
_TranslationsButtonSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
/// Button text for the login button
@override String get login => 'Login';
@override String get logout => 'Logout';
@override String get edit_profile => 'Edit Profile';
/// Button text for the follow button
@override String get follow => 'Follow';
/// Button text for the unfollow button
@override String get unfollow => 'Unfollow';
@override String get mute => 'Mute';
@override String get unmute => 'Unmute';
@override String get share => 'Share';
@override String get save => 'Save';
}
// Path: embed
class _TranslationsEmbedSr implements TranslationsEmbedEn {
_TranslationsEmbedSr._(this._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}';
}
// Path: stream_list
class _TranslationsStreamListSr implements TranslationsStreamListEn {
_TranslationsStreamListSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get following => 'Following';
@override String get live => 'Live';
@override String get planned => 'Planned';
@override String get ended => 'Ended';
}
// Path: zap
class _TranslationsZapSr implements TranslationsZapEn {
_TranslationsZapSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@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 get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@override late final _TranslationsZapErrorSr error = _TranslationsZapErrorSr._(_root);
}
// Path: profile
class _TranslationsProfileSr implements TranslationsProfileEn {
_TranslationsProfileSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Past Streams';
@override late final _TranslationsProfileEditSr edit = _TranslationsProfileEditSr._(_root);
}
// Path: login
class _TranslationsLoginSr implements TranslationsLoginEn {
_TranslationsLoginSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get username => 'Username';
@override String get amber => 'Login with Amber';
@override String get key => 'Login with Key';
@override String get create => 'Create Account';
@override late final _TranslationsLoginErrorSr error = _TranslationsLoginErrorSr._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusSr implements TranslationsStreamStatusEn {
_TranslationsStreamStatusSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'PLANNED';
}
// Path: stream.chat
class _TranslationsStreamChatSr implements TranslationsStreamChatEn {
_TranslationsStreamChatSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
@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: [
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: [
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);
@override late final _TranslationsStreamChatRaidSr raid = _TranslationsStreamChatRaidSr._(_root);
}
// Path: zap.error
class _TranslationsZapErrorSr implements TranslationsZapErrorEn {
_TranslationsZapErrorSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Invalid custom amount';
@override String get no_wallet => 'No lightning wallet installed';
@override String get no_lud16 => 'No lightning address found';
}
// Path: profile.edit
class _TranslationsProfileEditSr implements TranslationsProfileEditEn {
_TranslationsProfileEditSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get display_name => 'Display Name';
@override String get about => 'About';
@override String get nip05 => 'Nostr Address';
@override String get lud16 => 'Lightning Address';
@override late final _TranslationsProfileEditErrorSr error = _TranslationsProfileEditErrorSr._(_root);
}
// Path: login.error
class _TranslationsLoginErrorSr implements TranslationsLoginErrorEn {
_TranslationsLoginErrorSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Invalid key';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteSr implements TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
/// Label on the chat message input box
@override String get label => 'Write message';
/// Chat input message shown when the user is logged in only with pubkey
@override String get no_signer => 'Can\'t write messages with npub login';
/// Chat input message shown when the user is logged out
@override String get login => 'Please login to send messages';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeSr implements TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
/// Heading over list of users who are awarded a badge
@override String get awarded_to => 'Awarded to:';
}
// Path: stream.chat.raid
class _TranslationsStreamChatRaidSr implements TranslationsStreamChatRaidEn {
_TranslationsStreamChatRaidSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
@override String to({ required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
@override String from({ required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
@override String countdown({ required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
class _TranslationsProfileEditErrorSr implements TranslationsProfileEditErrorEn {
_TranslationsProfileEditErrorSr._(this._root);
final TranslationsSr _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Cant edit profile when logged out';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsSr {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Upload Avatar';
case 'most_zapped_streamers': return 'Most Zapped Streamers';
case 'no_user_found': return 'No user found';
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sr'))(n,
one: '1 viewer',
other: '${n} viewers',
);
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.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: [
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: [
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
case 'button.edit_profile': return 'Edit Profile';
case 'button.follow': return 'Follow';
case 'button.unfollow': return 'Unfollow';
case 'button.mute': return 'Mute';
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 '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.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': return 'Zap';
case 'zap.button_open_wallet': return 'Open in 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';
case 'zap.error.no_lud16': return 'No lightning address found';
case 'profile.past_streams': return 'Past Streams';
case 'profile.edit.display_name': return 'Display Name';
case 'profile.edit.about': return 'About';
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 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
case 'login.create': return 'Create Account';
case 'login.error.invalid_key': return 'Invalid key';
default: return null;
}
}
}

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -38,22 +39,22 @@ class TranslationsSv implements Translations {
// Translations
/// Text som uppmanar användaren att trycka på avatarplatshållaren för att påbörja uppladdningen
/// Text som uppmanar användaren att trycka på avatar platshållaren för att påbörja uppladdningen
@override String get upload_avatar => 'Ladda upp avatar';
/// Rubrik över listade toppstreamers av zaps
@override String get most_zapped_streamers => 'De flesta zappade streamers';
/// Rubrik över listade topp streamers av zaps
@override String get most_zapped_streamers => 'De flest zappade streamers';
/// Ingen användare hittades vid sökning
@override String get no_user_found => 'Ingen användare hittades';
/// En anonym användare
@override String get anon => 'Anon';
@override String get anon => 'Anno';
/// Antal tittare på streamingen
/// Antal tittare på strömmingen
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n,
one: '1 tittare',
other: '${n} tittare',
other: '${NumberFormat.decimalPattern('sv').format(n)} tittare',
);
@override late final _TranslationsStreamSv stream = _TranslationsStreamSv._(_root);
@ -66,36 +67,38 @@ class TranslationsSv implements Translations {
@override late final _TranslationsZapSv zap = _TranslationsZapSv._(_root);
@override late final _TranslationsProfileSv profile = _TranslationsProfileSv._(_root);
@override late final _TranslationsSettingsSv settings = _TranslationsSettingsSv._(_root);
@override late final _TranslationsLoginSv login = _TranslationsLoginSv._(_root);
}
// 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}) => 'Startad ${timestamp}';
@override String notification({required Object name}) => '${name} gick live!';
@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
@ -110,30 +113,32 @@ class _TranslationsButtonSv implements TranslationsButtonEn {
/// Knapptext för följ-knappen
@override String get follow => 'Följ';
/// Knapptext för avföljningsknappen
/// Knapptext för sluta följa knappen
@override String get unfollow => 'Sluta följa';
@override String get mute => 'Tysta';
@override String get unmute => 'Avtysta';
@override String get share => 'Dela';
@override String get save => 'Spara';
@override String get connect => 'Anslut';
@override String get settings => 'Inställningar';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Anslut plånbok';
@override String get copy => 'Kopieras till urklipp';
@override late final _TranslationsZapErrorSv error = _TranslationsZapErrorSv._(_root);
}
// 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
// Translations
@override String get past_streams => 'Tidigare streamar';
@override late final _TranslationsProfileEditSv edit = _TranslationsProfileEditSv._(_root);
}
// Path: settings
class _TranslationsSettingsSv extends TranslationsSettingsEn {
_TranslationsSettingsSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Redigera profil';
@override String get button_wallet => 'Inställningar för plånbok';
@override late final _TranslationsSettingsProfileSv profile = _TranslationsSettingsProfileSv._(_root);
@override late final _TranslationsSettingsWalletSv wallet = _TranslationsSettingsWalletSv._(_root);
}
// 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 +206,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 +218,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
/// Streama slutade sidfot längst ned i 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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorSv implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Ingen blixtadress hittades';
}
// Path: profile.edit
class _TranslationsProfileEditSv implements TranslationsProfileEditEn {
_TranslationsProfileEditSv._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileSv extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get display_name => 'Visa namn';
@override String get about => 'Om';
@override String get nip05 => 'Nostr Adress';
@override String get nip05 => 'Nostr adress';
@override String get lud16 => 'Lightning-adress';
@override late final _TranslationsProfileEditErrorSv error = _TranslationsProfileEditErrorSv._(_root);
@override late final _TranslationsSettingsProfileErrorSv error = _TranslationsSettingsProfileErrorSv._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletSv extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Anslut plånbok (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Koppla bort plånboken';
@override String get connect_1tap => '1-tryck anslutning';
@override String get paste => 'Klistra in URL';
@override late final _TranslationsSettingsWalletErrorSv error = _TranslationsSettingsWalletErrorSv._(_root);
}
// 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 +303,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
@ -281,46 +313,46 @@ class _TranslationsStreamChatWriteSv implements TranslationsStreamChatWriteEn {
/// Etikett på inmatningsrutan för chattmeddelanden
@override String get label => 'Skriv meddelande';
/// Chattinmatningsmeddelande som visas när användaren endast är inloggad med pubkey
@override String get no_signer => 'Det går inte att skriva meddelanden med npub-inloggning';
/// Chattinmatningsmeddelande som visas när användaren endast är inloggad med publik nyckel
@override String get no_signer => 'Det går inte att skriva meddelanden med n-pub inloggning';
/// Chattinmatningsmeddelande som visas när användaren är utloggad
@override String get login => 'Logga in för att skicka meddelanden';
}
// 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
// Translations
/// Rubrik över lista över användare som tilldelats en badge
/// Rubrik över listan över användare som tilldelas ett märke
@override String get awarded_to => 'Tilldelas till:';
}
// 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}';
/// Chatt raid meddelande till en annan ström
@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}';
/// Chatt raid meddelande från en annan ström
@override String from({required Object name}) => 'RAID FRÅN ${name}';
/// Nedräkningstimer för auto-raiding
@override String countdown({ required Object time}) => 'Raiding ${time}';
/// Nedräkningstimer för auto- radiering
@override String countdown({required Object time}) => 'Radiering i ${time}';
}
// Path: profile.edit.error
class _TranslationsProfileEditErrorSv implements TranslationsProfileEditErrorEn {
_TranslationsProfileEditErrorSv._(this._root);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorSv extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
@ -328,48 +360,60 @@ class _TranslationsProfileEditErrorSv implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Kan inte redigera profil när jag är utloggad';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorSv extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Kan inte ansluta plånbok när du är utloggad';
@override String get nwc_auth_event_not_found => 'Inget autentiseringshändelse för plånbok hittades';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsSv {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Ladda upp avatar';
case 'most_zapped_streamers': return 'De flesta zappade streamers';
case 'most_zapped_streamers': return 'De flest zappade streamers';
case 'no_user_found': return 'Ingen användare hittades';
case 'anon': return 'Anon';
case 'anon': return 'Anno';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n,
one: '1 tittare',
other: '${n} tittare',
other: '${NumberFormat.decimalPattern('sv').format(n)} tittare',
);
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}) => 'Startad ${timestamp}';
case 'stream.notification': return ({required Object name}) => '${name} gick live!';
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.no_signer': return 'Det går inte att skriva meddelanden med n-pub 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 ${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}) => 'Radiering i ${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,30 +424,41 @@ 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 'button.connect': return 'Anslut';
case 'button.settings': return 'Inställningar';
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.button_connect_wallet': return 'Anslut plånbok';
case 'zap.copy': return 'Kopieras till urklipp';
case 'zap.error.invalid_custom_amount': return 'Ogiltigt anpassat belopp';
case 'zap.error.no_wallet': return 'Ingen blixtplånbok installerad';
case 'zap.error.no_lud16': return 'Ingen blixtadress hittades';
case 'profile.past_streams': return 'Tidigare streamar';
case 'profile.edit.display_name': return 'Visa namn';
case 'profile.edit.about': return 'Om';
case 'profile.edit.nip05': return 'Nostr Adress';
case 'profile.edit.lud16': return 'Lightning-adress';
case 'profile.edit.error.logged_out': return 'Kan inte redigera profil när jag är utloggad';
case 'settings.button_profile': return 'Redigera profil';
case 'settings.button_wallet': return 'Inställningar för plånbok';
case 'settings.profile.display_name': return 'Visa namn';
case 'settings.profile.about': return 'Om';
case 'settings.profile.nip05': return 'Nostr adress';
case 'settings.profile.lud16': return 'Lightning-adress';
case 'settings.profile.error.logged_out': return 'Kan inte redigera profil när jag är utloggad';
case 'settings.wallet.connect_wallet': return 'Anslut plånbok (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Koppla bort plånboken';
case 'settings.wallet.connect_1tap': return '1-tryck anslutning';
case 'settings.wallet.paste': return 'Klistra in URL';
case 'settings.wallet.error.logged_out': return 'Kan inte ansluta plånbok när du är utloggad';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Inget autentiseringshändelse för plånbok hittades';
case 'login.username': return 'Användarnamn';
case 'login.amber': return 'Logga in med Amber';
case 'login.key': return 'Logga in med nyckel';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsTr implements Translations {
/// Akışı izleyenlerin sayısı
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('tr'))(n,
one: '1 izleyici',
other: '${n} izleyiciler',
other: '${NumberFormat.decimalPattern('tr').format(n)} izleyiciler',
);
@override late final _TranslationsStreamTr stream = _TranslationsStreamTr._(_root);
@ -66,36 +67,38 @@ class TranslationsTr implements Translations {
@override late final _TranslationsZapTr zap = _TranslationsZapTr._(_root);
@override late final _TranslationsProfileTr profile = _TranslationsProfileTr._(_root);
@override late final _TranslationsSettingsTr settings = _TranslationsSettingsTr._(_root);
@override late final _TranslationsLoginTr login = _TranslationsLoginTr._(_root);
}
// 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 String notification({required Object name}) => '${name} yayına girdi!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonTr implements TranslationsButtonEn {
@override String get unmute => 'Sesi aç';
@override String get share => 'Paylaş';
@override String get save => 'Kaydet';
@override String get connect => 'Bağlan';
@override String get settings => 'Ayarlar';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Cüzdan Bağlayın';
@override String get copy => 'Panoya kopyalandı';
@override late final _TranslationsZapErrorTr error = _TranslationsZapErrorTr._(_root);
}
// 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
// Translations
@override String get past_streams => 'Geçmiş Akışlar';
@override late final _TranslationsProfileEditTr edit = _TranslationsProfileEditTr._(_root);
}
// Path: settings
class _TranslationsSettingsTr extends TranslationsSettingsEn {
_TranslationsSettingsTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Profil Düzenle';
@override String get button_wallet => 'Cüzdan Ayarları';
@override late final _TranslationsSettingsProfileTr profile = _TranslationsSettingsProfileTr._(_root);
@override late final _TranslationsSettingsWalletTr wallet = _TranslationsSettingsWalletTr._(_root);
}
// 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 +206,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 +218,35 @@ 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 '),
const TextSpan(text: ' '),
time,
], style: style, recognizer: recognizer);
const TextSpan(text: 'için'),
]);
/// 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 +254,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
@ -246,9 +265,9 @@ class _TranslationsZapErrorTr implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Yıldırım adresi bulunamadı';
}
// Path: profile.edit
class _TranslationsProfileEditTr implements TranslationsProfileEditEn {
_TranslationsProfileEditTr._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileTr extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@ -257,12 +276,26 @@ class _TranslationsProfileEditTr implements TranslationsProfileEditEn {
@override String get about => 'Hakkında';
@override String get nip05 => 'Nostr Adres';
@override String get lud16 => 'Yıldırım Adres';
@override late final _TranslationsProfileEditErrorTr error = _TranslationsProfileEditErrorTr._(_root);
@override late final _TranslationsSettingsProfileErrorTr error = _TranslationsSettingsProfileErrorTr._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletTr extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Cüzdan (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Cüzdan Bağlantısını Kes';
@override String get connect_1tap => '1-Tap Bağlantı';
@override String get paste => 'URL Yapıştır';
@override late final _TranslationsSettingsWalletErrorTr error = _TranslationsSettingsWalletErrorTr._(_root);
}
// 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 +304,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 +322,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 +334,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}';
/// 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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorTr extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
@ -328,6 +361,17 @@ class _TranslationsProfileEditErrorTr implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Çıkış yapıldığında profil düzenlenemiyor';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorTr extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Oturumu kapattığımda cüzdana bağlanamıyorum';
@override String get nwc_auth_event_not_found => 'Cüzdan yetkilendirme olayı bulunamadı';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsTr {
@ -339,37 +383,39 @@ extension on TranslationsTr {
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('tr'))(n,
one: '1 izleyici',
other: '${n} izleyiciler',
other: '${NumberFormat.decimalPattern('tr').format(n)} izleyiciler',
);
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.notification': return ({required Object name}) => '${name} yayına girdi!';
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 '),
const TextSpan(text: ' '),
time,
], style: style, recognizer: recognizer);
const TextSpan(text: 'için'),
]);
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}';
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,30 +426,41 @@ 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 'button.connect': return 'Bağlan';
case 'button.settings': return 'Ayarlar';
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.button_connect_wallet': return 'Cüzdan Bağlayın';
case 'zap.copy': return 'Panoya kopyalandı';
case 'zap.error.invalid_custom_amount': return 'Geçersiz özel tutar';
case 'zap.error.no_wallet': return 'Lightning cüzdan yüklü değil';
case 'zap.error.no_lud16': return 'Yıldırım adresi bulunamadı';
case 'profile.past_streams': return 'Geçmiş Akışlar';
case 'profile.edit.display_name': return 'Ekran Adı';
case 'profile.edit.about': return 'Hakkında';
case 'profile.edit.nip05': return 'Nostr Adres';
case 'profile.edit.lud16': return 'Yıldırım Adres';
case 'profile.edit.error.logged_out': return 'Çıkış yapıldığında profil düzenlenemiyor';
case 'settings.button_profile': return 'Profil Düzenle';
case 'settings.button_wallet': return 'Cüzdan Ayarları';
case 'settings.profile.display_name': return 'Ekran Adı';
case 'settings.profile.about': return 'Hakkında';
case 'settings.profile.nip05': return 'Nostr Adres';
case 'settings.profile.lud16': return 'Yıldırım Adres';
case 'settings.profile.error.logged_out': return 'Çıkış yapıldığında profil düzenlenemiyor';
case 'settings.wallet.connect_wallet': return 'Connect Cüzdan (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Cüzdan Bağlantısını Kes';
case 'settings.wallet.connect_1tap': return '1-Tap Bağlantı';
case 'settings.wallet.paste': return 'URL Yapıştır';
case 'settings.wallet.error.logged_out': return 'Oturumu kapattığımda cüzdana bağlanamıyorum';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Cüzdan yetkilendirme olayı bulunamadı';
case 'login.username': return 'Kullanıcı Adı';
case 'login.amber': return 'Amber ile Giriş Yapın';
case 'login.key': return 'Anahtar ile Giriş Yapın';

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsUk implements Translations {
/// Кількість глядачів стріму
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('uk'))(n,
one: '1 глядач',
other: '${n} глядачі',
other: '${NumberFormat.decimalPattern('uk').format(n)} глядачів',
);
@override late final _TranslationsStreamUk stream = _TranslationsStreamUk._(_root);
@ -66,36 +67,38 @@ class TranslationsUk implements Translations {
@override late final _TranslationsZapUk zap = _TranslationsZapUk._(_root);
@override late final _TranslationsProfileUk profile = _TranslationsProfileUk._(_root);
@override late final _TranslationsSettingsUk settings = _TranslationsSettingsUk._(_root);
@override late final _TranslationsLoginUk login = _TranslationsLoginUk._(_root);
}
// 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 String notification({required Object name}) => '${name} запрацював!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonUk implements TranslationsButtonEn {
@override String get unmute => 'Увімкнути звук.';
@override String get share => 'Поділіться';
@override String get save => 'Зберегти';
@override String get connect => 'Підключіться';
@override String get settings => 'Налаштування';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => 'Підключити гаманець';
@override String get copy => 'Скопійовано в буфер обміну';
@override late final _TranslationsZapErrorUk error = _TranslationsZapErrorUk._(_root);
}
// 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
// Translations
@override String get past_streams => 'Минулі потоки';
@override late final _TranslationsProfileEditUk edit = _TranslationsProfileEditUk._(_root);
}
// Path: settings
class _TranslationsSettingsUk extends TranslationsSettingsEn {
_TranslationsSettingsUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get button_profile => 'Редагувати профіль';
@override String get button_wallet => 'Налаштування гаманця';
@override late final _TranslationsSettingsProfileUk profile = _TranslationsSettingsProfileUk._(_root);
@override late final _TranslationsSettingsWalletUk wallet = _TranslationsSettingsWalletUk._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,9 +264,9 @@ class _TranslationsZapErrorUk implements TranslationsZapErrorEn {
@override String get no_lud16 => 'Адреса блискавки не знайдена';
}
// Path: profile.edit
class _TranslationsProfileEditUk implements TranslationsProfileEditEn {
_TranslationsProfileEditUk._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileUk extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@ -257,12 +275,26 @@ class _TranslationsProfileEditUk implements TranslationsProfileEditEn {
@override String get about => 'Про';
@override String get nip05 => 'Nostr Адреса';
@override String get lud16 => 'Блискавична адреса';
@override late final _TranslationsProfileEditErrorUk error = _TranslationsProfileEditErrorUk._(_root);
@override late final _TranslationsSettingsProfileErrorUk error = _TranslationsSettingsProfileErrorUk._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletUk extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Підключити гаманець (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Відключити гаманець';
@override String get connect_1tap => 'Підключення в 1 кран';
@override String get paste => 'Вставити URL-адресу';
@override late final _TranslationsSettingsWalletErrorUk error = _TranslationsSettingsWalletErrorUk._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorUk extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorUk implements TranslationsProfileEditErrorEn
@override String get logged_out => 'Неможливо редагувати профіль, коли ви вийшли з системи';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorUk extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Не вдається підключити гаманець, коли ви вийшли з системи';
@override String get nwc_auth_event_not_found => 'Не знайдено жодної події авторизації гаманця';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsUk {
@ -339,37 +382,38 @@ extension on TranslationsUk {
case 'anon': return 'Анонім.';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('uk'))(n,
one: '1 глядач',
other: '${n} глядачі',
other: '${NumberFormat.decimalPattern('uk').format(n)} глядачів',
);
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.notification': return ({required Object name}) => '${name} запрацював!';
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,30 +424,41 @@ 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 'button.connect': return 'Підключіться';
case 'button.settings': 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 '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.button_connect_wallet': return 'Підключити гаманець';
case 'zap.copy': return 'Скопійовано в буфер обміну';
case 'zap.error.invalid_custom_amount': return 'Неправильна сума замовлення';
case 'zap.error.no_wallet': return 'Не встановлено гаманець-блискавку';
case 'zap.error.no_lud16': return 'Адреса блискавки не знайдена';
case 'profile.past_streams': return 'Минулі потоки';
case 'profile.edit.display_name': return 'Ім\'я користувача';
case 'profile.edit.about': return 'Про';
case 'profile.edit.nip05': return 'Nostr Адреса';
case 'profile.edit.lud16': return 'Блискавична адреса';
case 'profile.edit.error.logged_out': return 'Неможливо редагувати профіль, коли ви вийшли з системи';
case 'settings.button_profile': return 'Редагувати профіль';
case 'settings.button_wallet': return 'Налаштування гаманця';
case 'settings.profile.display_name': return 'Ім\'я користувача';
case 'settings.profile.about': return 'Про';
case 'settings.profile.nip05': return 'Nostr Адреса';
case 'settings.profile.lud16': return 'Блискавична адреса';
case 'settings.profile.error.logged_out': return 'Неможливо редагувати профіль, коли ви вийшли з системи';
case 'settings.wallet.connect_wallet': return 'Підключити гаманець (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Відключити гаманець';
case 'settings.wallet.connect_1tap': return 'Підключення в 1 кран';
case 'settings.wallet.paste': return 'Вставити URL-адресу';
case 'settings.wallet.error.logged_out': return 'Не вдається підключити гаманець, коли ви вийшли з системи';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Не знайдено жодної події авторизації гаманця';
case 'login.username': return 'Ім\'я користувача';
case 'login.amber': return 'Увійдіть за допомогою Amber';
case 'login.key': return 'Увійдіть за допомогою ключа';

View File

@ -1,416 +0,0 @@
///
/// Generated file. Do not edit.
///
// 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: <root>
class TranslationsVi implements 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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.vi,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <vi>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
late final TranslationsVi _root = this; // ignore: unused_field
@override
TranslationsVi $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsVi(meta: meta ?? this.$meta);
// Translations
/// Text prompting user to hit avatar placeholder to begin upload
@override String get upload_avatar => 'Upload Avatar';
/// Heading over listed top streamers by zaps
@override String get most_zapped_streamers => 'Most Zapped Streamers';
/// No user found when searching
@override String get no_user_found => 'No user found';
/// An anonymous user
@override String get anon => 'Anon';
/// Number of viewers of the stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('vi'))(n,
one: '1 viewer',
other: '${n} viewers',
);
@override late final _TranslationsStreamVi stream = _TranslationsStreamVi._(_root);
@override late final _TranslationsGoalVi goal = _TranslationsGoalVi._(_root);
@override late final _TranslationsButtonVi button = _TranslationsButtonVi._(_root);
@override late final _TranslationsEmbedVi embed = _TranslationsEmbedVi._(_root);
/// Headings on stream lists by stream type live/ended/planned etc.
@override late final _TranslationsStreamListVi stream_list = _TranslationsStreamListVi._(_root);
@override late final _TranslationsZapVi zap = _TranslationsZapVi._(_root);
@override late final _TranslationsProfileVi profile = _TranslationsProfileVi._(_root);
@override late final _TranslationsLoginVi login = _TranslationsLoginVi._(_root);
}
// Path: stream
class _TranslationsStreamVi implements TranslationsStreamEn {
_TranslationsStreamVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override late final _TranslationsStreamStatusVi status = _TranslationsStreamStatusVi._(_root);
@override String started({ required Object timestamp}) => 'Started ${timestamp}';
@override late final _TranslationsStreamChatVi chat = _TranslationsStreamChatVi._(_root);
}
// Path: goal
class _TranslationsGoalVi implements TranslationsGoalEn {
_TranslationsGoalVi._(this._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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonVi implements TranslationsButtonEn {
_TranslationsButtonVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
/// Button text for the login button
@override String get login => 'Login';
@override String get logout => 'Logout';
@override String get edit_profile => 'Edit Profile';
/// Button text for the follow button
@override String get follow => 'Follow';
/// Button text for the unfollow button
@override String get unfollow => 'Unfollow';
@override String get mute => 'Mute';
@override String get unmute => 'Unmute';
@override String get share => 'Share';
@override String get save => 'Save';
}
// Path: embed
class _TranslationsEmbedVi implements TranslationsEmbedEn {
_TranslationsEmbedVi._(this._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}';
}
// Path: stream_list
class _TranslationsStreamListVi implements TranslationsStreamListEn {
_TranslationsStreamListVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get following => 'Following';
@override String get live => 'Live';
@override String get planned => 'Planned';
@override String get ended => 'Ended';
}
// Path: zap
class _TranslationsZapVi implements TranslationsZapEn {
_TranslationsZapVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@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 get button_zap => 'Zap';
@override String get button_open_wallet => 'Open in Wallet';
@override String get copy => 'Copied to clipboard';
@override late final _TranslationsZapErrorVi error = _TranslationsZapErrorVi._(_root);
}
// Path: profile
class _TranslationsProfileVi implements TranslationsProfileEn {
_TranslationsProfileVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Past Streams';
@override late final _TranslationsProfileEditVi edit = _TranslationsProfileEditVi._(_root);
}
// Path: login
class _TranslationsLoginVi implements TranslationsLoginEn {
_TranslationsLoginVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get username => 'Username';
@override String get amber => 'Login with Amber';
@override String get key => 'Login with Key';
@override String get create => 'Create Account';
@override late final _TranslationsLoginErrorVi error = _TranslationsLoginErrorVi._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusVi implements TranslationsStreamStatusEn {
_TranslationsStreamStatusVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'PLANNED';
}
// Path: stream.chat
class _TranslationsStreamChatVi implements TranslationsStreamChatEn {
_TranslationsStreamChatVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get disabled => 'CHAT DISABLED';
@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: [
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: [
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);
@override late final _TranslationsStreamChatRaidVi raid = _TranslationsStreamChatRaidVi._(_root);
}
// Path: zap.error
class _TranslationsZapErrorVi implements TranslationsZapErrorEn {
_TranslationsZapErrorVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Invalid custom amount';
@override String get no_wallet => 'No lightning wallet installed';
@override String get no_lud16 => 'No lightning address found';
}
// Path: profile.edit
class _TranslationsProfileEditVi implements TranslationsProfileEditEn {
_TranslationsProfileEditVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get display_name => 'Display Name';
@override String get about => 'About';
@override String get nip05 => 'Nostr Address';
@override String get lud16 => 'Lightning Address';
@override late final _TranslationsProfileEditErrorVi error = _TranslationsProfileEditErrorVi._(_root);
}
// Path: login.error
class _TranslationsLoginErrorVi implements TranslationsLoginErrorEn {
_TranslationsLoginErrorVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Invalid key';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteVi implements TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
/// Label on the chat message input box
@override String get label => 'Write message';
/// Chat input message shown when the user is logged in only with pubkey
@override String get no_signer => 'Can\'t write messages with npub login';
/// Chat input message shown when the user is logged out
@override String get login => 'Please login to send messages';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeVi implements TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
/// Heading over list of users who are awarded a badge
@override String get awarded_to => 'Awarded to:';
}
// Path: stream.chat.raid
class _TranslationsStreamChatRaidVi implements TranslationsStreamChatRaidEn {
_TranslationsStreamChatRaidVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
@override String to({ required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
@override String from({ required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
@override String countdown({ required Object time}) => 'Raiding in ${time}';
}
// Path: profile.edit.error
class _TranslationsProfileEditErrorVi implements TranslationsProfileEditErrorEn {
_TranslationsProfileEditErrorVi._(this._root);
final TranslationsVi _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Cant edit profile when logged out';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsVi {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Upload Avatar';
case 'most_zapped_streamers': return 'Most Zapped Streamers';
case 'no_user_found': return 'No user found';
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('vi'))(n,
one: '1 viewer',
other: '${n} viewers',
);
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.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: [
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: [
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
case 'button.edit_profile': return 'Edit Profile';
case 'button.follow': return 'Follow';
case 'button.unfollow': return 'Unfollow';
case 'button.mute': return 'Mute';
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 '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.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': return 'Zap';
case 'zap.button_open_wallet': return 'Open in 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';
case 'zap.error.no_lud16': return 'No lightning address found';
case 'profile.past_streams': return 'Past Streams';
case 'profile.edit.display_name': return 'Display Name';
case 'profile.edit.about': return 'About';
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 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
case 'login.create': return 'Create Account';
case 'login.error.invalid_key': return 'Invalid key';
default: return null;
}
}
}

View File

@ -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: <root>
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<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? 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<AppLocale, Translations> $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
@ -53,7 +54,7 @@ class TranslationsZh implements Translations {
/// 串流的觀看者人數
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
one: '1 個檢視器',
other: '${n} 觀眾',
other: '${NumberFormat.decimalPattern('zh').format(n)} 觀眾',
);
@override late final _TranslationsStreamZh stream = _TranslationsStreamZh._(_root);
@ -66,36 +67,38 @@ class TranslationsZh implements Translations {
@override late final _TranslationsZapZh zap = _TranslationsZapZh._(_root);
@override late final _TranslationsProfileZh profile = _TranslationsProfileZh._(_root);
@override late final _TranslationsSettingsZh settings = _TranslationsSettingsZh._(_root);
@override late final _TranslationsLoginZh login = _TranslationsLoginZh._(_root);
}
// 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 String notification({required Object name}) => '${name} 已啟用!';
@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
@ -117,23 +120,25 @@ class _TranslationsButtonZh implements TranslationsButtonEn {
@override String get unmute => '解除静音';
@override String get share => '分享';
@override String get save => '保存';
@override String get connect => '連接';
@override String get settings => '設定';
}
// 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,37 +150,50 @@ 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 button_connect_wallet => '連接錢包';
@override String get copy => '複製到剪貼簿';
@override late final _TranslationsZapErrorZh error = _TranslationsZapErrorZh._(_root);
}
// 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
// Translations
@override String get past_streams => '過去的直播';
@override late final _TranslationsProfileEditZh edit = _TranslationsProfileEditZh._(_root);
}
// Path: settings
class _TranslationsSettingsZh extends TranslationsSettingsEn {
_TranslationsSettingsZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get button_profile => '編輯個人資料';
@override String get button_wallet => '錢包設定';
@override late final _TranslationsSettingsProfileZh profile = _TranslationsSettingsProfileZh._(_root);
@override late final _TranslationsSettingsWalletZh wallet = _TranslationsSettingsWalletZh._(_root);
}
// 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 +206,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 +218,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 +253,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
@ -246,23 +264,37 @@ class _TranslationsZapErrorZh implements TranslationsZapErrorEn {
@override String get no_lud16 => '未找到閃電地址';
}
// Path: profile.edit
class _TranslationsProfileEditZh implements TranslationsProfileEditEn {
_TranslationsProfileEditZh._(this._root);
// Path: settings.profile
class _TranslationsSettingsProfileZh extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get display_name => '顯示名稱';
@override String get about => '關於';
@override String get nip05 => 'Nostr 地址';
@override String get nip05 => '地址';
@override String get lud16 => '閃電地址';
@override late final _TranslationsProfileEditErrorZh error = _TranslationsProfileEditErrorZh._(_root);
@override late final _TranslationsSettingsProfileErrorZh error = _TranslationsSettingsProfileErrorZh._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletZh extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => '斷開錢包';
@override String get connect_1tap => '1 抽頭連接';
@override String get paste => '貼上 URL';
@override late final _TranslationsSettingsWalletErrorZh error = _TranslationsSettingsWalletErrorZh._(_root);
}
// 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 +303,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 +321,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 +333,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);
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorZh extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
@ -328,6 +360,17 @@ class _TranslationsProfileEditErrorZh implements TranslationsProfileEditErrorEn
@override String get logged_out => '登出時無法編輯個人資料';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorZh extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get logged_out => '登出時無法連接錢包';
@override String get nwc_auth_event_not_found => '未找到錢包認證事件';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsZh {
@ -339,37 +382,38 @@ extension on TranslationsZh {
case 'anon': return '匿名';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
one: '1 個檢視器',
other: '${n} 觀眾',
other: '${NumberFormat.decimalPattern('zh').format(n)} 觀眾',
);
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.notification': return ({required Object name}) => '${name} 已啟用!';
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,30 +424,41 @@ 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 'button.connect': return '連接';
case 'button.settings': 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 '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.button_connect_wallet': return '連接錢包';
case 'zap.copy': return '複製到剪貼簿';
case 'zap.error.invalid_custom_amount': return '無效自訂金額';
case 'zap.error.no_wallet': return '未安裝閃電錢夾';
case 'zap.error.no_lud16': return '未找到閃電地址';
case 'profile.past_streams': return '過去的直播';
case 'profile.edit.display_name': return '顯示名稱';
case 'profile.edit.about': return '關於';
case 'profile.edit.nip05': return 'Nostr 地址';
case 'profile.edit.lud16': return '閃電地址';
case 'profile.edit.error.logged_out': return '登出時無法編輯個人資料';
case 'settings.button_profile': return '編輯個人資料';
case 'settings.button_wallet': return '錢包設定';
case 'settings.profile.display_name': return '顯示名稱';
case 'settings.profile.about': return '關於';
case 'settings.profile.nip05': return '地址';
case 'settings.profile.lud16': return '閃電地址';
case 'settings.profile.error.logged_out': return '登出時無法編輯個人資料';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return '斷開錢包';
case 'settings.wallet.connect_1tap': return '1 抽頭連接';
case 'settings.wallet.paste': return '貼上 URL';
case 'settings.wallet.error.logged_out': return '登出時無法連接錢包';
case 'settings.wallet.error.nwc_auth_event_not_found': return '未找到錢包認證事件';
case 'login.username': return '用戶名';
case 'login.amber': return '使用 Amber 登入';
case 'login.key': return '使用鑰匙登入';

View File

@ -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

View File

@ -10,12 +10,9 @@ no_user_found: لم يتم العثور على مستخدم
anon: هوية مخفية
viewers:
one: 1 مشاهد
other: $n المشاهدون
other: "{n:decimalPattern} المشاهدين"
"@viewers":
description: عدد مشاهدي البث
placeholders:
n:
type: في
"@anon":
description: مستخدم مجهول
stream:
@ -24,10 +21,11 @@ stream:
ended: انتهى
planned: مخطط
started: بدأ $timestamp
notification: ${name} بدأ البث المباشر!
chat:
disabled: تم تعطيل الدردشة
disabled_timeout: "تنتهي المهلة: $time"
timeout(rich): $mod انتهى الوقت $user لـ $time
timeout(rich): $mod انتهى الوقت $user لـ ${time}
"@timeout":
description: رسالة دردشة تظهر أحداث المهلة
ended: انتهى البث
@ -81,6 +79,8 @@ button:
unmute: رفع الكتم
share: مشاركة
save: حفظ
connect: الاتصال
settings: الإعدادات
embed:
article_by: مقال بقلم $name
note_by: ملاحظة من $name
@ -100,6 +100,7 @@ zap:
button_zap_ready: أومض $amount ساتوشي
button_zap: زاب
button_open_wallet: فتح في المحفظة
button_connect_wallet: توصيل المحفظة
copy: نسخ إلى الحافظة
error:
invalid_custom_amount: مبلغ مخصص غير صالح
@ -107,13 +108,24 @@ zap:
no_lud16: لم يتم العثور على عنوان البرق
profile:
past_streams: التدفقات السابقة
edit:
settings:
button_profile: تعديل الملف الشخصي
button_wallet: إعدادات المحفظة
profile:
display_name: اسم العرض
about: نبذة
about: نبذة عن
nip05: عنوان نوستر
lud16: عنوان البرق
error:
logged_out: لا يمكن تحرير ملف التعريف عند تسجيل الخروج
wallet:
connect_wallet: توصيل المحفظة (NWC nostr+walletconnect://)
disconnect_wallet: محفظة قطع الاتصال
connect_1tap: 1-التوصيل بنقرة 1
paste: لصق عنوان URL
error:
logged_out: لا يمكن الاتصال بالمحفظة عند تسجيل الخروج
nwc_auth_event_not_found: لم يتم العثور على حدث مصادقة المحفظة
login:
username: اسم المستخدم
amber: تسجيل الدخول مع آمبر

View File

@ -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

View File

@ -11,12 +11,9 @@ no_user_found: Nebyl nalezen žádný uživatel
anon: Anon
viewers:
one: 1 divák
other: $n diváci
other: ${n:decimalPattern} divá
"@viewers":
description: Počet diváků streamu
placeholders:
n:
type: int
"@anon":
description: Anonymní uživatel
stream:
@ -25,10 +22,11 @@ stream:
ended: KONEC
planned: PLÁNOVANÉ
started: Založeno $timestamp
notification: ${name} byl spuštěn!
chat:
disabled: CHAT ZRUŠEN
disabled_timeout: "Časový limit vyprší: $time"
timeout(rich): $mod vypršel čas $user pro $time
timeout(rich): $mod vypršel čas $user pro ${time}
"@timeout":
description: Zpráva chatu zobrazující události časového limitu
ended: STREAM UKONČEN
@ -82,6 +80,8 @@ button:
unmute: Zrušit ztlumení
share: Sdílet
save: Uložit
connect: Připojení
settings: Nastavení
embed:
article_by: Článek na $name
note_by: Poznámka $name
@ -101,6 +101,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Otevřít v peněžence
button_connect_wallet: Připojení peněženky
copy: Zkopírováno do schránky
error:
invalid_custom_amount: Neplatná vlastní částka
@ -108,13 +109,24 @@ zap:
no_lud16: Nebyla nalezena žádná adresa blesku
profile:
past_streams: Minulé proudy
edit:
settings:
button_profile: Upravit profil
button_wallet: Nastavení peněženky
profile:
display_name: Zobrazení názvu
about: O stránkách
nip05: Adresa Nostr
lud16: Adresa blesku
error:
logged_out: Nelze upravit profil, když je odhlášený
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Odpojení peněženky
connect_1tap: Připojení 1 kohoutku
paste: Vložit adresu URL
error:
logged_out: Nelze se připojit k peněžence, když jste odhlášeni
nwc_auth_event_not_found: Nebyla nalezena žádná událost autentizace peněženky
login:
username: Uživatelské jméno
amber: Přihlášení pomocí Amber

View File

@ -11,12 +11,9 @@ no_user_found: Ingen bruger fundet
anon: Anon
viewers:
one: 1 seer
other: $n Seere
other: ${n:decimalPattern} seere
"@viewers":
description: Antal seere af streamingen
placeholders:
n:
type: int
"@anon":
description: En anonym bruger
stream:
@ -25,10 +22,11 @@ stream:
ended: AFSLUTTET
planned: PLANLAGT
started: Startet $timestamp
notification: ${name} gik live!
chat:
disabled: CHAT DEAKTIVERET
disabled_timeout: "Timeout udløber: $time"
timeout(rich): $mod udløbet $user for $time
timeout(rich): $mod udløbet $user for ${time}
"@timeout":
description: Chatbesked, der viser timeout-hændelser
ended: STREAM AFSLUTTET
@ -81,6 +79,8 @@ button:
unmute: Slå lyden fra
share: Del
save: Gemme
connect: Opret forbindelse
settings: Indstillinger
embed:
article_by: Artikel af $name
note_by: Note fra $name
@ -101,6 +101,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Åbn i tegnebogen
button_connect_wallet: Forbind tegnebog
copy: Kopieret til udklipsholder
error:
invalid_custom_amount: Ugyldigt brugerdefineret beløb
@ -108,13 +109,24 @@ zap:
no_lud16: Ingen lyn-adresse fundet
profile:
past_streams: Tidligere strømme
edit:
settings:
button_profile: Rediger profil
button_wallet: Indstillinger for tegnebog
profile:
display_name: Vis navn
about: Omkring
nip05: Nostr-adresse
lud16: Adresse for lynnedslag
error:
logged_out: Kan ikke redigere profil, når jeg er logget ud
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Afbryd forbindelsen til tegnebogen
connect_1tap: 1-Tap-forbindelse
paste: Indsæt URL
error:
logged_out: Kan ikke oprette forbindelse til wallet, når jeg er logget ud
nwc_auth_event_not_found: Ingen wallet-auth-begivenhed fundet
login:
username: Brugernavn
amber: Log ind med Amber

View File

@ -4,39 +4,37 @@ upload_avatar: Avatar hochladen
klicken, um den Upload zu starten
most_zapped_streamers: Meistgezappte Streamer
"@most_zapped_streamers":
description: Überschrift über gelistete Top-Streamer von zaps
description: Überschrift über gelistete Top-Streamer nach Zaps
no_user_found: Kein Benutzer gefunden
"@no_user_found":
description: Kein Benutzer bei der Suche gefunden
anon: Anon
viewers:
one: 1 Zuschauer
other: $n Zuschauer
other: ${n:decimalPattern} Zuschauer
"@viewers":
description: Anzahl der Betrachter des Streams
placeholders:
n:
type: int
description: Anzahl der Zuschauer des Streams
"@anon":
description: Ein anonymer Benutzer
stream:
status:
live: LIVE
ended: ENDED
ended: BEENDET
planned: GEPLANT
started: Gestartet $timestamp
notification: ${name} ging live!
chat:
disabled: CHAT DEAKTIVIERT
disabled_timeout: "Die Zeitüberschreitung läuft ab: $time"
timeout(rich): $mod Zeitüberschreitung $user für $time
disabled_timeout: "Timeout läuft ab: $time"
timeout(rich): $mod gibt $user einen Timeout für ${time}
"@timeout":
description: Chat-Nachricht mit Zeitüberschreitungsereignissen
description: Chat-Nachricht mit Timeout-Ereignissen
ended: STREAM BEENDET
"@ended":
description: Stream beendet Fußzeile am Ende des Chats
zap(rich): $user hat $amount sats gezappt
"@zap":
description: Chatnachricht mit Stream Zaps
description: Chat-Nachricht mit Stream-Zaps
write:
label: Nachricht schreiben
"@label":
@ -83,6 +81,8 @@ button:
unmute: Entstummen
share: Teilen
save: Speichern
connect: Verbinden Sie
settings: Einstellungen
embed:
article_by: Artikel von $name
note_by: Note von $name
@ -102,6 +102,7 @@ zap:
button_zap_ready: $amount sats zappen
button_zap: Zap
button_open_wallet: In Brieftasche öffnen
button_connect_wallet: Brieftasche verbinden
copy: In die Zwischenablage kopiert
error:
invalid_custom_amount: Ungültiger benutzerdefinierter Betrag
@ -109,13 +110,24 @@ zap:
no_lud16: Keine Blitzadresse gefunden
profile:
past_streams: Vergangene Streams
edit:
settings:
button_profile: Profil bearbeiten
button_wallet: Wallet-Einstellungen
profile:
display_name: Name anzeigen
about: Über
nip05: Nostr-Adresse
lud16: Lightning-Adresse
lud16: Blitz-Adresse
error:
logged_out: Profil kann nicht bearbeitet werden, wenn es abgemeldet ist
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Brieftasche abtrennen
connect_1tap: 1-Tap-Verbindung
paste: URL einfügen
error:
logged_out: Kann keine Verbindung zur Brieftasche herstellen, wenn ich abgemeldet bin
nwc_auth_event_not_found: Kein Wallet-Authentifizierungsereignis gefunden
login:
username: Benutzername
amber: Anmeldung mit Amber

View File

@ -11,12 +11,9 @@ no_user_found: Δεν βρέθηκε χρήστης
anon: Anon
viewers:
one: 1 θεατής
other: $n θεατές
other: ${n:decimalPattern} θεατές
"@viewers":
description: Αριθμός θεατών της ροής
placeholders:
n:
type: int
"@anon":
description: Ένας ανώνυμος χρήστης
stream:
@ -25,10 +22,11 @@ stream:
ended: ENDED
planned: ΣΧΕΔΙΑΣΜΟΣ
started: Ξεκίνησε $timestamp
notification: ${name} βγήκε ζωντανά!
chat:
disabled: ΑΠΕΝΕΡΓΟΠΟΙΗΜΈΝΗ ΣΥΝΟΜΙΛΊΑ
disabled_timeout: "Το χρονικό όριο λήγει: $time"
timeout(rich): $mod χρονομετρημένη λήξη $user για $time
timeout(rich): $mod χρονομετρημένη λήξη $user για ${time}
"@timeout":
description: Μήνυμα συνομιλίας που εμφανίζει συμβάντα timeout
ended: STREAM ΤΕΛΕΙΩΣΕ
@ -84,6 +82,8 @@ button:
unmute: Αποσυνδέστε τη φωνή σας από το
share: Μοιραστείτε το
save: Αποθήκευση
connect: Συνδέστε το
settings: Ρυθμίσεις
embed:
article_by: Άρθρο από $name
note_by: Σημείωση του $name
@ -104,6 +104,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Άνοιγμα στο πορτοφόλι
button_connect_wallet: Connect Wallet
copy: Αντιγραφή στο πρόχειρο
error:
invalid_custom_amount: Μη έγκυρο προσαρμοσμένο ποσό
@ -111,13 +112,24 @@ zap:
no_lud16: Δεν βρέθηκε διεύθυνση κεραυνού
profile:
past_streams: Προηγούμενα ρεύματα
edit:
settings:
button_profile: Επεξεργασία προφίλ
button_wallet: Ρυθμίσεις πορτοφολιού
profile:
display_name: Όνομα οθόνης
about: Σχετικά με το
nip05: Διεύθυνση Nostr
lud16: Διεύθυνση Lightning
error:
logged_out: Δεν μπορείτε να επεξεργαστείτε το προφίλ όταν έχετε αποσυνδεθεί
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Αποσύνδεση πορτοφολιού
connect_1tap: Σύνδεση 1 βρύσης
paste: Επικόλληση URL
error:
logged_out: Δεν μπορώ να συνδεθώ με πορτοφόλι όταν έχω αποσυνδεθεί
nwc_auth_event_not_found: Δεν βρέθηκε συμβάν εξουσιοδότησης πορτοφολιού
login:
username: Όνομα χρήστη
amber: Σύνδεση με Amber

View File

@ -8,14 +8,12 @@ no_user_found: No user found
"@no_user_found":
description: No user found when searching
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 viewer
other: $n viewers
other: ${n:decimalPattern} viewers
"@viewers":
description: Number of viewers of the stream
placeholders:
n:
type: int
"@anon":
description: An anonymous user
stream:
@ -24,10 +22,11 @@ stream:
ended: ENDED
planned: PLANNED
started: Started $timestamp
notification: ${name} went live!
chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for $time
timeout(rich): $mod timed out $user for ${time}
"@timeout":
description: Chat message showing timeout events
ended: STREAM ENDED
@ -51,13 +50,13 @@ stream:
"@awarded_to":
description: Heading over list of users who are awarded a badge
raid:
to: RAIDING $name
to: RAIDING ${name}
"@to":
description: Chat raid message to another stream
from: RAID FROM $name
from: RAID FROM ${name}
"@from":
description: Chat raid message from another stream
countdown: Raiding in $time
countdown: Raiding in ${time}
"@countdown":
description: Countdown timer for auto-raiding
goal:
@ -80,10 +79,12 @@ button:
unmute: Unmute
share: Share
save: Save
connect: Connect
settings: Settings
embed:
article_by: Article by $name
article_by: Article by ${name}
note_by: Note by $name
live_stream_by: Live stream by $name
live_stream_by: Live stream by ${name}
stream_list:
following: Following
live: Live
@ -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
@ -106,13 +108,26 @@ zap:
no_lud16: No lightning address found
profile:
past_streams: Past Streams
edit:
settings:
button_profile: Edit Profile
button_wallet: Wallet Settings
profile:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
error:
logged_out: Cant edit profile when logged out
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Disconnect Wallet
connect_1tap: 1-Tap Connection
paste: Paste URL
balance: Balance
name: Wallet
error:
logged_out: Cant connect wallet when logged out
nwc_auth_event_not_found: No wallet auth event found
login:
username: Username
amber: Login with Amber

View File

@ -11,12 +11,9 @@ no_user_found: No se ha encontrado ningún usuario
anon: Anónimo
viewers:
one: 1 espectador
other: $n espectadores
other: ${n:decimalPattern} espectadores
"@viewers":
description: Número de espectadores del flujo
placeholders:
n:
type: int
"@anon":
description: Un usuario anónimo
stream:
@ -25,10 +22,11 @@ stream:
ended: FIN
planned: PLANIFICADO
started: Comenzó $timestamp
notification: ${name} ¡se ha puesto en marcha!
chat:
disabled: CHAT DESHABILITADO
disabled_timeout: "El tiempo de espera expira: $time"
timeout(rich): $mod timed out $user para $time
timeout(rich): $mod timed out $user para ${time}
"@timeout":
description: Mensaje de chat que muestra los eventos de tiempo de espera
ended: STREAM FINED
@ -84,6 +82,8 @@ button:
unmute: Dejar de silenciar
share: Compartir
save: Guardar
connect: Conectar
settings: Ajustes
embed:
article_by: Artículo de $name
note_by: Nota de $name
@ -104,6 +104,7 @@ zap:
button_zap_ready: Zapear $amount sats
button_zap: Zap
button_open_wallet: Abrir en cartera
button_connect_wallet: Billetera Connect
copy: Copiado al portapapeles
error:
invalid_custom_amount: Importe personalizado no válido
@ -111,13 +112,24 @@ zap:
no_lud16: No se ha encontrado ninguna dirección de rayos
profile:
past_streams: Transmisiones anteriores
edit:
settings:
button_profile: Editar perfil
button_wallet: Configuración de la cartera
profile:
display_name: Mostrar nombre
about: Sobre ti
about: Acerca de
nip05: Dirección Nostr
lud16: Dirección del rayo
error:
logged_out: No se puede editar el perfil cuando se cierra la sesión
wallet:
connect_wallet: Cartera Connect (NWC nostr+walletconnect://)
disconnect_wallet: Desconectar Cartera
connect_1tap: Conexión de 1 toma
paste: Pegar URL
error:
logged_out: No se puede conectar el monedero al cerrar la sesión
nwc_auth_event_not_found: No se ha encontrado ningún evento de autenticación de cartera
login:
username: Usuario
amber: Iniciar sesión con Amber

View File

@ -11,12 +11,9 @@ no_user_found: Käyttäjää ei löytynyt
anon: Anon
viewers:
one: 1 katsoja
other: $n katsojaa
other: ${n:decimalPattern} katsojat
"@viewers":
description: Streamin katsojien määrä
placeholders:
n:
type: int
"@anon":
description: Nimetön käyttäjä
stream:
@ -25,10 +22,11 @@ stream:
ended: ENDED
planned: SUUNNITELTU
started: Aloitettu $timestamp
notification: ${name} meni suoraksi!
chat:
disabled: CHAT POISTETTU KÄYTÖSTÄ
disabled_timeout: "Aikakatkaisu päättyy: $time"
timeout(rich): $mod ajastettu $user for $time
timeout(rich): $mod ajastettu $user for ${time}
"@timeout":
description: Chat-viesti, joka näyttää aikakatkaisutapahtumat
ended: STREAM PÄÄTTYNYT
@ -82,6 +80,8 @@ button:
unmute: Poista mykistys
share: Jaa
save: Tallenna
connect: Yhdistä
settings: Asetukset
embed:
article_by: Artikkeli $name
note_by: Viesti lähettäjältä $name
@ -102,6 +102,7 @@ zap:
button_zap_ready: Zap $amount satsia
button_zap: Zap
button_open_wallet: Avaa lompakossa
button_connect_wallet: Yhdistä lompakko
copy: Kopioitu leikepöydälle
error:
invalid_custom_amount: Virheellinen mukautettu määrä
@ -109,13 +110,24 @@ zap:
no_lud16: Salamaosoitetta ei löytynyt
profile:
past_streams: Aikaisemmat lähetykset
edit:
settings:
button_profile: Muokkaa profiilia
button_wallet: Lompakon asetukset
profile:
display_name: Näytön nimi
about: Tietoja
nip05: Nostr-osoite
lud16: Lightning-osoite
nip05: Nostr Osoite
lud16: Salama osoite
error:
logged_out: Ei voi muokata profiilia, kun on kirjautunut ulos
wallet:
connect_wallet: Connect-lompakko (NWC nostr+walletconnect://)
disconnect_wallet: Irrota lompakko
connect_1tap: 1-Tap-liitäntä
paste: Liitä URL-osoite
error:
logged_out: Ei voi muodostaa yhteyttä lompakkoon, kun on kirjautunut ulos
nwc_auth_event_not_found: Ei lompakko-auth-tapahtumaa löydetty
login:
username: Käyttäjätunnus
amber: Kirjaudu sisään Amber kanssa

View File

@ -11,12 +11,9 @@ no_user_found: Aucun utilisateur trouvé
anon: Anonyme
viewers:
one: 1 téléspectateur
other: $n spectateurs
other: "{n:decimalPattern} téléspectateurs"
"@viewers":
description: Nombre de spectateurs du flux
placeholders:
n:
type: int
"@anon":
description: Un utilisateur anonyme
stream:
@ -25,10 +22,11 @@ stream:
ended: FINI
planned: PRÉVU
started: Commencé à $timestamp
notification: ${name} est en ligne !
chat:
disabled: CHAT DISABLED
disabled_timeout: "Le délai expire : $time"
timeout(rich): $mod $user a expiré dans le temps pour $time
timeout(rich): $mod $user a expiré dans le temps pour ${time}
"@timeout":
description: Message de chat indiquant les événements de dépassement de délai
ended: STREAM ENDED
@ -82,6 +80,8 @@ button:
unmute: Retirer sourdine
share: Partager
save: Sauvegarder
connect: Connecter
settings: Paramètres
embed:
article_by: Article par $name
note_by: Note par $name
@ -101,6 +101,7 @@ zap:
button_zap_ready: Zapper $amount sats
button_zap: Zap
button_open_wallet: Ouvrir dans le portefeuille
button_connect_wallet: Connecter le portefeuille
copy: Copié dans le presse-papiers
error:
invalid_custom_amount: Montant personnalisé non valide
@ -108,13 +109,24 @@ zap:
no_lud16: Pas d'adresse éclair trouvée
profile:
past_streams: Streams passés
edit:
settings:
button_profile: Modifier le profil
button_wallet: Paramètres du portefeuille
profile:
display_name: Nom d'affichage
about: À propos
nip05: Adresse Nostr
lud16: Adresse Lightning
about: A propos de
nip05: Nostr Adresse
lud16: Adresse de la foudre
error:
logged_out: Impossible de modifier le profil lorsque l'on est déconnecté
wallet:
connect_wallet: Portefeuille Connect (NWC nostr+walletconnect://)
disconnect_wallet: Déconnecter le portefeuille
connect_1tap: Connexion à 1 robinet
paste: Coller l'URL
error:
logged_out: Impossible de se connecter au portefeuille lorsque l'on est déconnecté
nwc_auth_event_not_found: Aucun événement d'authentification de portefeuille n'a été trouvé
login:
username: Nom dutilisateur
amber: Se connecter avec Amber

View File

@ -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

View File

@ -11,12 +11,9 @@ no_user_found: Nem talált felhasználó
anon: Névtelen
viewers:
one: 1 néző
other: $n néző
other: ${n:decimalPattern} nézők
"@viewers":
description: A stream nézőinek száma
placeholders:
n:
type: int
"@anon":
description: Egy névtelen felhasználó
stream:
@ -25,10 +22,11 @@ stream:
ended: ENDED
planned: TERVEZETT
started: Elindult $timestamp
notification: ${name} elindult!
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(rich): $mod időzített $user a ${time}számára
"@timeout":
description: Chat üzenet az időkorlátos események megjelenítésével
ended: STREAM MEGSZÜNTETETT
@ -53,13 +51,13 @@ stream:
"@awarded_to":
description: Fejléc a jelvényt kapott felhasználók listája fölött
raid:
to: RAIDING $name
to: RAIDING ${name}
"@to":
description: Chat raid üzenet egy másik folyamba
from: RAID FROM $name
"@from":
description: Chat raid üzenet egy másik folyamból
countdown: Raiding a $time oldalon
countdown: Raiding a ${time} oldalon
"@countdown":
description: Visszaszámláló időzítő az automatikus lovagláshoz
goal:
@ -82,10 +80,12 @@ button:
unmute: Némítás visszavonása
share: Megosztás
save: Mentés
connect: Csatlakozás
settings: Beállítások
embed:
article_by: A $name cikke.
article_by: Cikk ${name}
note_by: $name bejegyzése
live_stream_by: Élő közvetítés a $name oldalon
live_stream_by: Élő közvetítés a ${name} oldalon
stream_list:
following: Követettek bejegyzései
live: Élő
@ -101,6 +101,7 @@ zap:
button_zap_ready: Zap $amount satoshi
button_zap: Zap
button_open_wallet: Megnyitás a pénztárcában
button_connect_wallet: Connect Wallet
copy: Vágólapra másolva
error:
invalid_custom_amount: Érvénytelen egyéni összeg
@ -108,13 +109,24 @@ zap:
no_lud16: Nem talált villámcím
profile:
past_streams: Múltbeli Streamek
edit:
settings:
button_profile: Profil szerkesztése
button_wallet: Pénztárca beállítások
profile:
display_name: Megjelenített név
about: Névjegy
nip05: Nostr-cím
lud16: Lightning-cím
about: A oldalról
nip05: Nostr cím
lud16: Villám cím
error:
logged_out: Kijelentkezve nem lehet profilt szerkeszteni
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Pénztárca lekapcsolása
connect_1tap: 1-Tap csatlakozás
paste: URL beillesztése
error:
logged_out: Kijelentkezve nem lehet csatlakozni a pénztárcához
nwc_auth_event_not_found: Nem találtak pénztárca-auth eseményt
login:
username: Felhasználónév
amber: Bejelentkezés Amber segítségével

View File

@ -11,12 +11,9 @@ no_user_found: Nessun utente trovato
anon: Anonimo
viewers:
one: 1 spettatore
other: $n spettatori
other: ${n:decimalPattern} spettatori
"@viewers":
description: Numero di spettatori del flusso
placeholders:
n:
type: int
"@anon":
description: Un utente anonimo
stream:
@ -25,10 +22,11 @@ stream:
ended: FINE
planned: PREVISTO
started: Avviato $timestamp
notification: ${name} è andato in onda!
chat:
disabled: CHAT DISABILITATA
disabled_timeout: "Il timeout scade: $time"
timeout(rich): $mod time out $user per $time
timeout(rich): $mod time out $user per ${time}
"@timeout":
description: Messaggio di chat che mostra gli eventi di timeout
ended: STREAM ENDED
@ -82,6 +80,8 @@ button:
unmute: Riattiva
share: Condividi
save: Salva
connect: Collegare
settings: Impostazioni
embed:
article_by: Articolo di $name
note_by: Nota di $name
@ -102,6 +102,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Aprire nel portafoglio
button_connect_wallet: Portafoglio Connect
copy: Copiato negli appunti
error:
invalid_custom_amount: Importo personalizzato non valido
@ -109,13 +110,24 @@ zap:
no_lud16: Nessun indirizzo di fulmine trovato
profile:
past_streams: Flussi passati
edit:
settings:
button_profile: Modifica profilo
button_wallet: Impostazioni del portafoglio
profile:
display_name: Nome visualizzato
about: Info
nip05: Indirizzo Nostr
about: Circa
nip05: Indirizzo
lud16: Indirizzo del fulmine
error:
logged_out: Impossibile modificare il profilo quando si è disconnessi
wallet:
connect_wallet: Portafoglio Connect (NWC nostr+walletconnect://)
disconnect_wallet: Disconnettere il portafoglio
connect_1tap: Connessione a 1 rubinetto
paste: Incolla URL
error:
logged_out: Impossibile connettere il portafoglio quando si è disconnessi
nwc_auth_event_not_found: Nessun evento wallet auth trovato
login:
username: Nome utente
amber: Accesso con Amber

View File

@ -1,4 +1,4 @@
upload_avatar: アバターのアップロード
upload_avatar: 画像アップロード
"@upload_avatar":
description: アバターのプレースホルダーを押してアップロードを開始するよう促すテキスト
most_zapped_streamers: 最もザッピングされたストリーマー
@ -10,12 +10,9 @@ no_user_found: ユーザーが見つかりません
anon: 匿名
viewers:
one: 1 視聴者
other: $n 人が視聴中
other: ${n:decimalPattern} 人が視聴中
"@viewers":
description: ストリームの視聴者数
placeholders:
n:
type: イント
"@anon":
description: 匿名ユーザー
stream:
@ -24,10 +21,11 @@ stream:
ended: 終了
planned: 予定
started: $timestamp を開始
notification: ${name} がライブを開始した!
chat:
disabled: チャット無効
disabled_timeout: タイムアウト: $time
timeout(rich): $mod タイムアウト $user for $time
timeout(rich): $mod タイムアウト $user for ${time}
"@timeout":
description: タイムアウトイベントを表示するチャットメッセージ
ended: 配信終了
@ -80,6 +78,8 @@ button:
unmute: ミュート解除
share: 共有
save: 保存
connect: 接続
settings: 設定
embed:
article_by: 記事: $name
note_by: $name の投稿
@ -99,6 +99,7 @@ zap:
button_zap_ready: $amount satsをザップする
button_zap: ザップ
button_open_wallet: ウォレットで開く
button_connect_wallet: コネクトウォレット
copy: クリップボードにコピー
error:
invalid_custom_amount: 無効なカスタム金額
@ -106,13 +107,24 @@ zap:
no_lud16: 雷アドレスが見つかりません
profile:
past_streams: 過去の配信
edit:
settings:
button_profile: プロフィール編集
button_wallet: ウォレットの設定
profile:
display_name: 表示名
about: 自己紹介
nip05: Nostrアドレス
about: について
nip05: 住所
lud16: ライトニングアドレス
error:
logged_out: ログアウトするとプロフィールが編集できない
wallet:
connect_wallet: コネクトウォレットNWC nostr+walletconnect://)
disconnect_wallet: ウォレットの切断
connect_1tap: 1タップ接続
paste: URLを貼り付ける
error:
logged_out: ログアウト時にウォレットに接続できない
nwc_auth_event_not_found: ウォレットの認証イベントが見つかりません
login:
username: ユーザー名
amber: 琥珀でログイン

View File

@ -10,12 +10,9 @@ no_user_found: 사용자를 찾을 수 없습니다.
anon: Anon
viewers:
one: 시청자 1명
other: $n 시청자
other: "{n:decimalPattern} 시청자"
"@viewers":
description: 스트림 시청자 수
placeholders:
n:
type: int
"@anon":
description: 익명 사용자
stream:
@ -24,10 +21,11 @@ stream:
ended: 종료
planned: 계획된
started: 시작 $timestamp
notification: ${name} 라이브가 시작되었습니다!
chat:
disabled: 채팅 사용 안 함
disabled_timeout: "시간 초과가 만료되었습니다: $time"
timeout(rich): $mod 시간 초과됨 $user $time
timeout(rich): $mod 시간 초과됨 $user ${time}
"@timeout":
description: 시간 초과 이벤트를 표시하는 채팅 메시지
ended: 스트림 종료
@ -80,6 +78,8 @@ button:
unmute: 뮤트 해제
share: 공유
save: 저장
connect: 연결
settings: 설정
embed:
article_by: "작성자: $name"
note_by: "노트 작성됨: $name"
@ -99,6 +99,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: 지갑에서 열기
button_connect_wallet: 지갑 연결
copy: 클립보드에 복사
error:
invalid_custom_amount: 잘못된 사용자 지정 금액
@ -106,13 +107,24 @@ zap:
no_lud16: 번개 주소를 찾을 수 없습니다.
profile:
past_streams: 과거 스트림
edit:
settings:
button_profile: 프로필 수정
button_wallet: 지갑 설정
profile:
display_name: 표시 이름
about: 정보
nip05: 노스트르 주소
lud16: 라이트닝 주소
error:
logged_out: 로그아웃 시 프로필 수정 불가
wallet:
connect_wallet: 지갑 연결(NWC nostr+walletconnect://)
disconnect_wallet: 지갑 연결 해제
connect_1tap: 1-탭 연결
paste: URL 붙여넣기
error:
logged_out: 로그아웃 시 지갑 연결 불가
nwc_auth_event_not_found: 지갑 인증 이벤트를 찾을 수 없습니다.
login:
username: 사용자 이름
amber: Amber로 로그인

View File

@ -11,12 +11,9 @@ no_user_found: Geen gebruiker gevonden
anon: Anon
viewers:
one: 1 kijker
other: $n kijkers
other: ${n:decimalPattern} kijkers
"@viewers":
description: Aantal kijkers van de stream
placeholders:
n:
type: int
"@anon":
description: Een anonieme gebruiker
stream:
@ -25,10 +22,11 @@ stream:
ended: GESLOTEN
planned: GEPLAND
started: Begonnen met $timestamp
notification: ${name} ging live!
chat:
disabled: CHAT UITGESCHAKELD
disabled_timeout: "Time-out loopt af: $time"
timeout(rich): $mod timed out $user voor $time
timeout(rich): $mod timed out $user voor ${time}
"@timeout":
description: Chatbericht met time-outgebeurtenissen
ended: STREAM BEËINDIGD
@ -83,6 +81,8 @@ button:
unmute: Niet langer negeren
share: Deel
save: Opslaan
connect: Maak verbinding met
settings: Instellingen
embed:
article_by: Artikel door $name
note_by: Opmerking door $name
@ -102,6 +102,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Openen in portefeuille
button_connect_wallet: Portemonnee aansluiten
copy: Gekopieerd naar klembord
error:
invalid_custom_amount: Ongeldig aangepast bedrag
@ -109,13 +110,24 @@ zap:
no_lud16: Geen bliksemadres gevonden
profile:
past_streams: Afgelopen Streams
edit:
settings:
button_profile: Profiel bewerken
button_wallet: Portemonnee-instellingen
profile:
display_name: Naam weergeven
about: Over ons
about: Over
nip05: Nostr Adres
lud16: Lightning adres
lud16: Bliksemadres
error:
logged_out: Kan profiel niet bewerken als ik ben uitgelogd
wallet:
connect_wallet: Portemonnee verbinden (NWC nostr+walletconnect://)
disconnect_wallet: Portefeuille loskoppelen
connect_1tap: 1-Tap Aansluiting
paste: URL plakken
error:
logged_out: Kan geen verbinding maken met portemonnee als ik ben uitgelogd
nwc_auth_event_not_found: Geen portemonnee-auth-gebeurtenis gevonden
login:
username: Gebruikersnaam
amber: Inloggen met Amber

View File

@ -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

View File

@ -11,12 +11,9 @@ no_user_found: Nie znaleziono użytkownika
anon: Anon
viewers:
one: 1 przeglądarka
other: $n widzowie
other: "{n:decimalPattern} widzów"
"@viewers":
description: Liczba widzów strumienia
placeholders:
n:
type: int
"@anon":
description: Anonimowy użytkownik
stream:
@ -25,10 +22,11 @@ stream:
ended: ZAKOŃCZONY
planned: PLANOWANE
started: Start $timestamp
notification: ${name} został uruchomiony!
chat:
disabled: CZAT WYŁĄCZONY
disabled_timeout: "Upłynął limit czasu: $time"
timeout(rich): $mod upłynął limit czasu $user dla $time
timeout(rich): $mod upłynął limit czasu $user dla ${time}
"@timeout":
description: Komunikat czatu pokazujący zdarzenia przekroczenia limitu czasu
ended: TRANSMISJA ZAKOŃCZONA
@ -82,6 +80,8 @@ button:
unmute: Wyłącz wyciszenie
share: Udział
save: Zapisz
connect: Połączenie
settings: Ustawienia
embed:
article_by: Artykuł autorstwa $name
note_by: Uwaga $name
@ -102,6 +102,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Otwórz w portfelu
button_connect_wallet: Connect Wallet
copy: Skopiowane do schowka
error:
invalid_custom_amount: Nieprawidłowa kwota niestandardowa
@ -109,13 +110,24 @@ zap:
no_lud16: Nie znaleziono adresu pioruna
profile:
past_streams: Poprzednie strumienie
edit:
settings:
button_profile: Edytuj profil
button_wallet: Ustawienia portfela
profile:
display_name: Wyświetlana nazwa
about: O
nip05: Adres Nostr
lud16: Adres błyskawicy
error:
logged_out: Nie można edytować profilu po wylogowaniu
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Odłącz portfel
connect_1tap: Połączenie 1-wtykowe
paste: Wklej adres URL
error:
logged_out: Nie można połączyć portfela po wylogowaniu
nwc_auth_event_not_found: Nie znaleziono zdarzenia autoryzacji portfela
login:
username: Nazwa użytkownika
amber: Zaloguj się za pomocą Amber

View File

@ -11,12 +11,9 @@ no_user_found: Nenhum usuário encontrado
anon: Anônimo
viewers:
one: 1 visualizador
other: $n espectadores
other: ${n:decimalPattern} espectadores
"@viewers":
description: Número de espectadores da transmissão
placeholders:
n:
type: int
"@anon":
description: Um usuário anônimo
stream:
@ -25,10 +22,11 @@ stream:
ended: FINALIZADO
planned: PLANEJADO
started: Iniciado em $timestamp
notification: ${name} foi ao ar!
chat:
disabled: BATE-PAPO DESATIVADO
disabled_timeout: "O tempo limite expira: $time"
timeout(rich): $mod Tempo esgotado $user para $time
timeout(rich): $mod Tempo esgotado $user para ${time}
"@timeout":
description: Mensagem de bate-papo mostrando eventos de tempo limite
ended: TRANSMISSÃO ENCERRADA
@ -82,6 +80,8 @@ button:
unmute: Desmutar
share: Compartilhar
save: Salvar
connect: Conectar
settings: Configurações
embed:
article_by: Artigo de $name
note_by: Nota de $name
@ -102,6 +102,7 @@ zap:
button_zap_ready: Enviar Zap de $amount sats
button_zap: Zap
button_open_wallet: Abrir na carteira
button_connect_wallet: Conectar carteira
copy: Copiado para a área de transferência
error:
invalid_custom_amount: Valor personalizado inválido
@ -109,13 +110,24 @@ zap:
no_lud16: Nenhum endereço de raio encontrado
profile:
past_streams: Transmissões Passadas
edit:
settings:
button_profile: Editar perfil
button_wallet: Configurações da carteira
profile:
display_name: Nome de exibição
about: Sobre
nip05: Endereço do Nostr
lud16: Endereço Lightning
nip05: Endereço Nostr
lud16: Endereço para relâmpagos
error:
logged_out: Não é possível editar o perfil quando se está desconectado
wallet:
connect_wallet: Carteira Connect (NWC nostr+walletconnect://)
disconnect_wallet: Desconectar carteira
connect_1tap: Conexão de 1 torneira
paste: Colar URL
error:
logged_out: Não consigo conectar a carteira quando estou desconectado
nwc_auth_event_not_found: Nenhum evento de autenticação de carteira encontrado
login:
username: Nome de usuário
amber: Faça login com o Amber

View File

@ -11,12 +11,9 @@ no_user_found: Niciun utilizator găsit
anon: Anon
viewers:
one: 1 vizualizator
other: $n telespectatori
other: ${n:decimalPattern} telespectatori
"@viewers":
description: Numărul de telespectatori ai fluxului
placeholders:
n:
type: int
"@anon":
description: Un utilizator anonim
stream:
@ -25,10 +22,11 @@ stream:
ended: TERMINAT
planned: PLANIFICATE
started: A început $timestamp
notification: ${name} a intrat în direct!
chat:
disabled: CHAT DEZACTIVAT
disabled_timeout: "Timpul expiră: $time"
timeout(rich): $mod Timed out $user pentru $time
timeout(rich): $mod Timed out $user pentru ${time}
"@timeout":
description: Mesaj de chat care afișează evenimentele de timeout
ended: STREAM ÎNCHEIAT
@ -83,6 +81,8 @@ button:
unmute: Dezactivați
share: Share
save: Salvați
connect: Conectare
settings: Setări
embed:
article_by: Articol de $name
note_by: Notă de la $name
@ -103,6 +103,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Deschide în portofel
button_connect_wallet: Conectați portofelul
copy: Copiat în clipboard
error:
invalid_custom_amount: Sumă personalizată invalidă
@ -110,13 +111,24 @@ zap:
no_lud16: Nu a fost găsită nicio adresă de fulgere
profile:
past_streams: Fluxuri trecute
edit:
settings:
button_profile: Editare profil
button_wallet: Setări portofel
profile:
display_name: Nume afișat
about: Despre
nip05: Adresa Nostr
lud16: Adresa fulgerului
error:
logged_out: Nu pot edita profilul când sunt deconectat
wallet:
connect_wallet: Conectați portofelul (NWC nostr+walletconnect://)
disconnect_wallet: Deconectați portofelul
connect_1tap: Conexiune 1-Tap
paste: Lipiți URL
error:
logged_out: Nu puteți conecta portofelul atunci când sunteți deconectat
nwc_auth_event_not_found: Nu a fost găsit niciun eveniment de autorizare a portofelului
login:
username: Nume utilizator
amber: Conectați-vă cu Amber

View File

@ -11,12 +11,9 @@ no_user_found: Пользователь не найден
anon: Аноним
viewers:
one: 1 зритель
other: $n зрителей
other: ${n:decimalPattern} зрителей
"@viewers":
description: Количество зрителей потока
placeholders:
n:
type: int
"@anon":
description: Анонимный пользователь
stream:
@ -25,10 +22,11 @@ stream:
ended: КОНЕЦ
planned: ПЛАНИРУЕМЫЙ
started: Начало $timestamp
notification: ${name} запустился!
chat:
disabled: ЧАТ ОТКЛЮЧЕН
disabled_timeout: "Таймаут истекает: $time"
timeout(rich): $mod тайм-аут $user для $time
timeout(rich): $mod тайм-аут $user для ${time}
"@timeout":
description: Сообщение в чате, показывающее события по тайм-ауту
ended: ТРАНСЛЯЦИЯ ОКОНЧЕНА
@ -83,6 +81,8 @@ button:
unmute: Включить уведомления
share: Поделиться
save: Сохранить
connect: Подключайтесь
settings: Настройки
embed:
article_by: Статья $name
note_by: Заметка на сайте $name
@ -103,6 +103,7 @@ zap:
button_zap_ready: Запнуть $amount сат
button_zap: Зап
button_open_wallet: Открыть в кошельке
button_connect_wallet: Подключить кошелек
copy: Скопировано в буфер обмена
error:
invalid_custom_amount: Недопустимая пользовательская сумма
@ -110,13 +111,24 @@ zap:
no_lud16: Адрес молнии не найден
profile:
past_streams: Предыдущие трансляции
edit:
settings:
button_profile: Редактировать профиль
button_wallet: Настройки кошелька
profile:
display_name: Отображаемое имя
about: О себе
nip05: Nostr адрес
lud16: Lightning Адрес
about: О сайте
nip05: Адрес Ностр
lud16: Адрес молнии
error:
logged_out: Невозможно редактировать профиль при выходе из системы
wallet:
connect_wallet: Кошелек Connect (NWC nostr+walletconnect://)
disconnect_wallet: Отключить кошелек
connect_1tap: 1-кратное соединение
paste: Вставить URL
error:
logged_out: Невозможно подключить кошелек при выходе из системы
nwc_auth_event_not_found: Событие аутентификации кошелька не найдено
login:
username: Имя пользователя
amber: Войти с помощью Amber

View File

@ -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

View File

@ -1,22 +1,19 @@
upload_avatar: Ladda upp avatar
"@upload_avatar":
description: Text som uppmanar användaren att trycka på avatarplatshållaren för
description: Text som uppmanar användaren att trycka på avatar platshållaren för
att påbörja uppladdningen
most_zapped_streamers: De flesta zappade streamers
most_zapped_streamers: De flest zappade streamers
"@most_zapped_streamers":
description: Rubrik över listade toppstreamers av zaps
description: Rubrik över listade topp streamers av zaps
no_user_found: Ingen användare hittades
"@no_user_found":
description: Ingen användare hittades vid sökning
anon: Anon
anon: Anno
viewers:
one: 1 tittare
other: $n tittare
other: ${n:decimalPattern} tittare
"@viewers":
description: Antal tittare på streamingen
placeholders:
n:
type: int
description: Antal tittare på strömmingen
"@anon":
description: En anonym användare
stream:
@ -24,16 +21,17 @@ stream:
live: LIVE
ended: AVSLUTAD
planned: PLANERADE
started: Startade $timestamp
started: Startad $timestamp
notification: ${name} gick live!
chat:
disabled: CHAT AVSTÄNGD
disabled_timeout: "Tidsgränsen går ut: $time"
timeout(rich): $mod tidsbegränsad $user för $time
timeout(rich): $mod tidsbegränsad $user för ${time}
"@timeout":
description: Chattmeddelande som visar timeout-händelser
ended: STREAM AVSLUTAD
"@ended":
description: Stream avslutade sidfoten längst ner på chatten
description: Streama slutade sidfot längst ned i chatten
zap(rich): $user zapped $amount sats
"@zap":
description: Chattmeddelande som visar strömavbrott
@ -41,27 +39,27 @@ stream:
label: Skriv meddelande
"@label":
description: Etikett på inmatningsrutan för chattmeddelanden
no_signer: Det går inte att skriva meddelanden med npub-inloggning
no_signer: Det går inte att skriva meddelanden med n-pub inloggning
"@no_signer":
description: Chattinmatningsmeddelande som visas när användaren endast är
inloggad med pubkey
inloggad med publik nyckel
login: Logga in för att skicka meddelanden
"@login":
description: Chattinmatningsmeddelande som visas när användaren är utloggad
badge:
awarded_to: "Tilldelas till:"
"@awarded_to":
description: Rubrik över lista över användare som tilldelats en badge
description: Rubrik över listan över användare som tilldelas ett märke
raid:
to: RAIDING $name
to: RAIDING ${name}
"@to":
description: Chatta raidmeddelande till en annan ström
from: RAID FRÅN $name
description: Chatt raid meddelande till en annan ström
from: RAID FRÅN ${name}
"@from":
description: Chat raid-meddelande från en annan ström
countdown: Raiding $time
description: Chatt raid meddelande från en annan ström
countdown: Radiering i ${time}
"@countdown":
description: Nedräkningstimer för auto-raiding
description: Nedräkningstimer för auto- radiering
goal:
title: "Mål: $amount"
remaining: "Kvarvarande: $amount"
@ -77,15 +75,17 @@ button:
description: Knapptext för följ-knappen
unfollow: Sluta följa
"@unfollow":
description: Knapptext för avföljningsknappen
description: Knapptext för sluta följa knappen
mute: Tysta
unmute: Avtysta
share: Dela
save: Spara
connect: Anslut
settings: Inställningar
embed:
article_by: Artikel av $name
article_by: Artikel av ${name}
note_by: Anteckning av $name
live_stream_by: Direktsändning via $name
live_stream_by: Direktsändning via ${name}
stream_list:
following: Följer
live: Live
@ -101,6 +101,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Öppna i plånboken
button_connect_wallet: Anslut plånbok
copy: Kopieras till urklipp
error:
invalid_custom_amount: Ogiltigt anpassat belopp
@ -108,13 +109,24 @@ zap:
no_lud16: Ingen blixtadress hittades
profile:
past_streams: Tidigare streamar
edit:
settings:
button_profile: Redigera profil
button_wallet: Inställningar för plånbok
profile:
display_name: Visa namn
about: Om
nip05: Nostr Adress
nip05: Nostr adress
lud16: Lightning-adress
error:
logged_out: Kan inte redigera profil när jag är utloggad
wallet:
connect_wallet: Anslut plånbok (NWC nostr+walletconnect://)
disconnect_wallet: Koppla bort plånboken
connect_1tap: 1-tryck anslutning
paste: Klistra in URL
error:
logged_out: Kan inte ansluta plånbok när du är utloggad
nwc_auth_event_not_found: Inget autentiseringshändelse för plånbok hittades
login:
username: Användarnamn
amber: Logga in med Amber

View File

@ -11,12 +11,9 @@ no_user_found: Kullanıcı bulunamadı
anon: Anon
viewers:
one: 1 izleyici
other: $n izleyiciler
other: ${n:decimalPattern} izleyiciler
"@viewers":
description: Akışı izleyenlerin sayısı
placeholders:
n:
type: int
"@anon":
description: Anonim bir kullanıcı
stream:
@ -25,10 +22,11 @@ stream:
ended: SONLANDI
planned: PLANLANMIŞ
started: Başlatıldı $timestamp
notification: ${name} yayına girdi!
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(rich): $mod zaman aşımına uğradı $user ${time}için
"@timeout":
description: Zaman aşımı olaylarını gösteren sohbet mesajı
ended: YAYIN SONLANDI
@ -53,13 +51,13 @@ stream:
"@awarded_to":
description: Rozet verilen kullanıcıların listesi üzerinde başlık
raid:
to: RAIDING ${name}S
to: RAIDING ${name}
"@to":
description: Başka bir akışa sohbet baskını mesajı
from: $name ADRESINDEN RAID
from: ${name} ADRESINDEN RAID
"@from":
description: Başka bir akıştan sohbet baskını mesajı
countdown: $time adresinde baskın
countdown: ${time}adresinde baskın
"@countdown":
description: Otomatik sürüş için geri sayım sayacı
goal:
@ -82,6 +80,8 @@ button:
unmute: Sesi aç
share: Paylaş
save: Kaydet
connect: Bağlan
settings: Ayarlar
embed:
article_by: Makale $name
note_by: "Not: $name"
@ -101,6 +101,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Cüzdanda Aç
button_connect_wallet: Cüzdan Bağlayın
copy: Panoya kopyalandı
error:
invalid_custom_amount: Geçersiz özel tutar
@ -108,13 +109,24 @@ zap:
no_lud16: Yıldırım adresi bulunamadı
profile:
past_streams: Geçmiş Akışlar
edit:
settings:
button_profile: Profil Düzenle
button_wallet: Cüzdan Ayarları
profile:
display_name: Ekran Adı
about: Hakkında
nip05: Nostr Adres
lud16: Yıldırım Adres
error:
logged_out: Çıkış yapıldığında profil düzenlenemiyor
wallet:
connect_wallet: Connect Cüzdan (NWC nostr+walletconnect://)
disconnect_wallet: Cüzdan Bağlantısını Kes
connect_1tap: 1-Tap Bağlantı
paste: URL Yapıştır
error:
logged_out: Oturumu kapattığımda cüzdana bağlanamıyorum
nwc_auth_event_not_found: Cüzdan yetkilendirme olayı bulunamadı
login:
username: Kullanıcı Adı
amber: Amber ile Giriş Yapın

View File

@ -11,12 +11,9 @@ no_user_found: Користувача не знайдено
anon: Анонім.
viewers:
one: 1 глядач
other: $n глядачі
other: ${n:decimalPattern} глядачів
"@viewers":
description: Кількість глядачів стріму
placeholders:
n:
type: int
"@anon":
description: Анонімний користувач
stream:
@ -25,10 +22,11 @@ stream:
ended: ЗАКІНЧЕНО
planned: ЗАПЛАНОВАНО
started: Запустив $timestamp
notification: ${name} запрацював!
chat:
disabled: ЧАТ ВІДКЛЮЧЕНО
disabled_timeout: "Тайм-аут закінчився: $time"
timeout(rich): $mod таймінг $user для $time
timeout(rich): $mod таймінг $user для ${time}
"@timeout":
description: Повідомлення в чаті про події тайм-ауту
ended: СТРІМ ЗАКІНЧИВСЯ
@ -83,6 +81,8 @@ button:
unmute: Увімкнути звук.
share: Поділіться
save: Зберегти
connect: Підключіться
settings: Налаштування
embed:
article_by: Стаття за посиланням $name
note_by: Примітка $name
@ -103,6 +103,7 @@ zap:
button_zap_ready: Zap $amount sats
button_zap: Zap!
button_open_wallet: Відкрити в Гаманці
button_connect_wallet: Підключити гаманець
copy: Скопійовано в буфер обміну
error:
invalid_custom_amount: Неправильна сума замовлення
@ -110,13 +111,24 @@ zap:
no_lud16: Адреса блискавки не знайдена
profile:
past_streams: Минулі потоки
edit:
settings:
button_profile: Редагувати профіль
button_wallet: Налаштування гаманця
profile:
display_name: Ім'я користувача
about: Про
nip05: Nostr Адреса
lud16: Блискавична адреса
error:
logged_out: Неможливо редагувати профіль, коли ви вийшли з системи
wallet:
connect_wallet: Підключити гаманець (NWC nostr+walletconnect://)
disconnect_wallet: Відключити гаманець
connect_1tap: Підключення в 1 кран
paste: Вставити URL-адресу
error:
logged_out: Не вдається підключити гаманець, коли ви вийшли з системи
nwc_auth_event_not_found: Не знайдено жодної події авторизації гаманця
login:
username: Ім'я користувача
amber: Увійдіть за допомогою Amber

Some files were not shown because too many files have changed in this diff Show More