Compare commits
24 Commits
v0.8.1
...
99c163a51a
Author | SHA1 | Date | |
---|---|---|---|
99c163a51a
|
|||
fb4821ffdd
|
|||
5789d9a7a1
|
|||
b854962b07
|
|||
0295d49077
|
|||
74c3ad9b9c
|
|||
8bd9ff2a4c
|
|||
8516f2b3c1
|
|||
344f2d31fc
|
|||
c6168ec094
|
|||
2ec17c6c41
|
|||
c6b76bc64d
|
|||
d3a8c41f93
|
|||
04967910fa
|
|||
9d2bc7456f
|
|||
cc53762e4b
|
|||
0a474a1ca7
|
|||
e9062f0265
|
|||
8dae9a97f2
|
|||
a64cacb13c
|
|||
19d50f2947
|
|||
f36f02e95a
|
|||
484bf67951
|
|||
47bed26df6
|
1
.github/workflows/build.yml
vendored
@ -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
|
@ -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 {
|
||||
|
@ -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>
|
||||
|
@ -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" />
|
||||
|
@ -1 +1,2 @@
|
||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||
#include "Generated.xcconfig"
|
||||
|
@ -1 +1,2 @@
|
||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||
#include "Generated.xcconfig"
|
||||
|
30
ios/GoogleService-Info.plist
Normal 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
@ -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
@ -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
|
@ -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;
|
||||
|
3
ios/Runner.xcworkspace/contents.xcworkspacedata
generated
@ -4,4 +4,7 @@
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
@ -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"}}
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 771 B |
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 282 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 762 B After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 6.4 KiB |
@ -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>
|
||||
|
13
ios/Runner/Runner.entitlements
Normal 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>
|
22
lib/app.dart
@ -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(),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
@ -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 =
|
||||
|
@ -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',
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@ -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
|
@ -3,24 +3,21 @@
|
||||
/// Source: lib/i18n
|
||||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 28
|
||||
/// Strings: 1764 (63 per locale)
|
||||
/// Locales: 22
|
||||
/// Strings: 1628 (74 per locale)
|
||||
///
|
||||
/// Built on 2025-05-20 at 16:08 UTC
|
||||
/// Built on 2025-05-28 at 12:41 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,
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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: '${NumberFormat.decimalPattern('ar').format(n)} المشاهدين',
|
||||
);
|
||||
|
||||
@override late final _TranslationsStreamAr stream = _TranslationsStreamAr._(_root);
|
||||
@ -66,36 +67,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ extension on TranslationsAr {
|
||||
case 'anon': return 'هوية مخفية';
|
||||
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ar'))(n,
|
||||
one: '1 مشاهد',
|
||||
other: '${n} المشاهدون',
|
||||
other: '${NumberFormat.decimalPattern('ar').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.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 +422,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 'تسجيل الدخول بالمفتاح';
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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áků',
|
||||
);
|
||||
|
||||
@override late final _TranslationsStreamCs stream = _TranslationsStreamCs._(_root);
|
||||
@ -66,36 +67,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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áků',
|
||||
);
|
||||
case 'stream.status.live': return 'LIVE';
|
||||
case 'stream.status.ended': return 'KONEC';
|
||||
case 'stream.status.planned': return 'PLÁNOVANÉ';
|
||||
case 'stream.started': return ({ required Object timestamp}) => 'Založeno ${timestamp}';
|
||||
case 'stream.started': return ({required Object timestamp}) => 'Založeno ${timestamp}';
|
||||
case 'stream.chat.disabled': return 'CHAT ZRUŠEN';
|
||||
case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Časový limit vyprší: ${time}';
|
||||
case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Časový limit vyprší: ${time}';
|
||||
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
|
||||
mod,
|
||||
const TextSpan(text: ' vypršel čas '),
|
||||
user,
|
||||
const TextSpan(text: ' pro '),
|
||||
time,
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.ended': return 'STREAM UKONČEN';
|
||||
case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
|
||||
user,
|
||||
const TextSpan(text: ' Zapped '),
|
||||
amount,
|
||||
const TextSpan(text: ' sats'),
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.write.label': return 'Napište zprávu';
|
||||
case 'stream.chat.write.no_signer': return 'Nelze psát zprávy s přihlášením npub';
|
||||
case 'stream.chat.write.login': return 'Pro odesílání zpráv se prosím přihlaste';
|
||||
case 'stream.chat.badge.awarded_to': return 'Uděleno:';
|
||||
case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
|
||||
case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID Z ${name}';
|
||||
case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Nájezdy na ${time}';
|
||||
case 'goal.title': return ({ required Object amount}) => 'Cíl: ${amount}';
|
||||
case 'goal.remaining': return ({ required Object amount}) => 'Zbývá: ${amount}';
|
||||
case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
|
||||
case 'stream.chat.raid.from': return ({required Object name}) => 'RAID Z ${name}';
|
||||
case 'stream.chat.raid.countdown': return ({required Object time}) => 'Nájezdy na ${time}';
|
||||
case 'goal.title': return ({required Object amount}) => 'Cíl: ${amount}';
|
||||
case 'goal.remaining': return ({required Object amount}) => 'Zbývá: ${amount}';
|
||||
case 'goal.complete': return 'KOMPLETNÍ';
|
||||
case 'button.login': return 'Přihlášení';
|
||||
case 'button.logout': return 'Odhlášení';
|
||||
@ -380,30 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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
|
||||
|
||||
@ -53,7 +54,7 @@ class TranslationsDe implements Translations {
|
||||
/// Anzahl der Betrachter 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,37 @@ 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 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 +119,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 +149,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,8 +205,8 @@ class _TranslationsLoginDe implements TranslationsLoginEn {
|
||||
}
|
||||
|
||||
// Path: stream.status
|
||||
class _TranslationsStreamStatusDe implements TranslationsStreamStatusEn {
|
||||
_TranslationsStreamStatusDe._(this._root);
|
||||
class _TranslationsStreamStatusDe extends TranslationsStreamStatusEn {
|
||||
_TranslationsStreamStatusDe._(TranslationsDe root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsDe _root; // ignore: unused_field
|
||||
|
||||
@ -200,34 +217,34 @@ class _TranslationsStreamStatusDe implements TranslationsStreamStatusEn {
|
||||
}
|
||||
|
||||
// Path: stream.chat
|
||||
class _TranslationsStreamChatDe implements TranslationsStreamChatEn {
|
||||
_TranslationsStreamChatDe._(this._root);
|
||||
class _TranslationsStreamChatDe extends TranslationsStreamChatEn {
|
||||
_TranslationsStreamChatDe._(TranslationsDe root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsDe _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get disabled => 'CHAT DEAKTIVIERT';
|
||||
@override String disabled_timeout({ required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
|
||||
@override String disabled_timeout({required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
|
||||
|
||||
/// Chat-Nachricht mit Zeitüberschreitungsereignissen
|
||||
@override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
@override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
|
||||
mod,
|
||||
const TextSpan(text: ' Zeitüberschreitung '),
|
||||
user,
|
||||
const TextSpan(text: ' für '),
|
||||
time,
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
|
||||
/// Stream beendet Fußzeile am Ende des Chats
|
||||
@override String get ended => 'STREAM BEENDET';
|
||||
|
||||
/// Chatnachricht mit Stream Zaps
|
||||
@override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
|
||||
user,
|
||||
const TextSpan(text: ' hat '),
|
||||
amount,
|
||||
const TextSpan(text: ' sats gezappt'),
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
|
||||
@override late final _TranslationsStreamChatWriteDe write = _TranslationsStreamChatWriteDe._(_root);
|
||||
@override late final _TranslationsStreamChatBadgeDe badge = _TranslationsStreamChatBadgeDe._(_root);
|
||||
@ -235,8 +252,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 +263,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 +273,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.planned': return 'GEPLANT';
|
||||
case 'stream.started': return ({ required Object timestamp}) => 'Gestartet ${timestamp}';
|
||||
case 'stream.started': return ({required Object timestamp}) => 'Gestartet ${timestamp}';
|
||||
case 'stream.chat.disabled': return 'CHAT DEAKTIVIERT';
|
||||
case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
|
||||
case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Die Zeitüberschreitung läuft ab: ${time}';
|
||||
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
|
||||
mod,
|
||||
const TextSpan(text: ' Zeitüberschreitung '),
|
||||
user,
|
||||
const TextSpan(text: ' für '),
|
||||
time,
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.ended': return 'STREAM BEENDET';
|
||||
case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
|
||||
user,
|
||||
const TextSpan(text: ' hat '),
|
||||
amount,
|
||||
const TextSpan(text: ' sats gezappt'),
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.write.label': return 'Nachricht schreiben';
|
||||
case 'stream.chat.write.no_signer': return 'Mit npub-Login können keine Nachrichten geschrieben werden';
|
||||
case 'stream.chat.write.login': return 'Bitte anmelden, um Nachrichten zu senden';
|
||||
case 'stream.chat.badge.awarded_to': return 'Verliehen an:';
|
||||
case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
|
||||
case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID VON ${name}';
|
||||
case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raubzüge auf ${time}';
|
||||
case 'goal.title': return ({ required Object amount}) => 'Ziel: ${amount}';
|
||||
case 'goal.remaining': return ({ required Object amount}) => 'Verbleibend: ${amount}';
|
||||
case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
|
||||
case 'stream.chat.raid.from': return ({required Object name}) => 'RAID VON ${name}';
|
||||
case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raubzüge auf ${time}';
|
||||
case 'goal.title': return ({required Object amount}) => 'Ziel: ${amount}';
|
||||
case 'goal.remaining': return ({required Object amount}) => 'Verbleibend: ${amount}';
|
||||
case 'goal.complete': return 'COMPLETE';
|
||||
case 'button.login': return 'Anmelden';
|
||||
case 'button.logout': return 'Abmelden';
|
||||
@ -380,30 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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 'Σύνδεση με κλειδί';
|
||||
|
@ -55,49 +55,50 @@ class Translations implements BaseTranslations<AppLocale, Translations> {
|
||||
/// 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}';
|
||||
late final TranslationsStreamChatEn chat = TranslationsStreamChatEn.internal(_root);
|
||||
}
|
||||
|
||||
// Path: goal
|
||||
class TranslationsGoalEn {
|
||||
TranslationsGoalEn._(this._root);
|
||||
TranslationsGoalEn.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
String title({ required Object amount}) => 'Goal: ${amount}';
|
||||
String remaining({ required Object amount}) => 'Remaining: ${amount}';
|
||||
String title({required Object amount}) => 'Goal: ${amount}';
|
||||
String remaining({required Object amount}) => 'Remaining: ${amount}';
|
||||
String get complete => 'COMPLETE';
|
||||
}
|
||||
|
||||
// Path: button
|
||||
class TranslationsButtonEn {
|
||||
TranslationsButtonEn._(this._root);
|
||||
TranslationsButtonEn.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
@ -119,23 +120,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 +151,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 +202,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 +219,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 +264,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 +275,26 @@ 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';
|
||||
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 +304,7 @@ class TranslationsLoginErrorEn {
|
||||
|
||||
// Path: stream.chat.write
|
||||
class TranslationsStreamChatWriteEn {
|
||||
TranslationsStreamChatWriteEn._(this._root);
|
||||
TranslationsStreamChatWriteEn.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
@ -292,7 +322,7 @@ class TranslationsStreamChatWriteEn {
|
||||
|
||||
// Path: stream.chat.badge
|
||||
class TranslationsStreamChatBadgeEn {
|
||||
TranslationsStreamChatBadgeEn._(this._root);
|
||||
TranslationsStreamChatBadgeEn.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
@ -304,25 +334,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 +360,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 {
|
||||
@ -341,37 +382,37 @@ extension on Translations {
|
||||
case 'anon': return 'Anon';
|
||||
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.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 +423,41 @@ 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.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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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: '${NumberFormat.decimalPattern('fr').format(n)} téléspectateurs',
|
||||
);
|
||||
|
||||
@override late final _TranslationsStreamFr stream = _TranslationsStreamFr._(_root);
|
||||
@ -66,36 +67,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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: '${NumberFormat.decimalPattern('fr').format(n)} 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.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 +422,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 d’utilisateur';
|
||||
case 'login.amber': return 'Se connecter avec Amber';
|
||||
case 'login.key': return 'Connexion avec la clé';
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +253,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 +264,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 +303,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 +321,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 +333,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 +360,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 +382,38 @@ 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.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 +424,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,59 @@ 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.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 +422,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 'キーでログイン';
|
||||
|
@ -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: '${NumberFormat.decimalPattern('ko').format(n)} 시청자',
|
||||
);
|
||||
|
||||
@override late final _TranslationsStreamKo stream = _TranslationsStreamKo._(_root);
|
||||
@ -66,36 +67,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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: '${NumberFormat.decimalPattern('ko').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.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 +422,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 '키로 로그인';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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 'Вход в систему с помощью ключа';
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
@ -53,7 +54,7 @@ class TranslationsSv implements Translations {
|
||||
/// Antal tittare på streamingen
|
||||
@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,37 @@ 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}) => 'Startade ${timestamp}';
|
||||
@override late final _TranslationsStreamChatSv chat = _TranslationsStreamChatSv._(_root);
|
||||
}
|
||||
|
||||
// Path: goal
|
||||
class _TranslationsGoalSv implements TranslationsGoalEn {
|
||||
_TranslationsGoalSv._(this._root);
|
||||
class _TranslationsGoalSv extends TranslationsGoalEn {
|
||||
_TranslationsGoalSv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String title({ required Object amount}) => 'Mål: ${amount}';
|
||||
@override String remaining({ required Object amount}) => 'Kvarvarande: ${amount}';
|
||||
@override String title({required Object amount}) => 'Mål: ${amount}';
|
||||
@override String remaining({required Object amount}) => 'Kvarvarande: ${amount}';
|
||||
@override String get complete => 'KOMPLETT';
|
||||
}
|
||||
|
||||
// Path: button
|
||||
class _TranslationsButtonSv implements TranslationsButtonEn {
|
||||
_TranslationsButtonSv._(this._root);
|
||||
class _TranslationsButtonSv extends TranslationsButtonEn {
|
||||
_TranslationsButtonSv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
@ -117,23 +119,25 @@ class _TranslationsButtonSv implements TranslationsButtonEn {
|
||||
@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 +149,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 +205,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 +217,34 @@ class _TranslationsStreamStatusSv implements TranslationsStreamStatusEn {
|
||||
}
|
||||
|
||||
// Path: stream.chat
|
||||
class _TranslationsStreamChatSv implements TranslationsStreamChatEn {
|
||||
_TranslationsStreamChatSv._(this._root);
|
||||
class _TranslationsStreamChatSv extends TranslationsStreamChatEn {
|
||||
_TranslationsStreamChatSv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get disabled => 'CHAT AVSTÄNGD';
|
||||
@override String disabled_timeout({ required Object time}) => 'Tidsgränsen går ut: ${time}';
|
||||
@override String disabled_timeout({required Object time}) => 'Tidsgränsen går ut: ${time}';
|
||||
|
||||
/// Chattmeddelande som visar timeout-händelser
|
||||
@override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
@override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
|
||||
mod,
|
||||
const TextSpan(text: ' tidsbegränsad '),
|
||||
user,
|
||||
const TextSpan(text: ' för '),
|
||||
time,
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
|
||||
/// Stream avslutade sidfoten längst ner på chatten
|
||||
@override String get ended => 'STREAM AVSLUTAD';
|
||||
|
||||
/// Chattmeddelande som visar strömavbrott
|
||||
@override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
|
||||
user,
|
||||
const TextSpan(text: ' zapped '),
|
||||
amount,
|
||||
const TextSpan(text: ' sats'),
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
|
||||
@override late final _TranslationsStreamChatWriteSv write = _TranslationsStreamChatWriteSv._(_root);
|
||||
@override late final _TranslationsStreamChatBadgeSv badge = _TranslationsStreamChatBadgeSv._(_root);
|
||||
@ -235,8 +252,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,9 +263,9 @@ 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
|
||||
|
||||
@ -256,13 +273,27 @@ class _TranslationsProfileEditSv implements TranslationsProfileEditEn {
|
||||
@override String get display_name => 'Visa namn';
|
||||
@override String get about => 'Om';
|
||||
@override String get nip05 => 'Nostr Adress';
|
||||
@override String get lud16 => 'Lightning-adress';
|
||||
@override late final _TranslationsProfileEditErrorSv error = _TranslationsProfileEditErrorSv._(_root);
|
||||
@override String get lud16 => 'Adress för blixtnedslag';
|
||||
@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 => 'Connect plånbok (NWC nostr+walletconnect://)';
|
||||
@override String get disconnect_wallet => 'Koppla bort plånboken';
|
||||
@override String get connect_1tap => '1-Tap-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 +302,8 @@ class _TranslationsLoginErrorSv implements TranslationsLoginErrorEn {
|
||||
}
|
||||
|
||||
// Path: stream.chat.write
|
||||
class _TranslationsStreamChatWriteSv implements TranslationsStreamChatWriteEn {
|
||||
_TranslationsStreamChatWriteSv._(this._root);
|
||||
class _TranslationsStreamChatWriteSv extends TranslationsStreamChatWriteEn {
|
||||
_TranslationsStreamChatWriteSv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
@ -289,8 +320,8 @@ class _TranslationsStreamChatWriteSv implements TranslationsStreamChatWriteEn {
|
||||
}
|
||||
|
||||
// Path: stream.chat.badge
|
||||
class _TranslationsStreamChatBadgeSv implements TranslationsStreamChatBadgeEn {
|
||||
_TranslationsStreamChatBadgeSv._(this._root);
|
||||
class _TranslationsStreamChatBadgeSv extends TranslationsStreamChatBadgeEn {
|
||||
_TranslationsStreamChatBadgeSv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
@ -301,26 +332,26 @@ class _TranslationsStreamChatBadgeSv implements TranslationsStreamChatBadgeEn {
|
||||
}
|
||||
|
||||
// Path: stream.chat.raid
|
||||
class _TranslationsStreamChatRaidSv implements TranslationsStreamChatRaidEn {
|
||||
_TranslationsStreamChatRaidSv._(this._root);
|
||||
class _TranslationsStreamChatRaidSv extends TranslationsStreamChatRaidEn {
|
||||
_TranslationsStreamChatRaidSv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// Chatta raidmeddelande till en annan ström
|
||||
@override String to({ required Object name}) => 'RAIDING ${name}';
|
||||
@override String to({required Object name}) => 'RAIDING ${name}';
|
||||
|
||||
/// Chat raid-meddelande från en annan ström
|
||||
@override String from({ required Object name}) => 'RAID FRÅN ${name}';
|
||||
@override String from({required Object name}) => 'RAID FRÅN ${name}';
|
||||
|
||||
/// Nedräkningstimer för auto-raiding
|
||||
@override String countdown({ required Object time}) => 'Raiding på ${time}';
|
||||
@override String countdown({required Object time}) => 'Raiding på ${time}';
|
||||
}
|
||||
|
||||
// Path: profile.edit.error
|
||||
class _TranslationsProfileEditErrorSv implements TranslationsProfileEditErrorEn {
|
||||
_TranslationsProfileEditErrorSv._(this._root);
|
||||
// Path: settings.profile.error
|
||||
class _TranslationsSettingsProfileErrorSv extends TranslationsSettingsProfileErrorEn {
|
||||
_TranslationsSettingsProfileErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
@ -328,6 +359,17 @@ 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 inloggad';
|
||||
@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 {
|
||||
@ -339,37 +381,37 @@ extension on TranslationsSv {
|
||||
case 'anon': return 'Anon';
|
||||
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}) => 'Startade ${timestamp}';
|
||||
case 'stream.chat.disabled': return 'CHAT AVSTÄNGD';
|
||||
case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Tidsgränsen går ut: ${time}';
|
||||
case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Tidsgränsen går ut: ${time}';
|
||||
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
|
||||
mod,
|
||||
const TextSpan(text: ' tidsbegränsad '),
|
||||
user,
|
||||
const TextSpan(text: ' för '),
|
||||
time,
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.ended': return 'STREAM AVSLUTAD';
|
||||
case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
|
||||
user,
|
||||
const TextSpan(text: ' zapped '),
|
||||
amount,
|
||||
const TextSpan(text: ' sats'),
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.write.label': return 'Skriv meddelande';
|
||||
case 'stream.chat.write.no_signer': return 'Det går inte att skriva meddelanden med npub-inloggning';
|
||||
case 'stream.chat.write.login': return 'Logga in för att skicka meddelanden';
|
||||
case 'stream.chat.badge.awarded_to': return 'Tilldelas till:';
|
||||
case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}';
|
||||
case 'stream.chat.raid.from': return ({ required Object name}) => 'RAID FRÅN ${name}';
|
||||
case 'stream.chat.raid.countdown': return ({ required Object time}) => 'Raiding på ${time}';
|
||||
case 'goal.title': return ({ required Object amount}) => 'Mål: ${amount}';
|
||||
case 'goal.remaining': return ({ required Object amount}) => 'Kvarvarande: ${amount}';
|
||||
case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
|
||||
case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FRÅN ${name}';
|
||||
case 'stream.chat.raid.countdown': return ({required Object time}) => 'Raiding på ${time}';
|
||||
case 'goal.title': return ({required Object amount}) => 'Mål: ${amount}';
|
||||
case 'goal.remaining': return ({required Object amount}) => 'Kvarvarande: ${amount}';
|
||||
case 'goal.complete': return 'KOMPLETT';
|
||||
case 'button.login': return 'Logga in';
|
||||
case 'button.logout': return 'Logga ut';
|
||||
@ -380,30 +422,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 'Adress för blixtnedslag';
|
||||
case 'settings.profile.error.logged_out': return 'Kan inte redigera profil när jag är utloggad';
|
||||
case 'settings.wallet.connect_wallet': return 'Connect plånbok (NWC nostr+walletconnect://)';
|
||||
case 'settings.wallet.disconnect_wallet': return 'Koppla bort plånboken';
|
||||
case 'settings.wallet.connect_1tap': return '1-Tap-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 inloggad';
|
||||
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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,34 @@ class _TranslationsStreamStatusTr implements TranslationsStreamStatusEn {
|
||||
}
|
||||
|
||||
// Path: stream.chat
|
||||
class _TranslationsStreamChatTr implements TranslationsStreamChatEn {
|
||||
_TranslationsStreamChatTr._(this._root);
|
||||
class _TranslationsStreamChatTr extends TranslationsStreamChatEn {
|
||||
_TranslationsStreamChatTr._(TranslationsTr root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsTr _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get disabled => 'SOHBET DEVRE DIŞI';
|
||||
@override String disabled_timeout({ required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
|
||||
@override String disabled_timeout({required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
|
||||
|
||||
/// Zaman aşımı olaylarını gösteren sohbet mesajı
|
||||
@override TextSpan timeout({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
@override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
|
||||
mod,
|
||||
const TextSpan(text: ' zaman aşımına uğradı '),
|
||||
user,
|
||||
const TextSpan(text: ' için '),
|
||||
time,
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
|
||||
/// Sohbetin alt kısmında akış sona erdi altbilgisi
|
||||
@override String get ended => 'YAYIN SONLANDI';
|
||||
|
||||
/// Akış zaplarını gösteren sohbet mesajı
|
||||
@override TextSpan zap({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
|
||||
user,
|
||||
const TextSpan(text: ' zapped '),
|
||||
amount,
|
||||
const TextSpan(text: ' sats'),
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
|
||||
@override late final _TranslationsStreamChatWriteTr write = _TranslationsStreamChatWriteTr._(_root);
|
||||
@override late final _TranslationsStreamChatBadgeTr badge = _TranslationsStreamChatBadgeTr._(_root);
|
||||
@ -235,8 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.chat.disabled': return 'SOHBET DEVRE DIŞI';
|
||||
case 'stream.chat.disabled_timeout': return ({ required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
|
||||
case 'stream.chat.timeout': return ({ required InlineSpan mod, required InlineSpan user, required InlineSpan time, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
|
||||
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
|
||||
mod,
|
||||
const TextSpan(text: ' zaman aşımına uğradı '),
|
||||
user,
|
||||
const TextSpan(text: ' için '),
|
||||
time,
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.ended': return 'YAYIN SONLANDI';
|
||||
case 'stream.chat.zap': return ({ required InlineSpan user, required InlineSpan amount, TextStyle? style, GestureRecognizer? recognizer}) => TextSpan(children: [
|
||||
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
|
||||
user,
|
||||
const TextSpan(text: ' zapped '),
|
||||
amount,
|
||||
const TextSpan(text: ' sats'),
|
||||
], style: style, recognizer: recognizer);
|
||||
]);
|
||||
case 'stream.chat.write.label': return 'Mesaj yaz';
|
||||
case 'stream.chat.write.no_signer': return 'Npub girişi ile mesaj yazılamıyor';
|
||||
case 'stream.chat.write.login': return 'Mesaj göndermek için lütfen giriş yapın';
|
||||
case 'stream.chat.badge.awarded_to': return 'Ödüllendirildi:';
|
||||
case 'stream.chat.raid.to': return ({ required Object name}) => 'RAIDING ${name}S';
|
||||
case 'stream.chat.raid.from': return ({ required Object name}) => '${name} ADRESINDEN RAID';
|
||||
case 'stream.chat.raid.countdown': return ({ required Object time}) => '${time} adresinde baskın';
|
||||
case 'goal.title': return ({ required Object amount}) => 'Hedef: ${amount}';
|
||||
case 'goal.remaining': return ({ required Object amount}) => 'Kalan: ${amount}';
|
||||
case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
|
||||
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 +422,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';
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +274,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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 'Увійдіть за допомогою ключа';
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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,37 @@ 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 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 +119,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 +149,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 +205,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 +217,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 +252,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 +263,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 +302,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 +320,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 +332,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 +359,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 +381,37 @@ 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.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 +422,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 '使用鑰匙登入';
|
||||
|
@ -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
|
@ -10,12 +10,9 @@ no_user_found: لم يتم العثور على مستخدم
|
||||
anon: هوية مخفية
|
||||
viewers:
|
||||
one: 1 مشاهد
|
||||
other: $n المشاهدون
|
||||
other: "${n:decimalPattern} المشاهدين"
|
||||
"@viewers":
|
||||
description: عدد مشاهدي البث
|
||||
placeholders:
|
||||
n:
|
||||
type: في
|
||||
"@anon":
|
||||
description: مستخدم مجهول
|
||||
stream:
|
||||
@ -81,6 +78,8 @@ button:
|
||||
unmute: رفع الكتم
|
||||
share: مشاركة
|
||||
save: حفظ
|
||||
connect: الاتصال
|
||||
settings: الإعدادات
|
||||
embed:
|
||||
article_by: مقال بقلم $name
|
||||
note_by: ملاحظة من $name
|
||||
@ -100,6 +99,7 @@ zap:
|
||||
button_zap_ready: أومض $amount ساتوشي
|
||||
button_zap: زاب
|
||||
button_open_wallet: فتح في المحفظة
|
||||
button_connect_wallet: توصيل المحفظة
|
||||
copy: نسخ إلى الحافظة
|
||||
error:
|
||||
invalid_custom_amount: مبلغ مخصص غير صالح
|
||||
@ -107,13 +107,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: تسجيل الدخول مع آمبر
|
||||
|
@ -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
|
@ -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áků
|
||||
"@viewers":
|
||||
description: Počet diváků streamu
|
||||
placeholders:
|
||||
n:
|
||||
type: int
|
||||
"@anon":
|
||||
description: Anonymní uživatel
|
||||
stream:
|
||||
@ -82,6 +79,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 +100,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 +108,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
|
||||
|
@ -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:
|
||||
@ -81,6 +78,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 +100,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 +108,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
|
||||
|
@ -11,12 +11,9 @@ no_user_found: Kein Benutzer 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
|
||||
"@anon":
|
||||
description: Ein anonymer Benutzer
|
||||
stream:
|
||||
@ -83,6 +80,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 +101,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 +109,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
|
||||
|
@ -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:
|
||||
@ -84,6 +81,8 @@ button:
|
||||
unmute: Αποσυνδέστε τη φωνή σας από το
|
||||
share: Μοιραστείτε το
|
||||
save: Αποθήκευση
|
||||
connect: Συνδέστε το
|
||||
settings: Ρυθμίσεις
|
||||
embed:
|
||||
article_by: Άρθρο από $name
|
||||
note_by: Σημείωση του $name
|
||||
@ -104,6 +103,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 +111,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
|
||||
|
@ -10,12 +10,9 @@ no_user_found: No user found
|
||||
anon: Anon
|
||||
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:
|
||||
@ -27,7 +24,7 @@ stream:
|
||||
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 +48,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 +77,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 +98,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 +106,24 @@ 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
|
||||
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
|
||||
|
@ -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:
|
||||
@ -84,6 +81,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 +103,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 +111,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
|
||||
|
@ -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:
|
||||
@ -82,6 +79,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 +101,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 +109,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
|
||||
|
@ -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:
|
||||
@ -82,6 +79,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 +100,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 +108,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 d’utilisateur
|
||||
amber: Se connecter avec Amber
|
||||
|
@ -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
|
@ -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:
|
||||
@ -28,7 +25,7 @@ stream:
|
||||
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 +50,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 +79,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 +100,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 +108,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
|
||||
|
@ -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:
|
||||
@ -82,6 +79,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 +101,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 +109,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
|
||||
|
@ -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:
|
||||
@ -80,6 +77,8 @@ button:
|
||||
unmute: ミュート解除
|
||||
share: 共有
|
||||
save: 保存
|
||||
connect: 接続
|
||||
settings: 設定
|
||||
embed:
|
||||
article_by: 記事: $name
|
||||
note_by: $name の投稿
|
||||
@ -99,6 +98,7 @@ zap:
|
||||
button_zap_ready: $amount satsをザップする
|
||||
button_zap: ザップ
|
||||
button_open_wallet: ウォレットで開く
|
||||
button_connect_wallet: コネクトウォレット
|
||||
copy: クリップボードにコピー
|
||||
error:
|
||||
invalid_custom_amount: 無効なカスタム金額
|
||||
@ -106,13 +106,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: 琥珀でログイン
|
||||
|
@ -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:
|
||||
@ -80,6 +77,8 @@ button:
|
||||
unmute: 뮤트 해제
|
||||
share: 공유
|
||||
save: 저장
|
||||
connect: 연결
|
||||
settings: 설정
|
||||
embed:
|
||||
article_by: "작성자: $name"
|
||||
note_by: "노트 작성됨: $name"
|
||||
@ -99,6 +98,7 @@ zap:
|
||||
button_zap_ready: Zap $amount sats
|
||||
button_zap: Zap
|
||||
button_open_wallet: 지갑에서 열기
|
||||
button_connect_wallet: 지갑 연결
|
||||
copy: 클립보드에 복사
|
||||
error:
|
||||
invalid_custom_amount: 잘못된 사용자 지정 금액
|
||||
@ -106,13 +106,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로 로그인
|
||||
|
@ -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:
|
||||
@ -83,6 +80,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 +101,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 +109,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
|
||||
|
@ -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
|
@ -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:
|
||||
@ -82,6 +79,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 +101,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 +109,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
|
||||
|
@ -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:
|
||||
@ -82,6 +79,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 +101,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 +109,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
|
||||
|
@ -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:
|
||||
@ -83,6 +80,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 +102,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 +110,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
|
||||
|
@ -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:
|
||||
@ -83,6 +80,8 @@ button:
|
||||
unmute: Включить уведомления
|
||||
share: Поделиться
|
||||
save: Сохранить
|
||||
connect: Подключайтесь
|
||||
settings: Настройки
|
||||
embed:
|
||||
article_by: Статья $name
|
||||
note_by: Заметка на сайте $name
|
||||
@ -103,6 +102,7 @@ zap:
|
||||
button_zap_ready: Запнуть $amount сат
|
||||
button_zap: Зап
|
||||
button_open_wallet: Открыть в кошельке
|
||||
button_connect_wallet: Подключить кошелек
|
||||
copy: Скопировано в буфер обмена
|
||||
error:
|
||||
invalid_custom_amount: Недопустимая пользовательская сумма
|
||||
@ -110,13 +110,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
|
||||
|
@ -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
|
@ -11,12 +11,9 @@ no_user_found: Ingen användare hittades
|
||||
anon: Anon
|
||||
viewers:
|
||||
one: 1 tittare
|
||||
other: $n tittare
|
||||
other: ${n:decimalPattern} tittare
|
||||
"@viewers":
|
||||
description: Antal tittare på streamingen
|
||||
placeholders:
|
||||
n:
|
||||
type: int
|
||||
"@anon":
|
||||
description: En anonym användare
|
||||
stream:
|
||||
@ -82,6 +79,8 @@ button:
|
||||
unmute: Avtysta
|
||||
share: Dela
|
||||
save: Spara
|
||||
connect: Anslut
|
||||
settings: Inställningar
|
||||
embed:
|
||||
article_by: Artikel av $name
|
||||
note_by: Anteckning av $name
|
||||
@ -101,6 +100,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 +108,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
|
||||
lud16: Lightning-adress
|
||||
lud16: Adress för blixtnedslag
|
||||
error:
|
||||
logged_out: Kan inte redigera profil när jag är utloggad
|
||||
wallet:
|
||||
connect_wallet: Connect plånbok (NWC nostr+walletconnect://)
|
||||
disconnect_wallet: Koppla bort plånboken
|
||||
connect_1tap: 1-Tap-anslutning
|
||||
paste: Klistra in URL
|
||||
error:
|
||||
logged_out: Kan inte ansluta plånbok när du är inloggad
|
||||
nwc_auth_event_not_found: Inget autentiseringshändelse för plånbok hittades
|
||||
login:
|
||||
username: Användarnamn
|
||||
amber: Logga in med Amber
|
||||
|
@ -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:
|
||||
@ -53,13 +50,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 +79,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 +100,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 +108,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
|
||||
|
@ -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:
|
||||
@ -83,6 +80,8 @@ button:
|
||||
unmute: Увімкнути звук.
|
||||
share: Поділіться
|
||||
save: Зберегти
|
||||
connect: Підключіться
|
||||
settings: Налаштування
|
||||
embed:
|
||||
article_by: Стаття за посиланням $name
|
||||
note_by: Примітка $name
|
||||
@ -103,6 +102,7 @@ zap:
|
||||
button_zap_ready: Zap $amount sats
|
||||
button_zap: Zap!
|
||||
button_open_wallet: Відкрити в Гаманці
|
||||
button_connect_wallet: Підключити гаманець
|
||||
copy: Скопійовано в буфер обміну
|
||||
error:
|
||||
invalid_custom_amount: Неправильна сума замовлення
|
||||
@ -110,13 +110,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
|
||||
|
@ -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
|
@ -10,12 +10,9 @@ no_user_found: 未找到使用者
|
||||
anon: 匿名
|
||||
viewers:
|
||||
one: 1 個檢視器
|
||||
other: $n 觀眾
|
||||
other: ${n:decimalPattern} 觀眾
|
||||
"@viewers":
|
||||
description: 串流的觀看者人數
|
||||
placeholders:
|
||||
n:
|
||||
type: int
|
||||
"@anon":
|
||||
description: 匿名使用者
|
||||
stream:
|
||||
@ -80,6 +77,8 @@ button:
|
||||
unmute: 解除静音
|
||||
share: 分享
|
||||
save: 保存
|
||||
connect: 連接
|
||||
settings: 設定
|
||||
embed:
|
||||
article_by: 文章來源: $name
|
||||
note_by: $name 的筆記
|
||||
@ -99,6 +98,7 @@ zap:
|
||||
button_zap_ready: 打閃 $amount 聰
|
||||
button_zap: 打閃
|
||||
button_open_wallet: 在錢包中開啟
|
||||
button_connect_wallet: 連接錢包
|
||||
copy: 複製到剪貼簿
|
||||
error:
|
||||
invalid_custom_amount: 無效自訂金額
|
||||
@ -106,13 +106,24 @@ zap:
|
||||
no_lud16: 未找到閃電地址
|
||||
profile:
|
||||
past_streams: 過去的直播
|
||||
edit:
|
||||
settings:
|
||||
button_profile: 編輯個人資料
|
||||
button_wallet: 錢包設定
|
||||
profile:
|
||||
display_name: 顯示名稱
|
||||
about: 關於
|
||||
nip05: Nostr 地址
|
||||
nip05: 地址
|
||||
lud16: 閃電地址
|
||||
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 登入
|
||||
|
@ -1,24 +1,82 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:developer' as developer;
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:ndk/domain_layer/entities/account.dart';
|
||||
import 'package:ndk/ndk.dart';
|
||||
import 'package:ndk/shared/nips/nip01/bip340.dart';
|
||||
import 'package:ndk/shared/nips/nip19/nip19.dart';
|
||||
import 'package:zap_stream_flutter/const.dart';
|
||||
import 'package:zap_stream_flutter/utils.dart';
|
||||
|
||||
enum WalletType { nwc }
|
||||
|
||||
class WalletConfig {
|
||||
final WalletType type;
|
||||
final String data;
|
||||
final String? privateKey;
|
||||
|
||||
WalletConfig({required this.type, required this.data, this.privateKey});
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {"type": type.name, "data": data, "privateKey": privateKey};
|
||||
}
|
||||
|
||||
static WalletConfig fromJson(Map<String, dynamic> json) {
|
||||
final type = WalletType.values.firstWhereOrNull(
|
||||
(v) => v.name == json["type"],
|
||||
);
|
||||
if (type == null) {
|
||||
throw "Invalid wallet type: ${json["type"]}";
|
||||
}
|
||||
return WalletConfig(
|
||||
type: type,
|
||||
data: json["data"],
|
||||
privateKey: json["privateKey"],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class SimpleWallet {
|
||||
Future<String> payInvoice(String pr);
|
||||
}
|
||||
|
||||
class NWCWrapper extends SimpleWallet {
|
||||
final NwcConnection _conn;
|
||||
|
||||
NWCWrapper({required NwcConnection conn}) : _conn = conn;
|
||||
|
||||
@override
|
||||
Future<String> payInvoice(String pr) async {
|
||||
final rsp = await ndk.nwc.payInvoice(
|
||||
_conn,
|
||||
invoice: pr,
|
||||
timeout: Duration(seconds: 60),
|
||||
);
|
||||
if (rsp.preimage == null) {
|
||||
throw "Payment failed, preimage missing";
|
||||
} else {
|
||||
return rsp.preimage!;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class LoginAccount {
|
||||
final AccountType type;
|
||||
final String pubkey;
|
||||
final String? privateKey;
|
||||
final List<String>? signerRelays;
|
||||
final WalletConfig? wallet;
|
||||
|
||||
LoginAccount._({
|
||||
SimpleWallet? _cachedWallet;
|
||||
|
||||
LoginAccount({
|
||||
required this.type,
|
||||
required this.pubkey,
|
||||
this.privateKey,
|
||||
this.signerRelays,
|
||||
this.wallet,
|
||||
});
|
||||
|
||||
static LoginAccount nip19(String key) {
|
||||
@ -26,7 +84,7 @@ class LoginAccount {
|
||||
final pubkey =
|
||||
Nip19.isKey("nsec", key) ? Bip340.getPublicKey(keyData) : keyData;
|
||||
final privateKey = Nip19.isKey("npub", key) ? null : keyData;
|
||||
return LoginAccount._(
|
||||
return LoginAccount(
|
||||
type:
|
||||
Nip19.isKey("npub", key)
|
||||
? AccountType.publicKey
|
||||
@ -37,7 +95,7 @@ class LoginAccount {
|
||||
}
|
||||
|
||||
static LoginAccount privateKeyHex(String key) {
|
||||
return LoginAccount._(
|
||||
return LoginAccount(
|
||||
type: AccountType.privateKey,
|
||||
privateKey: key,
|
||||
pubkey: Bip340.getPublicKey(key),
|
||||
@ -45,7 +103,7 @@ class LoginAccount {
|
||||
}
|
||||
|
||||
static LoginAccount externalPublicKeyHex(String key) {
|
||||
return LoginAccount._(type: AccountType.externalSigner, pubkey: key);
|
||||
return LoginAccount(type: AccountType.externalSigner, pubkey: key);
|
||||
}
|
||||
|
||||
static LoginAccount bunker(
|
||||
@ -53,7 +111,7 @@ class LoginAccount {
|
||||
String pubkey,
|
||||
List<String> relays,
|
||||
) {
|
||||
return LoginAccount._(
|
||||
return LoginAccount(
|
||||
type: AccountType.externalSigner,
|
||||
pubkey: pubkey,
|
||||
privateKey: privateKey,
|
||||
@ -65,6 +123,7 @@ class LoginAccount {
|
||||
"type": acc?.type.name,
|
||||
"pubKey": acc?.pubkey,
|
||||
"privateKey": acc?.privateKey,
|
||||
"wallet": acc?.wallet?.toJson(),
|
||||
};
|
||||
|
||||
static LoginAccount? fromJson(Map<String, dynamic> json) {
|
||||
@ -78,16 +137,38 @@ class LoginAccount {
|
||||
throw "Invalid privateKey, length != 64";
|
||||
}
|
||||
}
|
||||
return LoginAccount._(
|
||||
return LoginAccount(
|
||||
type: AccountType.values.firstWhere(
|
||||
(v) => v.toString().endsWith(json["type"] as String),
|
||||
),
|
||||
pubkey: json["pubKey"],
|
||||
privateKey: json["privateKey"],
|
||||
wallet:
|
||||
json.containsKey("wallet") && json["wallet"] != null
|
||||
? WalletConfig.fromJson(json["wallet"])
|
||||
: null,
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<SimpleWallet?> getWallet() async {
|
||||
if (_cachedWallet == null && wallet != null) {
|
||||
switch (wallet!.type) {
|
||||
case WalletType.nwc:
|
||||
{
|
||||
try {
|
||||
final conn = await ndk.nwc.connect(wallet!.data);
|
||||
_cachedWallet = NWCWrapper(conn: conn);
|
||||
} catch (e) {
|
||||
developer.log("Failed to setup wallet: $e");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return _cachedWallet;
|
||||
}
|
||||
}
|
||||
|
||||
class LoginData extends ValueNotifier<LoginAccount?> {
|
||||
@ -119,4 +200,4 @@ class LoginData extends ValueNotifier<LoginAccount?> {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
import 'dart:developer' as developer;
|
||||
|
||||
import 'package:audio_service/audio_service.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
@ -7,10 +8,14 @@ import 'package:zap_stream_flutter/app.dart';
|
||||
import 'package:zap_stream_flutter/const.dart';
|
||||
import 'package:zap_stream_flutter/i18n/strings.g.dart';
|
||||
import 'package:zap_stream_flutter/notifications.dart';
|
||||
import 'package:zap_stream_flutter/player.dart';
|
||||
|
||||
late final MainPlayer mainPlayer;
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
LocaleSettings.useDeviceLocale();
|
||||
await LocaleSettings.useDeviceLocale();
|
||||
//await LocaleSettings.setLocaleRaw("zh");
|
||||
await dotenv.load(fileName: kDebugMode ? ".env.development" : ".env");
|
||||
|
||||
await initLogin();
|
||||
@ -19,5 +24,14 @@ Future<void> main() async {
|
||||
developer.log("Failed to setup notifications: $e");
|
||||
});
|
||||
|
||||
mainPlayer = await AudioService.init(
|
||||
builder: () => MainPlayer(),
|
||||
config: AudioServiceConfig(
|
||||
androidNotificationChannelId: "io.nostrlabs.zap_stream_flutter.player",
|
||||
androidNotificationChannelName: "player",
|
||||
androidNotificationOngoing: true
|
||||
),
|
||||
);
|
||||
|
||||
runZapStream();
|
||||
}
|
||||
|
@ -6,12 +6,14 @@ import 'package:convert/convert.dart';
|
||||
import 'package:crypto/crypto.dart';
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
import 'package:ndk/ndk.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:zap_stream_flutter/const.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:zap_stream_flutter/firebase_options.dart';
|
||||
import 'package:zap_stream_flutter/utils.dart';
|
||||
|
||||
class Notepush {
|
||||
@ -135,8 +137,57 @@ Notepush? getNotificationService() {
|
||||
: null;
|
||||
}
|
||||
|
||||
class NotificationsState {
|
||||
final AuthorizationStatus status;
|
||||
final List<String> notifyKeys;
|
||||
|
||||
NotificationsState({required this.status, required this.notifyKeys});
|
||||
|
||||
NotificationsState copyWith({
|
||||
AuthorizationStatus? newStatus,
|
||||
List<String>? newNotifyKeys,
|
||||
}) {
|
||||
return NotificationsState(
|
||||
status: newStatus ?? status,
|
||||
notifyKeys: newNotifyKeys ?? notifyKeys,
|
||||
);
|
||||
}
|
||||
|
||||
static Future<NotificationsState> init(AuthorizationStatus status) async {
|
||||
if (status == AuthorizationStatus.authorized) {
|
||||
final svc = getNotificationService();
|
||||
if (svc != null) {
|
||||
try {
|
||||
final keys = await svc.getWatchedKeys();
|
||||
return NotificationsState(status: status, notifyKeys: keys);
|
||||
} catch (e) {
|
||||
developer.log("Failed to init NotificationsState: $e");
|
||||
}
|
||||
}
|
||||
}
|
||||
return NotificationsState(status: status, notifyKeys: []);
|
||||
}
|
||||
}
|
||||
|
||||
class NotificationsStore extends ValueNotifier<NotificationsState?> {
|
||||
NotificationsStore(super.value);
|
||||
|
||||
Future<void> reload() async {
|
||||
if (value != null && value!.status == AuthorizationStatus.authorized) {
|
||||
final svc = getNotificationService();
|
||||
if (svc != null) {
|
||||
final keys = await svc.getWatchedKeys();
|
||||
value = value!.copyWith(newNotifyKeys: keys);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// global notifications store
|
||||
final notifications = NotificationsStore(null);
|
||||
|
||||
Future<void> setupNotifications() async {
|
||||
await Firebase.initializeApp();
|
||||
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
|
||||
|
||||
final signer = ndk.accounts.getLoggedAccount()?.signer;
|
||||
if (signer != null) {
|
||||
@ -173,17 +224,25 @@ Future<void> setupNotifications() async {
|
||||
developer.log("Failed to process push notification\n ${e.toString()}");
|
||||
}
|
||||
});
|
||||
|
||||
final settings = await fbase.requestPermission(provisional: true);
|
||||
await fbase.setAutoInitEnabled(true);
|
||||
await fbase.setForegroundNotificationPresentationOptions(
|
||||
alert: true,
|
||||
badge: true,
|
||||
sound: true,
|
||||
);
|
||||
await fbase.requestPermission(provisional: true);
|
||||
|
||||
if (Platform.isIOS) {
|
||||
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
|
||||
if (apnsToken == null) {
|
||||
throw "APNS token not availble";
|
||||
}
|
||||
}
|
||||
await localNotifications.initialize(
|
||||
InitializationSettings(
|
||||
android: AndroidInitializationSettings("@mipmap/ic_launcher"),
|
||||
iOS: DarwinInitializationSettings(),
|
||||
),
|
||||
);
|
||||
fbase.onTokenRefresh.listen((token) async {
|
||||
@ -192,17 +251,15 @@ Future<void> setupNotifications() async {
|
||||
await pusher.setNotificationSettings(token, [30_311]);
|
||||
});
|
||||
|
||||
if (Platform.isIOS) {
|
||||
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
|
||||
if (apnsToken == null) {
|
||||
throw "APNS token not availble";
|
||||
}
|
||||
}
|
||||
final fcmToken = await FirebaseMessaging.instance.getToken();
|
||||
if (fcmToken == null) {
|
||||
throw "Push token is null";
|
||||
}
|
||||
await pusher.register(fcmToken);
|
||||
await pusher.setNotificationSettings(fcmToken, [30_311]);
|
||||
|
||||
notifications.value = await NotificationsState.init(
|
||||
settings.authorizationStatus,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ class LoginPage extends StatelessWidget {
|
||||
if (state.data ?? false) {
|
||||
return BasicButton.text(
|
||||
t.login.amber,
|
||||
onTap: () async {
|
||||
onTap: (context) async {
|
||||
final amber = Amberflutter();
|
||||
final result = await amber.getPublicKey();
|
||||
if (result['signature'] != null) {
|
||||
@ -41,7 +41,7 @@ class LoginPage extends StatelessWidget {
|
||||
}
|
||||
},
|
||||
),
|
||||
BasicButton.text(t.login.key, onTap: () => context.push("/login/key")),
|
||||
BasicButton.text(t.login.key, onTap: (context) => context.push("/login/key")),
|
||||
Container(
|
||||
margin: EdgeInsets.symmetric(vertical: 20),
|
||||
height: 1,
|
||||
@ -51,7 +51,7 @@ class LoginPage extends StatelessWidget {
|
||||
),
|
||||
BasicButton.text(
|
||||
t.login.create,
|
||||
onTap: () => context.push("/login/new"),
|
||||
onTap: (context) => context.push("/login/new"),
|
||||
),
|
||||
],
|
||||
);
|
||||
|