128 Commits
v0.2.0 ... main

Author SHA1 Message Date
a66eb8c338 chore: bump version 2025-06-07 10:48:43 +01:00
f570f4c1f2 fix: range error 2025-06-07 10:48:29 +01:00
71563bc5ce chore: ensure flutter version 3.32+ 2025-06-06 21:53:21 +01:00
b5b5ef0daf chore: bump version 2025-06-05 12:05:39 +01:00
3b07f7d073 feat: improve vertical player design 2025-06-05 12:05:07 +01:00
64655ba21c fix: handle short urls
closes #52
2025-06-05 11:47:32 +01:00
5ffab5f7bf fix: back press gesture blocked
fix: portrait player state issue
closes #49
2025-06-05 11:26:49 +01:00
0d8ce78009 chore: bump version 2025-06-03 15:27:52 +01:00
ef1c03d8d5 fix: stop player while detached
closes #51
2025-06-03 15:24:27 +01:00
97a6708ae2 chore: bump version 2025-06-03 14:27:20 +01:00
6bb19ce1f5 feat: protrait video style 2025-06-03 13:54:56 +01:00
f15e693a54 fix: update default & current stream info 2025-06-03 10:29:40 +01:00
8605761dff feat: improve variant display and stream editing
closes #45
2025-06-03 10:25:26 +01:00
f553ecdab3 fix: notifications icon 2025-05-31 12:02:01 +01:00
b7764d82c9 fix: zap comments missing 2025-05-30 17:08:00 +01:00
1575c7dd09 fix: ios 2025-05-30 14:56:18 +01:00
3914768eeb chore: update translations 2025-05-30 14:17:39 +01:00
edfb5bb80d chore: bump version 2025-05-30 14:06:58 +01:00
33ad784e87 fix: missing stream hides live page 2025-05-30 14:03:28 +01:00
0422341bf8 chore: bump flutter version 2025-05-30 13:59:46 +01:00
8af62e0b32 chore: bump ndk 2025-05-30 13:53:40 +01:00
cd6c50f9bd feat: add notifications button to profile page 2025-05-30 13:51:07 +01:00
428771462d feat: live streaming
closes #43
2025-05-30 13:48:37 +01:00
917147605b feat: default ln address to zap.stream for new accounts 2025-05-29 14:31:13 +01:00
8e3a4cbd41 feat: wallet balance
closes #42
2025-05-29 12:32:10 +01:00
c66127cac2 feat: improve notifications 2025-05-29 11:03:15 +01:00
ab9fdd6b71 chore: bump version 2025-05-29 09:51:00 +01:00
99c163a51a fix: allow background player option 2025-05-28 16:40:34 +01:00
fb4821ffdd feat: background playback (wip)
https://github.com/ryanheise/audio_service/issues/1124
2025-05-28 16:28:24 +01:00
5789d9a7a1 chore: update translations 2025-05-28 13:51:47 +01:00
b854962b07 fix: viewers formatting 2025-05-28 13:24:52 +01:00
0295d49077 refactor: cleanup notifications bbutton signer requests 2025-05-28 13:17:45 +01:00
74c3ad9b9c fix: dont make notepush requests unless notifications is authorized 2025-05-28 12:49:51 +01:00
8bd9ff2a4c fix: scrolling stream cards on stream info modal 2025-05-28 12:41:15 +01:00
8516f2b3c1 refactor: move reactions to chat modal
fix: custom emoji reactions
2025-05-28 12:35:53 +01:00
344f2d31fc fix: mention overlay unfocus 2025-05-28 12:21:11 +01:00
c6168ec094 feat: preview media in modal
closes #38
2025-05-28 12:17:44 +01:00
2ec17c6c41 refactor: minor profile loader improvement 2025-05-28 11:40:53 +01:00
c6b76bc64d fix: close zap modal after zap
closes #37
2025-05-28 11:16:49 +01:00
d3a8c41f93 chore: bump version 2025-05-27 15:19:19 +01:00
04967910fa chore: ios build 2025-05-27 15:13:41 +01:00
9d2bc7456f fix: bundle id 2025-05-27 13:59:43 +01:00
cc53762e4b chore: build ios 2025-05-27 13:59:05 +01:00
0a474a1ca7 fix: name overflow on stream page 2025-05-27 13:53:33 +01:00
e9062f0265 feat: custom emoji picker
closes #14
2025-05-27 12:22:28 +01:00
8dae9a97f2 fix: render zap message as note text 2025-05-27 10:10:48 +01:00
a64cacb13c chore: bump ndk 2025-05-27 10:09:43 +01:00
19d50f2947 feat: 1-tap connection 2025-05-26 16:40:18 +01:00
f36f02e95a fix: unfocus tap outside 2025-05-26 13:58:07 +01:00
484bf67951 feat: disconnect wallet 2025-05-26 13:51:15 +01:00
47bed26df6 feat: simple NWC flow
closes #19
2025-05-26 13:28:00 +01:00
befd7c014b chore: bump version 2025-05-23 17:45:14 +01:00
0a75665bde fix: scroll tags on stream info widget 2025-05-23 16:30:10 +01:00
46b809ff58 refactor: disable reactions due to bad UX
ref #36
2025-05-23 15:54:52 +01:00
8f41ed6d0e feat: launch url for push notifications
closes #32
2025-05-23 12:38:36 +01:00
acbf311972 chore: downgrade flutter 2025-05-22 17:20:23 +01:00
43c3b3fc31 chore: bump version 2025-05-22 17:09:39 +01:00
7838607cfc feat: notify keys 2025-05-22 16:32:42 +01:00
9a0811760c fix: flutter version 2025-05-22 10:59:57 +01:00
5af5bab20c chore: bump ndk 2025-05-22 10:51:29 +01:00
4db0317c0b feat: setup deep link handler
closes #34
2025-05-22 10:46:47 +01:00
4e4061b808 feat: setup env vars 2025-05-22 10:23:47 +01:00
3dbb247890 feat: register notifications (notepush) 2025-05-21 18:45:54 +01:00
825152c6bf refactor: move app entry point 2025-05-21 13:33:15 +01:00
99ec8cfbf7 chore: setup firebase 2025-05-21 13:13:40 +01:00
b8422291a5 feat: add translations 2025-05-20 17:21:08 +01:00
a0b2275bea feat: setup intl
closes #29
2025-05-20 15:48:51 +01:00
182f34ff71 chore: bump version 2025-05-19 16:45:06 +01:00
57a67106fd refactor: rename var for people allowed to mute 2025-05-19 16:44:44 +01:00
b1a1e4131b refactor: replace spacer with spacer widget 2025-05-19 16:42:43 +01:00
9f91135572 fix: hide events from before start of stream 2025-05-19 16:41:26 +01:00
a5736aa3d3 feat: timeouts
closes #13
2025-05-19 16:32:21 +01:00
c865f24b2c fix: badge match event 2025-05-19 14:02:24 +01:00
f8f5860b64 chore: setup for deep linking 2025-05-19 12:48:23 +01:00
a500e0b3da feat: share stream
closes #33
2025-05-19 12:42:35 +01:00
86a8181aea feat: chat badges
closes #15
2025-05-19 11:44:13 +01:00
cb1c995023 fix: send chat to stream relays 2025-05-19 11:14:46 +01:00
46d60994a8 feat: badge awards 2025-05-19 11:11:12 +01:00
3eac1c4bfa feat: show copied to clipboard message on ios
closes #28
2025-05-19 10:47:57 +01:00
e6bad40608 fix: always show open in wallet button 2025-05-19 10:43:13 +01:00
e332dc9c6c fix: auto-raid loop
closes #31
2025-05-19 10:41:49 +01:00
a870aa0888 chore: bump version 2025-05-16 16:56:28 +01:00
8173eab05d fix: stop player when navigating away
closes #24
2025-05-16 16:55:44 +01:00
e91807e80e fix: url parser 2025-05-16 14:28:33 +01:00
c79ea1b872 feat: chat embeds
closes #18
2025-05-16 14:25:16 +01:00
b630b59e53 chore: placeholder fade off / write to cache always 2025-05-16 12:58:45 +01:00
c7435d5772 feat: following section on stream grid
closes #26
2025-05-16 12:46:53 +01:00
b5e0822d6c feat: live timer
closes #23
2025-05-16 12:33:34 +01:00
dcf42e7a78 refactor: use ProxyImg widget 2025-05-16 12:22:31 +01:00
244a0aad38 fix: trim content before converting to spans 2025-05-16 12:07:53 +01:00
556377263d fix: hide zap button for profiles with no lud16 2025-05-16 12:07:02 +01:00
7c3e9afc3e feat: profile editor
closes #5
2025-05-16 12:03:59 +01:00
d85c93b7ed feat: custom amount
chore: improve zap dialog ux
closes #25
2025-05-16 11:04:18 +01:00
4ca9460a6c chore: bump version 2025-05-15 15:01:35 +01:00
21f69e433e chore: filter login button with platform check 2025-05-15 14:14:47 +01:00
52953a4c16 feat: category / hashtag pages
- with links form stream info
closes #12
2025-05-15 14:12:37 +01:00
54a61322cf feat: emoji picker 2025-05-15 11:55:26 +01:00
4c6d5b995f feat: custom emoji in chat 2025-05-15 11:34:21 +01:00
be66446e85 feat: render custom emoji reactions
ref #14
2025-05-15 11:22:56 +01:00
787a848257 chore: setup bunker 2025-05-15 11:12:12 +01:00
2d855362e4 fix: use modal sheet for stream info (back button nav) 2025-05-15 10:56:33 +01:00
5e28b40c5c feat: chat mentions
closes #17
2025-05-15 10:53:58 +01:00
12b4475c60 chore: bump version 2025-05-14 14:12:47 +01:00
e0e9175536 feat: follow button
closes #22
2025-05-14 14:04:44 +01:00
465c6f222e feat: stream cards
closes #21
2025-05-14 13:46:14 +01:00
eefbbc2f73 feat: stream info card
closes #20
2025-05-14 13:11:05 +01:00
f094569ed4 fix: filter non-m3u8 streams 2025-05-14 12:53:31 +01:00
f5a03d756b fix: unfocus when sending mesage
closes #16
2025-05-14 11:50:59 +01:00
1f8124b708 feat: chat raiding
closes #1
2025-05-14 11:39:10 +01:00
42d9293ecb chore: bump version 2025-05-13 16:09:42 +01:00
e3dc985b0d refactor: performance 2025-05-13 16:09:04 +01:00
9e5108930a fix: reactions on wrong events
closes #10
2025-05-13 15:44:16 +01:00
0b83881a3d fix: chat scroll (NDK bugs) 2025-05-13 14:04:35 +01:00
efd95837ea feat: listen to stream info on stream page
fix: disable cache read/write in RxFilter
2025-05-13 13:25:23 +01:00
3e18f7544e feat: tag zap goals 2025-05-13 12:20:59 +01:00
f1e518a0d7 fix: logout 2025-05-13 12:05:52 +01:00
1a912e88ce fix: clear chat before async 2025-05-13 12:05:41 +01:00
f8a2df0097 feat: stream goals display
closes #6
2025-05-13 11:45:02 +01:00
fb32b1cfdb feat: improve chat modal 2025-05-13 10:59:22 +01:00
994b40dda9 refactor: use ListView for stream grid 2025-05-13 10:18:39 +01:00
e6531bff7c fix: login state
closes #11
2025-05-13 10:07:25 +01:00
3e672f9e28 chore: cleanup context routing 2025-05-13 09:45:23 +01:00
77d70e164b fix: replace Nip19.decode to bech32ToHex (TLV decode) 2025-05-12 15:58:13 +01:00
026b2eb85c chore: build only from main push 2025-05-12 15:22:36 +01:00
4c800e03e7 chore: bump version 2025-05-12 15:19:44 +01:00
819a45bc23 fix: chat state (again) 2025-05-12 15:18:43 +01:00
53794158c0 chore: bump version 2025-05-12 15:06:40 +01:00
706fb27664 fix: write chat state 2025-05-12 15:06:22 +01:00
170 changed files with 23383 additions and 1290 deletions

1
.env Normal file
View File

@ -0,0 +1 @@
NOTEPUSH_URL="https://notepush.nostrlabs.io"

1
.env.development Normal file
View File

@ -0,0 +1 @@
NOTEPUSH_URL="http://10.0.2.2:8000"

View File

@ -1,5 +1,7 @@
name: build
on: push
on:
push:
branches: ["main"]
jobs:
android:
runs-on: ubuntu-latest
@ -10,9 +12,22 @@ jobs:
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.32.0
- run: flutter pub get
- run: flutter build appbundle
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
KEYSTORE_SHA256: ${{ secrets.KEYSTORE_SHA256 }}
- run: flutter build apk --split-per-abi
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
KEYSTORE_SHA256: ${{ secrets.KEYSTORE_SHA256 }}
- uses: actions/upload-artifact@v4
with:
name: "release.aab"
@ -38,5 +53,6 @@ jobs:
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.32.0
- run: flutter pub get
- run: flutter build ios --no-codesign

View File

@ -16,6 +16,7 @@ jobs:
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.32.0
- run: flutter pub get
- name: Build apk
env:

View File

@ -1,5 +1,4 @@
import com.android.build.api.dsl.ApkSigningConfig
import com.android.build.api.dsl.SigningConfig
import org.jetbrains.kotlin.gradle.targets.js.toHex
import java.io.FileInputStream
import java.util.Base64
@ -10,6 +9,7 @@ plugins {
id("com.android.application")
id("kotlin-android")
id("dev.flutter.flutter-gradle-plugin")
id("com.google.gms.google-services")
}
fun getKeystoreFile(base64String: String?, hash: String, fileName: String): File {
@ -82,6 +82,7 @@ android {
ndkVersion = flutter.ndkVersion
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
@ -108,3 +109,7 @@ android {
flutter {
source = "../.."
}
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
}

View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "953923151748",
"project_id": "nostrlabs",
"storage_bucket": "nostrlabs.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:953923151748:android:8536cdc7f75edc9f9e9fd1",
"android_client_info": {
"package_name": "io.nostrlabs.zap_stream_flutter"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyAdpxIN8DR1-mh8MCjHU0mDtaUAk6xda6w"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

View File

@ -3,6 +3,5 @@
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.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

View File

@ -1,39 +1,79 @@
<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-feature
android:name="android.hardware.camera"
android:required="false" />
<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" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<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: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
@ -42,8 +82,15 @@
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" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
</manifest>

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -19,6 +19,9 @@ pluginManagement {
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.7.0" apply false
// START: FlutterFire Configuration
id("com.google.gms.google-services") version("4.3.15") apply false
// END: FlutterFire Configuration
id("org.jetbrains.kotlin.android") version "1.8.22" apply false
}

BIN
assets/category/art.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 KiB

BIN
assets/category/gaming.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

BIN
assets/category/irl.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

BIN
assets/category/music.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

BIN
assets/category/talk.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 KiB

BIN
assets/logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

25
firebase.json Normal file
View File

@ -0,0 +1,25 @@
{
"flutter": {
"platforms": {
"android": {
"default": {
"projectId": "nostrlabs",
"appId": "1:953923151748:android:8536cdc7f75edc9f9e9fd1",
"fileOutput": "android/app/google-services.json"
}
},
"dart": {
"lib/firebase_options.dart": {
"projectId": "nostrlabs",
"configurations": {
"android": "1:953923151748:android:8536cdc7f75edc9f9e9fd1",
"ios": "1:953923151748:ios:30ec9a230e55fe139e9fd1",
"macos": "1:953923151748:ios:19516d42a1cc02229e9fd1",
"web": "1:953923151748:web:f04633c33f9343b19e9fd1",
"windows": "1:953923151748:web:6b9a6be6798644909e9fd1"
}
}
}
}
}
}

View File

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

View File

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

View File

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

43
ios/Podfile Normal file
View File

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

245
ios/Podfile.lock Normal file
View File

@ -0,0 +1,245 @@
PODS:
- apivideo_live_stream (0.0.1):
- ApiVideoLiveStream (= 1.4.1)
- Flutter
- ApiVideoLiveStream (1.4.1):
- HaishinKit (= 1.7.3)
- audio_service (0.0.1):
- Flutter
- FlutterMacOS
- audio_session (0.0.1):
- Flutter
- 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
- HaishinKit (1.7.3):
- Logboard (~> 2.4.1)
- image_picker_ios (0.0.1):
- Flutter
- Logboard (2.4.2)
- nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0)
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- native_device_orientation (0.0.1):
- Flutter
- ObjectBox (4.3.0)
- objectbox_flutter_libs (0.0.1):
- Flutter
- ObjectBox (= 4.3.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:
- apivideo_live_stream (from `.symlinks/plugins/apivideo_live_stream/ios`)
- audio_service (from `.symlinks/plugins/audio_service/darwin`)
- audio_session (from `.symlinks/plugins/audio_session/ios`)
- 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`)
- native_device_orientation (from `.symlinks/plugins/native_device_orientation/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:
- ApiVideoLiveStream
- Firebase
- FirebaseCore
- FirebaseCoreInternal
- FirebaseInstallations
- FirebaseMessaging
- GoogleDataTransport
- GoogleUtilities
- HaishinKit
- Logboard
- nanopb
- ObjectBox
- PromisesObjC
EXTERNAL SOURCES:
apivideo_live_stream:
:path: ".symlinks/plugins/apivideo_live_stream/ios"
audio_service:
:path: ".symlinks/plugins/audio_service/darwin"
audio_session:
:path: ".symlinks/plugins/audio_session/ios"
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"
native_device_orientation:
:path: ".symlinks/plugins/native_device_orientation/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:
apivideo_live_stream: caab45dd35fb3b140d423c099d0f6672378e7abe
ApiVideoLiveStream: 8f9dce7f6d15d5e4bb3c7a25e406bf2a36337a5a
audio_service: aa99a6ba2ae7565996015322b0bb024e1d25c6fd
audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0
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
HaishinKit: 326e27c4d06427ba53bffc68e516a92033293051
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
Logboard: 759d82599c439945d430d5a0958455b5a1974a0c
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
native_device_orientation: d6a4dc6887cd8a5ce1049962367aec60139ea0f1
ObjectBox: 7760fa9072adcffe102a6adf4646ca84ba70ab6b
objectbox_flutter_libs: 4014e38f57250b074b99893ae84579aba8f02876
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
protocol_handler_ios: 59f23ee71f3ec602d67902ca7f669a80957888d5
rust_lib_ndk: bf974d06ca7805c0729bf19e400ba9d8a1d67e22
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b
wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556
PODFILE CHECKSUM: 4305caec6b40dde0ae97be1573c53de1882a07e5
COCOAPODS: 1.16.2

View File

@ -8,9 +8,12 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
283FBE47FA6371E399829C24 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5D6BBF654182E2B43AEE6CF /* Pods_Runner.framework */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
70887CE2EEA82E287D0F5E32 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF9F2521979EC3F259E9C06 /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
890FE2C12DE5F810002F606E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 890FE2C02DE5F810002F606E /* GoogleService-Info.plist */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
@ -42,12 +45,19 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
2CF9F2521979EC3F259E9C06 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3898346B5A5C027C9FA9F7CE /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
424535975AD213D6739D7587 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
609868B63798C72BBCCC36BC /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
725BF2C4E11E8D4BA045D24E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
890FE2BD2DE5F0A1002F606E /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
890FE2C02DE5F810002F606E /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -55,19 +65,53 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B6A06DA2BDF5319EBC10C29D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
D5D6BBF654182E2B43AEE6CF /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FCD68F499269973BDF0E58C7 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
87AF17021AFC993B1F4EBD74 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
70887CE2EEA82E287D0F5E32 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
283FBE47FA6371E399829C24 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
065520562861D7FEFAE4BB7B /* Frameworks */ = {
isa = PBXGroup;
children = (
D5D6BBF654182E2B43AEE6CF /* Pods_Runner.framework */,
2CF9F2521979EC3F259E9C06 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
20030AF4DA59ECDC7C15CF46 /* Pods */ = {
isa = PBXGroup;
children = (
725BF2C4E11E8D4BA045D24E /* Pods-Runner.debug.xcconfig */,
B6A06DA2BDF5319EBC10C29D /* Pods-Runner.release.xcconfig */,
424535975AD213D6739D7587 /* Pods-Runner.profile.xcconfig */,
3898346B5A5C027C9FA9F7CE /* Pods-RunnerTests.debug.xcconfig */,
609868B63798C72BBCCC36BC /* Pods-RunnerTests.release.xcconfig */,
FCD68F499269973BDF0E58C7 /* Pods-RunnerTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
@ -90,10 +134,13 @@
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
890FE2C02DE5F810002F606E /* GoogleService-Info.plist */,
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
20030AF4DA59ECDC7C15CF46 /* Pods */,
065520562861D7FEFAE4BB7B /* Frameworks */,
);
sourceTree = "<group>";
};
@ -109,6 +156,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
890FE2BD2DE5F0A1002F606E /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@ -128,8 +176,10 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
A1414F384F1233363335534B /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
87AF17021AFC993B1F4EBD74 /* Frameworks */,
);
buildRules = (
);
@ -145,12 +195,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
69481579FDF721E2538F77B8 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
EE4EB2C0965EE37F595A4359 /* [CP] Embed Pods Frameworks */,
6A0665F4C04FEAEA070B0BE1 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@ -214,6 +267,7 @@
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
890FE2C12DE5F810002F606E /* GoogleService-Info.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
@ -238,6 +292,45 @@
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",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
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 +346,45 @@
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",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
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 +493,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 +513,7 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3898346B5A5C027C9FA9F7CE /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -395,6 +531,7 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 609868B63798C72BBCCC36BC /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -410,6 +547,7 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = FCD68F499269973BDF0E58C7 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -427,7 +565,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 +622,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 +678,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 +703,17 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 24VGVR4CHC;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = io.nostrlabs.zapStreamFlutter;
PRODUCT_BUNDLE_IDENTIFIER = "io.nostrlabs.zap-stream";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;

View File

@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
@ -54,6 +55,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 704 B

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

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

View File

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

262
lib/api.dart Normal file
View File

@ -0,0 +1,262 @@
import 'dart:convert';
import 'dart:developer' as developer;
import 'package:convert/convert.dart';
import 'package:crypto/crypto.dart';
import 'package:http/http.dart' as http;
import 'package:ndk/ndk.dart';
import 'package:zap_stream_flutter/const.dart';
class IngestEndpoint {
final String name;
final String url;
final String key;
final IngestCost cost;
final List<String> capabilities;
const IngestEndpoint({
required this.name,
required this.url,
required this.key,
required this.cost,
required this.capabilities,
});
static IngestEndpoint fromJson(Map<String, dynamic> json) {
return IngestEndpoint(
name: json["name"],
url: json["url"],
key: json["key"],
cost: IngestCost.fromJson(json["cost"]),
capabilities: List<String>.from(json["capabilities"]),
);
}
@override
int get hashCode => name.hashCode;
@override
bool operator ==(Object other) {
if (other is IngestEndpoint) {
return other.name == name;
}
return false;
}
}
class IngestCost {
final String unit;
final double rate;
const IngestCost({required this.unit, required this.rate});
static IngestCost fromJson(Map<String, dynamic> json) {
return IngestCost(unit: json["unit"], rate: json["rate"]);
}
}
class TosAccepted {
final bool accepted;
final String? link;
const TosAccepted({required this.accepted, required this.link});
static TosAccepted fromJson(Map<String, dynamic> json) {
return TosAccepted(accepted: json["accepted"], link: json["link"]);
}
}
class AccountInfo {
final double balance;
final List<IngestEndpoint> endpoints;
final TosAccepted tos;
final EventInfo? details;
const AccountInfo({
required this.balance,
required this.endpoints,
required this.tos,
this.details,
});
static AccountInfo fromJson(Map<String, dynamic> json) {
final balance = json["balance"] as int;
final endpoints = json["endpoints"] as Iterable<dynamic>;
return AccountInfo(
balance: balance.toDouble(),
endpoints: endpoints.map((e) => IngestEndpoint.fromJson(e)).toList(),
tos: TosAccepted.fromJson(json["tos"]),
details:
json.containsKey("details")
? EventInfo.fromJson(json["details"])
: null,
);
}
}
class EventInfo {
final String? id;
final String? title;
final String? summary;
final String? image;
final String? contentWarning;
final String? goal;
final List<String>? tags;
EventInfo({
required this.id,
required this.title,
required this.summary,
required this.image,
required this.contentWarning,
required this.goal,
required this.tags,
});
static EventInfo fromJson(Map<String, dynamic> json) {
return EventInfo(
id: json["id"],
title: json["title"],
summary: json["summary"],
image: json["image"],
contentWarning: json["content_warning"],
goal: json["goal"],
tags: json.containsKey("tags") ? List<String>.from(json["tags"]) : null,
);
}
}
class ZapStreamApi {
final String base;
final EventSigner signer;
ZapStreamApi(this.base, this.signer);
static ZapStreamApi instance() {
return ZapStreamApi(apiUrl, ndk.accounts.getLoggedAccount()!.signer);
}
Future<AccountInfo> getAccountInfo() async {
final url = "$base/account";
final rsp = await _sendGetRequest(url);
return AccountInfo.fromJson(JsonCodec().decode(rsp.body));
}
Future<void> updateDefaultStreamInfo({
String? id,
String? title,
String? summary,
String? image,
String? contentWarning,
String? goal,
List<String>? tags,
}) async {
final url = "$base/event";
await _sendPatchRequest(
url,
body: {
"id": id,
"title": title,
"summary": summary,
"image": image,
"content_warning": contentWarning,
"goal": goal,
"tags": tags,
},
);
}
Future<void> acceptTos() async {
await _sendPatchRequest("$base/account", body: {"accept_tos": true});
}
Future<http.Response> _sendPatchRequest(String url, {Object? body}) async {
final jsonBody = body != null ? JsonCodec().encode(body) : null;
final auth = await _makeAuth("PATCH", url, body: jsonBody);
final rsp = await http
.patch(
Uri.parse(url),
body: jsonBody,
headers: {
"authorization": "Nostr $auth",
"accept": "application/json",
"content-type": "application/json",
},
)
.timeout(Duration(seconds: 10));
developer.log(rsp.body);
return rsp;
}
Future<http.Response> _sendPutRequest(String url, {Object? body}) async {
final jsonBody = body != null ? JsonCodec().encode(body) : null;
final auth = await _makeAuth("PUT", url, body: jsonBody);
final rsp = await http
.put(
Uri.parse(url),
body: jsonBody,
headers: {
"authorization": "Nostr $auth",
"accept": "application/json",
"content-type": "application/json",
},
)
.timeout(Duration(seconds: 10));
developer.log(rsp.body);
return rsp;
}
Future<http.Response> _sendGetRequest(String url, {Object? body}) async {
final jsonBody = body != null ? JsonCodec().encode(body) : null;
final auth = await _makeAuth("GET", url, body: jsonBody);
final rsp = await http
.get(
Uri.parse(url),
headers: {
"authorization": "Nostr $auth",
"accept": "application/json",
"content-type": "application/json",
},
)
.timeout(Duration(seconds: 10));
developer.log(rsp.body);
return rsp;
}
Future<http.Response> _sendDeleteRequest(String url, {Object? body}) async {
final jsonBody = body != null ? JsonCodec().encode(body) : null;
final auth = await _makeAuth("DELETE", url, body: jsonBody);
final rsp = await http
.delete(
Uri.parse(url),
headers: {
"authorization": "Nostr $auth",
"accept": "application/json",
"content-type": "application/json",
},
)
.timeout(Duration(seconds: 10));
developer.log(rsp.body);
return rsp;
}
Future<String> _makeAuth(String method, String url, {String? body}) async {
final pubkey = signer.getPublicKey();
var tags = [
["u", url],
["method", method],
];
if (body != null) {
final hash = hex.encode(sha256.convert(utf8.encode(body)).bytes);
tags.add(["payload", hash]);
}
final authEvent = Nip01Event(
pubKey: pubkey,
kind: 27235,
tags: tags,
content: "",
);
await signer.sign(authEvent);
return authEvent.toBase64();
}
}

211
lib/app.dart Normal file
View File

@ -0,0 +1,211 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:go_router/go_router.dart';
import 'package:http/http.dart' as http;
import 'package:ndk/shared/nips/nip19/nip19.dart';
import 'package:zap_stream_flutter/const.dart';
import 'package:zap_stream_flutter/i18n/strings.g.dart';
import 'package:zap_stream_flutter/pages/category.dart';
import 'package:zap_stream_flutter/pages/hashtag.dart';
import 'package:zap_stream_flutter/pages/home.dart';
import 'package:zap_stream_flutter/pages/live.dart';
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';
import 'package:zap_stream_flutter/widgets/header.dart';
/// Resolves a NIP-05 identifier to a pubkey
Future<String?> resolveNip05(String handle, String domain) async {
try {
final url = "https://$domain/.well-known/nostr.json?name=$handle";
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
final json = jsonDecode(response.body);
final names = json["names"] as Map<String, dynamic>?;
if (names != null) {
return names[handle] as String?;
}
}
} catch (e) {
// NIP-05 resolution failed
}
return null;
}
void runZapStream() {
runApp(
MaterialApp.router(
title: "zap.stream",
supportedLocales: AppLocaleUtils.supportedLocales,
localizationsDelegates: GlobalMaterialLocalizations.delegates,
theme: ThemeData.localize(
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],
builder:
(context, state, child) => SafeArea(
child: Scaffold(body: child, backgroundColor: Colors.black),
),
routes: [
GoRoute(path: "/", builder: (ctx, state) => HomePage()),
ShellRoute(
builder: (context, state, child) {
return Container(
margin: EdgeInsets.only(top: 50),
padding: EdgeInsets.symmetric(horizontal: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 20,
children: [
Center(
child: Image.asset("assets/logo.png", height: 150),
),
child,
],
),
);
},
routes: [
GoRoute(
path: "/login",
builder: (ctx, state) => LoginPage(),
routes: [
GoRoute(
path: "key",
builder: (ctx, state) => LoginInputPage(),
),
GoRoute(
path: "new",
builder: (context, state) => NewAccountPage(),
),
],
),
],
),
GoRoute(
path: StreamPage.path,
builder: (ctx, state) {
if (state.extra is StreamEvent) {
return StreamPage(stream: state.extra as StreamEvent);
} else {
return StreamPage.loader(state.pathParameters["id"]!);
}
},
),
GoRoute(
path: "/p/:id",
builder: (ctx, state) {
return ProfilePage(pubkey: state.pathParameters["id"]!);
},
),
GoRoute(
path: "/t/:id",
builder: (context, state) {
return HashtagPage(tag: state.pathParameters["id"]!);
},
),
GoRoute(
path: "/category/:id",
builder: (context, state) {
return CategoryPage(
category: state.pathParameters["id"]!,
info: state.extra as GameInfo?,
);
},
),
ShellRoute(
builder:
(context, state, child) =>
Column(children: [HeaderWidget(), child]),
routes: [
GoRoute(
path: "/settings",
builder: (context, state) => SettingsPage(),
routes: [
GoRoute(
path: "profile",
builder: (context, state) => SettingsProfilePage(),
),
GoRoute(
path: "wallet",
builder: (context, state) => SettingsWalletPage(),
),
],
),
],
),
GoRoute(
path: "/live",
builder: (context, state) => LivePage(),
),
GoRoute(
path: "/:id",
redirect: (context, state) async {
final id = state.pathParameters["id"]!;
if (id.startsWith("naddr1") ||
id.startsWith("nevent1") ||
id.startsWith("note1")) {
return "/e/$id";
} else if (id.startsWith("npub1") ||
id.startsWith("nprofile1")) {
return "/p/$id";
} else {
// Handle short URL format (handle@domain or just handle)
try {
final handleParts = id.contains("@")
? id.split("@")
: [id, "zap.stream"];
if (handleParts.length == 2) {
final handle = handleParts[0];
final domain = handleParts[1];
// Try to resolve NIP-05
final hexPubkey = await resolveNip05(handle, domain);
if (hexPubkey != null) {
// Check if they have a current live stream
// For now, redirect to profile - we could enhance this later
// to check for active streams and redirect to /e/{stream_id} instead
final npub = Nip19.encodePubKey(hexPubkey);
return "/p/$npub";
}
}
} catch (e) {
// If NIP-05 resolution fails, continue to show 404 or fallback
}
}
return null;
},
),
],
),
],
),
),
);
}

78
lib/const.dart Normal file
View File

@ -0,0 +1,78 @@
import 'package:amberflutter/amberflutter.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:ndk/ndk.dart';
import 'package:ndk_amber/ndk_amber.dart';
import 'package:ndk_objectbox/ndk_objectbox.dart';
import 'package:ndk_rust_verifier/ndk_rust_verifier.dart';
import 'package:zap_stream_flutter/login.dart';
class NoVerify extends EventVerifier {
@override
Future<bool> verify(Nip01Event event) {
return Future.value(true);
}
}
final ndkCache = DbObjectBox();
final eventVerifier = kDebugMode ? NoVerify() : RustEventVerifier();
final ndk = Ndk(
NdkConfig(
eventVerifier: eventVerifier,
cache: ndkCache,
bootstrapRelays: defaultRelays,
//engine: NdkEngine.JIT,
),
);
const userAgent = "zap.stream/1.0";
const defaultRelays = [
"wss://nos.lol",
"wss://relay.damus.io",
"wss://relay.primal.net",
"wss://relay.snort.social",
"wss://relay.fountain.fm",
];
const searchRelays = ["wss://relay.nostr.band", "wss://search.nos.today"];
const nwcRelays = ["wss://relay.getalby.com/v1"];
final apiUrl = dotenv.env["API_URL"] ?? "https://api.zap.stream/api/nostr";
final loginData = LoginData();
final RouteObserver<ModalRoute<void>> routeObserver =
RouteObserver<ModalRoute<void>>();
final localNotifications = FlutterLocalNotificationsPlugin();
Future<void> initLogin() async {
// reload / cache login data
loginData.addListener(() {
if (loginData.value != null) {
final pubkey = loginData.value!.pubkey;
if (!ndk.accounts.hasAccount(pubkey)) {
switch (loginData.value!.type) {
case AccountType.privateKey:
ndk.accounts.loginPrivateKey(
pubkey: pubkey,
privkey: loginData.value!.privateKey!,
);
case AccountType.externalSigner:
ndk.accounts.loginExternalSigner(
signer: AmberEventSigner(
publicKey: pubkey,
amberFlutterDS: AmberFlutterDS(Amberflutter()),
),
);
case AccountType.publicKey:
ndk.accounts.loginPublicKey(pubkey: pubkey);
}
}
ndk.metadata.loadMetadata(pubkey);
ndk.follows.getContactList(pubkey);
} else {
ndk.accounts.logout();
}
});
await loginData.load();
}

87
lib/firebase_options.dart Normal file
View File

@ -0,0 +1,87 @@
// File generated by FlutterFire CLI.
// ignore_for_file: type=lint
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
show defaultTargetPlatform, kIsWeb, TargetPlatform;
/// Default [FirebaseOptions] for use with your Firebase apps.
///
/// Example:
/// ```dart
/// import 'firebase_options.dart';
/// // ...
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
/// ```
class DefaultFirebaseOptions {
static FirebaseOptions get currentPlatform {
if (kIsWeb) {
return web;
}
switch (defaultTargetPlatform) {
case TargetPlatform.android:
return android;
case TargetPlatform.iOS:
return ios;
case TargetPlatform.macOS:
return macos;
case TargetPlatform.windows:
return windows;
case TargetPlatform.linux:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for linux - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
default:
throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.',
);
}
}
static const FirebaseOptions web = FirebaseOptions(
apiKey: 'AIzaSyDd9GBruNVBv2qrwv0CGvYeby0ALtTlFKk',
appId: '1:953923151748:web:f04633c33f9343b19e9fd1',
messagingSenderId: '953923151748',
projectId: 'nostrlabs',
authDomain: 'nostrlabs.firebaseapp.com',
storageBucket: 'nostrlabs.firebasestorage.app',
);
static const FirebaseOptions android = FirebaseOptions(
apiKey: 'AIzaSyAdpxIN8DR1-mh8MCjHU0mDtaUAk6xda6w',
appId: '1:953923151748:android:8536cdc7f75edc9f9e9fd1',
messagingSenderId: '953923151748',
projectId: 'nostrlabs',
storageBucket: 'nostrlabs.firebasestorage.app',
);
static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyByygErXpki6Q7NXOXTHbRgg3-Tw-KCVO0',
appId: '1:953923151748:ios:aef9c54f556258d39e9fd1',
messagingSenderId: '953923151748',
projectId: 'nostrlabs',
storageBucket: 'nostrlabs.firebasestorage.app',
iosBundleId: 'io.nostrlabs.zap-stream',
);
static const FirebaseOptions macos = FirebaseOptions(
apiKey: 'AIzaSyByygErXpki6Q7NXOXTHbRgg3-Tw-KCVO0',
appId: '1:953923151748:ios:19516d42a1cc02229e9fd1',
messagingSenderId: '953923151748',
projectId: 'nostrlabs',
storageBucket: 'nostrlabs.firebasestorage.app',
iosBundleId: 'com.example.zapStreamFlutter',
);
static const FirebaseOptions windows = FirebaseOptions(
apiKey: 'AIzaSyDd9GBruNVBv2qrwv0CGvYeby0ALtTlFKk',
appId: '1:953923151748:web:6b9a6be6798644909e9fd1',
messagingSenderId: '953923151748',
projectId: 'nostrlabs',
authDomain: 'nostrlabs.firebaseapp.com',
storageBucket: 'nostrlabs.firebasestorage.app',
);
}

View File

@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
import 'package:zap_stream_flutter/app.dart';
import 'package:zap_stream_flutter/const.dart';
import 'package:zap_stream_flutter/i18n/strings.g.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
LocaleSettings.useDeviceLocale();
await initLogin();
runZapStream();
}

482
lib/i18n/strings.g.dart Normal file
View File

@ -0,0 +1,482 @@
/// Generated file. Do not edit.
///
/// Source: lib/i18n
/// To regenerate, run: `dart run slang`
///
/// Locales: 22
/// Strings: 2011 (91 per locale)
///
/// Built on 2025-06-03 at 10:11 UTC
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
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_ar.g.dart' deferred as l_ar;
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;
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_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_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_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_zh.g.dart' deferred as l_zh;
part 'strings_en.g.dart';
/// Supported locales.
///
/// Usage:
/// - LocaleSettings.setLocale(AppLocale.en) // set locale
/// - Locale locale = AppLocale.en.flutterLocale // get flutter locale from enum
/// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check
enum AppLocale with BaseAppLocale<AppLocale, Translations> {
en(languageCode: 'en'),
ar(languageCode: 'ar'),
cs(languageCode: 'cs'),
da(languageCode: 'da'),
de(languageCode: 'de'),
el(languageCode: 'el'),
es(languageCode: 'es'),
fi(languageCode: 'fi'),
fr(languageCode: 'fr'),
hu(languageCode: 'hu'),
it(languageCode: 'it'),
ja(languageCode: 'ja'),
ko(languageCode: 'ko'),
nl(languageCode: 'nl'),
pl(languageCode: 'pl'),
pt(languageCode: 'pt'),
ro(languageCode: 'ro'),
ru(languageCode: 'ru'),
sv(languageCode: 'sv'),
tr(languageCode: 'tr'),
uk(languageCode: 'uk'),
zh(languageCode: 'zh');
const AppLocale({
required this.languageCode,
this.scriptCode, // ignore: unused_element, unused_element_parameter
this.countryCode, // ignore: unused_element, unused_element_parameter
});
@override final String languageCode;
@override final String? scriptCode;
@override final String? countryCode;
@override
Future<Translations> build({
Map<String, Node>? overrides,
PluralResolver? cardinalResolver,
PluralResolver? ordinalResolver,
}) async {
switch (this) {
case AppLocale.en:
return TranslationsEn(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ar:
await l_ar.loadLibrary();
return l_ar.TranslationsAr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.cs:
await l_cs.loadLibrary();
return l_cs.TranslationsCs(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.da:
await l_da.loadLibrary();
return l_da.TranslationsDa(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.de:
await l_de.loadLibrary();
return l_de.TranslationsDe(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.el:
await l_el.loadLibrary();
return l_el.TranslationsEl(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.es:
await l_es.loadLibrary();
return l_es.TranslationsEs(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.fi:
await l_fi.loadLibrary();
return l_fi.TranslationsFi(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.fr:
await l_fr.loadLibrary();
return l_fr.TranslationsFr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.hu:
await l_hu.loadLibrary();
return l_hu.TranslationsHu(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.it:
await l_it.loadLibrary();
return l_it.TranslationsIt(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ja:
await l_ja.loadLibrary();
return l_ja.TranslationsJa(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ko:
await l_ko.loadLibrary();
return l_ko.TranslationsKo(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.nl:
await l_nl.loadLibrary();
return l_nl.TranslationsNl(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.pl:
await l_pl.loadLibrary();
return l_pl.TranslationsPl(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.pt:
await l_pt.loadLibrary();
return l_pt.TranslationsPt(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ro:
await l_ro.loadLibrary();
return l_ro.TranslationsRo(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ru:
await l_ru.loadLibrary();
return l_ru.TranslationsRu(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.sv:
await l_sv.loadLibrary();
return l_sv.TranslationsSv(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.tr:
await l_tr.loadLibrary();
return l_tr.TranslationsTr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.uk:
await l_uk.loadLibrary();
return l_uk.TranslationsUk(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.zh:
await l_zh.loadLibrary();
return l_zh.TranslationsZh(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
}
}
@override
Translations buildSync({
Map<String, Node>? overrides,
PluralResolver? cardinalResolver,
PluralResolver? ordinalResolver,
}) {
switch (this) {
case AppLocale.en:
return TranslationsEn(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ar:
return l_ar.TranslationsAr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.cs:
return l_cs.TranslationsCs(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.da:
return l_da.TranslationsDa(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.de:
return l_de.TranslationsDe(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.el:
return l_el.TranslationsEl(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.es:
return l_es.TranslationsEs(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.fi:
return l_fi.TranslationsFi(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.fr:
return l_fr.TranslationsFr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.hu:
return l_hu.TranslationsHu(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.it:
return l_it.TranslationsIt(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ja:
return l_ja.TranslationsJa(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ko:
return l_ko.TranslationsKo(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.nl:
return l_nl.TranslationsNl(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.pl:
return l_pl.TranslationsPl(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.pt:
return l_pt.TranslationsPt(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ro:
return l_ro.TranslationsRo(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ru:
return l_ru.TranslationsRu(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.sv:
return l_sv.TranslationsSv(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.tr:
return l_tr.TranslationsTr(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.uk:
return l_uk.TranslationsUk(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.zh:
return l_zh.TranslationsZh(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
}
}
/// Gets current instance managed by [LocaleSettings].
Translations get translations => LocaleSettings.instance.getTranslations(this);
}
/// Method A: Simple
///
/// No rebuild after locale change.
/// Translation happens during initialization of the widget (call of t).
/// Configurable via 'translate_var'.
///
/// Usage:
/// String a = t.someKey.anotherKey;
/// String b = t['someKey.anotherKey']; // Only for edge cases!
Translations get t => LocaleSettings.instance.currentTranslations;
/// Method B: Advanced
///
/// All widgets using this method will trigger a rebuild when locale changes.
/// Use this if you have e.g. a settings page where the user can select the locale during runtime.
///
/// Step 1:
/// wrap your App with
/// TranslationProvider(
/// child: MyApp()
/// );
///
/// Step 2:
/// final t = Translations.of(context); // Get t variable.
/// String a = t.someKey.anotherKey; // Use t variable.
/// String b = t['someKey.anotherKey']; // Only for edge cases!
class TranslationProvider extends BaseTranslationProvider<AppLocale, Translations> {
TranslationProvider({required super.child}) : super(settings: LocaleSettings.instance);
static InheritedLocaleData<AppLocale, Translations> of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(context);
}
/// Method B shorthand via [BuildContext] extension method.
/// Configurable via 'translate_var'.
///
/// Usage (e.g. in a widget's build method):
/// context.t.someKey.anotherKey
extension BuildContextTranslationsExtension on BuildContext {
Translations get t => TranslationProvider.of(this).translations;
}
/// Manages all translation instances and the current locale
class LocaleSettings extends BaseFlutterLocaleSettings<AppLocale, Translations> {
LocaleSettings._() : super(
utils: AppLocaleUtils.instance,
lazy: true,
);
static final instance = LocaleSettings._();
// static aliases (checkout base methods for documentation)
static AppLocale get currentLocale => instance.currentLocale;
static Stream<AppLocale> getLocaleStream() => instance.getLocaleStream();
static Future<AppLocale> setLocale(AppLocale locale, {bool? listenToDeviceLocale = false}) => instance.setLocale(locale, listenToDeviceLocale: listenToDeviceLocale);
static Future<AppLocale> setLocaleRaw(String rawLocale, {bool? listenToDeviceLocale = false}) => instance.setLocaleRaw(rawLocale, listenToDeviceLocale: listenToDeviceLocale);
static Future<AppLocale> useDeviceLocale() => instance.useDeviceLocale();
static Future<void> setPluralResolver({String? language, AppLocale? locale, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) => instance.setPluralResolver(
language: language,
locale: locale,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
// synchronous versions
static AppLocale setLocaleSync(AppLocale locale, {bool? listenToDeviceLocale = false}) => instance.setLocaleSync(locale, listenToDeviceLocale: listenToDeviceLocale);
static AppLocale setLocaleRawSync(String rawLocale, {bool? listenToDeviceLocale = false}) => instance.setLocaleRawSync(rawLocale, listenToDeviceLocale: listenToDeviceLocale);
static AppLocale useDeviceLocaleSync() => instance.useDeviceLocaleSync();
static void setPluralResolverSync({String? language, AppLocale? locale, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) => instance.setPluralResolverSync(
language: language,
locale: locale,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
}
/// Provides utility functions without any side effects.
class AppLocaleUtils extends BaseAppLocaleUtils<AppLocale, Translations> {
AppLocaleUtils._() : super(
baseLocale: AppLocale.en,
locales: AppLocale.values,
);
static final instance = AppLocaleUtils._();
// static aliases (checkout base methods for documentation)
static AppLocale parse(String rawLocale) => instance.parse(rawLocale);
static AppLocale parseLocaleParts({required String languageCode, String? scriptCode, String? countryCode}) => instance.parseLocaleParts(languageCode: languageCode, scriptCode: scriptCode, countryCode: countryCode);
static AppLocale findDeviceLocale() => instance.findDeviceLocale();
static List<Locale> get supportedLocales => instance.supportedLocales;
static List<String> get supportedLocalesRaw => instance.supportedLocalesRaw;
}

532
lib/i18n/strings_ar.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.ar,
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);
}
/// Metadata for the translations of <ar>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsAr _root = this; // ignore: unused_field
@override
TranslationsAr $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsAr(meta: meta ?? this.$meta);
// Translations
/// نص يطالب المستخدم بالضغط على العنصر النائب للصورة الرمزية لبدء التحميل
@override String get upload_avatar => 'تحميل الصورة الرمزية';
/// التوجه فوق اللافتات العلوية المدرجة من قبل zaps
@override String get most_zapped_streamers => 'معظم اللافتات التي يتم بثها';
/// لم يتم العثور على مستخدم عند البحث
@override String get no_user_found => 'لم يتم العثور على مستخدم';
/// مستخدم مجهول
@override String get anon => 'هوية مخفية';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('ar').format(n)} دولار ساتس';
/// عدد مشاهدي البث
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ar'))(n,
one: '1 مشاهد',
other: '{n:decimalPattern} المشاهدين',
);
@override late final _TranslationsStreamAr stream = _TranslationsStreamAr._(_root);
@override late final _TranslationsGoalAr goal = _TranslationsGoalAr._(_root);
@override late final _TranslationsButtonAr button = _TranslationsButtonAr._(_root);
@override late final _TranslationsEmbedAr embed = _TranslationsEmbedAr._(_root);
/// العناوين في قوائم البث حسب نوع البث المباشر/المُنتهي/المخطط له وما إلى ذلك.
@override late final _TranslationsStreamListAr stream_list = _TranslationsStreamListAr._(_root);
@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);
@override late final _TranslationsLiveAr live = _TranslationsLiveAr._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} بدأ البث المباشر!';
@override late final _TranslationsStreamChatAr chat = _TranslationsStreamChatAr._(_root);
}
// Path: goal
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 get complete => 'مكتمل';
}
// Path: button
class _TranslationsButtonAr extends TranslationsButtonEn {
_TranslationsButtonAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
/// نص الزر الخاص بزر تسجيل الدخول
@override String get login => 'تسجيل الدخول';
@override String get logout => 'تسجيل الخروج';
@override String get edit_profile => 'تعديل الملف الشخصي';
/// نص الزر الخاص بزر المتابعة
@override String get follow => 'متابعة';
/// نص الزر لزر إلغاء المتابعة
@override String get unfollow => 'الغاء المتابعة';
@override String get mute => 'كتم';
@override String get unmute => 'رفع الكتم';
@override String get share => 'مشاركة';
@override String get save => 'حفظ';
@override String get connect => 'الاتصال';
@override String get settings => 'الإعدادات';
}
// Path: embed
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}';
}
// Path: stream_list
class _TranslationsStreamListAr extends TranslationsStreamListEn {
_TranslationsStreamListAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get following => 'المتابَعون';
@override String get live => 'بث مباشر';
@override String get planned => 'مخطط';
@override String get ended => 'انتهى';
}
// Path: zap
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 get custom_amount => 'المبلغ المخصص';
@override String get confirm => 'تأكيد';
@override String get comment => 'تعليق';
@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 extends TranslationsProfileEn {
_TranslationsProfileAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get past_streams => 'التدفقات السابقة';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get username => 'اسم المستخدم';
@override String get amber => 'تسجيل الدخول مع آمبر';
@override String get key => 'تسجيل الدخول بالمفتاح';
@override String get create => 'إنشاء حساب';
@override late final _TranslationsLoginErrorAr error = _TranslationsLoginErrorAr._(_root);
}
// Path: live
class _TranslationsLiveAr extends TranslationsLiveEn {
_TranslationsLiveAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get start => 'ابدأ البث المباشر';
@override String get configure_stream => 'تكوين الدفق';
@override String get endpoint => 'نقطة النهاية';
@override String get accept_tos => 'قبول شروط الخدمة';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ar'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'العنوان';
@override String get summary => 'الملخص';
@override String get image => 'صورة الغلاف';
@override String get tags => 'الوسوم';
@override String get nsfw => 'محتوى غير لائق جنسيًا';
@override String get nsfw_description => 'تحقق هنا إذا كان هذا البث يحتوي على محتوى إباحي أو عري.';
@override late final _TranslationsLiveErrorAr error = _TranslationsLiveErrorAr._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusAr extends TranslationsStreamStatusEn {
_TranslationsStreamStatusAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get live => 'بث مباشر';
@override String get ended => 'انتهى';
@override String get planned => 'مخطط';
}
// Path: stream.chat
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 TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' انتهى الوقت '),
user,
const TextSpan(text: ' لـ '),
time,
]);
/// تيار انتهى التذييل في أسفل الدردشة
@override String get ended => 'انتهى البث';
/// رسالة الدردشة التي تُظهر البث المباشر
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' انطلق '),
amount,
const TextSpan(text: ' ساتس'),
]);
@override late final _TranslationsStreamChatWriteAr write = _TranslationsStreamChatWriteAr._(_root);
@override late final _TranslationsStreamChatBadgeAr badge = _TranslationsStreamChatBadgeAr._(_root);
@override late final _TranslationsStreamChatRaidAr raid = _TranslationsStreamChatRaidAr._(_root);
}
// Path: zap.error
class _TranslationsZapErrorAr extends TranslationsZapErrorEn {
_TranslationsZapErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'مبلغ مخصص غير صالح';
@override String get no_wallet => 'لا توجد محفظة برق مثبتة';
@override String get no_lud16 => 'لم يتم العثور على عنوان البرق';
}
// 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 nip05 => 'عنوان نوستر';
@override String get lud16 => 'عنوان البرق';
@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 String get balance => 'الرصيد';
@override String get name => 'المحفظة';
@override late final _TranslationsSettingsWalletErrorAr error = _TranslationsSettingsWalletErrorAr._(_root);
}
// Path: login.error
class _TranslationsLoginErrorAr extends TranslationsLoginErrorEn {
_TranslationsLoginErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'مفتاح غير صالح';
}
// Path: live.error
class _TranslationsLiveErrorAr extends TranslationsLiveErrorEn {
_TranslationsLiveErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@override String get failed => 'فشل البث';
@override String get connection_error => 'خطأ في الاتصال';
@override String get start_failed => 'فشل بدء البث فشل، يرجى التحقق من رصيدك';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteAr extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
/// التسمية على مربع إدخال رسالة الدردشة
@override String get label => 'اكتب رسالة';
/// تظهر رسالة إدخال الدردشة عندما يقوم المستخدم بتسجيل الدخول باستخدام مفتاح الحانة فقط
@override String get no_signer => 'لا يمكن كتابة الرسائل باستخدام تسجيل الدخول إلى npub';
/// تظهر رسالة إدخال الدردشة عند تسجيل خروج المستخدم من المحادثة
@override String get login => 'الرجاء تسجيل الدخول لإرسال الرسائل';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeAr extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
/// العنوان فوق قائمة المستخدمين الذين حصلوا على شارة
@override String get awarded_to => 'مُنحت الجائزة لـ';
}
// Path: stream.chat.raid
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 from({required Object name}) => 'RAID من ${name}';
/// مؤقت العد التنازلي للقيادة التلقائية
@override String countdown({required Object time}) => 'الإغارة في ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorAr extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorAr._(TranslationsAr root) : this._root = root, super.internal(root);
final TranslationsAr _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'تحميل الصورة الرمزية';
case 'most_zapped_streamers': return 'معظم اللافتات التي يتم بثها';
case 'no_user_found': return 'لم يتم العثور على مستخدم';
case 'anon': return 'هوية مخفية';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('ar').format(n)} دولار ساتس';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ar'))(n,
one: '1 مشاهد',
other: '{n:decimalPattern} المشاهدين',
);
case 'stream.status.live': return 'بث مباشر';
case 'stream.status.ended': return 'انتهى';
case 'stream.status.planned': return 'مخطط';
case 'stream.started': return ({required Object timestamp}) => 'بدأ ${timestamp}';
case 'stream.notification': return ({required Object name}) => '${name} بدأ البث المباشر!';
case 'stream.chat.disabled': return 'تم تعطيل الدردشة';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'تنتهي المهلة: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' انتهى الوقت '),
user,
const TextSpan(text: ' لـ '),
time,
]);
case 'stream.chat.ended': return 'انتهى البث';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' انطلق '),
amount,
const TextSpan(text: ' ساتس'),
]);
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 'goal.complete': return 'مكتمل';
case 'button.login': return 'تسجيل الدخول';
case 'button.logout': return 'تسجيل الخروج';
case 'button.edit_profile': return 'تعديل الملف الشخصي';
case 'button.follow': return 'متابعة';
case 'button.unfollow': return 'الغاء المتابعة';
case 'button.mute': return 'كتم';
case 'button.unmute': return 'رفع الكتم';
case 'button.share': return 'مشاركة';
case 'button.save': return 'حفظ';
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.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': 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 '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.balance': return 'الرصيد';
case 'settings.wallet.name': return 'المحفظة';
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 'تسجيل الدخول بالمفتاح';
case 'login.create': return 'إنشاء حساب';
case 'login.error.invalid_key': return 'مفتاح غير صالح';
case 'live.start': return 'ابدأ البث المباشر';
case 'live.configure_stream': return 'تكوين الدفق';
case 'live.endpoint': return 'نقطة النهاية';
case 'live.accept_tos': return 'قبول شروط الخدمة';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ar'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'العنوان';
case 'live.summary': return 'الملخص';
case 'live.image': return 'صورة الغلاف';
case 'live.tags': return 'الوسوم';
case 'live.nsfw': return 'محتوى غير لائق جنسيًا';
case 'live.nsfw_description': return 'تحقق هنا إذا كان هذا البث يحتوي على محتوى إباحي أو عري.';
case 'live.error.failed': return 'فشل البث';
case 'live.error.connection_error': return 'خطأ في الاتصال';
case 'live.error.start_failed': return 'فشل بدء البث فشل، يرجى التحقق من رصيدك';
default: return null;
}
}
}

532
lib/i18n/strings_cs.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.cs,
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);
}
/// Metadata for the translations of <cs>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsCs _root = this; // ignore: unused_field
@override
TranslationsCs $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsCs(meta: meta ?? this.$meta);
// Translations
/// Text vyzývající uživatele, aby stiskl zástupný symbol avatara pro zahájení nahrávání
@override String get upload_avatar => 'Nahrát avatar';
/// Směřování přes uvedené horní streamery podle zaps
@override String get most_zapped_streamers => 'Nejvíce zapnutých streamerů';
/// Při vyhledávání nebyl nalezen žádný uživatel
@override String get no_user_found => 'Nebyl nalezen žádný uživatel';
/// Anonymní uživatel
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('cs').format(n)} sats';
/// Počet diváků streamu
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('cs'))(n,
one: '1 divák',
other: '${NumberFormat.decimalPattern('cs').format(n)} diváků',
);
@override late final _TranslationsStreamCs stream = _TranslationsStreamCs._(_root);
@override late final _TranslationsGoalCs goal = _TranslationsGoalCs._(_root);
@override late final _TranslationsButtonCs button = _TranslationsButtonCs._(_root);
@override late final _TranslationsEmbedCs embed = _TranslationsEmbedCs._(_root);
/// Nadpisy v seznamech proudů podle typu proudu živě/konec/plánovaně atd.
@override late final _TranslationsStreamListCs stream_list = _TranslationsStreamListCs._(_root);
@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);
@override late final _TranslationsLiveCs live = _TranslationsLiveCs._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} byl spuštěn!';
@override late final _TranslationsStreamChatCs chat = _TranslationsStreamChatCs._(_root);
}
// Path: goal
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 get complete => 'KOMPLETNÍ';
}
// Path: button
class _TranslationsButtonCs extends TranslationsButtonEn {
_TranslationsButtonCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
/// Text tlačítka pro přihlašovací tlačítko
@override String get login => 'Přihlášení';
@override String get logout => 'Odhlášení';
@override String get edit_profile => 'Upravit profil';
/// Text tlačítka pro tlačítko sledovat
@override String get follow => 'Sledujte';
/// Text tlačítka pro zrušení sledování
@override String get unfollow => 'Zrušit sledování';
@override String get mute => 'Ztlumit';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListCs extends TranslationsStreamListEn {
_TranslationsStreamListCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get following => 'Po';
@override String get live => 'Živě';
@override String get planned => 'Plánované';
@override String get ended => 'Ukončeno';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get username => 'Uživatelské jméno';
@override String get amber => 'Přihlášení pomocí Amber';
@override String get key => 'Přihlášení pomocí klíče';
@override String get create => 'Vytvořit účet';
@override late final _TranslationsLoginErrorCs error = _TranslationsLoginErrorCs._(_root);
}
// Path: live
class _TranslationsLiveCs extends TranslationsLiveEn {
_TranslationsLiveCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get start => 'PŘEJÍT NA ŽIVOT';
@override String get configure_stream => 'Konfigurace streamu';
@override String get endpoint => 'Koncový bod';
@override String get accept_tos => 'Přijmout TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('cs'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Název';
@override String get summary => 'Souhrn';
@override String get image => 'Obrázek na obálce';
@override String get tags => 'Štítky';
@override String get nsfw => 'Obsah NSFW';
@override String get nsfw_description => 'Zde zkontrolujte, zda tento stream obsahuje nahotu nebo pornografický obsah.';
@override late final _TranslationsLiveErrorCs error = _TranslationsLiveErrorCs._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusCs extends TranslationsStreamStatusEn {
_TranslationsStreamStatusCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'KONEC';
@override String get planned => 'PLÁNOVANÉ';
}
// Path: stream.chat
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}';
/// Zpráva chatu zobrazující události časového limitu
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' Zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteCs write = _TranslationsStreamChatWriteCs._(_root);
@override late final _TranslationsStreamChatBadgeCs badge = _TranslationsStreamChatBadgeCs._(_root);
@override late final _TranslationsStreamChatRaidCs raid = _TranslationsStreamChatRaidCs._(_root);
}
// Path: zap.error
class _TranslationsZapErrorCs extends TranslationsZapErrorEn {
_TranslationsZapErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Neplatná vlastní částka';
@override String get no_wallet => 'Není nainstalována blesková peněženka';
@override String get no_lud16 => 'Nebyla nalezena žádná adresa blesku';
}
// Path: settings.profile
class _TranslationsSettingsProfileCs extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get display_name => 'Zobrazení názvu';
@override String get about => 'O stránkách';
@override String get nip05 => 'Adresa Nostr';
@override String get lud16 => 'Adresa blesku';
@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 String get balance => 'Bilance';
@override String get name => 'Peněženka';
@override late final _TranslationsSettingsWalletErrorCs error = _TranslationsSettingsWalletErrorCs._(_root);
}
// Path: login.error
class _TranslationsLoginErrorCs extends TranslationsLoginErrorEn {
_TranslationsLoginErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Neplatný klíč';
}
// Path: live.error
class _TranslationsLiveErrorCs extends TranslationsLiveErrorEn {
_TranslationsLiveErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@override String get failed => 'Stream se nezdařil';
@override String get connection_error => 'Chyba připojení';
@override String get start_failed => 'Spuštění streamu se nezdařilo, zkontrolujte prosím zůstatek';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteCs extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
/// Popisek na vstupním poli zprávy chatu
@override String get label => 'Napište zprávu';
/// Vstupní zpráva chatu se zobrazí, když je uživatel přihlášen pouze pomocí pubkey
@override String get no_signer => 'Nelze psát zprávy s přihlášením npub';
/// Vstupní zpráva chatu zobrazená při odhlášení uživatele
@override String get login => 'Pro odesílání zpráv se prosím přihlaste';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeCs extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
/// Záhlaví nad seznamem uživatelů, kterým byl udělen odznak
@override String get awarded_to => 'Uděleno:';
}
// Path: stream.chat.raid
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}';
/// Zpráva o nájezdu chatu z jiného proudu
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorCs extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorCs._(TranslationsCs root) : this._root = root, super.internal(root);
final TranslationsCs _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Nahrát avatar';
case 'most_zapped_streamers': return 'Nejvíce zapnutých streamerů';
case 'no_user_found': return 'Nebyl nalezen žádný uživatel';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('cs').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('cs'))(n,
one: '1 divák',
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.notification': return ({required Object name}) => '${name} byl spuštěn!';
case 'stream.chat.disabled': return 'CHAT ZRUŠEN';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Časový limit vyprší: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' vypršel čas '),
user,
const TextSpan(text: ' pro '),
time,
]);
case 'stream.chat.ended': return 'STREAM UKONČEN';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' Zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'KOMPLETNÍ';
case 'button.login': return 'Přihlášení';
case 'button.logout': return 'Odhlášení';
case 'button.edit_profile': return 'Upravit profil';
case 'button.follow': return 'Sledujte';
case 'button.unfollow': return 'Zrušit sledování';
case 'button.mute': return 'Ztlumit';
case 'button.unmute': return 'Zrušit ztlumení';
case 'button.share': return 'Sdílet';
case 'button.save': return 'Uložit';
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.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': 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 '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.balance': return 'Bilance';
case 'settings.wallet.name': return 'Peněženka';
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';
case 'login.create': return 'Vytvořit účet';
case 'login.error.invalid_key': return 'Neplatný klíč';
case 'live.start': return 'PŘEJÍT NA ŽIVOT';
case 'live.configure_stream': return 'Konfigurace streamu';
case 'live.endpoint': return 'Koncový bod';
case 'live.accept_tos': return 'Přijmout TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('cs'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Název';
case 'live.summary': return 'Souhrn';
case 'live.image': return 'Obrázek na obálce';
case 'live.tags': return 'Štítky';
case 'live.nsfw': return 'Obsah NSFW';
case 'live.nsfw_description': return 'Zde zkontrolujte, zda tento stream obsahuje nahotu nebo pornografický obsah.';
case 'live.error.failed': return 'Stream se nezdařil';
case 'live.error.connection_error': return 'Chyba připojení';
case 'live.error.start_failed': return 'Spuštění streamu se nezdařilo, zkontrolujte prosím zůstatek';
default: return null;
}
}
}

532
lib/i18n/strings_da.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.da,
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);
}
/// Metadata for the translations of <da>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsDa _root = this; // ignore: unused_field
@override
TranslationsDa $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsDa(meta: meta ?? this.$meta);
// Translations
/// Tekst, der beder brugeren om at trykke på avatar-pladsholderen for at begynde at uploade
@override String get upload_avatar => 'Upload avatar';
/// På vej over listede topstreamere af zaps
@override String get most_zapped_streamers => 'De fleste zappede streamere';
/// Ingen bruger fundet ved søgning
@override String get no_user_found => 'Ingen bruger fundet';
/// En anonym bruger
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('da').format(n)} sats';
/// Antal seere af streamingen
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n,
one: '1 seer',
other: '${NumberFormat.decimalPattern('da').format(n)} seere',
);
@override late final _TranslationsStreamDa stream = _TranslationsStreamDa._(_root);
@override late final _TranslationsGoalDa goal = _TranslationsGoalDa._(_root);
@override late final _TranslationsButtonDa button = _TranslationsButtonDa._(_root);
@override late final _TranslationsEmbedDa embed = _TranslationsEmbedDa._(_root);
/// Overskrifter på streaminglister efter streamingtype live/afsluttet/planlagt osv.
@override late final _TranslationsStreamListDa stream_list = _TranslationsStreamListDa._(_root);
@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);
@override late final _TranslationsLiveDa live = _TranslationsLiveDa._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} gik live!';
@override late final _TranslationsStreamChatDa chat = _TranslationsStreamChatDa._(_root);
}
// Path: goal
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 get complete => 'KOMPLET';
}
// Path: button
class _TranslationsButtonDa extends TranslationsButtonEn {
_TranslationsButtonDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
/// Knaptekst til login-knappen
@override String get login => 'Login';
@override String get logout => 'Log ud';
@override String get edit_profile => 'Rediger profil';
/// Knaptekst til følg-knappen
@override String get follow => 'Følg med';
/// Knaptekst til unfollow-knappen
@override String get unfollow => 'Ikke følge';
@override String get mute => 'Dæmpet';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListDa extends TranslationsStreamListEn {
_TranslationsStreamListDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get following => 'Efterfølgende';
@override String get live => 'Live';
@override String get planned => 'Planlagt';
@override String get ended => 'Afsluttet';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get username => 'Brugernavn';
@override String get amber => 'Log ind med Amber';
@override String get key => 'Login med nøgle';
@override String get create => 'Opret konto';
@override late final _TranslationsLoginErrorDa error = _TranslationsLoginErrorDa._(_root);
}
// Path: live
class _TranslationsLiveDa extends TranslationsLiveEn {
_TranslationsLiveDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Konfigurer stream';
@override String get endpoint => 'Slutpunkt';
@override String get accept_tos => 'Accepter TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Titel';
@override String get summary => 'Sammenfatning';
@override String get image => 'Forsidebillede';
@override String get tags => 'Tags';
@override String get nsfw => 'NSFW-indhold';
@override String get nsfw_description => 'Tjek her, om denne stream indeholder nøgenhed eller pornografisk indhold.';
@override late final _TranslationsLiveErrorDa error = _TranslationsLiveErrorDa._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusDa extends TranslationsStreamStatusEn {
_TranslationsStreamStatusDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'AFSLUTTET';
@override String get planned => 'PLANLAGT';
}
// Path: stream.chat
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}';
/// Chatbesked, der viser timeout-hændelser
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zappet '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteDa write = _TranslationsStreamChatWriteDa._(_root);
@override late final _TranslationsStreamChatBadgeDa badge = _TranslationsStreamChatBadgeDa._(_root);
@override late final _TranslationsStreamChatRaidDa raid = _TranslationsStreamChatRaidDa._(_root);
}
// Path: zap.error
class _TranslationsZapErrorDa extends TranslationsZapErrorEn {
_TranslationsZapErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Ugyldigt brugerdefineret beløb';
@override String get no_wallet => 'Ingen lightning wallet installeret';
@override String get no_lud16 => 'Ingen lyn-adresse fundet';
}
// Path: settings.profile
class _TranslationsSettingsProfileDa extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get display_name => 'Vis navn';
@override String get about => 'Omkring';
@override String get nip05 => 'Nostr-adresse';
@override String get lud16 => 'Adresse for lynnedslag';
@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 String get balance => 'Balance';
@override String get name => 'Tegnebog';
@override late final _TranslationsSettingsWalletErrorDa error = _TranslationsSettingsWalletErrorDa._(_root);
}
// Path: login.error
class _TranslationsLoginErrorDa extends TranslationsLoginErrorEn {
_TranslationsLoginErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Ugyldig nøgle';
}
// Path: live.error
class _TranslationsLiveErrorDa extends TranslationsLiveErrorEn {
_TranslationsLiveErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get failed => 'Strømmen mislykkedes';
@override String get connection_error => 'Forbindelsesfejl';
@override String get start_failed => 'Stream-start mislykkedes, tjek venligst din saldo';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteDa extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
/// Label på chatbeskedens inputfelt
@override String get label => 'Skriv en besked';
/// Chat-inputmeddelelse vises, når brugeren kun er logget ind med pubkey
@override String get no_signer => 'Kan ikke skrive beskeder med npub-login';
/// Chat-inputmeddelelse vises, når brugeren er logget ud
@override String get login => 'Log ind for at sende beskeder';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeDa extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
/// Overskrift over liste over brugere, der har fået tildelt et badge
@override String get awarded_to => 'Tildelt til:';
}
// Path: stream.chat.raid
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}';
/// Chat raid-besked fra en anden stream
@override String from({required Object name}) => 'RAID FRA ${name}';
/// Nedtællingstimer til auto-raiding
@override String countdown({required Object time}) => 'Raiding i ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorDa extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Upload avatar';
case 'most_zapped_streamers': return 'De fleste zappede streamere';
case 'no_user_found': return 'Ingen bruger fundet';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('da').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n,
one: '1 seer',
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.notification': return ({required Object name}) => '${name} gik live!';
case 'stream.chat.disabled': return 'CHAT DEAKTIVERET';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout udløber: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' udløbet '),
user,
const TextSpan(text: ' for '),
time,
]);
case 'stream.chat.ended': return 'STREAM AFSLUTTET';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zappet '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'KOMPLET';
case 'button.login': return 'Login';
case 'button.logout': return 'Log ud';
case 'button.edit_profile': return 'Rediger profil';
case 'button.follow': return 'Følg med';
case 'button.unfollow': return 'Ikke følge';
case 'button.mute': return 'Dæmpet';
case 'button.unmute': return 'Slå lyden fra';
case 'button.share': return 'Del';
case 'button.save': return 'Gemme';
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.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': 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 '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.balance': return 'Balance';
case 'settings.wallet.name': return 'Tegnebog';
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';
case 'login.create': return 'Opret konto';
case 'login.error.invalid_key': return 'Ugyldig nøgle';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Konfigurer stream';
case 'live.endpoint': return 'Slutpunkt';
case 'live.accept_tos': return 'Accepter TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Titel';
case 'live.summary': return 'Sammenfatning';
case 'live.image': return 'Forsidebillede';
case 'live.tags': return 'Tags';
case 'live.nsfw': return 'NSFW-indhold';
case 'live.nsfw_description': return 'Tjek her, om denne stream indeholder nøgenhed eller pornografisk indhold.';
case 'live.error.failed': return 'Strømmen mislykkedes';
case 'live.error.connection_error': return 'Forbindelsesfejl';
case 'live.error.start_failed': return 'Stream-start mislykkedes, tjek venligst din saldo';
default: return null;
}
}
}

532
lib/i18n/strings_de.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.de,
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);
}
/// Metadata for the translations of <de>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsDe _root = this; // ignore: unused_field
@override
TranslationsDe $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsDe(meta: meta ?? this.$meta);
// Translations
/// Text, der den Benutzer auffordert, auf den Avatar-Platzhalter zu klicken, um den Upload zu starten
@override String get upload_avatar => 'Avatar hochladen';
/// Überschrift über gelistete Top-Streamer nach Zaps
@override String get most_zapped_streamers => 'Meistgezappte Streamer';
/// Kein Benutzer bei der Suche gefunden
@override String get no_user_found => 'Kein Benutzer gefunden';
/// Ein anonymer Benutzer
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('de').format(n)} sats';
/// Anzahl der Zuschauer des Streams
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n,
one: '1 Zuschauer',
other: '${NumberFormat.decimalPattern('de').format(n)} Zuschauer',
);
@override late final _TranslationsStreamDe stream = _TranslationsStreamDe._(_root);
@override late final _TranslationsGoalDe goal = _TranslationsGoalDe._(_root);
@override late final _TranslationsButtonDe button = _TranslationsButtonDe._(_root);
@override late final _TranslationsEmbedDe embed = _TranslationsEmbedDe._(_root);
/// Überschriften auf Stream-Listen nach Stream-Typ live/beendet/geplant usw.
@override late final _TranslationsStreamListDe stream_list = _TranslationsStreamListDe._(_root);
@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);
@override late final _TranslationsLiveDe live = _TranslationsLiveDe._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} ging live!';
@override late final _TranslationsStreamChatDe chat = _TranslationsStreamChatDe._(_root);
}
// Path: goal
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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonDe extends TranslationsButtonEn {
_TranslationsButtonDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
/// Schaltflächentext für die Anmeldeschaltfläche
@override String get login => 'Anmelden';
@override String get logout => 'Abmelden';
@override String get edit_profile => 'Profil anpassen';
/// Schaltflächentext für die Schaltfläche "Folgen
@override String get follow => 'Folgen';
/// Schaltflächentext für die "Unfollow"-Schaltfläche
@override String get unfollow => 'Entfolgen';
@override String get mute => 'Stummschalten';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListDe extends TranslationsStreamListEn {
_TranslationsStreamListDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get following => 'Folge ich';
@override String get live => 'Live';
@override String get planned => 'Geplant';
@override String get ended => 'Beendet';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get username => 'Benutzername';
@override String get amber => 'Anmeldung mit Amber';
@override String get key => 'Anmeldung mit Schlüssel';
@override String get create => 'Konto erstellen';
@override late final _TranslationsLoginErrorDe error = _TranslationsLoginErrorDe._(_root);
}
// Path: live
class _TranslationsLiveDe extends TranslationsLiveEn {
_TranslationsLiveDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get start => 'LIVE GEHEN';
@override String get configure_stream => 'Stream konfigurieren';
@override String get endpoint => 'Endpunkt';
@override String get accept_tos => 'TOS akzeptieren';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Titel';
@override String get summary => 'Zusammenfassung';
@override String get image => 'Titelbild';
@override String get tags => 'Tags';
@override String get nsfw => 'NSFW-Inhalt';
@override String get nsfw_description => 'Prüfen Sie hier, ob dieser Stream Nacktheit oder pornografische Inhalte enthält.';
@override late final _TranslationsLiveErrorDe error = _TranslationsLiveErrorDe._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusDe extends TranslationsStreamStatusEn {
_TranslationsStreamStatusDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'BEENDET';
@override String get planned => 'GEPLANT';
}
// Path: stream.chat
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}) => 'Timeout läuft ab: ${time}';
/// Chat-Nachricht mit Timeout-Ereignissen
@override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' gibt '),
user,
const TextSpan(text: ' einen Timeout für '),
time,
]);
/// Stream beendet Fußzeile am Ende des Chats
@override String get ended => 'STREAM BEENDET';
/// Chat-Nachricht mit Stream-Zaps
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' hat '),
amount,
const TextSpan(text: ' sats gezappt'),
]);
@override late final _TranslationsStreamChatWriteDe write = _TranslationsStreamChatWriteDe._(_root);
@override late final _TranslationsStreamChatBadgeDe badge = _TranslationsStreamChatBadgeDe._(_root);
@override late final _TranslationsStreamChatRaidDe raid = _TranslationsStreamChatRaidDe._(_root);
}
// Path: zap.error
class _TranslationsZapErrorDe extends TranslationsZapErrorEn {
_TranslationsZapErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Ungültiger benutzerdefinierter Betrag';
@override String get no_wallet => 'Keine Lightning-Brieftasche installiert';
@override String get no_lud16 => 'Keine Blitzadresse gefunden';
}
// Path: settings.profile
class _TranslationsSettingsProfileDe extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get display_name => 'Name anzeigen';
@override String get about => 'Über';
@override String get nip05 => 'Nostr-Adresse';
@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 String get balance => 'Bilanz';
@override String get name => 'Brieftasche';
@override late final _TranslationsSettingsWalletErrorDe error = _TranslationsSettingsWalletErrorDe._(_root);
}
// Path: login.error
class _TranslationsLoginErrorDe extends TranslationsLoginErrorEn {
_TranslationsLoginErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Ungültiger Schlüssel';
}
// Path: live.error
class _TranslationsLiveErrorDe extends TranslationsLiveErrorEn {
_TranslationsLiveErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get failed => 'Stream fehlgeschlagen';
@override String get connection_error => 'Verbindungsfehler';
@override String get start_failed => 'Streamstart fehlgeschlagen, bitte überprüfen Sie Ihr Guthaben';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteDe extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
/// Beschriftung des Eingabefeldes für Chatnachrichten
@override String get label => 'Nachricht schreiben';
/// Chat-Eingabemeldung wird angezeigt, wenn der Benutzer nur mit Pubkey eingeloggt ist
@override String get no_signer => 'Mit npub-Login können keine Nachrichten geschrieben werden';
/// Chat-Eingabemeldung wird angezeigt, wenn der Benutzer abgemeldet ist
@override String get login => 'Bitte anmelden, um Nachrichten zu senden';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeDe extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
/// Überschrift über der Liste der Benutzer, die ein Abzeichen erhalten haben
@override String get awarded_to => 'Verliehen an:';
}
// Path: stream.chat.raid
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}';
/// Chat-Raid-Nachricht aus einem anderen Stream
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorDe extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Avatar hochladen';
case 'most_zapped_streamers': return 'Meistgezappte Streamer';
case 'no_user_found': return 'Kein Benutzer gefunden';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('de').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n,
one: '1 Zuschauer',
other: '${NumberFormat.decimalPattern('de').format(n)} Zuschauer',
);
case 'stream.status.live': return 'LIVE';
case 'stream.status.ended': return 'BEENDET';
case 'stream.status.planned': return 'GEPLANT';
case 'stream.started': return ({required Object timestamp}) => 'Gestartet ${timestamp}';
case 'stream.notification': return ({required Object name}) => '${name} ging live!';
case 'stream.chat.disabled': return 'CHAT DEAKTIVIERT';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout läuft ab: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' gibt '),
user,
const TextSpan(text: ' einen Timeout für '),
time,
]);
case 'stream.chat.ended': return 'STREAM BEENDET';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' hat '),
amount,
const TextSpan(text: ' sats gezappt'),
]);
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Anmelden';
case 'button.logout': return 'Abmelden';
case 'button.edit_profile': return 'Profil anpassen';
case 'button.follow': return 'Folgen';
case 'button.unfollow': return 'Entfolgen';
case 'button.mute': return 'Stummschalten';
case 'button.unmute': return 'Entstummen';
case 'button.share': return 'Teilen';
case 'button.save': return 'Speichern';
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.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': 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 '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.balance': return 'Bilanz';
case 'settings.wallet.name': return 'Brieftasche';
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';
case 'login.create': return 'Konto erstellen';
case 'login.error.invalid_key': return 'Ungültiger Schlüssel';
case 'live.start': return 'LIVE GEHEN';
case 'live.configure_stream': return 'Stream konfigurieren';
case 'live.endpoint': return 'Endpunkt';
case 'live.accept_tos': return 'TOS akzeptieren';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Titel';
case 'live.summary': return 'Zusammenfassung';
case 'live.image': return 'Titelbild';
case 'live.tags': return 'Tags';
case 'live.nsfw': return 'NSFW-Inhalt';
case 'live.nsfw_description': return 'Prüfen Sie hier, ob dieser Stream Nacktheit oder pornografische Inhalte enthält.';
case 'live.error.failed': return 'Stream fehlgeschlagen';
case 'live.error.connection_error': return 'Verbindungsfehler';
case 'live.error.start_failed': return 'Streamstart fehlgeschlagen, bitte überprüfen Sie Ihr Guthaben';
default: return null;
}
}
}

532
lib/i18n/strings_el.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.el,
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);
}
/// Metadata for the translations of <el>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsEl _root = this; // ignore: unused_field
@override
TranslationsEl $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsEl(meta: meta ?? this.$meta);
// Translations
/// Κείμενο που προτρέπει τον χρήστη να πατήσει το εικονίδιο avatar για να ξεκινήσει το ανέβασμα
@override String get upload_avatar => 'Ανέβασμα Avatar';
/// Επικεφαλής πάνω από τα αναφερόμενα κορυφαία streamers από zaps
@override String get most_zapped_streamers => 'Τα περισσότερα Zapped Streamers';
/// Δεν βρέθηκε χρήστης κατά την αναζήτηση
@override String get no_user_found => 'Δεν βρέθηκε χρήστης';
/// Ένας ανώνυμος χρήστης
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('el').format(n)} sats';
/// Αριθμός θεατών της ροής
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('el'))(n,
one: '1 θεατής',
other: '${NumberFormat.decimalPattern('el').format(n)} θεατές',
);
@override late final _TranslationsStreamEl stream = _TranslationsStreamEl._(_root);
@override late final _TranslationsGoalEl goal = _TranslationsGoalEl._(_root);
@override late final _TranslationsButtonEl button = _TranslationsButtonEl._(_root);
@override late final _TranslationsEmbedEl embed = _TranslationsEmbedEl._(_root);
/// Επικεφαλίδες στις λίστες ροής ανά τύπο ροής ζωντανή/τελειωμένη/προγραμματισμένη κ.λπ.
@override late final _TranslationsStreamListEl stream_list = _TranslationsStreamListEl._(_root);
@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);
@override late final _TranslationsLiveEl live = _TranslationsLiveEl._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} βγήκε ζωντανά!';
@override late final _TranslationsStreamChatEl chat = _TranslationsStreamChatEl._(_root);
}
// Path: goal
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 get complete => 'ΠΛΗΡΗΣ';
}
// Path: button
class _TranslationsButtonEl extends TranslationsButtonEn {
_TranslationsButtonEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
/// Κείμενο κουμπιού για το κουμπί σύνδεσης
@override String get login => 'Σύνδεση';
@override String get logout => 'Αποσύνδεση';
@override String get edit_profile => 'Επεξεργασία προφίλ';
/// Κείμενο κουμπιού για το κουμπί follow
@override String get follow => 'Ακολουθήστε το';
/// Κείμενο κουμπιού για το κουμπί unfollow
@override String get unfollow => 'Ακολουθήστε το';
@override String get mute => 'Σίγαση';
@override String get unmute => 'Αποσυνδέστε τη φωνή σας από το';
@override String get share => 'Μοιραστείτε το';
@override String get save => 'Αποθήκευση';
@override String get connect => 'Συνδέστε το';
@override String get settings => 'Ρυθμίσεις';
}
// Path: embed
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}';
}
// Path: stream_list
class _TranslationsStreamListEl extends TranslationsStreamListEn {
_TranslationsStreamListEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get following => 'Ακολουθώντας το';
@override String get live => 'Ζωντανό';
@override String get planned => 'Προγραμματισμένο';
@override String get ended => 'Τελείωσε';
}
// Path: zap
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 get custom_amount => 'Προσαρμοσμένο ποσό';
@override String get confirm => 'Επιβεβαίωση';
@override String get comment => 'Σχόλιο';
@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 extends TranslationsProfileEn {
_TranslationsProfileEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Προηγούμενα ρεύματα';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get username => 'Όνομα χρήστη';
@override String get amber => 'Σύνδεση με Amber';
@override String get key => 'Σύνδεση με κλειδί';
@override String get create => 'Δημιουργία λογαριασμού';
@override late final _TranslationsLoginErrorEl error = _TranslationsLoginErrorEl._(_root);
}
// Path: live
class _TranslationsLiveEl extends TranslationsLiveEn {
_TranslationsLiveEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Διαμόρφωση ροής';
@override String get endpoint => 'Τελικό σημείο';
@override String get accept_tos => 'Αποδοχή TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('el'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Τίτλος';
@override String get summary => 'Περίληψη';
@override String get image => 'Εικόνα εξωφύλλου';
@override String get tags => 'Ετικέτες';
@override String get nsfw => 'Περιεχόμενο NSFW';
@override String get nsfw_description => 'Ελέγξτε εδώ αν αυτή η ροή περιέχει γυμνό ή πορνογραφικό περιεχόμενο.';
@override late final _TranslationsLiveErrorEl error = _TranslationsLiveErrorEl._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusEl extends TranslationsStreamStatusEn {
_TranslationsStreamStatusEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'ΣΧΕΔΙΑΣΜΟΣ';
}
// Path: stream.chat
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}';
/// Μήνυμα συνομιλίας που εμφανίζει συμβάντα timeout
@override TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' χρονομετρημένη λήξη '),
user,
const TextSpan(text: ' για '),
time,
]);
/// Η ροή τελείωσε το υποσέλιδο στο κάτω μέρος της συνομιλίας
@override String get ended => 'STREAM ΤΕΛΕΙΩΣΕ';
/// Μήνυμα συνομιλίας που δείχνει ροή ροής zaps
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteEl write = _TranslationsStreamChatWriteEl._(_root);
@override late final _TranslationsStreamChatBadgeEl badge = _TranslationsStreamChatBadgeEl._(_root);
@override late final _TranslationsStreamChatRaidEl raid = _TranslationsStreamChatRaidEl._(_root);
}
// Path: zap.error
class _TranslationsZapErrorEl extends TranslationsZapErrorEn {
_TranslationsZapErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Μη έγκυρο προσαρμοσμένο ποσό';
@override String get no_wallet => 'Δεν έχει εγκατασταθεί πορτοφόλι αστραπής';
@override String get no_lud16 => 'Δεν βρέθηκε διεύθυνση κεραυνού';
}
// Path: settings.profile
class _TranslationsSettingsProfileEl extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _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 _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 String get balance => 'Υπόλοιπο';
@override String get name => 'Πορτοφόλι';
@override late final _TranslationsSettingsWalletErrorEl error = _TranslationsSettingsWalletErrorEl._(_root);
}
// Path: login.error
class _TranslationsLoginErrorEl extends TranslationsLoginErrorEn {
_TranslationsLoginErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Μη έγκυρο κλειδί';
}
// Path: live.error
class _TranslationsLiveErrorEl extends TranslationsLiveErrorEn {
_TranslationsLiveErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@override String get failed => 'Το ρεύμα απέτυχε';
@override String get connection_error => 'Σφάλμα σύνδεσης';
@override String get start_failed => 'Η εκκίνηση της ροής απέτυχε, παρακαλούμε ελέγξτε το υπόλοιπό σας';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteEl extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
/// Ετικέτα στο πλαίσιο εισαγωγής μηνύματος συνομιλίας
@override String get label => 'Γράψτε μήνυμα';
/// Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης είναι συνδεδεμένος μόνο με το κλειδί pubkey
@override String get no_signer => 'Δεν μπορείτε να γράψετε μηνύματα με σύνδεση στο npub';
/// Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης έχει αποσυνδεθεί
@override String get login => 'Παρακαλώ συνδεθείτε για να στείλετε μηνύματα';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeEl extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
/// Επικεφαλίδα πάνω από τη λίστα των χρηστών στους οποίους έχει απονεμηθεί ένα σήμα
@override String get awarded_to => 'Απονέμεται σε:';
}
// Path: stream.chat.raid
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 from({required Object name}) => 'RAID FROM ${name}';
/// Χρονοδιακόπτης αντίστροφης μέτρησης για αυτόματη ιππασία
@override String countdown({required Object time}) => 'Επιδρομές στο ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorEl extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorEl._(TranslationsEl root) : this._root = root, super.internal(root);
final TranslationsEl _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Ανέβασμα Avatar';
case 'most_zapped_streamers': return 'Τα περισσότερα Zapped Streamers';
case 'no_user_found': return 'Δεν βρέθηκε χρήστης';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('el').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('el'))(n,
one: '1 θεατής',
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.notification': return ({required Object name}) => '${name} βγήκε ζωντανά!';
case 'stream.chat.disabled': return 'ΑΠΕΝΕΡΓΟΠΟΙΗΜΈΝΗ ΣΥΝΟΜΙΛΊΑ';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Το χρονικό όριο λήγει: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' χρονομετρημένη λήξη '),
user,
const TextSpan(text: ' για '),
time,
]);
case 'stream.chat.ended': return 'STREAM ΤΕΛΕΙΩΣΕ';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'ΠΛΗΡΗΣ';
case 'button.login': return 'Σύνδεση';
case 'button.logout': return 'Αποσύνδεση';
case 'button.edit_profile': return 'Επεξεργασία προφίλ';
case 'button.follow': return 'Ακολουθήστε το';
case 'button.unfollow': return 'Ακολουθήστε το';
case 'button.mute': return 'Σίγαση';
case 'button.unmute': return 'Αποσυνδέστε τη φωνή σας από το';
case 'button.share': return 'Μοιραστείτε το';
case 'button.save': return 'Αποθήκευση';
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.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': 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 '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.balance': return 'Υπόλοιπο';
case 'settings.wallet.name': return 'Πορτοφόλι';
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 'Σύνδεση με κλειδί';
case 'login.create': return 'Δημιουργία λογαριασμού';
case 'login.error.invalid_key': return 'Μη έγκυρο κλειδί';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Διαμόρφωση ροής';
case 'live.endpoint': return 'Τελικό σημείο';
case 'live.accept_tos': return 'Αποδοχή TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('el'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Τίτλος';
case 'live.summary': return 'Περίληψη';
case 'live.image': return 'Εικόνα εξωφύλλου';
case 'live.tags': return 'Ετικέτες';
case 'live.nsfw': return 'Περιεχόμενο NSFW';
case 'live.nsfw_description': return 'Ελέγξτε εδώ αν αυτή η ροή περιέχει γυμνό ή πορνογραφικό περιεχόμενο.';
case 'live.error.failed': return 'Το ρεύμα απέτυχε';
case 'live.error.connection_error': return 'Σφάλμα σύνδεσης';
case 'live.error.start_failed': return 'Η εκκίνηση της ροής απέτυχε, παρακαλούμε ελέγξτε το υπόλοιπό σας';
default: return null;
}
}
}

545
lib/i18n/strings_en.g.dart Normal file
View File

@ -0,0 +1,545 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
part of 'strings.g.dart';
// Path: <root>
typedef TranslationsEn = Translations; // ignore: unused_element
class Translations implements BaseTranslations<AppLocale, Translations> {
/// Returns the current translations of the given [context].
///
/// Usage:
/// final t = Translations.of(context);
static Translations of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(context).translations;
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
Translations({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.en,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <en>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
dynamic operator[](String key) => $meta.getTranslation(key);
late final Translations _root = this; // ignore: unused_field
Translations $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => Translations(meta: meta ?? this.$meta);
// Translations
/// Text prompting user to hit avatar placeholder to begin upload
String get upload_avatar => 'Upload Avatar';
/// Heading over listed top streamers by zaps
String get most_zapped_streamers => 'Most Zapped Streamers';
/// No user found when searching
String get no_user_found => 'No user found';
/// An anonymous user
String get anon => 'Anon';
String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('en').format(n)} sats';
/// Number of viewers of the stream
String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
one: '1 viewer',
other: '${NumberFormat.decimalPattern('en').format(n)} viewers',
);
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.internal(_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);
late final TranslationsLiveEn live = TranslationsLiveEn.internal(_root);
}
// Path: stream
class TranslationsStreamEn {
TranslationsStreamEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
late final TranslationsStreamStatusEn status = TranslationsStreamStatusEn.internal(_root);
String started({required Object timestamp}) => 'Started ${timestamp}';
String notification({required Object name}) => '${name} went live!';
late final TranslationsStreamChatEn chat = TranslationsStreamChatEn.internal(_root);
late final TranslationsStreamErrorEn error = TranslationsStreamErrorEn.internal(_root);
}
// Path: goal
class TranslationsGoalEn {
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 get complete => 'COMPLETE';
}
// Path: button
class TranslationsButtonEn {
TranslationsButtonEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// Button text for the login button
String get login => 'Login';
String get logout => 'Logout';
String get edit_profile => 'Edit Profile';
/// Button text for the follow button
String get follow => 'Follow';
/// Button text for the unfollow button
String get unfollow => 'Unfollow';
String get mute => 'Mute';
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.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}';
}
// Path: stream_list
class TranslationsStreamListEn {
TranslationsStreamListEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get following => 'Following';
String get live => 'Live';
String get planned => 'Planned';
String get ended => 'Ended';
}
// Path: zap
class TranslationsZapEn {
TranslationsZapEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
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 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.internal(_root);
}
// Path: profile
class TranslationsProfileEn {
TranslationsProfileEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get past_streams => 'Past Streams';
}
// 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.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get username => 'Username';
String get amber => 'Login with Amber';
String get key => 'Login with Key';
String get create => 'Create Account';
late final TranslationsLoginErrorEn error = TranslationsLoginErrorEn.internal(_root);
}
// Path: live
class TranslationsLiveEn {
TranslationsLiveEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get start => 'GO LIVE';
String get configure_stream => 'Configure Stream';
String get endpoint => 'Endpoint';
String get accept_tos => 'Accept TOS';
String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '',
other: '~${time}',
);
String get title => 'Title';
String get summary => 'Summary';
String get image => 'Cover Image';
String get tags => 'Tags';
String get nsfw => 'NSFW Content';
String get nsfw_description => 'Check here if this stream contains nudity or pornographic content.';
late final TranslationsLiveErrorEn error = TranslationsLiveErrorEn.internal(_root);
}
// Path: stream.status
class TranslationsStreamStatusEn {
TranslationsStreamStatusEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get live => 'LIVE';
String get ended => 'ENDED';
String get planned => 'PLANNED';
}
// Path: stream.chat
class TranslationsStreamChatEn {
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}';
/// Chat message showing timeout events
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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
late final TranslationsStreamChatWriteEn write = TranslationsStreamChatWriteEn.internal(_root);
late final TranslationsStreamChatBadgeEn badge = TranslationsStreamChatBadgeEn.internal(_root);
late final TranslationsStreamChatRaidEn raid = TranslationsStreamChatRaidEn.internal(_root);
}
// Path: stream.error
class TranslationsStreamErrorEn {
TranslationsStreamErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String load_failed({required Object url}) => 'Failed to load stream from ${url}';
}
// Path: zap.error
class TranslationsZapErrorEn {
TranslationsZapErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get invalid_custom_amount => 'Invalid custom amount';
String get no_wallet => 'No lightning wallet installed';
String get no_lud16 => 'No lightning address found';
}
// Path: settings.profile
class TranslationsSettingsProfileEn {
TranslationsSettingsProfileEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get display_name => 'Display Name';
String get about => 'About';
String get nip05 => 'Nostr Address';
String get lud16 => 'Lightning Address';
late final TranslationsSettingsProfileErrorEn error = TranslationsSettingsProfileErrorEn.internal(_root);
}
// Path: settings.wallet
class TranslationsSettingsWalletEn {
TranslationsSettingsWalletEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get connect_wallet => 'Connect Wallet (NWC nostr+walletconnect://)';
String get disconnect_wallet => 'Disconnect Wallet';
String get connect_1tap => '1-Tap Connection';
String get paste => 'Paste URL';
String get balance => 'Balance';
String get name => 'Wallet';
late final TranslationsSettingsWalletErrorEn error = TranslationsSettingsWalletErrorEn.internal(_root);
}
// Path: login.error
class TranslationsLoginErrorEn {
TranslationsLoginErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get invalid_key => 'Invalid key';
}
// Path: live.error
class TranslationsLiveErrorEn {
TranslationsLiveErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get failed => 'Stream failed';
String get connection_error => 'Connection Error';
String get start_failed => 'Stream start failed, please check your balance';
}
// Path: stream.chat.write
class TranslationsStreamChatWriteEn {
TranslationsStreamChatWriteEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// Label on the chat message input box
String get label => 'Write message';
/// Chat input message shown when the user is logged in only with pubkey
String get no_signer => 'Can\'t write messages with npub login';
/// Chat input message shown when the user is logged out
String get login => 'Please login to send messages';
}
// Path: stream.chat.badge
class TranslationsStreamChatBadgeEn {
TranslationsStreamChatBadgeEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// Heading over list of users who are awarded a badge
String get awarded_to => 'Awarded to:';
}
// Path: stream.chat.raid
class TranslationsStreamChatRaidEn {
TranslationsStreamChatRaidEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// Chat raid message to another stream
String to({required Object name}) => 'RAIDING ${name}';
/// Chat raid message from another stream
String from({required Object name}) => 'RAID FROM ${name}';
/// Countdown timer for auto-raiding
String countdown({required Object time}) => 'Raiding in ${time}';
}
// Path: settings.profile.error
class TranslationsSettingsProfileErrorEn {
TranslationsSettingsProfileErrorEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
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 {
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 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('en').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
one: '1 viewer',
other: '${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.notification': return ({required Object name}) => '${name} went live!';
case 'stream.chat.disabled': return 'CHAT DISABLED';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timeout expires: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' for '),
time,
]);
case 'stream.chat.ended': return 'STREAM ENDED';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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 'stream.error.load_failed': return ({required Object url}) => 'Failed to load stream from ${url}';
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 '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.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.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 'settings.button_profile': return 'Edit Profile';
case 'settings.button_wallet': return 'Wallet Settings';
case 'settings.profile.display_name': return 'Display Name';
case 'settings.profile.about': return 'About';
case 'settings.profile.nip05': return 'Nostr Address';
case 'settings.profile.lud16': return 'Lightning Address';
case 'settings.profile.error.logged_out': return 'Cant edit profile when logged out';
case 'settings.wallet.connect_wallet': return 'Connect Wallet (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Disconnect Wallet';
case 'settings.wallet.connect_1tap': return '1-Tap Connection';
case 'settings.wallet.paste': return 'Paste URL';
case 'settings.wallet.balance': return 'Balance';
case 'settings.wallet.name': return 'Wallet';
case 'settings.wallet.error.logged_out': return 'Cant connect wallet when logged out';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'No wallet auth event found';
case 'login.username': return 'Username';
case 'login.amber': return 'Login with Amber';
case 'login.key': return 'Login with Key';
case 'login.create': return 'Create Account';
case 'login.error.invalid_key': return 'Invalid key';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Configure Stream';
case 'live.endpoint': return 'Endpoint';
case 'live.accept_tos': return 'Accept TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Title';
case 'live.summary': return 'Summary';
case 'live.image': return 'Cover Image';
case 'live.tags': return 'Tags';
case 'live.nsfw': return 'NSFW Content';
case 'live.nsfw_description': return 'Check here if this stream contains nudity or pornographic content.';
case 'live.error.failed': return 'Stream failed';
case 'live.error.connection_error': return 'Connection Error';
case 'live.error.start_failed': return 'Stream start failed, please check your balance';
default: return null;
}
}
}

532
lib/i18n/strings_es.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.es,
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);
}
/// Metadata for the translations of <es>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsEs _root = this; // ignore: unused_field
@override
TranslationsEs $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsEs(meta: meta ?? this.$meta);
// Translations
/// Texto que indica al usuario que pulse el marcador de avatar para iniciar la carga
@override String get upload_avatar => 'Subir avatar';
/// Encabezando streamers superiores listados por zaps
@override String get most_zapped_streamers => 'Serpentinas más derribadas';
/// No se ha encontrado ningún usuario al realizar la búsqueda
@override String get no_user_found => 'No se ha encontrado ningún usuario';
/// Un usuario anónimo
@override String get anon => 'Anónimo';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('es').format(n)} sats';
/// Número de espectadores del flujo
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n,
one: '1 espectador',
other: '${NumberFormat.decimalPattern('es').format(n)} espectadores',
);
@override late final _TranslationsStreamEs stream = _TranslationsStreamEs._(_root);
@override late final _TranslationsGoalEs goal = _TranslationsGoalEs._(_root);
@override late final _TranslationsButtonEs button = _TranslationsButtonEs._(_root);
@override late final _TranslationsEmbedEs embed = _TranslationsEmbedEs._(_root);
/// Encabezamientos en las listas de flujos por tipo de flujo en directo/finalizado/planificado, etc.
@override late final _TranslationsStreamListEs stream_list = _TranslationsStreamListEs._(_root);
@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);
@override late final _TranslationsLiveEs live = _TranslationsLiveEs._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} ¡se ha puesto en marcha!';
@override late final _TranslationsStreamChatEs chat = _TranslationsStreamChatEs._(_root);
}
// Path: goal
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 get complete => 'COMPLETAR';
}
// Path: button
class _TranslationsButtonEs extends TranslationsButtonEn {
_TranslationsButtonEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
/// Texto del botón de inicio de sesión
@override String get login => 'Iniciar Sesión';
@override String get logout => 'Cerrar sesión';
@override String get edit_profile => 'Editar Perfil';
/// Texto del botón de seguimiento
@override String get follow => 'Seguir';
/// Texto del botón "Dejar de seguir
@override String get unfollow => 'Dejar de seguir';
@override String get mute => 'Silenciar';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListEs extends TranslationsStreamListEn {
_TranslationsStreamListEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get following => 'Siguiendo';
@override String get live => 'En directo';
@override String get planned => 'Planificado';
@override String get ended => 'Finalizado';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get username => 'Usuario';
@override String get amber => 'Iniciar sesión con Amber';
@override String get key => 'Inicio de sesión con clave';
@override String get create => 'Crear una cuenta';
@override late final _TranslationsLoginErrorEs error = _TranslationsLoginErrorEs._(_root);
}
// Path: live
class _TranslationsLiveEs extends TranslationsLiveEn {
_TranslationsLiveEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get start => 'EN VIVO';
@override String get configure_stream => 'Configurar Stream';
@override String get endpoint => 'Punto final';
@override String get accept_tos => 'Aceptar TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Título';
@override String get summary => 'Resumen';
@override String get image => 'Imagen de portada';
@override String get tags => 'Etiquetas';
@override String get nsfw => 'Contenido NSFW';
@override String get nsfw_description => 'Compruebe aquí si este flujo contiene desnudos o contenido pornográfico.';
@override late final _TranslationsLiveErrorEs error = _TranslationsLiveErrorEs._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusEs extends TranslationsStreamStatusEn {
_TranslationsStreamStatusEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get live => 'EN VIVO';
@override String get ended => 'FIN';
@override String get planned => 'PLANIFICADO';
}
// Path: stream.chat
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}';
/// Mensaje de chat que muestra los eventos de tiempo de espera
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zapearon '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteEs write = _TranslationsStreamChatWriteEs._(_root);
@override late final _TranslationsStreamChatBadgeEs badge = _TranslationsStreamChatBadgeEs._(_root);
@override late final _TranslationsStreamChatRaidEs raid = _TranslationsStreamChatRaidEs._(_root);
}
// Path: zap.error
class _TranslationsZapErrorEs extends TranslationsZapErrorEn {
_TranslationsZapErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Importe personalizado no válido';
@override String get no_wallet => 'Sin monedero relámpago instalado';
@override String get no_lud16 => 'No se ha encontrado ninguna dirección de rayos';
}
// 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 => 'Acerca de';
@override String get nip05 => 'Dirección Nostr';
@override String get lud16 => 'Dirección del rayo';
@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 String get balance => 'Saldo';
@override String get name => 'Cartera';
@override late final _TranslationsSettingsWalletErrorEs error = _TranslationsSettingsWalletErrorEs._(_root);
}
// Path: login.error
class _TranslationsLoginErrorEs extends TranslationsLoginErrorEn {
_TranslationsLoginErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Clave no válida';
}
// Path: live.error
class _TranslationsLiveErrorEs extends TranslationsLiveErrorEn {
_TranslationsLiveErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get failed => 'Corriente fallida';
@override String get connection_error => 'Error de conexión';
@override String get start_failed => 'Error en el inicio de la transmisión, compruebe su saldo';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteEs extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
/// Etiqueta del cuadro de entrada de mensajes de chat
@override String get label => 'Escribir mensaje';
/// Mensaje de entrada en el chat que se muestra cuando el usuario está conectado sólo con pubkey
@override String get no_signer => 'No se pueden escribir mensajes con el login npub';
/// Mensaje de entrada al chat que se muestra cuando el usuario cierra la sesión
@override String get login => 'Inicie sesión para enviar mensajes';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeEs extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
/// Encabezamiento de la lista de usuarios a los que se ha concedido una insignia
@override String get awarded_to => 'Concedido a:';
}
// Path: stream.chat.raid
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}';
/// Mensaje de incursión en el chat desde otro flujo
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorEs extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Subir avatar';
case 'most_zapped_streamers': return 'Serpentinas más derribadas';
case 'no_user_found': return 'No se ha encontrado ningún usuario';
case 'anon': return 'Anónimo';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('es').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n,
one: '1 espectador',
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.notification': return ({required Object name}) => '${name} ¡se ha puesto en marcha!';
case 'stream.chat.disabled': return 'CHAT DESHABILITADO';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'El tiempo de espera expira: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' para '),
time,
]);
case 'stream.chat.ended': return 'STREAM FINED';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapearon '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'COMPLETAR';
case 'button.login': return 'Iniciar Sesión';
case 'button.logout': return 'Cerrar sesión';
case 'button.edit_profile': return 'Editar Perfil';
case 'button.follow': return 'Seguir';
case 'button.unfollow': return 'Dejar de seguir';
case 'button.mute': return 'Silenciar';
case 'button.unmute': return 'Dejar de silenciar';
case 'button.share': return 'Compartir';
case 'button.save': return 'Guardar';
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.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': 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 '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.balance': return 'Saldo';
case 'settings.wallet.name': return 'Cartera';
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';
case 'login.create': return 'Crear una cuenta';
case 'login.error.invalid_key': return 'Clave no válida';
case 'live.start': return 'EN VIVO';
case 'live.configure_stream': return 'Configurar Stream';
case 'live.endpoint': return 'Punto final';
case 'live.accept_tos': return 'Aceptar TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Título';
case 'live.summary': return 'Resumen';
case 'live.image': return 'Imagen de portada';
case 'live.tags': return 'Etiquetas';
case 'live.nsfw': return 'Contenido NSFW';
case 'live.nsfw_description': return 'Compruebe aquí si este flujo contiene desnudos o contenido pornográfico.';
case 'live.error.failed': return 'Corriente fallida';
case 'live.error.connection_error': return 'Error de conexión';
case 'live.error.start_failed': return 'Error en el inicio de la transmisión, compruebe su saldo';
default: return null;
}
}
}

532
lib/i18n/strings_fi.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.fi,
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);
}
/// Metadata for the translations of <fi>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsFi _root = this; // ignore: unused_field
@override
TranslationsFi $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsFi(meta: meta ?? this.$meta);
// Translations
/// Teksti, joka kehottaa käyttäjää painamaan avatar-merkkiä aloittaakseen lataamisen.
@override String get upload_avatar => 'Lataa avatar';
/// Päällekkäin lueteltujen alkuun streamers by zaps
@override String get most_zapped_streamers => 'Eniten Zapped Streamers';
/// Käyttäjää ei löytynyt haun yhteydessä
@override String get no_user_found => 'Käyttäjää ei löytynyt';
/// Nimetön käyttäjä
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('fi').format(n)} sats';
/// Streamin katsojien määrä
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fi'))(n,
one: '1 katsoja',
other: '${NumberFormat.decimalPattern('fi').format(n)} katsojat',
);
@override late final _TranslationsStreamFi stream = _TranslationsStreamFi._(_root);
@override late final _TranslationsGoalFi goal = _TranslationsGoalFi._(_root);
@override late final _TranslationsButtonFi button = _TranslationsButtonFi._(_root);
@override late final _TranslationsEmbedFi embed = _TranslationsEmbedFi._(_root);
/// Stream-luetteloiden otsikot stream-tyypeittäin live/päättynyt/suunniteltu jne.
@override late final _TranslationsStreamListFi stream_list = _TranslationsStreamListFi._(_root);
@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);
@override late final _TranslationsLiveFi live = _TranslationsLiveFi._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} meni suoraksi!';
@override late final _TranslationsStreamChatFi chat = _TranslationsStreamChatFi._(_root);
}
// Path: goal
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 get complete => 'TÄYDELLINEN';
}
// Path: button
class _TranslationsButtonFi extends TranslationsButtonEn {
_TranslationsButtonFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
/// Kirjautumispainikkeen teksti
@override String get login => 'Kirjaudu sisään';
@override String get logout => 'Kirjaudu ulos';
@override String get edit_profile => 'Muokkaa profiilia';
/// Seuraa-painikkeen painikkeen teksti
@override String get follow => 'Seuraa';
/// Seuraa-painikkeen teksti
@override String get unfollow => 'Älä seuraa';
@override String get mute => 'Mykistä';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListFi extends TranslationsStreamListEn {
_TranslationsStreamListFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get following => 'Seuraa';
@override String get live => 'Live';
@override String get planned => 'Suunniteltu';
@override String get ended => 'Päättynyt';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get username => 'Käyttäjätunnus';
@override String get amber => 'Kirjaudu sisään Amber kanssa';
@override String get key => 'Kirjaudu sisään avaimella';
@override String get create => 'Luo tili';
@override late final _TranslationsLoginErrorFi error = _TranslationsLoginErrorFi._(_root);
}
// Path: live
class _TranslationsLiveFi extends TranslationsLiveEn {
_TranslationsLiveFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Määritä Stream';
@override String get endpoint => 'Loppupiste';
@override String get accept_tos => 'Hyväksy TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fi'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Otsikko';
@override String get summary => 'Yhteenveto';
@override String get image => 'Kansikuva';
@override String get tags => 'Tunnisteet';
@override String get nsfw => 'NSFW-sisältö';
@override String get nsfw_description => 'Tarkista täältä, jos tämä stream sisältää alastomuutta tai pornografista sisältöä.';
@override late final _TranslationsLiveErrorFi error = _TranslationsLiveErrorFi._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusFi extends TranslationsStreamStatusEn {
_TranslationsStreamStatusFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'ENDED';
@override String get planned => 'SUUNNITELTU';
}
// Path: stream.chat
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}';
/// Chat-viesti, joka näyttää aikakatkaisutapahtumat
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zappasi '),
amount,
const TextSpan(text: ' satsia'),
]);
@override late final _TranslationsStreamChatWriteFi write = _TranslationsStreamChatWriteFi._(_root);
@override late final _TranslationsStreamChatBadgeFi badge = _TranslationsStreamChatBadgeFi._(_root);
@override late final _TranslationsStreamChatRaidFi raid = _TranslationsStreamChatRaidFi._(_root);
}
// Path: zap.error
class _TranslationsZapErrorFi extends TranslationsZapErrorEn {
_TranslationsZapErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Virheellinen mukautettu määrä';
@override String get no_wallet => 'Ei asennettua salamalompakkoa';
@override String get no_lud16 => 'Salamaosoitetta ei löytynyt';
}
// 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 => '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 String get balance => 'Balance';
@override String get name => 'Lompakko';
@override late final _TranslationsSettingsWalletErrorFi error = _TranslationsSettingsWalletErrorFi._(_root);
}
// Path: login.error
class _TranslationsLoginErrorFi extends TranslationsLoginErrorEn {
_TranslationsLoginErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Virheellinen avain';
}
// Path: live.error
class _TranslationsLiveErrorFi extends TranslationsLiveErrorEn {
_TranslationsLiveErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@override String get failed => 'Stream epäonnistui';
@override String get connection_error => 'Yhteysvirhe';
@override String get start_failed => 'Virran käynnistys epäonnistui, tarkista saldosi';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteFi extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
/// Chat-viestin syöttöruudun tarra
@override String get label => 'Kirjoita viesti';
/// Chat-syöttöviesti näytetään, kun käyttäjä on kirjautunut sisään vain pubkey-avaimella.
@override String get no_signer => 'Ei voi kirjoittaa viestejä npub-kirjautumisella';
/// Chat-syötteen viesti näytetään, kun käyttäjä on kirjautunut ulos.
@override String get login => 'Kirjaudu sisään lähettääksesi viestejä';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeFi extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
/// Merkin saaneiden käyttäjien luettelon otsikko
@override String get awarded_to => 'Myönnetty:';
}
// Path: stream.chat.raid
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}';
/// Chat raid viesti toisesta virrasta
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorFi extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorFi._(TranslationsFi root) : this._root = root, super.internal(root);
final TranslationsFi _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Lataa avatar';
case 'most_zapped_streamers': return 'Eniten Zapped Streamers';
case 'no_user_found': return 'Käyttäjää ei löytynyt';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('fi').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fi'))(n,
one: '1 katsoja',
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.notification': return ({required Object name}) => '${name} meni suoraksi!';
case 'stream.chat.disabled': return 'CHAT POISTETTU KÄYTÖSTÄ';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Aikakatkaisu päättyy: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' ajastettu '),
user,
const TextSpan(text: ' for '),
time,
]);
case 'stream.chat.ended': return 'STREAM PÄÄTTYNYT';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zappasi '),
amount,
const TextSpan(text: ' satsia'),
]);
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 'goal.complete': return 'TÄYDELLINEN';
case 'button.login': return 'Kirjaudu sisään';
case 'button.logout': return 'Kirjaudu ulos';
case 'button.edit_profile': return 'Muokkaa profiilia';
case 'button.follow': return 'Seuraa';
case 'button.unfollow': return 'Älä seuraa';
case 'button.mute': return 'Mykistä';
case 'button.unmute': return 'Poista mykistys';
case 'button.share': return 'Jaa';
case 'button.save': return 'Tallenna';
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.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': 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 '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.balance': return 'Balance';
case 'settings.wallet.name': return 'Lompakko';
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';
case 'login.create': return 'Luo tili';
case 'login.error.invalid_key': return 'Virheellinen avain';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Määritä Stream';
case 'live.endpoint': return 'Loppupiste';
case 'live.accept_tos': return 'Hyväksy TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fi'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Otsikko';
case 'live.summary': return 'Yhteenveto';
case 'live.image': return 'Kansikuva';
case 'live.tags': return 'Tunnisteet';
case 'live.nsfw': return 'NSFW-sisältö';
case 'live.nsfw_description': return 'Tarkista täältä, jos tämä stream sisältää alastomuutta tai pornografista sisältöä.';
case 'live.error.failed': return 'Stream epäonnistui';
case 'live.error.connection_error': return 'Yhteysvirhe';
case 'live.error.start_failed': return 'Virran käynnistys epäonnistui, tarkista saldosi';
default: return null;
}
}
}

532
lib/i18n/strings_fr.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.fr,
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);
}
/// Metadata for the translations of <fr>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsFr _root = this; // ignore: unused_field
@override
TranslationsFr $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsFr(meta: meta ?? this.$meta);
// Translations
/// Texte invitant l'utilisateur à cliquer sur l'espace réservé à l'avatar pour commencer le téléchargement
@override String get upload_avatar => 'Télécharger l\'avatar';
/// Les têtes d'affiche sont listées par zaps.
@override String get most_zapped_streamers => 'Les Streamers les plus zappés';
/// Aucun utilisateur n'a été trouvé lors de la recherche
@override String get no_user_found => 'Aucun utilisateur trouvé';
/// Un utilisateur anonyme
@override String get anon => 'Anonyme';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('fr').format(n)} sats';
/// Nombre de spectateurs du flux
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n,
one: '1 téléspectateur',
other: '${NumberFormat.decimalPattern('fr').format(n)} téléspectateurs',
);
@override late final _TranslationsStreamFr stream = _TranslationsStreamFr._(_root);
@override late final _TranslationsGoalFr goal = _TranslationsGoalFr._(_root);
@override late final _TranslationsButtonFr button = _TranslationsButtonFr._(_root);
@override late final _TranslationsEmbedFr embed = _TranslationsEmbedFr._(_root);
/// Rubriques sur les listes de flux par type de flux en direct/fini/prévu, etc.
@override late final _TranslationsStreamListFr stream_list = _TranslationsStreamListFr._(_root);
@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);
@override late final _TranslationsLiveFr live = _TranslationsLiveFr._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} est en ligne !';
@override late final _TranslationsStreamChatFr chat = _TranslationsStreamChatFr._(_root);
}
// Path: goal
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 get complete => 'COMPLET';
}
// Path: button
class _TranslationsButtonFr extends TranslationsButtonEn {
_TranslationsButtonFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
/// Texte du bouton de connexion
@override String get login => 'Se Connecter';
@override String get logout => 'Se déconnecter';
@override String get edit_profile => 'Modifier le Profil';
/// Texte du bouton de suivi
@override String get follow => 'Suivre';
/// Texte du bouton pour le bouton "unfollow
@override String get unfollow => 'Ne plus suivre';
@override String get mute => 'Muet';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListFr extends TranslationsStreamListEn {
_TranslationsStreamListFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get following => 'Abonnements';
@override String get live => 'En direct';
@override String get planned => 'Planifié';
@override String get ended => 'Terminé';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get username => 'Nom dutilisateur';
@override String get amber => 'Se connecter avec Amber';
@override String get key => 'Connexion avec la clé';
@override String get create => 'Créer un Compte';
@override late final _TranslationsLoginErrorFr error = _TranslationsLoginErrorFr._(_root);
}
// Path: live
class _TranslationsLiveFr extends TranslationsLiveEn {
_TranslationsLiveFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Configurer le flux';
@override String get endpoint => 'Point final';
@override String get accept_tos => 'Accepter les CGU';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Titre';
@override String get summary => 'Résumé';
@override String get image => 'Image de couverture';
@override String get tags => 'Tags';
@override String get nsfw => 'Contenu NSFW';
@override String get nsfw_description => 'Cochez cette case si ce flux contient de la nudité ou du contenu pornographique.';
@override late final _TranslationsLiveErrorFr error = _TranslationsLiveErrorFr._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusFr extends TranslationsStreamStatusEn {
_TranslationsStreamStatusFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get live => 'VIVRE';
@override String get ended => 'FINI';
@override String get planned => 'PRÉVU';
}
// Path: stream.chat
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}';
/// 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}) => TextSpan(children: [
mod,
const TextSpan(text: ' '),
user,
const TextSpan(text: ' a expiré dans le temps pour '),
time,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' a zappé '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteFr write = _TranslationsStreamChatWriteFr._(_root);
@override late final _TranslationsStreamChatBadgeFr badge = _TranslationsStreamChatBadgeFr._(_root);
@override late final _TranslationsStreamChatRaidFr raid = _TranslationsStreamChatRaidFr._(_root);
}
// Path: zap.error
class _TranslationsZapErrorFr extends TranslationsZapErrorEn {
_TranslationsZapErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Montant personnalisé non valide';
@override String get no_wallet => 'Pas de porte-monnaie électronique installé';
@override String get no_lud16 => 'Pas d\'adresse éclair trouvée';
}
// 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 => '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 String get balance => 'Équilibre';
@override String get name => 'Portefeuille';
@override late final _TranslationsSettingsWalletErrorFr error = _TranslationsSettingsWalletErrorFr._(_root);
}
// Path: login.error
class _TranslationsLoginErrorFr extends TranslationsLoginErrorEn {
_TranslationsLoginErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Clé non valide';
}
// Path: live.error
class _TranslationsLiveErrorFr extends TranslationsLiveErrorEn {
_TranslationsLiveErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get failed => 'Échec du flux';
@override String get connection_error => 'Erreur de connexion';
@override String get start_failed => 'Le démarrage du flux a échoué, veuillez vérifier votre solde';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteFr extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
/// Étiquette sur la boîte de saisie du message de chat
@override String get label => 'Message écrit';
/// Message d'entrée du chat affiché lorsque l'utilisateur n'est connecté qu'avec pubkey
@override String get no_signer => 'Impossible d\'écrire des messages avec le login npub';
/// Message d'entrée du chat affiché lorsque l'utilisateur est déconnecté
@override String get login => 'Veuillez vous connecter pour envoyer des messages';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeFr extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
/// Titre sur la liste des utilisateurs qui ont reçu un badge
@override String get awarded_to => 'Attribué à :';
}
// Path: stream.chat.raid
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}';
/// Message de raid sur le chat à partir d'un autre flux
@override String from({required Object name}) => 'RAID FROM ${name}';
/// Compte à rebours pour l'auto-raid
@override String countdown({required Object time}) => 'Raid sur ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorFr extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Télécharger l\'avatar';
case 'most_zapped_streamers': return 'Les Streamers les plus zappés';
case 'no_user_found': return 'Aucun utilisateur trouvé';
case 'anon': return 'Anonyme';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('fr').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n,
one: '1 téléspectateur',
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.notification': return ({required Object name}) => '${name} est en ligne !';
case 'stream.chat.disabled': return 'CHAT DISABLED';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Le délai expire : ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' '),
user,
const TextSpan(text: ' a expiré dans le temps pour '),
time,
]);
case 'stream.chat.ended': return 'STREAM ENDED';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' a zappé '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'COMPLET';
case 'button.login': return 'Se Connecter';
case 'button.logout': return 'Se déconnecter';
case 'button.edit_profile': return 'Modifier le Profil';
case 'button.follow': return 'Suivre';
case 'button.unfollow': return 'Ne plus suivre';
case 'button.mute': return 'Muet';
case 'button.unmute': return 'Retirer sourdine';
case 'button.share': return 'Partager';
case 'button.save': return 'Sauvegarder';
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.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': 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 '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.balance': return 'Équilibre';
case 'settings.wallet.name': return 'Portefeuille';
case 'settings.wallet.error.logged_out': return 'Impossible de se connecter au portefeuille lorsque l\'on est déconnecté';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Aucun événement d\'authentification de portefeuille n\'a été trouvé';
case 'login.username': return 'Nom dutilisateur';
case 'login.amber': return 'Se connecter avec Amber';
case 'login.key': return 'Connexion avec la clé';
case 'login.create': return 'Créer un Compte';
case 'login.error.invalid_key': return 'Clé non valide';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Configurer le flux';
case 'live.endpoint': return 'Point final';
case 'live.accept_tos': return 'Accepter les CGU';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Titre';
case 'live.summary': return 'Résumé';
case 'live.image': return 'Image de couverture';
case 'live.tags': return 'Tags';
case 'live.nsfw': return 'Contenu NSFW';
case 'live.nsfw_description': return 'Cochez cette case si ce flux contient de la nudité ou du contenu pornographique.';
case 'live.error.failed': return 'Échec du flux';
case 'live.error.connection_error': return 'Erreur de connexion';
case 'live.error.start_failed': return 'Le démarrage du flux a échoué, veuillez vérifier votre solde';
default: return null;
}
}
}

473
lib/i18n/strings_hu.g.dart Normal file
View File

@ -0,0 +1,473 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.hu,
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);
}
/// Metadata for the translations of <hu>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsHu _root = this; // ignore: unused_field
@override
TranslationsHu $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsHu(meta: meta ?? this.$meta);
// Translations
/// Szöveg, amely arra kéri a felhasználót, hogy a feltöltés megkezdéséhez nyomja meg az avatar helyőrzőt
@override String get upload_avatar => 'Avatár feltöltése';
/// Irány a felsorolt top streamerek fölött zaps által
@override String get most_zapped_streamers => 'A legtöbb Zapped Streamers';
/// Kereséskor nem talált felhasználó
@override String get no_user_found => 'Nem talált felhasználó';
/// Egy névtelen felhasználó
@override String get anon => 'Névtelen';
/// 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: '${NumberFormat.decimalPattern('hu').format(n)} nézők',
);
@override late final _TranslationsStreamHu stream = _TranslationsStreamHu._(_root);
@override late final _TranslationsGoalHu goal = _TranslationsGoalHu._(_root);
@override late final _TranslationsButtonHu button = _TranslationsButtonHu._(_root);
@override late final _TranslationsEmbedHu embed = _TranslationsEmbedHu._(_root);
/// A stream-listák címsorai stream-típusonként élő/befejezett/tervezett stb.
@override late final _TranslationsStreamListHu stream_list = _TranslationsStreamListHu._(_root);
@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 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 notification({required Object name}) => '${name} elindult!';
@override late final _TranslationsStreamChatHu chat = _TranslationsStreamChatHu._(_root);
}
// Path: goal
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 get complete => 'TELJES';
}
// Path: button
class _TranslationsButtonHu extends TranslationsButtonEn {
_TranslationsButtonHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
/// A bejelentkezési gomb szövege
@override String get login => 'Bejelentkezés';
@override String get logout => 'Kijelentkezés';
@override String get edit_profile => 'Profil szerkesztése';
/// A követés gomb szövege
@override String get follow => 'Követés';
/// A követés megszüntetése gomb szövege
@override String get unfollow => 'Követés megszüntetése';
@override String get mute => 'Némítás';
@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 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}) => '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 extends TranslationsStreamListEn {
_TranslationsStreamListHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get following => 'Követettek bejegyzései';
@override String get live => 'Élő';
@override String get planned => 'Tervezett';
@override String get ended => 'Véget ért';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get username => 'Felhasználónév';
@override String get amber => 'Bejelentkezés Amber segítségével';
@override String get key => 'Bejelentkezés kulccsal';
@override String get create => 'Fiók Létrehozása';
@override late final _TranslationsLoginErrorHu error = _TranslationsLoginErrorHu._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusHu extends TranslationsStreamStatusEn {
_TranslationsStreamStatusHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get live => 'ÉLŐ';
@override String get ended => 'ENDED';
@override String get planned => 'TERVEZETT';
}
// Path: stream.chat
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}';
/// Chat üzenet az időkorlátos események megjelenítésével
@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'),
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zap-elt '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteHu write = _TranslationsStreamChatWriteHu._(_root);
@override late final _TranslationsStreamChatBadgeHu badge = _TranslationsStreamChatBadgeHu._(_root);
@override late final _TranslationsStreamChatRaidHu raid = _TranslationsStreamChatRaidHu._(_root);
}
// Path: zap.error
class _TranslationsZapErrorHu extends TranslationsZapErrorEn {
_TranslationsZapErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Érvénytelen egyéni összeg';
@override String get no_wallet => 'Nincs telepített villám tárca';
@override String get no_lud16 => 'Nem talált villámcím';
}
// 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 => '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 extends TranslationsLoginErrorEn {
_TranslationsLoginErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Érvénytelen kulcs';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteHu extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
/// Címke a csevegőüzenet beviteli mezőjén
@override String get label => 'Üzenet írása';
/// A csevegés bemeneti üzenete megjelenik, ha a felhasználó csak pubkey-vel van bejelentkezve
@override String get no_signer => 'Nem tud üzeneteket írni az npub bejelentkezéssel';
/// A felhasználó kijelentkezésekor megjelenő csevegési beviteli üzenet
@override String get login => 'Kérjük, jelentkezzen be az üzenetek küldéséhez';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeHu extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
/// Fejléc a jelvényt kapott felhasználók listája fölött
@override String get awarded_to => 'Elnyerte:';
}
// Path: stream.chat.raid
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}';
/// Chat raid üzenet egy másik folyamból
@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';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorHu extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorHu._(TranslationsHu root) : this._root = root, super.internal(root);
final TranslationsHu _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Avatár feltöltése';
case 'most_zapped_streamers': return 'A legtöbb Zapped Streamers';
case 'no_user_found': return 'Nem talált felhasználó';
case 'anon': return 'Névtelen';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('hu'))(n,
one: '1 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.notification': return ({required Object name}) => '${name} elindult!';
case 'stream.chat.disabled': return 'CHAT KIKAPCSOLVA';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Az időkorlát lejár: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' időzített '),
user,
const TextSpan(text: ' a '),
time,
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}) => TextSpan(children: [
user,
const TextSpan(text: ' zap-elt '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'TELJES';
case 'button.login': return 'Bejelentkezés';
case 'button.logout': return 'Kijelentkezés';
case 'button.edit_profile': return 'Profil szerkesztése';
case 'button.follow': return 'Követés';
case 'button.unfollow': return 'Követés megszüntetése';
case 'button.mute': return 'Némítás';
case 'button.unmute': return 'Némítás visszavonása';
case 'button.share': return 'Megosztás';
case 'button.save': return 'Mentés';
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.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': 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 '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';
case 'login.create': return 'Fiók Létrehozása';
case 'login.error.invalid_key': return 'Érvénytelen kulcs';
default: return null;
}
}
}

532
lib/i18n/strings_it.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.it,
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);
}
/// Metadata for the translations of <it>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsIt _root = this; // ignore: unused_field
@override
TranslationsIt $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsIt(meta: meta ?? this.$meta);
// Translations
/// Testo che richiede all'utente di premere il segnaposto dell'avatar per iniziare il caricamento
@override String get upload_avatar => 'Carica Avatar';
/// Direzione sopra elencata top streamers da zaps
@override String get most_zapped_streamers => 'Il maggior numero di streamer bloccati';
/// Nessun utente trovato durante la ricerca
@override String get no_user_found => 'Nessun utente trovato';
/// Un utente anonimo
@override String get anon => 'Anonimo';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('it').format(n)} sats';
/// Numero di spettatori del flusso
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n,
one: '1 spettatore',
other: '${NumberFormat.decimalPattern('it').format(n)} spettatori',
);
@override late final _TranslationsStreamIt stream = _TranslationsStreamIt._(_root);
@override late final _TranslationsGoalIt goal = _TranslationsGoalIt._(_root);
@override late final _TranslationsButtonIt button = _TranslationsButtonIt._(_root);
@override late final _TranslationsEmbedIt embed = _TranslationsEmbedIt._(_root);
/// Titoli sugli elenchi dei flussi per tipo di flusso live/finito/pianificato ecc.
@override late final _TranslationsStreamListIt stream_list = _TranslationsStreamListIt._(_root);
@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);
@override late final _TranslationsLiveIt live = _TranslationsLiveIt._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} è andato in onda!';
@override late final _TranslationsStreamChatIt chat = _TranslationsStreamChatIt._(_root);
}
// Path: goal
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 get complete => 'COMPLETO';
}
// Path: button
class _TranslationsButtonIt extends TranslationsButtonEn {
_TranslationsButtonIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
/// Testo del pulsante per il pulsante di accesso
@override String get login => 'Login';
@override String get logout => 'Logout';
@override String get edit_profile => 'Modifica profilo';
/// Testo del pulsante per il pulsante Segui
@override String get follow => 'Segui';
/// Testo del pulsante per il pulsante unfollow
@override String get unfollow => 'Smetti di seguire';
@override String get mute => 'Silenzia';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListIt extends TranslationsStreamListEn {
_TranslationsStreamListIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get following => 'Seguiti';
@override String get live => 'Dal vivo';
@override String get planned => 'Pianificato';
@override String get ended => 'Terminato';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get username => 'Nome utente';
@override String get amber => 'Accesso con Amber';
@override String get key => 'Accesso con chiave';
@override String get create => 'Crea un account';
@override late final _TranslationsLoginErrorIt error = _TranslationsLoginErrorIt._(_root);
}
// Path: live
class _TranslationsLiveIt extends TranslationsLiveEn {
_TranslationsLiveIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get start => 'VAI IN DIRETTA';
@override String get configure_stream => 'Configurare il flusso';
@override String get endpoint => 'Punto finale';
@override String get accept_tos => 'Accettare i TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Titolo';
@override String get summary => 'Sintesi';
@override String get image => 'Immagine di copertina';
@override String get tags => 'Tag';
@override String get nsfw => 'Contenuto NSFW';
@override String get nsfw_description => 'Controllare qui se questo streaming contiene nudità o contenuti pornografici.';
@override late final _TranslationsLiveErrorIt error = _TranslationsLiveErrorIt._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusIt extends TranslationsStreamStatusEn {
_TranslationsStreamStatusIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get live => 'IN DIRETTA';
@override String get ended => 'FINE';
@override String get planned => 'PREVISTO';
}
// Path: stream.chat
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}';
/// Messaggio di chat che mostra gli eventi di timeout
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' ha effettuato uno zap di '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteIt write = _TranslationsStreamChatWriteIt._(_root);
@override late final _TranslationsStreamChatBadgeIt badge = _TranslationsStreamChatBadgeIt._(_root);
@override late final _TranslationsStreamChatRaidIt raid = _TranslationsStreamChatRaidIt._(_root);
}
// Path: zap.error
class _TranslationsZapErrorIt extends TranslationsZapErrorEn {
_TranslationsZapErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Importo personalizzato non valido';
@override String get no_wallet => 'Nessun portafoglio Lightning installato';
@override String get no_lud16 => 'Nessun indirizzo di fulmine trovato';
}
// 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 => 'Circa';
@override String get nip05 => 'Indirizzo';
@override String get lud16 => 'Indirizzo del fulmine';
@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 String get balance => 'Equilibrio';
@override String get name => 'Portafoglio';
@override late final _TranslationsSettingsWalletErrorIt error = _TranslationsSettingsWalletErrorIt._(_root);
}
// Path: login.error
class _TranslationsLoginErrorIt extends TranslationsLoginErrorEn {
_TranslationsLoginErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Chiave non valida';
}
// Path: live.error
class _TranslationsLiveErrorIt extends TranslationsLiveErrorEn {
_TranslationsLiveErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get failed => 'Flusso fallito';
@override String get connection_error => 'Errore di connessione';
@override String get start_failed => 'Avvio del flusso fallito, controllare il saldo';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteIt extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
/// Etichetta della casella di immissione del messaggio di chat
@override String get label => 'Scrivi il messaggio';
/// Messaggio di ingresso alla chat mostrato quando l'utente è connesso solo con la pubkey
@override String get no_signer => 'Impossibile scrivere messaggi con il login npub';
/// Messaggio di input della chat mostrato quando l'utente è disconnesso
@override String get login => 'Effettuare il login per inviare messaggi';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeIt extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
/// Intestazione dell'elenco degli utenti a cui è stato assegnato un badge
@override String get awarded_to => 'Assegnato a:';
}
// Path: stream.chat.raid
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}';
/// Messaggio di chat raid da un altro flusso
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorIt extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Carica Avatar';
case 'most_zapped_streamers': return 'Il maggior numero di streamer bloccati';
case 'no_user_found': return 'Nessun utente trovato';
case 'anon': return 'Anonimo';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('it').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n,
one: '1 spettatore',
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.notification': return ({required Object name}) => '${name} è andato in onda!';
case 'stream.chat.disabled': return 'CHAT DISABILITATA';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Il timeout scade: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' time out '),
user,
const TextSpan(text: ' per '),
time,
]);
case 'stream.chat.ended': return 'STREAM ENDED';
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'),
]);
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 'goal.complete': return 'COMPLETO';
case 'button.login': return 'Login';
case 'button.logout': return 'Logout';
case 'button.edit_profile': return 'Modifica profilo';
case 'button.follow': return 'Segui';
case 'button.unfollow': return 'Smetti di seguire';
case 'button.mute': return 'Silenzia';
case 'button.unmute': return 'Riattiva';
case 'button.share': return 'Condividi';
case 'button.save': return 'Salva';
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.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': 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 '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.balance': return 'Equilibrio';
case 'settings.wallet.name': return 'Portafoglio';
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';
case 'login.create': return 'Crea un account';
case 'login.error.invalid_key': return 'Chiave non valida';
case 'live.start': return 'VAI IN DIRETTA';
case 'live.configure_stream': return 'Configurare il flusso';
case 'live.endpoint': return 'Punto finale';
case 'live.accept_tos': return 'Accettare i TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Titolo';
case 'live.summary': return 'Sintesi';
case 'live.image': return 'Immagine di copertina';
case 'live.tags': return 'Tag';
case 'live.nsfw': return 'Contenuto NSFW';
case 'live.nsfw_description': return 'Controllare qui se questo streaming contiene nudità o contenuti pornografici.';
case 'live.error.failed': return 'Flusso fallito';
case 'live.error.connection_error': return 'Errore di connessione';
case 'live.error.start_failed': return 'Avvio del flusso fallito, controllare il saldo';
default: return null;
}
}
}

532
lib/i18n/strings_ja.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.ja,
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);
}
/// Metadata for the translations of <ja>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsJa _root = this; // ignore: unused_field
@override
TranslationsJa $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsJa(meta: meta ?? this.$meta);
// Translations
/// アバターのプレースホルダーを押してアップロードを開始するよう促すテキスト
@override String get upload_avatar => '画像アップロード';
/// ザップによるリストの上のストリーマーに向かう
@override String get most_zapped_streamers => '最もザッピングされたストリーマー';
/// 検索してもユーザーが見つからない
@override String get no_user_found => 'ユーザーが見つかりません';
/// 匿名ユーザー
@override String get anon => '匿名';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('ja').format(n)} サッツ';
/// ストリームの視聴者数
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n,
one: '1 視聴者',
other: '${NumberFormat.decimalPattern('ja').format(n)} 人が視聴中',
);
@override late final _TranslationsStreamJa stream = _TranslationsStreamJa._(_root);
@override late final _TranslationsGoalJa goal = _TranslationsGoalJa._(_root);
@override late final _TranslationsButtonJa button = _TranslationsButtonJa._(_root);
@override late final _TranslationsEmbedJa embed = _TranslationsEmbedJa._(_root);
/// ライブ/終了/予定など、ストリーム・タイプ別のストリーム・リストの見出し。
@override late final _TranslationsStreamListJa stream_list = _TranslationsStreamListJa._(_root);
@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);
@override late final _TranslationsLiveJa live = _TranslationsLiveJa._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} がライブを開始した!';
@override late final _TranslationsStreamChatJa chat = _TranslationsStreamChatJa._(_root);
}
// Path: goal
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 get complete => '完了';
}
// Path: button
class _TranslationsButtonJa extends TranslationsButtonEn {
_TranslationsButtonJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
/// ログインボタンのテキスト
@override String get login => 'ログイン';
@override String get logout => 'ログアウト';
@override String get edit_profile => 'プロフィールを編集';
/// フォローボタンのテキスト
@override String get follow => 'フォロー';
/// フォロー解除ボタンのテキスト
@override String get unfollow => 'フォロー解除';
@override String get mute => 'ミュート';
@override String get unmute => 'ミュート解除';
@override String get share => '共有';
@override String get save => '保存';
@override String get connect => '接続';
@override String get settings => '設定';
}
// Path: embed
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}';
}
// Path: stream_list
class _TranslationsStreamListJa extends TranslationsStreamListEn {
_TranslationsStreamListJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get following => 'フォロー中';
@override String get live => 'ライブ配信中';
@override String get planned => '予定あり';
@override String get ended => '終了しました';
}
// Path: zap
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 get custom_amount => 'カスタム金額';
@override String get confirm => '確認';
@override String get comment => 'コメント';
@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 extends TranslationsProfileEn {
_TranslationsProfileJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get past_streams => '過去の配信';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get username => 'ユーザー名';
@override String get amber => '琥珀でログイン';
@override String get key => 'キーでログイン';
@override String get create => 'アカウントを作成する';
@override late final _TranslationsLoginErrorJa error = _TranslationsLoginErrorJa._(_root);
}
// Path: live
class _TranslationsLiveJa extends TranslationsLiveEn {
_TranslationsLiveJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get start => 'ライブ中継';
@override String get configure_stream => 'ストリームの設定';
@override String get endpoint => 'エンドポイント';
@override String get accept_tos => 'TOSを受け入れる';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'タイトル';
@override String get summary => '概要';
@override String get image => '表紙画像';
@override String get tags => 'タグ';
@override String get nsfw => 'NSFWコンテンツ';
@override String get nsfw_description => 'このストリームにヌードやポルノが含まれている場合は、ここをチェックしてください。';
@override late final _TranslationsLiveErrorJa error = _TranslationsLiveErrorJa._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusJa extends TranslationsStreamStatusEn {
_TranslationsStreamStatusJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get live => 'ライブ';
@override String get ended => '終了';
@override String get planned => '予定';
}
// Path: stream.chat
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 TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' タイムアウト '),
user,
const TextSpan(text: ' for '),
time,
]);
/// チャットの下にストリーム終了のフッター
@override String get ended => '配信終了';
/// ストリームのザッピングを表示するチャットメッセージ
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ''),
amount,
const TextSpan(text: ' sats をザップしました'),
]);
@override late final _TranslationsStreamChatWriteJa write = _TranslationsStreamChatWriteJa._(_root);
@override late final _TranslationsStreamChatBadgeJa badge = _TranslationsStreamChatBadgeJa._(_root);
@override late final _TranslationsStreamChatRaidJa raid = _TranslationsStreamChatRaidJa._(_root);
}
// Path: zap.error
class _TranslationsZapErrorJa extends TranslationsZapErrorEn {
_TranslationsZapErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => '無効なカスタム金額';
@override String get no_wallet => 'Lightningウォレット未装着';
@override String get no_lud16 => '雷アドレスが見つかりません';
}
// 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 => '住所';
@override String get lud16 => 'ライトニングアドレス';
@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 String get balance => 'バランス';
@override String get name => '財布';
@override late final _TranslationsSettingsWalletErrorJa error = _TranslationsSettingsWalletErrorJa._(_root);
}
// Path: login.error
class _TranslationsLoginErrorJa extends TranslationsLoginErrorEn {
_TranslationsLoginErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get invalid_key => '無効なキー';
}
// Path: live.error
class _TranslationsLiveErrorJa extends TranslationsLiveErrorEn {
_TranslationsLiveErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get failed => 'ストリーム失敗';
@override String get connection_error => '接続エラー';
@override String get start_failed => 'ストリームの開始に失敗しました。';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteJa extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
/// チャットメッセージ入力ボックスのラベル
@override String get label => 'メッセージを書く';
/// ユーザーがpubkeyのみでログインしている場合に表示されるチャット入力メッセージ
@override String get no_signer => 'npubログインでメッセージが書けない';
/// ログアウト時に表示されるチャット入力メッセージ
@override String get login => 'メッセージを送信するにはログインしてください';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeJa extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
/// バッジを授与されたユーザーのリスト上の見出し
@override String get awarded_to => '受賞者';
}
// Path: stream.chat.raid
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 from({required Object name}) => 'RAID FROM ${name}';
/// 自動騎乗のカウントダウン・タイマー
@override String countdown({required Object time}) => '${time}における襲撃';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorJa extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@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 'most_zapped_streamers': return '最もザッピングされたストリーマー';
case 'no_user_found': return 'ユーザーが見つかりません';
case 'anon': return '匿名';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('ja').format(n)} サッツ';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n,
one: '1 視聴者',
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.notification': return ({required Object name}) => '${name} がライブを開始した!';
case 'stream.chat.disabled': return 'チャット無効';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'タイムアウト: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' タイムアウト '),
user,
const TextSpan(text: ' for '),
time,
]);
case 'stream.chat.ended': return '配信終了';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ''),
amount,
const TextSpan(text: ' sats をザップしました'),
]);
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 'goal.complete': return '完了';
case 'button.login': return 'ログイン';
case 'button.logout': return 'ログアウト';
case 'button.edit_profile': return 'プロフィールを編集';
case 'button.follow': return 'フォロー';
case 'button.unfollow': return 'フォロー解除';
case 'button.mute': return 'ミュート';
case 'button.unmute': return 'ミュート解除';
case 'button.share': return '共有';
case 'button.save': return '保存';
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.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': 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 '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.balance': return 'バランス';
case 'settings.wallet.name': return '財布';
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 'キーでログイン';
case 'login.create': return 'アカウントを作成する';
case 'login.error.invalid_key': return '無効なキー';
case 'live.start': return 'ライブ中継';
case 'live.configure_stream': return 'ストリームの設定';
case 'live.endpoint': return 'エンドポイント';
case 'live.accept_tos': return 'TOSを受け入れる';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'タイトル';
case 'live.summary': return '概要';
case 'live.image': return '表紙画像';
case 'live.tags': return 'タグ';
case 'live.nsfw': return 'NSFWコンテンツ';
case 'live.nsfw_description': return 'このストリームにヌードやポルノが含まれている場合は、ここをチェックしてください。';
case 'live.error.failed': return 'ストリーム失敗';
case 'live.error.connection_error': return '接続エラー';
case 'live.error.start_failed': return 'ストリームの開始に失敗しました。';
default: return null;
}
}
}

532
lib/i18n/strings_ko.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.ko,
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);
}
/// Metadata for the translations of <ko>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsKo _root = this; // ignore: unused_field
@override
TranslationsKo $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsKo(meta: meta ?? this.$meta);
// Translations
/// 아바타 플레이스홀더를 눌러 업로드를 시작하라는 메시지를 표시하는 텍스트
@override String get upload_avatar => '아바타 업로드';
/// 나열된 상위 스트리머를 잽별로 살펴보기
@override String get most_zapped_streamers => '가장 많이 재핑된 스트리머';
/// 검색 시 사용자를 찾을 수 없음
@override String get no_user_found => '사용자를 찾을 수 없습니다.';
/// 익명 사용자
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('ko').format(n)} sats';
/// 스트림 시청자 수
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n,
one: '시청자 1명',
other: '{n:decimalPattern} 시청자',
);
@override late final _TranslationsStreamKo stream = _TranslationsStreamKo._(_root);
@override late final _TranslationsGoalKo goal = _TranslationsGoalKo._(_root);
@override late final _TranslationsButtonKo button = _TranslationsButtonKo._(_root);
@override late final _TranslationsEmbedKo embed = _TranslationsEmbedKo._(_root);
/// 실시간/종료/예정 등 스트림 유형별로 스트림 목록의 제목을 표시합니다.
@override late final _TranslationsStreamListKo stream_list = _TranslationsStreamListKo._(_root);
@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);
@override late final _TranslationsLiveKo live = _TranslationsLiveKo._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} 라이브가 시작되었습니다!';
@override late final _TranslationsStreamChatKo chat = _TranslationsStreamChatKo._(_root);
}
// Path: goal
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 get complete => '완료';
}
// Path: button
class _TranslationsButtonKo extends TranslationsButtonEn {
_TranslationsButtonKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
/// 로그인 버튼의 버튼 텍스트
@override String get login => '로그인';
@override String get logout => '로그아웃';
@override String get edit_profile => '프로필 수정';
/// 팔로우 버튼의 버튼 텍스트
@override String get follow => '팔로우';
/// 언팔로우 버튼의 버튼 텍스트
@override String get unfollow => '언팔로우';
@override String get mute => '뮤트';
@override String get unmute => '뮤트 해제';
@override String get share => '공유';
@override String get save => '저장';
@override String get connect => '연결';
@override String get settings => '설정';
}
// Path: embed
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}';
}
// Path: stream_list
class _TranslationsStreamListKo extends TranslationsStreamListEn {
_TranslationsStreamListKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get following => '팔로잉';
@override String get live => '라이브';
@override String get planned => '계획된';
@override String get ended => '종료됨';
}
// Path: zap
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 get custom_amount => '사용자 지정 금액';
@override String get confirm => '확인';
@override String get comment => '댓글';
@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 extends TranslationsProfileEn {
_TranslationsProfileKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get past_streams => '과거 스트림';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get username => '사용자 이름';
@override String get amber => 'Amber로 로그인';
@override String get key => '키로 로그인';
@override String get create => '계정 만들기';
@override late final _TranslationsLoginErrorKo error = _TranslationsLoginErrorKo._(_root);
}
// Path: live
class _TranslationsLiveKo extends TranslationsLiveEn {
_TranslationsLiveKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get start => '라이브 시작하기';
@override String get configure_stream => '스트림 구성';
@override String get endpoint => '엔드포인트';
@override String get accept_tos => 'TOS 수락';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n,
zero: '',
other: '~${time}',
);
@override String get title => '제목';
@override String get summary => '요약';
@override String get image => '표지 이미지';
@override String get tags => '태그';
@override String get nsfw => 'NSFW 콘텐츠';
@override String get nsfw_description => '이 스트림에 노출 또는 음란 콘텐츠가 포함되어 있는지 여기에서 확인하세요.';
@override late final _TranslationsLiveErrorKo error = _TranslationsLiveErrorKo._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusKo extends TranslationsStreamStatusEn {
_TranslationsStreamStatusKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get live => '라이브';
@override String get ended => '종료';
@override String get planned => '계획된';
}
// Path: stream.chat
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 TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 시간 초과됨 '),
user,
const TextSpan(text: ' '),
time,
]);
/// 채팅 하단의 스트림 종료 푸터
@override String get ended => '스트림 종료';
/// 채팅 메시지 스트림 끊김 표시
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' ZAPP '),
amount,
const TextSpan(text: ' SATS'),
]);
@override late final _TranslationsStreamChatWriteKo write = _TranslationsStreamChatWriteKo._(_root);
@override late final _TranslationsStreamChatBadgeKo badge = _TranslationsStreamChatBadgeKo._(_root);
@override late final _TranslationsStreamChatRaidKo raid = _TranslationsStreamChatRaidKo._(_root);
}
// Path: zap.error
class _TranslationsZapErrorKo extends TranslationsZapErrorEn {
_TranslationsZapErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => '잘못된 사용자 지정 금액';
@override String get no_wallet => '라이트닝 월렛이 설치되지 않았습니다.';
@override String get no_lud16 => '번개 주소를 찾을 수 없습니다.';
}
// Path: settings.profile
class _TranslationsSettingsProfileKo extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get display_name => '표시 이름';
@override String get about => '정보';
@override String get nip05 => '노스트르 주소';
@override String get lud16 => '라이트닝 주소';
@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 String get balance => '잔액';
@override String get name => '지갑';
@override late final _TranslationsSettingsWalletErrorKo error = _TranslationsSettingsWalletErrorKo._(_root);
}
// Path: login.error
class _TranslationsLoginErrorKo extends TranslationsLoginErrorEn {
_TranslationsLoginErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get invalid_key => '잘못된 키';
}
// Path: live.error
class _TranslationsLiveErrorKo extends TranslationsLiveErrorEn {
_TranslationsLiveErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get failed => '스트림 실패';
@override String get connection_error => '연결 오류';
@override String get start_failed => '스트림 시작에 실패했습니다. 잔액을 확인해 주세요.';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteKo extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
/// 채팅 메시지 입력 상자의 라벨
@override String get label => '메시지 작성';
/// 사용자가 공개 키로만 로그인한 경우에 표시되는 채팅 입력 메시지
@override String get no_signer => 'npub 로그인으로 메시지를 작성할 수 없습니다.';
/// 사용자가 로그아웃할 때 표시되는 채팅 입력 메시지
@override String get login => '메시지를 보내려면 로그인하세요.';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeKo extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
/// 배지를 받은 사용자 목록으로 이동하기
@override String get awarded_to => '수상 대상';
}
// Path: stream.chat.raid
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 from({required Object name}) => 'RAID FROM ${name}';
/// 자동 레이드를 위한 카운트다운 타이머
@override String countdown({required Object time}) => '${time}에서 레이드';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorKo extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return '아바타 업로드';
case 'most_zapped_streamers': return '가장 많이 재핑된 스트리머';
case 'no_user_found': return '사용자를 찾을 수 없습니다.';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('ko').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n,
one: '시청자 1명',
other: '{n:decimalPattern} 시청자',
);
case 'stream.status.live': return '라이브';
case 'stream.status.ended': return '종료';
case 'stream.status.planned': return '계획된';
case 'stream.started': return ({required Object timestamp}) => '시작 ${timestamp}';
case 'stream.notification': return ({required Object name}) => '${name} 라이브가 시작되었습니다!';
case 'stream.chat.disabled': return '채팅 사용 안 함';
case 'stream.chat.disabled_timeout': return ({required Object time}) => '시간 초과가 만료되었습니다: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 시간 초과됨 '),
user,
const TextSpan(text: ' '),
time,
]);
case 'stream.chat.ended': return '스트림 종료';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' ZAPP '),
amount,
const TextSpan(text: ' SATS'),
]);
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 'goal.complete': return '완료';
case 'button.login': return '로그인';
case 'button.logout': return '로그아웃';
case 'button.edit_profile': return '프로필 수정';
case 'button.follow': return '팔로우';
case 'button.unfollow': return '언팔로우';
case 'button.mute': return '뮤트';
case 'button.unmute': return '뮤트 해제';
case 'button.share': return '공유';
case 'button.save': return '저장';
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.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': 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 '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.balance': return '잔액';
case 'settings.wallet.name': return '지갑';
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 '키로 로그인';
case 'login.create': return '계정 만들기';
case 'login.error.invalid_key': return '잘못된 키';
case 'live.start': return '라이브 시작하기';
case 'live.configure_stream': return '스트림 구성';
case 'live.endpoint': return '엔드포인트';
case 'live.accept_tos': return 'TOS 수락';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return '제목';
case 'live.summary': return '요약';
case 'live.image': return '표지 이미지';
case 'live.tags': return '태그';
case 'live.nsfw': return 'NSFW 콘텐츠';
case 'live.nsfw_description': return '이 스트림에 노출 또는 음란 콘텐츠가 포함되어 있는지 여기에서 확인하세요.';
case 'live.error.failed': return '스트림 실패';
case 'live.error.connection_error': return '연결 오류';
case 'live.error.start_failed': return '스트림 시작에 실패했습니다. 잔액을 확인해 주세요.';
default: return null;
}
}
}

532
lib/i18n/strings_nl.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.nl,
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);
}
/// Metadata for the translations of <nl>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsNl _root = this; // ignore: unused_field
@override
TranslationsNl $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsNl(meta: meta ?? this.$meta);
// Translations
/// Tekst die de gebruiker vraagt om op de avatar-plaatshouder te klikken om te beginnen met uploaden
@override String get upload_avatar => 'Avatar uploaden';
/// Koers over beursgenoteerde topstreamers door zaps
@override String get most_zapped_streamers => 'Meeste Zapped Streamers';
/// Geen gebruiker gevonden bij het zoeken
@override String get no_user_found => 'Geen gebruiker gevonden';
/// Een anonieme gebruiker
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('nl').format(n)} sats';
/// Aantal kijkers van de stream
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n,
one: '1 kijker',
other: '${NumberFormat.decimalPattern('nl').format(n)} kijkers',
);
@override late final _TranslationsStreamNl stream = _TranslationsStreamNl._(_root);
@override late final _TranslationsGoalNl goal = _TranslationsGoalNl._(_root);
@override late final _TranslationsButtonNl button = _TranslationsButtonNl._(_root);
@override late final _TranslationsEmbedNl embed = _TranslationsEmbedNl._(_root);
/// Rubrieken op streamlijsten per streamtype live/beëindigd/gepland etc.
@override late final _TranslationsStreamListNl stream_list = _TranslationsStreamListNl._(_root);
@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);
@override late final _TranslationsLiveNl live = _TranslationsLiveNl._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} ging live!';
@override late final _TranslationsStreamChatNl chat = _TranslationsStreamChatNl._(_root);
}
// Path: goal
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 get complete => 'COMPLETE';
}
// Path: button
class _TranslationsButtonNl extends TranslationsButtonEn {
_TranslationsButtonNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
/// Knoptekst voor de aanmeldknop
@override String get login => 'Inloggen';
@override String get logout => 'Uitloggen';
@override String get edit_profile => 'Bewerk Profiel';
/// Knoptekst voor de volgknop
@override String get follow => 'Volgen';
/// Knoptekst voor de knop Ontvolgen
@override String get unfollow => 'Ontvolgen';
@override String get mute => 'Dempen';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListNl extends TranslationsStreamListEn {
_TranslationsStreamListNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get following => 'Volgt';
@override String get live => 'Live';
@override String get planned => 'Gepland';
@override String get ended => 'Beëindigd';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get username => 'Gebruikersnaam';
@override String get amber => 'Inloggen met Amber';
@override String get key => 'Inloggen met sleutel';
@override String get create => 'Account aanmaken';
@override late final _TranslationsLoginErrorNl error = _TranslationsLoginErrorNl._(_root);
}
// Path: live
class _TranslationsLiveNl extends TranslationsLiveEn {
_TranslationsLiveNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get start => 'LIVE GAAN';
@override String get configure_stream => 'Stream configureren';
@override String get endpoint => 'Eindpunt';
@override String get accept_tos => 'TOS accepteren';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Titel';
@override String get summary => 'Samenvatting';
@override String get image => 'Afbeelding omslag';
@override String get tags => 'Tags';
@override String get nsfw => 'NSFW-inhoud';
@override String get nsfw_description => 'Controleer hier of deze stream naaktheid of pornografische inhoud bevat.';
@override late final _TranslationsLiveErrorNl error = _TranslationsLiveErrorNl._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusNl extends TranslationsStreamStatusEn {
_TranslationsStreamStatusNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'GESLOTEN';
@override String get planned => 'GEPLAND';
}
// Path: stream.chat
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}';
/// Chatbericht met time-outgebeurtenissen
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteNl write = _TranslationsStreamChatWriteNl._(_root);
@override late final _TranslationsStreamChatBadgeNl badge = _TranslationsStreamChatBadgeNl._(_root);
@override late final _TranslationsStreamChatRaidNl raid = _TranslationsStreamChatRaidNl._(_root);
}
// Path: zap.error
class _TranslationsZapErrorNl extends TranslationsZapErrorEn {
_TranslationsZapErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Ongeldig aangepast bedrag';
@override String get no_wallet => 'Geen bliksemportemonnee geïnstalleerd';
@override String get no_lud16 => 'Geen bliksemadres gevonden';
}
// 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';
@override String get nip05 => 'Nostr Adres';
@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 String get balance => 'Saldo';
@override String get name => 'Portemonnee';
@override late final _TranslationsSettingsWalletErrorNl error = _TranslationsSettingsWalletErrorNl._(_root);
}
// Path: login.error
class _TranslationsLoginErrorNl extends TranslationsLoginErrorEn {
_TranslationsLoginErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Ongeldige sleutel';
}
// Path: live.error
class _TranslationsLiveErrorNl extends TranslationsLiveErrorEn {
_TranslationsLiveErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get failed => 'Stream mislukt';
@override String get connection_error => 'Fout bij verbinding';
@override String get start_failed => 'Stream start mislukt, controleer uw saldo';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteNl extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
/// Label op het invoerveld voor chatberichten
@override String get label => 'Schrijf bericht';
/// Chatinvoerbericht getoond wanneer de gebruiker alleen is ingelogd met pubkey
@override String get no_signer => 'Kan geen berichten schrijven met npub login';
/// Chatinvoerbericht dat wordt weergegeven wanneer de gebruiker is uitgelogd
@override String get login => 'Log in om berichten te verzenden';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeNl extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
/// Kop boven de lijst met gebruikers die een badge hebben gekregen
@override String get awarded_to => 'Toegekend aan:';
}
// Path: stream.chat.raid
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}';
/// Chat invalbericht van een andere stream
@override String from({required Object name}) => 'RAID VAN ${name}';
/// Afteltimer voor automatisch rijden
@override String countdown({required Object time}) => 'Overvallen in ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorNl extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Avatar uploaden';
case 'most_zapped_streamers': return 'Meeste Zapped Streamers';
case 'no_user_found': return 'Geen gebruiker gevonden';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('nl').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n,
one: '1 kijker',
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.notification': return ({required Object name}) => '${name} ging live!';
case 'stream.chat.disabled': return 'CHAT UITGESCHAKELD';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Time-out loopt af: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' timed out '),
user,
const TextSpan(text: ' voor '),
time,
]);
case 'stream.chat.ended': return 'STREAM BEËINDIGD';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'COMPLETE';
case 'button.login': return 'Inloggen';
case 'button.logout': return 'Uitloggen';
case 'button.edit_profile': return 'Bewerk Profiel';
case 'button.follow': return 'Volgen';
case 'button.unfollow': return 'Ontvolgen';
case 'button.mute': return 'Dempen';
case 'button.unmute': return 'Niet langer negeren';
case 'button.share': return 'Deel';
case 'button.save': return 'Opslaan';
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.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': 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 '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.balance': return 'Saldo';
case 'settings.wallet.name': return 'Portemonnee';
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';
case 'login.create': return 'Account aanmaken';
case 'login.error.invalid_key': return 'Ongeldige sleutel';
case 'live.start': return 'LIVE GAAN';
case 'live.configure_stream': return 'Stream configureren';
case 'live.endpoint': return 'Eindpunt';
case 'live.accept_tos': return 'TOS accepteren';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Titel';
case 'live.summary': return 'Samenvatting';
case 'live.image': return 'Afbeelding omslag';
case 'live.tags': return 'Tags';
case 'live.nsfw': return 'NSFW-inhoud';
case 'live.nsfw_description': return 'Controleer hier of deze stream naaktheid of pornografische inhoud bevat.';
case 'live.error.failed': return 'Stream mislukt';
case 'live.error.connection_error': return 'Fout bij verbinding';
case 'live.error.start_failed': return 'Stream start mislukt, controleer uw saldo';
default: return null;
}
}
}

532
lib/i18n/strings_pl.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.pl,
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);
}
/// Metadata for the translations of <pl>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsPl _root = this; // ignore: unused_field
@override
TranslationsPl $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsPl(meta: meta ?? this.$meta);
// Translations
/// Tekst zachęcający użytkownika do kliknięcia symbolu zastępczego awatara w celu rozpoczęcia przesyłania.
@override String get upload_avatar => 'Prześlij awatar';
/// Przechodzenie nad wymienionymi topowymi streamerami przez zapy
@override String get most_zapped_streamers => 'Większość zapped streamerów';
/// Nie znaleziono użytkownika podczas wyszukiwania
@override String get no_user_found => 'Nie znaleziono użytkownika';
/// Anonimowy użytkownik
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('pl').format(n)} sats';
/// Liczba widzów strumienia
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n,
one: '1 przeglądarka',
other: '{n:decimalPattern} widzów',
);
@override late final _TranslationsStreamPl stream = _TranslationsStreamPl._(_root);
@override late final _TranslationsGoalPl goal = _TranslationsGoalPl._(_root);
@override late final _TranslationsButtonPl button = _TranslationsButtonPl._(_root);
@override late final _TranslationsEmbedPl embed = _TranslationsEmbedPl._(_root);
/// Nagłówki na listach strumieni według typu strumienia na żywo / zakończony / planowany itp.
@override late final _TranslationsStreamListPl stream_list = _TranslationsStreamListPl._(_root);
@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);
@override late final _TranslationsLivePl live = _TranslationsLivePl._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} został uruchomiony!';
@override late final _TranslationsStreamChatPl chat = _TranslationsStreamChatPl._(_root);
}
// Path: goal
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 get complete => 'ZAKOŃCZONE';
}
// Path: button
class _TranslationsButtonPl extends TranslationsButtonEn {
_TranslationsButtonPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
/// Tekst przycisku logowania
@override String get login => 'Logowanie';
@override String get logout => 'Wylogowanie';
@override String get edit_profile => 'Edytuj profil';
/// Tekst przycisku dla przycisku śledzenia
@override String get follow => 'Śledź';
/// Tekst przycisku cofnięcia obserwowania
@override String get unfollow => 'Nie obserwuj';
@override String get mute => 'Wyciszenie';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListPl extends TranslationsStreamListEn {
_TranslationsStreamListPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get following => 'Następujący';
@override String get live => 'Na żywo';
@override String get planned => 'Planowane';
@override String get ended => 'Zakończony';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get username => 'Nazwa użytkownika';
@override String get amber => 'Zaloguj się za pomocą Amber';
@override String get key => 'Logowanie za pomocą klucza';
@override String get create => 'Utwórz konto';
@override late final _TranslationsLoginErrorPl error = _TranslationsLoginErrorPl._(_root);
}
// Path: live
class _TranslationsLivePl extends TranslationsLiveEn {
_TranslationsLivePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Konfiguracja strumienia';
@override String get endpoint => 'Punkt końcowy';
@override String get accept_tos => 'Zaakceptuj Regulamin';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Tytuł';
@override String get summary => 'Podsumowanie';
@override String get image => 'Obraz na okładce';
@override String get tags => 'Tagi';
@override String get nsfw => 'Treści NSFW';
@override String get nsfw_description => 'Sprawdź tutaj, czy ten stream zawiera nagość lub treści pornograficzne.';
@override late final _TranslationsLiveErrorPl error = _TranslationsLiveErrorPl._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusPl extends TranslationsStreamStatusEn {
_TranslationsStreamStatusPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get live => 'NA ŻYWO';
@override String get ended => 'ZAKOŃCZONY';
@override String get planned => 'PLANOWANE';
}
// Path: stream.chat
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}';
/// Komunikat czatu pokazujący zdarzenia przekroczenia limitu czasu
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWritePl write = _TranslationsStreamChatWritePl._(_root);
@override late final _TranslationsStreamChatBadgePl badge = _TranslationsStreamChatBadgePl._(_root);
@override late final _TranslationsStreamChatRaidPl raid = _TranslationsStreamChatRaidPl._(_root);
}
// Path: zap.error
class _TranslationsZapErrorPl extends TranslationsZapErrorEn {
_TranslationsZapErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Nieprawidłowa kwota niestandardowa';
@override String get no_wallet => 'Brak zainstalowanego portfela Lightning';
@override String get no_lud16 => 'Nie znaleziono adresu pioruna';
}
// Path: settings.profile
class _TranslationsSettingsProfilePl extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfilePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get display_name => 'Wyświetlana nazwa';
@override String get about => 'O';
@override String get nip05 => 'Adres Nostr';
@override String get lud16 => 'Adres błyskawicy';
@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 String get balance => 'Równowaga';
@override String get name => 'Portfel';
@override late final _TranslationsSettingsWalletErrorPl error = _TranslationsSettingsWalletErrorPl._(_root);
}
// Path: login.error
class _TranslationsLoginErrorPl extends TranslationsLoginErrorEn {
_TranslationsLoginErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Nieprawidłowy klucz';
}
// Path: live.error
class _TranslationsLiveErrorPl extends TranslationsLiveErrorEn {
_TranslationsLiveErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get failed => 'Strumień nie powiódł się';
@override String get connection_error => 'Błąd połączenia';
@override String get start_failed => 'Uruchomienie strumienia nie powiodło się, sprawdź saldo';
}
// Path: stream.chat.write
class _TranslationsStreamChatWritePl extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWritePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
/// Etykieta w polu wprowadzania wiadomości czatu
@override String get label => 'Napisz wiadomość';
/// Komunikat wejściowy czatu wyświetlany, gdy użytkownik jest zalogowany tylko za pomocą klucza pubkey
@override String get no_signer => 'Nie można pisać wiadomości z loginem npub';
/// Komunikat wejściowy czatu wyświetlany, gdy użytkownik jest wylogowany
@override String get login => 'Zaloguj się, aby wysyłać wiadomości';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgePl extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
/// Nagłówek nad listą użytkowników, którzy otrzymali odznakę
@override String get awarded_to => 'Przyznano:';
}
// Path: stream.chat.raid
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}';
/// Nalot na czat z innego strumienia
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorPl extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Prześlij awatar';
case 'most_zapped_streamers': return 'Większość zapped streamerów';
case 'no_user_found': return 'Nie znaleziono użytkownika';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('pl').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n,
one: '1 przeglądarka',
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.notification': return ({required Object name}) => '${name} został uruchomiony!';
case 'stream.chat.disabled': return 'CZAT WYŁĄCZONY';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Upłynął limit czasu: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' upłynął limit czasu '),
user,
const TextSpan(text: ' dla '),
time,
]);
case 'stream.chat.ended': return 'TRANSMISJA ZAKOŃCZONA';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'ZAKOŃCZONE';
case 'button.login': return 'Logowanie';
case 'button.logout': return 'Wylogowanie';
case 'button.edit_profile': return 'Edytuj profil';
case 'button.follow': return 'Śledź';
case 'button.unfollow': return 'Nie obserwuj';
case 'button.mute': return 'Wyciszenie';
case 'button.unmute': return 'Wyłącz wyciszenie';
case 'button.share': return 'Udział';
case 'button.save': return 'Zapisz';
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.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': 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 '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.balance': return 'Równowaga';
case 'settings.wallet.name': return 'Portfel';
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';
case 'login.create': return 'Utwórz konto';
case 'login.error.invalid_key': return 'Nieprawidłowy klucz';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Konfiguracja strumienia';
case 'live.endpoint': return 'Punkt końcowy';
case 'live.accept_tos': return 'Zaakceptuj Regulamin';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Tytuł';
case 'live.summary': return 'Podsumowanie';
case 'live.image': return 'Obraz na okładce';
case 'live.tags': return 'Tagi';
case 'live.nsfw': return 'Treści NSFW';
case 'live.nsfw_description': return 'Sprawdź tutaj, czy ten stream zawiera nagość lub treści pornograficzne.';
case 'live.error.failed': return 'Strumień nie powiódł się';
case 'live.error.connection_error': return 'Błąd połączenia';
case 'live.error.start_failed': return 'Uruchomienie strumienia nie powiodło się, sprawdź saldo';
default: return null;
}
}
}

532
lib/i18n/strings_pt.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.pt,
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);
}
/// Metadata for the translations of <pt>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsPt _root = this; // ignore: unused_field
@override
TranslationsPt $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsPt(meta: meta ?? this.$meta);
// Translations
/// Texto solicitando que o usuário clique no espaço reservado do avatar para iniciar o upload
@override String get upload_avatar => 'Carregar Avatar';
/// Dirigindo-se para as principais serpentinas listadas por zaps
@override String get most_zapped_streamers => 'Streamers mais afetados';
/// Nenhum usuário foi encontrado durante a pesquisa
@override String get no_user_found => 'Nenhum usuário encontrado';
/// Um usuário anônimo
@override String get anon => 'Anônimo';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('pt').format(n)} sats';
/// Número de espectadores da transmissão
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n,
one: '1 visualizador',
other: '${NumberFormat.decimalPattern('pt').format(n)} espectadores',
);
@override late final _TranslationsStreamPt stream = _TranslationsStreamPt._(_root);
@override late final _TranslationsGoalPt goal = _TranslationsGoalPt._(_root);
@override late final _TranslationsButtonPt button = _TranslationsButtonPt._(_root);
@override late final _TranslationsEmbedPt embed = _TranslationsEmbedPt._(_root);
/// Cabeçalhos nas listas de transmissões por tipo de transmissão ao vivo/terminada/planejada etc.
@override late final _TranslationsStreamListPt stream_list = _TranslationsStreamListPt._(_root);
@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);
@override late final _TranslationsLivePt live = _TranslationsLivePt._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} foi ao ar!';
@override late final _TranslationsStreamChatPt chat = _TranslationsStreamChatPt._(_root);
}
// Path: goal
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 get complete => 'COMPLETO';
}
// Path: button
class _TranslationsButtonPt extends TranslationsButtonEn {
_TranslationsButtonPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
/// Texto do botão para o botão de login
@override String get login => 'Entrar';
@override String get logout => 'Sair';
@override String get edit_profile => 'Editar perfil';
/// Texto do botão para o botão Seguir
@override String get follow => 'Seguir';
/// Texto do botão para o botão deixar de seguir
@override String get unfollow => 'Deixar de seguir';
@override String get mute => 'Silenciar';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListPt extends TranslationsStreamListEn {
_TranslationsStreamListPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get following => 'Seguindo';
@override String get live => 'Ao vivo';
@override String get planned => 'Planejado';
@override String get ended => 'Encerrado';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get username => 'Nome de usuário';
@override String get amber => 'Faça login com o Amber';
@override String get key => 'Login com chave';
@override String get create => 'Criar Conta';
@override late final _TranslationsLoginErrorPt error = _TranslationsLoginErrorPt._(_root);
}
// Path: live
class _TranslationsLivePt extends TranslationsLiveEn {
_TranslationsLivePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Configurar fluxo';
@override String get endpoint => 'Ponto final';
@override String get accept_tos => 'Aceitar os Termos de Serviço';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Título';
@override String get summary => 'Resumo';
@override String get image => 'Imagem da capa';
@override String get tags => 'Tags';
@override String get nsfw => 'Conteúdo NSFW';
@override String get nsfw_description => 'Verifique aqui se essa transmissão contém nudez ou conteúdo pornográfico.';
@override late final _TranslationsLiveErrorPt error = _TranslationsLiveErrorPt._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusPt extends TranslationsStreamStatusEn {
_TranslationsStreamStatusPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get live => 'AO VIVO';
@override String get ended => 'FINALIZADO';
@override String get planned => 'PLANEJADO';
}
// Path: stream.chat
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}';
/// Mensagem de bate-papo mostrando eventos de tempo limite
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zapeou '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWritePt write = _TranslationsStreamChatWritePt._(_root);
@override late final _TranslationsStreamChatBadgePt badge = _TranslationsStreamChatBadgePt._(_root);
@override late final _TranslationsStreamChatRaidPt raid = _TranslationsStreamChatRaidPt._(_root);
}
// Path: zap.error
class _TranslationsZapErrorPt extends TranslationsZapErrorEn {
_TranslationsZapErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Valor personalizado inválido';
@override String get no_wallet => 'Nenhuma carteira lightning instalada';
@override String get no_lud16 => 'Nenhum endereço de raio encontrado';
}
// 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 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 String get balance => 'Equilíbrio';
@override String get name => 'Carteira';
@override late final _TranslationsSettingsWalletErrorPt error = _TranslationsSettingsWalletErrorPt._(_root);
}
// Path: login.error
class _TranslationsLoginErrorPt extends TranslationsLoginErrorEn {
_TranslationsLoginErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Chave inválida';
}
// Path: live.error
class _TranslationsLiveErrorPt extends TranslationsLiveErrorEn {
_TranslationsLiveErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get failed => 'O fluxo falhou';
@override String get connection_error => 'Erro de conexão';
@override String get start_failed => 'Falha no início do fluxo, verifique seu saldo';
}
// Path: stream.chat.write
class _TranslationsStreamChatWritePt extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWritePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
/// Rótulo na caixa de entrada da mensagem de bate-papo
@override String get label => 'Escrever mensagem';
/// Mensagem de entrada de bate-papo exibida quando o usuário está conectado apenas com a pubkey
@override String get no_signer => 'Não é possível escrever mensagens com o login do npub';
/// Mensagem de entrada de chat exibida quando o usuário está desconectado
@override String get login => 'Faça login para enviar mensagens';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgePt extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
/// Cabeçalho sobre a lista de usuários que receberam um emblema
@override String get awarded_to => 'Prêmio concedido a:';
}
// Path: stream.chat.raid
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}';
/// Mensagem de invasão de bate-papo de outro fluxo
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorPt extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Carregar Avatar';
case 'most_zapped_streamers': return 'Streamers mais afetados';
case 'no_user_found': return 'Nenhum usuário encontrado';
case 'anon': return 'Anônimo';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('pt').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n,
one: '1 visualizador',
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.notification': return ({required Object name}) => '${name} foi ao ar!';
case 'stream.chat.disabled': return 'BATE-PAPO DESATIVADO';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'O tempo limite expira: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Tempo esgotado '),
user,
const TextSpan(text: ' para '),
time,
]);
case 'stream.chat.ended': return 'TRANSMISSÃO ENCERRADA';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapeou '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'COMPLETO';
case 'button.login': return 'Entrar';
case 'button.logout': return 'Sair';
case 'button.edit_profile': return 'Editar perfil';
case 'button.follow': return 'Seguir';
case 'button.unfollow': return 'Deixar de seguir';
case 'button.mute': return 'Silenciar';
case 'button.unmute': return 'Desmutar';
case 'button.share': return 'Compartilhar';
case 'button.save': return 'Salvar';
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.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': 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 '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.balance': return 'Equilíbrio';
case 'settings.wallet.name': return 'Carteira';
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';
case 'login.create': return 'Criar Conta';
case 'login.error.invalid_key': return 'Chave inválida';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Configurar fluxo';
case 'live.endpoint': return 'Ponto final';
case 'live.accept_tos': return 'Aceitar os Termos de Serviço';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Título';
case 'live.summary': return 'Resumo';
case 'live.image': return 'Imagem da capa';
case 'live.tags': return 'Tags';
case 'live.nsfw': return 'Conteúdo NSFW';
case 'live.nsfw_description': return 'Verifique aqui se essa transmissão contém nudez ou conteúdo pornográfico.';
case 'live.error.failed': return 'O fluxo falhou';
case 'live.error.connection_error': return 'Erro de conexão';
case 'live.error.start_failed': return 'Falha no início do fluxo, verifique seu saldo';
default: return null;
}
}
}

532
lib/i18n/strings_ro.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.ro,
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);
}
/// Metadata for the translations of <ro>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsRo _root = this; // ignore: unused_field
@override
TranslationsRo $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsRo(meta: meta ?? this.$meta);
// Translations
/// Text care solicită utilizatorului să atingă marcajul avatar pentru a începe încărcarea
@override String get upload_avatar => 'Încărcați Avatar';
/// Cap peste streamers de top enumerate de zaps
@override String get most_zapped_streamers => 'Cele mai multe Streamers Zapped';
/// Nu s-a găsit niciun utilizator la căutare
@override String get no_user_found => 'Niciun utilizator găsit';
/// Un utilizator anonim
@override String get anon => 'Anon';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('ro').format(n)} sats';
/// Numărul de telespectatori ai fluxului
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ro'))(n,
one: '1 vizualizator',
other: '${NumberFormat.decimalPattern('ro').format(n)} telespectatori',
);
@override late final _TranslationsStreamRo stream = _TranslationsStreamRo._(_root);
@override late final _TranslationsGoalRo goal = _TranslationsGoalRo._(_root);
@override late final _TranslationsButtonRo button = _TranslationsButtonRo._(_root);
@override late final _TranslationsEmbedRo embed = _TranslationsEmbedRo._(_root);
/// Rubrici pe listele de fluxuri în funcție de tipul fluxului în direct/terminat/planificat etc.
@override late final _TranslationsStreamListRo stream_list = _TranslationsStreamListRo._(_root);
@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);
@override late final _TranslationsLiveRo live = _TranslationsLiveRo._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} a intrat în direct!';
@override late final _TranslationsStreamChatRo chat = _TranslationsStreamChatRo._(_root);
}
// Path: goal
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 get complete => 'COMPLET';
}
// Path: button
class _TranslationsButtonRo extends TranslationsButtonEn {
_TranslationsButtonRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
/// Textul butonului pentru butonul de conectare
@override String get login => 'Autentificare';
@override String get logout => 'Ieșire';
@override String get edit_profile => 'Editare profil';
/// Textul butonului pentru butonul de urmărire
@override String get follow => 'Urmați';
/// Textul butonului pentru butonul unfollow
@override String get unfollow => 'Unfollow';
@override String get mute => 'Mut';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListRo extends TranslationsStreamListEn {
_TranslationsStreamListRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get following => 'În urma';
@override String get live => 'În direct';
@override String get planned => 'Planificate';
@override String get ended => 'Încheiat';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get username => 'Nume utilizator';
@override String get amber => 'Conectați-vă cu Amber';
@override String get key => 'Autentificare cu cheie';
@override String get create => 'Creare cont';
@override late final _TranslationsLoginErrorRo error = _TranslationsLoginErrorRo._(_root);
}
// Path: live
class _TranslationsLiveRo extends TranslationsLiveEn {
_TranslationsLiveRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Configurați fluxul';
@override String get endpoint => 'Punct final';
@override String get accept_tos => 'Acceptați TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ro'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Titlu';
@override String get summary => 'Rezumat';
@override String get image => 'Imagine de copertă';
@override String get tags => 'Etichete';
@override String get nsfw => 'Conținut NSFW';
@override String get nsfw_description => 'Bifați aici dacă acest flux conține nuditate sau conținut pornografic.';
@override late final _TranslationsLiveErrorRo error = _TranslationsLiveErrorRo._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusRo extends TranslationsStreamStatusEn {
_TranslationsStreamStatusRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get live => 'ÎN DIRECT';
@override String get ended => 'TERMINAT';
@override String get planned => 'PLANIFICATE';
}
// Path: stream.chat
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}';
/// Mesaj de chat care afișează evenimentele de timeout
@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,
]);
/// 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}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteRo write = _TranslationsStreamChatWriteRo._(_root);
@override late final _TranslationsStreamChatBadgeRo badge = _TranslationsStreamChatBadgeRo._(_root);
@override late final _TranslationsStreamChatRaidRo raid = _TranslationsStreamChatRaidRo._(_root);
}
// Path: zap.error
class _TranslationsZapErrorRo extends TranslationsZapErrorEn {
_TranslationsZapErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Sumă personalizată invalidă';
@override String get no_wallet => 'Nu este instalat niciun portofel Lightning';
@override String get no_lud16 => 'Nu a fost găsită nicio adresă de fulgere';
}
// Path: settings.profile
class _TranslationsSettingsProfileRo extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get display_name => 'Nume afișat';
@override String get about => 'Despre';
@override String get nip05 => 'Adresa Nostr';
@override String get lud16 => 'Adresa fulgerului';
@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 String get balance => 'Echilibru';
@override String get name => 'Portofel';
@override late final _TranslationsSettingsWalletErrorRo error = _TranslationsSettingsWalletErrorRo._(_root);
}
// Path: login.error
class _TranslationsLoginErrorRo extends TranslationsLoginErrorEn {
_TranslationsLoginErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Cheie invalidă';
}
// Path: live.error
class _TranslationsLiveErrorRo extends TranslationsLiveErrorEn {
_TranslationsLiveErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@override String get failed => 'Fluxul a eșuat';
@override String get connection_error => 'Eroare de conectare';
@override String get start_failed => 'Pornirea fluxului a eșuat, vă rugăm să verificați soldul';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteRo extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
/// Etichetă pe caseta de introducere a mesajului de chat
@override String get label => 'Scrieți mesajul';
/// Mesajul de intrare în chat afișat atunci când utilizatorul este conectat doar cu pubkey
@override String get no_signer => 'Nu se pot scrie mesaje cu autentificarea npub';
/// Mesajul de intrare în chat afișat atunci când utilizatorul este deconectat
@override String get login => 'Vă rugăm să vă autentificați pentru a trimite mesaje';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeRo extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
/// Antet peste lista de utilizatori care au primit o insignă
@override String get awarded_to => 'Premiat pentru:';
}
// Path: stream.chat.raid
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}';
/// Chat raid mesaj din alt flux
@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}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorRo extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorRo._(TranslationsRo root) : this._root = root, super.internal(root);
final TranslationsRo _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Încărcați Avatar';
case 'most_zapped_streamers': return 'Cele mai multe Streamers Zapped';
case 'no_user_found': return 'Niciun utilizator găsit';
case 'anon': return 'Anon';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('ro').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ro'))(n,
one: '1 vizualizator',
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.notification': return ({required Object name}) => '${name} a intrat în direct!';
case 'stream.chat.disabled': return 'CHAT DEZACTIVAT';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Timpul expiră: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' Timed out '),
user,
const TextSpan(text: ' pentru '),
time,
]);
case 'stream.chat.ended': return 'STREAM ÎNCHEIAT';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'COMPLET';
case 'button.login': return 'Autentificare';
case 'button.logout': return 'Ieșire';
case 'button.edit_profile': return 'Editare profil';
case 'button.follow': return 'Urmați';
case 'button.unfollow': return 'Unfollow';
case 'button.mute': return 'Mut';
case 'button.unmute': return 'Dezactivați';
case 'button.share': return 'Share';
case 'button.save': return 'Salvați';
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.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': 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 '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.balance': return 'Echilibru';
case 'settings.wallet.name': return 'Portofel';
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';
case 'login.create': return 'Creare cont';
case 'login.error.invalid_key': return 'Cheie invalidă';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Configurați fluxul';
case 'live.endpoint': return 'Punct final';
case 'live.accept_tos': return 'Acceptați TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ro'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Titlu';
case 'live.summary': return 'Rezumat';
case 'live.image': return 'Imagine de copertă';
case 'live.tags': return 'Etichete';
case 'live.nsfw': return 'Conținut NSFW';
case 'live.nsfw_description': return 'Bifați aici dacă acest flux conține nuditate sau conținut pornografic.';
case 'live.error.failed': return 'Fluxul a eșuat';
case 'live.error.connection_error': return 'Eroare de conectare';
case 'live.error.start_failed': return 'Pornirea fluxului a eșuat, vă rugăm să verificați soldul';
default: return null;
}
}
}

532
lib/i18n/strings_ru.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.ru,
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);
}
/// Metadata for the translations of <ru>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsRu _root = this; // ignore: unused_field
@override
TranslationsRu $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsRu(meta: meta ?? this.$meta);
// Translations
/// Текст, побуждающий пользователя нажать кнопку с изображением аватара, чтобы начать загрузку
@override String get upload_avatar => 'Загрузить аватар';
/// Направляясь по перечисленным верхним стримерам с помощью запс
@override String get most_zapped_streamers => 'Самые прыткие стримеры';
/// Пользователь не найден при поиске
@override String get no_user_found => 'Пользователь не найден';
/// Анонимный пользователь
@override String get anon => 'Аноним';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('ru').format(n)} sats';
/// Количество зрителей потока
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
one: '1 зритель',
other: '${NumberFormat.decimalPattern('ru').format(n)} зрителей',
);
@override late final _TranslationsStreamRu stream = _TranslationsStreamRu._(_root);
@override late final _TranslationsGoalRu goal = _TranslationsGoalRu._(_root);
@override late final _TranslationsButtonRu button = _TranslationsButtonRu._(_root);
@override late final _TranslationsEmbedRu embed = _TranslationsEmbedRu._(_root);
/// Заголовки в списках потоков по типу потока - живой/законченный/запланированный и т. д.
@override late final _TranslationsStreamListRu stream_list = _TranslationsStreamListRu._(_root);
@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);
@override late final _TranslationsLiveRu live = _TranslationsLiveRu._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} запустился!';
@override late final _TranslationsStreamChatRu chat = _TranslationsStreamChatRu._(_root);
}
// Path: goal
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 get complete => 'КОМПЛЕКТ';
}
// Path: button
class _TranslationsButtonRu extends TranslationsButtonEn {
_TranslationsButtonRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
/// Текст кнопки для входа в систему
@override String get login => 'Логин';
@override String get logout => 'Выйти';
@override String get edit_profile => 'Редактировать профиль';
/// Текст кнопки для кнопки следования
@override String get follow => 'Подписаться';
/// Текст кнопки для кнопки "Развернуть
@override String get unfollow => 'Отписаться';
@override String get mute => 'Заглушить';
@override String get unmute => 'Включить уведомления';
@override String get share => 'Поделиться';
@override String get save => 'Сохранить';
@override String get connect => 'Подключайтесь';
@override String get settings => 'Настройки';
}
// Path: embed
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}';
}
// Path: stream_list
class _TranslationsStreamListRu extends TranslationsStreamListEn {
_TranslationsStreamListRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get following => 'Подписки';
@override String get live => 'Прямой эфир';
@override String get planned => 'Запланировано';
@override String get ended => 'Завершено';
}
// Path: zap
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 get custom_amount => 'Пользовательская сумма';
@override String get confirm => 'Подтвердить';
@override String get comment => 'Комментарий';
@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 extends TranslationsProfileEn {
_TranslationsProfileRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Предыдущие трансляции';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get username => 'Имя пользователя';
@override String get amber => 'Войти с помощью Amber';
@override String get key => 'Вход в систему с помощью ключа';
@override String get create => 'Создать аккаунт';
@override late final _TranslationsLoginErrorRu error = _TranslationsLoginErrorRu._(_root);
}
// Path: live
class _TranslationsLiveRu extends TranslationsLiveEn {
_TranslationsLiveRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get start => 'ПЕРЕЙТИ В ПРЯМОЙ ЭФИР';
@override String get configure_stream => 'Настроить поток';
@override String get endpoint => 'Конечная точка';
@override String get accept_tos => 'Принять TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Название';
@override String get summary => 'Резюме';
@override String get image => 'Изображение на обложке';
@override String get tags => 'Теги';
@override String get nsfw => 'NSFW-контент';
@override String get nsfw_description => 'Отметьте здесь, если этот поток содержит наготу или порнографические материалы.';
@override late final _TranslationsLiveErrorRu error = _TranslationsLiveErrorRu._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusRu extends TranslationsStreamStatusEn {
_TranslationsStreamStatusRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'КОНЕЦ';
@override String get planned => 'ПЛАНИРУЕМЫЙ';
}
// Path: stream.chat
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 TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' тайм-аут '),
user,
const TextSpan(text: ' для '),
time,
]);
/// Поток закончился в нижней части чата
@override String get ended => 'ТРАНСЛЯЦИЯ ОКОНЧЕНА';
/// Сообщение в чате, отображающее потоковые зазоры
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' запнул '),
amount,
const TextSpan(text: ' сат'),
]);
@override late final _TranslationsStreamChatWriteRu write = _TranslationsStreamChatWriteRu._(_root);
@override late final _TranslationsStreamChatBadgeRu badge = _TranslationsStreamChatBadgeRu._(_root);
@override late final _TranslationsStreamChatRaidRu raid = _TranslationsStreamChatRaidRu._(_root);
}
// Path: zap.error
class _TranslationsZapErrorRu extends TranslationsZapErrorEn {
_TranslationsZapErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Недопустимая пользовательская сумма';
@override String get no_wallet => 'Кошелек молнии не установлен';
@override String get no_lud16 => 'Адрес молнии не найден';
}
// 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 => 'Адрес Ностр';
@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 String get balance => 'Баланс';
@override String get name => 'Кошелек';
@override late final _TranslationsSettingsWalletErrorRu error = _TranslationsSettingsWalletErrorRu._(_root);
}
// Path: login.error
class _TranslationsLoginErrorRu extends TranslationsLoginErrorEn {
_TranslationsLoginErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Неверный ключ';
}
// Path: live.error
class _TranslationsLiveErrorRu extends TranslationsLiveErrorEn {
_TranslationsLiveErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get failed => 'Сбой потока';
@override String get connection_error => 'Ошибка подключения';
@override String get start_failed => 'Запуск потока не удался, пожалуйста, проверьте баланс';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteRu extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
/// Надпись на поле ввода сообщения чата
@override String get label => 'Написать сообщение';
/// Сообщение о входе в чат, отображаемое при входе пользователя только с pubkey
@override String get no_signer => 'Невозможно писать сообщения с логином npub';
/// Сообщение о входе в чат, отображаемое при выходе пользователя из системы
@override String get login => 'Пожалуйста, войдите в систему, чтобы отправлять сообщения';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeRu extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
/// Заголовок над списком пользователей, награжденных значком
@override String get awarded_to => 'Награждается:';
}
// Path: stream.chat.raid
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 from({required Object name}) => 'RAID FROM ${name}';
/// Таймер обратного отсчета для автопоездки
@override String countdown({required Object time}) => 'Рейды в ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorRu extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Загрузить аватар';
case 'most_zapped_streamers': return 'Самые прыткие стримеры';
case 'no_user_found': return 'Пользователь не найден';
case 'anon': return 'Аноним';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('ru').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
one: '1 зритель',
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.notification': return ({required Object name}) => '${name} запустился!';
case 'stream.chat.disabled': return 'ЧАТ ОТКЛЮЧЕН';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Таймаут истекает: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' тайм-аут '),
user,
const TextSpan(text: ' для '),
time,
]);
case 'stream.chat.ended': return 'ТРАНСЛЯЦИЯ ОКОНЧЕНА';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' запнул '),
amount,
const TextSpan(text: ' сат'),
]);
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 'goal.complete': return 'КОМПЛЕКТ';
case 'button.login': return 'Логин';
case 'button.logout': return 'Выйти';
case 'button.edit_profile': return 'Редактировать профиль';
case 'button.follow': return 'Подписаться';
case 'button.unfollow': return 'Отписаться';
case 'button.mute': return 'Заглушить';
case 'button.unmute': return 'Включить уведомления';
case 'button.share': return 'Поделиться';
case 'button.save': return 'Сохранить';
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.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': 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 '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.balance': return 'Баланс';
case 'settings.wallet.name': return 'Кошелек';
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 'Вход в систему с помощью ключа';
case 'login.create': return 'Создать аккаунт';
case 'login.error.invalid_key': return 'Неверный ключ';
case 'live.start': return 'ПЕРЕЙТИ В ПРЯМОЙ ЭФИР';
case 'live.configure_stream': return 'Настроить поток';
case 'live.endpoint': return 'Конечная точка';
case 'live.accept_tos': return 'Принять TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Название';
case 'live.summary': return 'Резюме';
case 'live.image': return 'Изображение на обложке';
case 'live.tags': return 'Теги';
case 'live.nsfw': return 'NSFW-контент';
case 'live.nsfw_description': return 'Отметьте здесь, если этот поток содержит наготу или порнографические материалы.';
case 'live.error.failed': return 'Сбой потока';
case 'live.error.connection_error': return 'Ошибка подключения';
case 'live.error.start_failed': return 'Запуск потока не удался, пожалуйста, проверьте баланс';
default: return null;
}
}
}

532
lib/i18n/strings_sv.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.sv,
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);
}
/// Metadata for the translations of <sv>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsSv _root = this; // ignore: unused_field
@override
TranslationsSv $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsSv(meta: meta ?? this.$meta);
// Translations
/// Text som uppmanar användaren att trycka på avatar platshållaren för att påbörja uppladdningen
@override String get upload_avatar => 'Ladda upp avatar';
/// Rubrik över listade topp streamers av zaps
@override String get most_zapped_streamers => 'De flest zappade streamers';
/// Ingen användare hittades vid sökning
@override String get no_user_found => 'Ingen användare hittades';
/// En anonym användare
@override String get anon => 'Anno';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('sv').format(n)} sats';
/// Antal tittare på strömmingen
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n,
one: '1 tittare',
other: '${NumberFormat.decimalPattern('sv').format(n)} tittare',
);
@override late final _TranslationsStreamSv stream = _TranslationsStreamSv._(_root);
@override late final _TranslationsGoalSv goal = _TranslationsGoalSv._(_root);
@override late final _TranslationsButtonSv button = _TranslationsButtonSv._(_root);
@override late final _TranslationsEmbedSv embed = _TranslationsEmbedSv._(_root);
/// Rubriker på strömlistor efter strömtyp live/avslutad/planerad etc.
@override late final _TranslationsStreamListSv stream_list = _TranslationsStreamListSv._(_root);
@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);
@override late final _TranslationsLiveSv live = _TranslationsLiveSv._(_root);
}
// Path: stream
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}) => 'Startad ${timestamp}';
@override String notification({required Object name}) => '${name} gick live!';
@override late final _TranslationsStreamChatSv chat = _TranslationsStreamChatSv._(_root);
}
// Path: goal
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 get complete => 'KOMPLETT';
}
// Path: button
class _TranslationsButtonSv extends TranslationsButtonEn {
_TranslationsButtonSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
/// Knapptext för inloggningsknappen
@override String get login => 'Logga in';
@override String get logout => 'Logga ut';
@override String get edit_profile => 'Redigera profil';
/// Knapptext för följ-knappen
@override String get follow => 'Följ';
/// Knapptext för sluta följa knappen
@override String get unfollow => 'Sluta följa';
@override String get mute => 'Tysta';
@override String get unmute => 'Avtysta';
@override String get share => 'Dela';
@override String get save => 'Spara';
@override String get connect => 'Anslut';
@override String get settings => 'Inställningar';
}
// Path: embed
class _TranslationsEmbedSv 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}';
}
// Path: stream_list
class _TranslationsStreamListSv extends TranslationsStreamListEn {
_TranslationsStreamListSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get following => 'Följer';
@override String get live => 'Live';
@override String get planned => 'Planerade';
@override String get ended => 'Avslutade';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get username => 'Användarnamn';
@override String get amber => 'Logga in med Amber';
@override String get key => 'Logga in med nyckel';
@override String get create => 'Skapa konto';
@override late final _TranslationsLoginErrorSv error = _TranslationsLoginErrorSv._(_root);
}
// Path: live
class _TranslationsLiveSv extends TranslationsLiveEn {
_TranslationsLiveSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get start => 'GÅ DIREKT';
@override String get configure_stream => 'Konfigurera ström';
@override String get endpoint => 'Slutpunkt';
@override String get accept_tos => 'Acceptera TOS';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Titel';
@override String get summary => 'Sammanfattning';
@override String get image => 'Omslagsbild';
@override String get tags => 'Etiketter';
@override String get nsfw => 'NSFW-innehåll';
@override String get nsfw_description => 'Markera här om denna stream innehåller nakenhet eller pornografiskt innehåll.';
@override late final _TranslationsLiveErrorSv error = _TranslationsLiveErrorSv._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusSv extends TranslationsStreamStatusEn {
_TranslationsStreamStatusSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get live => 'LIVE';
@override String get ended => 'AVSLUTAD';
@override String get planned => 'PLANERADE';
}
// Path: stream.chat
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}';
/// Chattmeddelande som visar timeout-händelser
@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,
]);
/// Streama slutade sidfot längst ned i chatten
@override String get ended => 'STREAM AVSLUTAD';
/// Chattmeddelande som visar strömavbrott
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteSv write = _TranslationsStreamChatWriteSv._(_root);
@override late final _TranslationsStreamChatBadgeSv badge = _TranslationsStreamChatBadgeSv._(_root);
@override late final _TranslationsStreamChatRaidSv raid = _TranslationsStreamChatRaidSv._(_root);
}
// Path: zap.error
class _TranslationsZapErrorSv extends TranslationsZapErrorEn {
_TranslationsZapErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Ogiltigt anpassat belopp';
@override String get no_wallet => 'Ingen blixtplånbok installerad';
@override String get no_lud16 => 'Ingen blixtadress hittades';
}
// Path: settings.profile
class _TranslationsSettingsProfileSv extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get display_name => 'Visa namn';
@override String get about => 'Om';
@override String get nip05 => 'Nostr adress';
@override String get lud16 => 'Lightning-adress';
@override late final _TranslationsSettingsProfileErrorSv error = _TranslationsSettingsProfileErrorSv._(_root);
}
// Path: settings.wallet
class _TranslationsSettingsWalletSv extends TranslationsSettingsWalletEn {
_TranslationsSettingsWalletSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get connect_wallet => 'Anslut plånbok (NWC nostr+walletconnect://)';
@override String get disconnect_wallet => 'Koppla bort plånboken';
@override String get connect_1tap => '1-tryck anslutning';
@override String get paste => 'Klistra in URL';
@override String get balance => 'Balans';
@override String get name => 'Plånbok';
@override late final _TranslationsSettingsWalletErrorSv error = _TranslationsSettingsWalletErrorSv._(_root);
}
// Path: login.error
class _TranslationsLoginErrorSv extends TranslationsLoginErrorEn {
_TranslationsLoginErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Ogiltig nyckel';
}
// Path: live.error
class _TranslationsLiveErrorSv extends TranslationsLiveErrorEn {
_TranslationsLiveErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get failed => 'Strömmen misslyckades';
@override String get connection_error => 'Anslutningsfel';
@override String get start_failed => 'Stream start misslyckades, vänligen kontrollera ditt saldo';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteSv extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
/// Etikett på inmatningsrutan för chattmeddelanden
@override String get label => 'Skriv meddelande';
/// Chattinmatningsmeddelande som visas när användaren endast är inloggad med publik nyckel
@override String get no_signer => 'Det går inte att skriva meddelanden med n-pub inloggning';
/// Chattinmatningsmeddelande som visas när användaren är utloggad
@override String get login => 'Logga in för att skicka meddelanden';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeSv extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
/// Rubrik över listan över användare som tilldelas ett märke
@override String get awarded_to => 'Tilldelas till:';
}
// Path: stream.chat.raid
class _TranslationsStreamChatRaidSv extends TranslationsStreamChatRaidEn {
_TranslationsStreamChatRaidSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
/// Chatt raid meddelande till en annan ström
@override String to({required Object name}) => 'RAIDING ${name}';
/// Chatt raid meddelande från en annan ström
@override String from({required Object name}) => 'RAID FRÅN ${name}';
/// Nedräkningstimer för auto- radiering
@override String countdown({required Object time}) => 'Radiering i ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorSv extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Kan inte redigera profil när jag är utloggad';
}
// Path: settings.wallet.error
class _TranslationsSettingsWalletErrorSv extends TranslationsSettingsWalletErrorEn {
_TranslationsSettingsWalletErrorSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get logged_out => 'Kan inte ansluta plånbok när du är utloggad';
@override String get nwc_auth_event_not_found => 'Inget autentiseringshändelse för plånbok hittades';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsSv {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Ladda upp avatar';
case 'most_zapped_streamers': return 'De flest zappade streamers';
case 'no_user_found': return 'Ingen användare hittades';
case 'anon': return 'Anno';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('sv').format(n)} sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n,
one: '1 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}) => 'Startad ${timestamp}';
case 'stream.notification': return ({required Object name}) => '${name} gick live!';
case 'stream.chat.disabled': return 'CHAT AVSTÄNGD';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Tidsgränsen går ut: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' tidsbegränsad '),
user,
const TextSpan(text: ' för '),
time,
]);
case 'stream.chat.ended': return 'STREAM AVSLUTAD';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
case 'stream.chat.write.label': return 'Skriv meddelande';
case 'stream.chat.write.no_signer': return 'Det går inte att skriva meddelanden med n-pub inloggning';
case 'stream.chat.write.login': return 'Logga in för att skicka meddelanden';
case 'stream.chat.badge.awarded_to': return 'Tilldelas till:';
case 'stream.chat.raid.to': return ({required Object name}) => 'RAIDING ${name}';
case 'stream.chat.raid.from': return ({required Object name}) => 'RAID FRÅN ${name}';
case 'stream.chat.raid.countdown': return ({required Object time}) => 'Radiering i ${time}';
case 'goal.title': return ({required Object amount}) => 'Mål: ${amount}';
case 'goal.remaining': return ({required Object amount}) => 'Kvarvarande: ${amount}';
case 'goal.complete': return 'KOMPLETT';
case 'button.login': return 'Logga in';
case 'button.logout': return 'Logga ut';
case 'button.edit_profile': return 'Redigera profil';
case 'button.follow': return 'Följ';
case 'button.unfollow': return 'Sluta följa';
case 'button.mute': return 'Tysta';
case 'button.unmute': return 'Avtysta';
case 'button.share': return 'Dela';
case 'button.save': return 'Spara';
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.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': 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 'settings.button_profile': return 'Redigera profil';
case 'settings.button_wallet': return 'Inställningar för plånbok';
case 'settings.profile.display_name': return 'Visa namn';
case 'settings.profile.about': return 'Om';
case 'settings.profile.nip05': return 'Nostr adress';
case 'settings.profile.lud16': return 'Lightning-adress';
case 'settings.profile.error.logged_out': return 'Kan inte redigera profil när jag är utloggad';
case 'settings.wallet.connect_wallet': return 'Anslut plånbok (NWC nostr+walletconnect://)';
case 'settings.wallet.disconnect_wallet': return 'Koppla bort plånboken';
case 'settings.wallet.connect_1tap': return '1-tryck anslutning';
case 'settings.wallet.paste': return 'Klistra in URL';
case 'settings.wallet.balance': return 'Balans';
case 'settings.wallet.name': return 'Plånbok';
case 'settings.wallet.error.logged_out': return 'Kan inte ansluta plånbok när du är utloggad';
case 'settings.wallet.error.nwc_auth_event_not_found': return 'Inget autentiseringshändelse för plånbok hittades';
case 'login.username': return 'Användarnamn';
case 'login.amber': return 'Logga in med Amber';
case 'login.key': return 'Logga in med nyckel';
case 'login.create': return 'Skapa konto';
case 'login.error.invalid_key': return 'Ogiltig nyckel';
case 'live.start': return 'GÅ DIREKT';
case 'live.configure_stream': return 'Konfigurera ström';
case 'live.endpoint': return 'Slutpunkt';
case 'live.accept_tos': return 'Acceptera TOS';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Titel';
case 'live.summary': return 'Sammanfattning';
case 'live.image': return 'Omslagsbild';
case 'live.tags': return 'Etiketter';
case 'live.nsfw': return 'NSFW-innehåll';
case 'live.nsfw_description': return 'Markera här om denna stream innehåller nakenhet eller pornografiskt innehåll.';
case 'live.error.failed': return 'Strömmen misslyckades';
case 'live.error.connection_error': return 'Anslutningsfel';
case 'live.error.start_failed': return 'Stream start misslyckades, vänligen kontrollera ditt saldo';
default: return null;
}
}
}

473
lib/i18n/strings_tr.g.dart Normal file
View File

@ -0,0 +1,473 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.tr,
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);
}
/// Metadata for the translations of <tr>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsTr _root = this; // ignore: unused_field
@override
TranslationsTr $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsTr(meta: meta ?? this.$meta);
// Translations
/// Kullanıcının yüklemeye başlamak için avatar yer tutucusuna basmasını isteyen metin
@override String get upload_avatar => 'Avatar Yükle';
/// Zaps tarafından listelenen üst flamalar üzerinde ilerliyor
@override String get most_zapped_streamers => 'En Çok Zaplanan Flamalar';
/// Arama yaparken kullanıcı bulunamadı
@override String get no_user_found => 'Kullanıcı bulunamadı';
/// Anonim bir kullanıcı
@override String get anon => 'Anon';
/// Akışı izleyenlerin sayısı
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('tr'))(n,
one: '1 izleyici',
other: '${NumberFormat.decimalPattern('tr').format(n)} izleyiciler',
);
@override late final _TranslationsStreamTr stream = _TranslationsStreamTr._(_root);
@override late final _TranslationsGoalTr goal = _TranslationsGoalTr._(_root);
@override late final _TranslationsButtonTr button = _TranslationsButtonTr._(_root);
@override late final _TranslationsEmbedTr embed = _TranslationsEmbedTr._(_root);
/// Akış türüne göre akış listelerindeki başlıklar canlı/bitmiş/planlanan vb.
@override late final _TranslationsStreamListTr stream_list = _TranslationsStreamListTr._(_root);
@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 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 notification({required Object name}) => '${name} yayına girdi!';
@override late final _TranslationsStreamChatTr chat = _TranslationsStreamChatTr._(_root);
}
// Path: goal
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 get complete => 'TAMAMLANDI';
}
// Path: button
class _TranslationsButtonTr extends TranslationsButtonEn {
_TranslationsButtonTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
/// Oturum açma düğmesi için düğme metni
@override String get login => 'Giriş';
@override String get logout => 'Oturum Kapatma';
@override String get edit_profile => 'Profil Düzenle';
/// Takip et düğmesi için düğme metni
@override String get follow => 'Takip et';
/// Takibi bırak düğmesi için düğme metni
@override String get unfollow => 'Takibi bırak';
@override String get mute => 'Sessiz';
@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 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}';
}
// Path: stream_list
class _TranslationsStreamListTr extends TranslationsStreamListEn {
_TranslationsStreamListTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get following => 'Aşağıdaki';
@override String get live => 'Canlı';
@override String get planned => 'Planlanmış';
@override String get ended => 'Bitti';
}
// Path: zap
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 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 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 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';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get username => 'Kullanıcı Adı';
@override String get amber => 'Amber ile Giriş Yapın';
@override String get key => 'Anahtar ile Giriş Yapın';
@override String get create => 'Hesap Oluştur';
@override late final _TranslationsLoginErrorTr error = _TranslationsLoginErrorTr._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusTr extends TranslationsStreamStatusEn {
_TranslationsStreamStatusTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get live => 'CANLI';
@override String get ended => 'SONLANDI';
@override String get planned => 'PLANLANMIŞ';
}
// Path: stream.chat
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}';
/// Zaman aşımı olaylarını gösteren sohbet mesajı
@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: ' '),
time,
const TextSpan(text: 'için'),
]);
/// Sohbetin alt kısmında akış sona erdi altbilgisi
@override String get ended => 'YAYIN SONLANDI';
/// Akış zaplarını gösteren sohbet mesajı
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteTr write = _TranslationsStreamChatWriteTr._(_root);
@override late final _TranslationsStreamChatBadgeTr badge = _TranslationsStreamChatBadgeTr._(_root);
@override late final _TranslationsStreamChatRaidTr raid = _TranslationsStreamChatRaidTr._(_root);
}
// Path: zap.error
class _TranslationsZapErrorTr extends TranslationsZapErrorEn {
_TranslationsZapErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Geçersiz özel tutar';
@override String get no_wallet => 'Lightning cüzdan yüklü değil';
@override String get no_lud16 => 'Yıldırım adresi bulunamadı';
}
// Path: settings.profile
class _TranslationsSettingsProfileTr extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get display_name => 'Ekran Adı';
@override String get about => 'Hakkında';
@override String get nip05 => 'Nostr Adres';
@override String get lud16 => 'Yıldırım Adres';
@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 extends TranslationsLoginErrorEn {
_TranslationsLoginErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Geçersiz anahtar';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteTr extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
/// Sohbet mesajı giriş kutusundaki etiket
@override String get label => 'Mesaj yaz';
/// Kullanıcı yalnızca pubkey ile oturum açtığında gösterilen sohbet giriş mesajı
@override String get no_signer => 'Npub girişi ile mesaj yazılamıyor';
/// Kullanıcı oturumu kapatıldığında gösterilen sohbet giriş mesajı
@override String get login => 'Mesaj göndermek için lütfen giriş yapın';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeTr extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
/// Rozet verilen kullanıcıların listesi üzerinde başlık
@override String get awarded_to => 'Ödüllendirildi:';
}
// Path: stream.chat.raid
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}';
/// Başka bir akıştan sohbet baskını mesajı
@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';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorTr extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorTr._(TranslationsTr root) : this._root = root, super.internal(root);
final TranslationsTr _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Avatar Yükle';
case 'most_zapped_streamers': return 'En Çok Zaplanan Flamalar';
case 'no_user_found': return 'Kullanıcı bulunamadı';
case 'anon': return 'Anon';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('tr'))(n,
one: '1 izleyici',
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.notification': return ({required Object name}) => '${name} yayına girdi!';
case 'stream.chat.disabled': return 'SOHBET DEVRE DIŞI';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Zaman aşımı sona eriyor: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' zaman aşımına uğradı '),
user,
const TextSpan(text: ' '),
time,
const TextSpan(text: 'için'),
]);
case 'stream.chat.ended': return 'YAYIN SONLANDI';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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}';
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';
case 'button.edit_profile': return 'Profil Düzenle';
case 'button.follow': return 'Takip et';
case 'button.unfollow': return 'Takibi bırak';
case 'button.mute': return 'Sessiz';
case 'button.unmute': return 'Sesi aç';
case 'button.share': return 'Paylaş';
case 'button.save': return 'Kaydet';
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.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': 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 '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';
case 'login.create': return 'Hesap Oluştur';
case 'login.error.invalid_key': return 'Geçersiz anahtar';
default: return null;
}
}
}

532
lib/i18n/strings_uk.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.uk,
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);
}
/// Metadata for the translations of <uk>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsUk _root = this; // ignore: unused_field
@override
TranslationsUk $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsUk(meta: meta ?? this.$meta);
// Translations
/// Текст, що пропонує користувачеві натиснути на заповнювач аватара, щоб почати завантаження
@override String get upload_avatar => 'Завантажити аватар';
/// Перехід до переліку найкращих стрімерів за запитами
@override String get most_zapped_streamers => 'Більшість стримерів, які були під напругою';
/// Користувача не знайдено при пошуку
@override String get no_user_found => 'Користувача не знайдено';
/// Анонімний користувач
@override String get anon => 'Анонім.';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('uk').format(n)} сатів';
/// Кількість глядачів стріму
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('uk'))(n,
one: '1 глядач',
other: '${NumberFormat.decimalPattern('uk').format(n)} глядачів',
);
@override late final _TranslationsStreamUk stream = _TranslationsStreamUk._(_root);
@override late final _TranslationsGoalUk goal = _TranslationsGoalUk._(_root);
@override late final _TranslationsButtonUk button = _TranslationsButtonUk._(_root);
@override late final _TranslationsEmbedUk embed = _TranslationsEmbedUk._(_root);
/// Заголовки у списках трансляцій за типом трансляції: наживо/закінчилася/запланована тощо.
@override late final _TranslationsStreamListUk stream_list = _TranslationsStreamListUk._(_root);
@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);
@override late final _TranslationsLiveUk live = _TranslationsLiveUk._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} запрацював!';
@override late final _TranslationsStreamChatUk chat = _TranslationsStreamChatUk._(_root);
}
// Path: goal
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 get complete => 'ЗАВЕРШИТИ';
}
// Path: button
class _TranslationsButtonUk extends TranslationsButtonEn {
_TranslationsButtonUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
/// Текст для кнопки входу в систему
@override String get login => 'Логін';
@override String get logout => 'Вийти з системи';
@override String get edit_profile => 'Редагувати профіль';
/// Текст для кнопки переходу
@override String get follow => 'Підпишіться';
/// Текст для кнопки відписки
@override String get unfollow => 'Скасувати відповідь';
@override String get mute => 'Вимкнути звук.';
@override String get unmute => 'Увімкнути звук.';
@override String get share => 'Поділіться';
@override String get save => 'Зберегти';
@override String get connect => 'Підключіться';
@override String get settings => 'Налаштування';
}
// Path: embed
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}';
}
// Path: stream_list
class _TranslationsStreamListUk extends TranslationsStreamListEn {
_TranslationsStreamListUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get following => 'Після того, як';
@override String get live => 'Наживо';
@override String get planned => 'Заплановано';
@override String get ended => 'Закінчилося';
}
// Path: zap
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 get custom_amount => 'Нестандартна сума';
@override String get confirm => 'Підтвердити';
@override String get comment => 'Коментар';
@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 extends TranslationsProfileEn {
_TranslationsProfileUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get past_streams => 'Минулі потоки';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get username => 'Ім\'я користувача';
@override String get amber => 'Увійдіть за допомогою Amber';
@override String get key => 'Увійдіть за допомогою ключа';
@override String get create => 'Створити обліковий запис';
@override late final _TranslationsLoginErrorUk error = _TranslationsLoginErrorUk._(_root);
}
// Path: live
class _TranslationsLiveUk extends TranslationsLiveEn {
_TranslationsLiveUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get start => 'GO LIVE';
@override String get configure_stream => 'Налаштувати потік';
@override String get endpoint => 'Кінцева точка';
@override String get accept_tos => 'Прийміть ТЗ';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('uk'))(n,
zero: '',
other: '~${time}',
);
@override String get title => 'Назва';
@override String get summary => 'Підсумок';
@override String get image => 'Зображення обкладинки';
@override String get tags => 'Теги';
@override String get nsfw => 'Нецензурна лексика';
@override String get nsfw_description => 'Перевірте тут, чи містить цей потік оголену натуру або порнографічний контент.';
@override late final _TranslationsLiveErrorUk error = _TranslationsLiveErrorUk._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusUk extends TranslationsStreamStatusEn {
_TranslationsStreamStatusUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get live => 'НАЖИВО';
@override String get ended => 'ЗАКІНЧЕНО';
@override String get planned => 'ЗАПЛАНОВАНО';
}
// Path: stream.chat
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 TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' таймінг '),
user,
const TextSpan(text: ' для '),
time,
]);
/// Нижній колонтитул кінця потоку внизу чату
@override String get ended => 'СТРІМ ЗАКІНЧИВСЯ';
/// Повідомлення в чаті, що показує затримки потоку
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
@override late final _TranslationsStreamChatWriteUk write = _TranslationsStreamChatWriteUk._(_root);
@override late final _TranslationsStreamChatBadgeUk badge = _TranslationsStreamChatBadgeUk._(_root);
@override late final _TranslationsStreamChatRaidUk raid = _TranslationsStreamChatRaidUk._(_root);
}
// Path: zap.error
class _TranslationsZapErrorUk extends TranslationsZapErrorEn {
_TranslationsZapErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => 'Неправильна сума замовлення';
@override String get no_wallet => 'Не встановлено гаманець-блискавку';
@override String get no_lud16 => 'Адреса блискавки не знайдена';
}
// Path: settings.profile
class _TranslationsSettingsProfileUk extends TranslationsSettingsProfileEn {
_TranslationsSettingsProfileUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get display_name => 'Ім\'я користувача';
@override String get about => 'Про';
@override String get nip05 => 'Nostr Адреса';
@override String get lud16 => 'Блискавична адреса';
@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 String get balance => 'Баланс';
@override String get name => 'Гаманець';
@override late final _TranslationsSettingsWalletErrorUk error = _TranslationsSettingsWalletErrorUk._(_root);
}
// Path: login.error
class _TranslationsLoginErrorUk extends TranslationsLoginErrorEn {
_TranslationsLoginErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get invalid_key => 'Неправильний ключ';
}
// Path: live.error
class _TranslationsLiveErrorUk extends TranslationsLiveErrorEn {
_TranslationsLiveErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@override String get failed => 'Потік не вдалося запустити';
@override String get connection_error => 'Помилка з\'єднання';
@override String get start_failed => 'Не вдалося запустити трансляцію, будь ласка, перевірте свій баланс';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteUk extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
/// Мітка у вікні введення повідомлення чату
@override String get label => 'Написати повідомлення';
/// Повідомлення в чаті, що відображається, коли користувач увійшов до системи лише з ключем pubkey
@override String get no_signer => 'Неможливо писати повідомлення з логіном npub';
/// Повідомлення для введення в чаті, що відображається, коли користувач вийшов з системи
@override String get login => 'Будь ласка, авторизуйтесь, щоб надсилати повідомлення';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeUk extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
/// Над списком користувачів, яким присвоєно бейдж
@override String get awarded_to => 'Нагороджується:';
}
// Path: stream.chat.raid
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 from({required Object name}) => 'RAID FROM ${name}';
/// Таймер зворотного відліку для авторейду
@override String countdown({required Object time}) => 'Рейд у ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorUk extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorUk._(TranslationsUk root) : this._root = root, super.internal(root);
final TranslationsUk _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return 'Завантажити аватар';
case 'most_zapped_streamers': return 'Більшість стримерів, які були під напругою';
case 'no_user_found': return 'Користувача не знайдено';
case 'anon': return 'Анонім.';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('uk').format(n)} сатів';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('uk'))(n,
one: '1 глядач',
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.notification': return ({required Object name}) => '${name} запрацював!';
case 'stream.chat.disabled': return 'ЧАТ ВІДКЛЮЧЕНО';
case 'stream.chat.disabled_timeout': return ({required Object time}) => 'Тайм-аут закінчився: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' таймінг '),
user,
const TextSpan(text: ' для '),
time,
]);
case 'stream.chat.ended': return 'СТРІМ ЗАКІНЧИВСЯ';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' zapped '),
amount,
const TextSpan(text: ' sats'),
]);
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 'goal.complete': return 'ЗАВЕРШИТИ';
case 'button.login': return 'Логін';
case 'button.logout': return 'Вийти з системи';
case 'button.edit_profile': return 'Редагувати профіль';
case 'button.follow': return 'Підпишіться';
case 'button.unfollow': return 'Скасувати відповідь';
case 'button.mute': return 'Вимкнути звук.';
case 'button.unmute': return 'Увімкнути звук.';
case 'button.share': return 'Поділіться';
case 'button.save': return 'Зберегти';
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.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': 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 '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.balance': return 'Баланс';
case 'settings.wallet.name': return 'Гаманець';
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 'Увійдіть за допомогою ключа';
case 'login.create': return 'Створити обліковий запис';
case 'login.error.invalid_key': return 'Неправильний ключ';
case 'live.start': return 'GO LIVE';
case 'live.configure_stream': return 'Налаштувати потік';
case 'live.endpoint': return 'Кінцева точка';
case 'live.accept_tos': return 'Прийміть ТЗ';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('uk'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return 'Назва';
case 'live.summary': return 'Підсумок';
case 'live.image': return 'Зображення обкладинки';
case 'live.tags': return 'Теги';
case 'live.nsfw': return 'Нецензурна лексика';
case 'live.nsfw_description': return 'Перевірте тут, чи містить цей потік оголену натуру або порнографічний контент.';
case 'live.error.failed': return 'Потік не вдалося запустити';
case 'live.error.connection_error': return 'Помилка з\'єднання';
case 'live.error.start_failed': return 'Не вдалося запустити трансляцію, будь ласка, перевірте свій баланс';
default: return null;
}
}
}

532
lib/i18n/strings_zh.g.dart Normal file
View File

@ -0,0 +1,532 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
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})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.zh,
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);
}
/// Metadata for the translations of <zh>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
late final TranslationsZh _root = this; // ignore: unused_field
@override
TranslationsZh $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsZh(meta: meta ?? this.$meta);
// Translations
/// 提示使用者點擊頭像占位符開始上傳的文字
@override String get upload_avatar => '上傳頭像';
/// ヘッドランドから列されている頂幡からずった
@override String get most_zapped_streamers => '最多被擊中的溪流';
/// 搜尋時未找到使用者
@override String get no_user_found => '未找到使用者';
/// 匿名使用者
@override String get anon => '匿名';
@override String full_amount_sats({required num n}) => '${NumberFormat.decimalPattern('zh').format(n)} Sats';
/// 串流的觀看者人數
@override String viewers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
one: '1 個檢視器',
other: '${NumberFormat.decimalPattern('zh').format(n)} 觀眾',
);
@override late final _TranslationsStreamZh stream = _TranslationsStreamZh._(_root);
@override late final _TranslationsGoalZh goal = _TranslationsGoalZh._(_root);
@override late final _TranslationsButtonZh button = _TranslationsButtonZh._(_root);
@override late final _TranslationsEmbedZh embed = _TranslationsEmbedZh._(_root);
/// 串流清單上的標題依串流類型為現場/結束/計劃中等。
@override late final _TranslationsStreamListZh stream_list = _TranslationsStreamListZh._(_root);
@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);
@override late final _TranslationsLiveZh live = _TranslationsLiveZh._(_root);
}
// Path: stream
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 notification({required Object name}) => '${name} 已啟用!';
@override late final _TranslationsStreamChatZh chat = _TranslationsStreamChatZh._(_root);
}
// Path: goal
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 get complete => '完成';
}
// Path: button
class _TranslationsButtonZh extends TranslationsButtonEn {
_TranslationsButtonZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
/// 登入按鈕的按鈕文字
@override String get login => '登錄';
@override String get logout => '登出';
@override String get edit_profile => '編輯個人檔案';
/// 跟蹤按鈕的按鈕文字
@override String get follow => '關注';
/// 取消關注按鈕的按鈕文字
@override String get unfollow => '取消關注';
@override String get mute => '靜音';
@override String get unmute => '解除静音';
@override String get share => '分享';
@override String get save => '保存';
@override String get connect => '連接';
@override String get settings => '設定';
}
// Path: embed
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}';
}
// Path: stream_list
class _TranslationsStreamListZh extends TranslationsStreamListEn {
_TranslationsStreamListZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get following => '已關注';
@override String get live => '直播';
@override String get planned => '已計畫';
@override String get ended => '已結束';
}
// Path: zap
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 get custom_amount => '自訂金額';
@override String get confirm => '確認';
@override String get comment => '評論';
@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 extends TranslationsProfileEn {
_TranslationsProfileZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get past_streams => '過去的直播';
}
// 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 extends TranslationsLoginEn {
_TranslationsLoginZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get username => '用戶名';
@override String get amber => '使用 Amber 登入';
@override String get key => '使用鑰匙登入';
@override String get create => '創建帳戶';
@override late final _TranslationsLoginErrorZh error = _TranslationsLoginErrorZh._(_root);
}
// Path: live
class _TranslationsLiveZh extends TranslationsLiveEn {
_TranslationsLiveZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get start => '開始直播';
@override String get configure_stream => '設定串流';
@override String get endpoint => '終點';
@override String get accept_tos => '接受服務條款';
@override String balance_left({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '',
other: '~${time}',
);
@override String get title => '標題';
@override String get summary => '摘要';
@override String get image => '封面圖片';
@override String get tags => '標籤';
@override String get nsfw => 'NSFW 內容';
@override String get nsfw_description => '請檢查此串流是否包含裸體或色情內容。';
@override late final _TranslationsLiveErrorZh error = _TranslationsLiveErrorZh._(_root);
}
// Path: stream.status
class _TranslationsStreamStatusZh extends TranslationsStreamStatusEn {
_TranslationsStreamStatusZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get live => '直播';
@override String get ended => '結束';
@override String get planned => '計劃';
}
// Path: stream.chat
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 TextSpan timeout({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 超時 '),
user,
const TextSpan(text: ' for '),
time,
]);
/// 聊天底部的流結束頁尾
@override String get ended => '串流結束';
/// 聊天訊息顯示串流斷點
@override TextSpan zap({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' 打閃了 '),
amount,
const TextSpan(text: ''),
]);
@override late final _TranslationsStreamChatWriteZh write = _TranslationsStreamChatWriteZh._(_root);
@override late final _TranslationsStreamChatBadgeZh badge = _TranslationsStreamChatBadgeZh._(_root);
@override late final _TranslationsStreamChatRaidZh raid = _TranslationsStreamChatRaidZh._(_root);
}
// Path: zap.error
class _TranslationsZapErrorZh extends TranslationsZapErrorEn {
_TranslationsZapErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get invalid_custom_amount => '無效自訂金額';
@override String get no_wallet => '未安裝閃電錢夾';
@override String get no_lud16 => '未找到閃電地址';
}
// 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 => '地址';
@override String get lud16 => '閃電地址';
@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 String get balance => '平衡';
@override String get name => '錢包';
@override late final _TranslationsSettingsWalletErrorZh error = _TranslationsSettingsWalletErrorZh._(_root);
}
// Path: login.error
class _TranslationsLoginErrorZh extends TranslationsLoginErrorEn {
_TranslationsLoginErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get invalid_key => '無效按鍵';
}
// Path: live.error
class _TranslationsLiveErrorZh extends TranslationsLiveErrorEn {
_TranslationsLiveErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get failed => '串流失敗';
@override String get connection_error => '連線錯誤';
@override String get start_failed => '串流啟動失敗,請檢查您的餘額';
}
// Path: stream.chat.write
class _TranslationsStreamChatWriteZh extends TranslationsStreamChatWriteEn {
_TranslationsStreamChatWriteZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
/// 聊天訊息輸入方塊上的標籤
@override String get label => '寫訊息';
/// 當使用者僅使用 pubkey 登入時,會顯示聊天輸入訊息
@override String get no_signer => '無法使用 npub 登入撰寫訊息';
/// 使用者登出時顯示聊天輸入訊息
@override String get login => '請登入以傳送訊息';
}
// Path: stream.chat.badge
class _TranslationsStreamChatBadgeZh extends TranslationsStreamChatBadgeEn {
_TranslationsStreamChatBadgeZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
/// 被授予徽章的使用者清單上的標題
@override String get awarded_to => '頒發給';
}
// Path: stream.chat.raid
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 from({required Object name}) => 'RAID FROM ${name}';
/// 自動騎乘倒數計時器
@override String countdown({required Object time}) => '突襲 ${time}';
}
// Path: settings.profile.error
class _TranslationsSettingsProfileErrorZh extends TranslationsSettingsProfileErrorEn {
_TranslationsSettingsProfileErrorZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@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 {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'upload_avatar': return '上傳頭像';
case 'most_zapped_streamers': return '最多被擊中的溪流';
case 'no_user_found': return '未找到使用者';
case 'anon': return '匿名';
case 'full_amount_sats': return ({required num n}) => '${NumberFormat.decimalPattern('zh').format(n)} Sats';
case 'viewers': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
one: '1 個檢視器',
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.notification': return ({required Object name}) => '${name} 已啟用!';
case 'stream.chat.disabled': return '關閉聊天';
case 'stream.chat.disabled_timeout': return ({required Object time}) => '超時過期: ${time}';
case 'stream.chat.timeout': return ({required InlineSpan mod, required InlineSpan user, required InlineSpan time}) => TextSpan(children: [
mod,
const TextSpan(text: ' 超時 '),
user,
const TextSpan(text: ' for '),
time,
]);
case 'stream.chat.ended': return '串流結束';
case 'stream.chat.zap': return ({required InlineSpan user, required InlineSpan amount}) => TextSpan(children: [
user,
const TextSpan(text: ' 打閃了 '),
amount,
const TextSpan(text: ''),
]);
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 'goal.complete': return '完成';
case 'button.login': return '登錄';
case 'button.logout': return '登出';
case 'button.edit_profile': return '編輯個人檔案';
case 'button.follow': return '關注';
case 'button.unfollow': return '取消關注';
case 'button.mute': return '靜音';
case 'button.unmute': return '解除静音';
case 'button.share': return '分享';
case 'button.save': return '保存';
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.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': 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 '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.balance': return '平衡';
case 'settings.wallet.name': return '錢包';
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 '使用鑰匙登入';
case 'login.create': return '創建帳戶';
case 'login.error.invalid_key': return '無效按鍵';
case 'live.start': return '開始直播';
case 'live.configure_stream': return '設定串流';
case 'live.endpoint': return '終點';
case 'live.accept_tos': return '接受服務條款';
case 'live.balance_left': return ({required num n, required Object time}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '',
other: '~${time}',
);
case 'live.title': return '標題';
case 'live.summary': return '摘要';
case 'live.image': return '封面圖片';
case 'live.tags': return '標籤';
case 'live.nsfw': return 'NSFW 內容';
case 'live.nsfw_description': return '請檢查此串流是否包含裸體或色情內容。';
case 'live.error.failed': return '串流失敗';
case 'live.error.connection_error': return '連線錯誤';
case 'live.error.start_failed': return '串流啟動失敗,請檢查您的餘額';
default: return null;
}
}
}

View File

@ -0,0 +1,156 @@
upload_avatar: تحميل الصورة الرمزية
"@upload_avatar":
description: نص يطالب المستخدم بالضغط على العنصر النائب للصورة الرمزية لبدء التحميل
most_zapped_streamers: معظم اللافتات التي يتم بثها
"@most_zapped_streamers":
description: التوجه فوق اللافتات العلوية المدرجة من قبل zaps
no_user_found: لم يتم العثور على مستخدم
"@no_user_found":
description: لم يتم العثور على مستخدم عند البحث
anon: هوية مخفية
full_amount_sats: "${n:decimalPattern} دولار ساتس"
viewers:
one: 1 مشاهد
other: "{n:decimalPattern} المشاهدين"
"@viewers":
description: عدد مشاهدي البث
"@anon":
description: مستخدم مجهول
stream:
status:
live: بث مباشر
ended: انتهى
planned: مخطط
started: بدأ $timestamp
notification: ${name} بدأ البث المباشر!
chat:
disabled: تم تعطيل الدردشة
disabled_timeout: "تنتهي المهلة: $time"
timeout(rich): $mod انتهى الوقت $user لـ ${time}
"@timeout":
description: رسالة دردشة تظهر أحداث المهلة
ended: انتهى البث
"@ended":
description: تيار انتهى التذييل في أسفل الدردشة
zap(rich): $user انطلق $amount ساتس
"@zap":
description: رسالة الدردشة التي تُظهر البث المباشر
write:
label: اكتب رسالة
"@label":
description: التسمية على مربع إدخال رسالة الدردشة
no_signer: لا يمكن كتابة الرسائل باستخدام تسجيل الدخول إلى npub
"@no_signer":
description: تظهر رسالة إدخال الدردشة عندما يقوم المستخدم بتسجيل الدخول باستخدام
مفتاح الحانة فقط
login: الرجاء تسجيل الدخول لإرسال الرسائل
"@login":
description: تظهر رسالة إدخال الدردشة عند تسجيل خروج المستخدم من المحادثة
badge:
awarded_to: مُنحت الجائزة لـ
"@awarded_to":
description: العنوان فوق قائمة المستخدمين الذين حصلوا على شارة
raid:
to: التصفح $name
"@to":
description: رسالة غارة الدردشة إلى دفق آخر
from: RAID من $name
"@from":
description: رسالة غارة الدردشة من دفق آخر
countdown: الإغارة في $time
"@countdown":
description: مؤقت العد التنازلي للقيادة التلقائية
goal:
title: "الهدف: $amount"
remaining: "المتبقي: $amount"
complete: مكتمل
button:
login: تسجيل الدخول
logout: تسجيل الخروج
edit_profile: تعديل الملف الشخصي
"@login":
description: نص الزر الخاص بزر تسجيل الدخول
follow: متابعة
"@follow":
description: نص الزر الخاص بزر المتابعة
unfollow: الغاء المتابعة
"@unfollow":
description: نص الزر لزر إلغاء المتابعة
mute: كتم
unmute: رفع الكتم
share: مشاركة
save: حفظ
connect: الاتصال
settings: الإعدادات
embed:
article_by: مقال بقلم $name
note_by: ملاحظة من $name
live_stream_by: بث مباشر من $name
stream_list:
following: المتابَعون
live: بث مباشر
planned: مخطط
ended: انتهى
"@stream_list":
description: العناوين في قوائم البث حسب نوع البث المباشر/المُنتهي/المخطط له وما إلى ذلك.
zap:
title: زاب $name
custom_amount: المبلغ المخصص
confirm: تأكيد
comment: تعليق
button_zap_ready: أومض $amount ساتوشي
button_zap: زاب
button_open_wallet: فتح في المحفظة
button_connect_wallet: توصيل المحفظة
copy: نسخ إلى الحافظة
error:
invalid_custom_amount: مبلغ مخصص غير صالح
no_wallet: لا توجد محفظة برق مثبتة
no_lud16: لم يتم العثور على عنوان البرق
profile:
past_streams: التدفقات السابقة
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-التوصيل بنقرة 1
paste: لصق عنوان URL
balance: الرصيد
name: المحفظة
error:
logged_out: لا يمكن الاتصال بالمحفظة عند تسجيل الخروج
nwc_auth_event_not_found: لم يتم العثور على حدث مصادقة المحفظة
login:
username: اسم المستخدم
amber: تسجيل الدخول مع آمبر
key: تسجيل الدخول بالمفتاح
create: إنشاء حساب
error:
invalid_key: مفتاح غير صالح
live:
start: ابدأ البث المباشر
configure_stream: تكوين الدفق
endpoint: نقطة النهاية
accept_tos: قبول شروط الخدمة
balance_left:
zero:
other: ~${time}
title: العنوان
summary: الملخص
image: صورة الغلاف
tags: الوسوم
nsfw: محتوى غير لائق جنسيًا
nsfw_description: تحقق هنا إذا كان هذا البث يحتوي على محتوى إباحي أو عري.
error:
failed: فشل البث
connection_error: خطأ في الاتصال
start_failed: فشل بدء البث فشل، يرجى التحقق من رصيدك

View File

@ -0,0 +1,157 @@
upload_avatar: Nahrát avatar
"@upload_avatar":
description: Text vyzývající uživatele, aby stiskl zástupný symbol avatara pro
zahájení nahrávání
most_zapped_streamers: Nejvíce zapnutých streamerů
"@most_zapped_streamers":
description: Směřování přes uvedené horní streamery podle zaps
no_user_found: Nebyl nalezen žádný uživatel
"@no_user_found":
description: Při vyhledávání nebyl nalezen žádný uživatel
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 divák
other: ${n:decimalPattern} diváků
"@viewers":
description: Počet diváků streamu
"@anon":
description: Anonymní uživatel
stream:
status:
live: LIVE
ended: KONEC
planned: PLÁNOVANÉ
started: Založeno $timestamp
notification: ${name} byl spuštěn!
chat:
disabled: CHAT ZRUŠEN
disabled_timeout: "Časový limit vyprší: $time"
timeout(rich): $mod vypršel čas $user pro ${time}
"@timeout":
description: Zpráva chatu zobrazující události časového limitu
ended: STREAM UKONČEN
"@ended":
description: Zápatí v dolní části chatu ukončilo stream
zap(rich): $user Zapped $amount sats
"@zap":
description: Zpráva chatu zobrazující proud zaps
write:
label: Napište zprávu
"@label":
description: Popisek na vstupním poli zprávy chatu
no_signer: Nelze psát zprávy s přihlášením npub
"@no_signer":
description: Vstupní zpráva chatu se zobrazí, když je uživatel přihlášen pouze
pomocí pubkey
login: Pro odesílání zpráv se prosím přihlaste
"@login":
description: Vstupní zpráva chatu zobrazená při odhlášení uživatele
badge:
awarded_to: "Uděleno:"
"@awarded_to":
description: Záhlaví nad seznamem uživatelů, kterým byl udělen odznak
raid:
to: RAIDING $name
"@to":
description: Zpráva o nájezdu chatu do jiného proudu
from: RAID Z $name
"@from":
description: Zpráva o nájezdu chatu z jiného proudu
countdown: Nájezdy na $time
"@countdown":
description: Časovač odpočítávání pro automatický nájezd
goal:
title: "Cíl: $amount"
remaining: "Zbývá: $amount"
complete: KOMPLETNÍ
button:
login: Přihlášení
logout: Odhlášení
edit_profile: Upravit profil
"@login":
description: Text tlačítka pro přihlašovací tlačítko
follow: Sledujte
"@follow":
description: Text tlačítka pro tlačítko sledovat
unfollow: Zrušit sledování
"@unfollow":
description: Text tlačítka pro zrušení sledování
mute: Ztlumit
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
live_stream_by: Přímý přenos na adrese $name
stream_list:
following: Po
live: Živě
planned: Plánované
ended: Ukončeno
"@stream_list":
description: Nadpisy v seznamech proudů podle typu proudu živě/konec/plánovaně atd.
zap:
title: Zap $name
custom_amount: Vlastní částka
confirm: Potvrďte
comment: "Komentář:"
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
no_wallet: Není nainstalována blesková peněženka
no_lud16: Nebyla nalezena žádná adresa blesku
profile:
past_streams: Minulé proudy
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
balance: Bilance
name: Peněženka
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
key: Přihlášení pomocí klíče
create: Vytvořit účet
error:
invalid_key: Neplatný klíč
live:
start: PŘEJÍT NA ŽIVOT
configure_stream: Konfigurace streamu
endpoint: Koncový bod
accept_tos: Přijmout TOS
balance_left:
zero:
other: ~${time}
title: Název
summary: Souhrn
image: Obrázek na obálce
tags: Štítky
nsfw: Obsah NSFW
nsfw_description: Zde zkontrolujte, zda tento stream obsahuje nahotu nebo pornografický obsah.
error:
failed: Stream se nezdařil
connection_error: Chyba připojení
start_failed: Spuštění streamu se nezdařilo, zkontrolujte prosím zůstatek

View File

@ -0,0 +1,157 @@
upload_avatar: Upload avatar
"@upload_avatar":
description: Tekst, der beder brugeren om at trykke på avatar-pladsholderen for
at begynde at uploade
most_zapped_streamers: De fleste zappede streamere
"@most_zapped_streamers":
description: På vej over listede topstreamere af zaps
no_user_found: Ingen bruger fundet
"@no_user_found":
description: Ingen bruger fundet ved søgning
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 seer
other: ${n:decimalPattern} seere
"@viewers":
description: Antal seere af streamingen
"@anon":
description: En anonym bruger
stream:
status:
live: LIVE
ended: AFSLUTTET
planned: PLANLAGT
started: Startet $timestamp
notification: ${name} gik live!
chat:
disabled: CHAT DEAKTIVERET
disabled_timeout: "Timeout udløber: $time"
timeout(rich): $mod udløbet $user for ${time}
"@timeout":
description: Chatbesked, der viser timeout-hændelser
ended: STREAM AFSLUTTET
"@ended":
description: Stream afsluttede footer i bunden af chatten
zap(rich): $user zappet $amount sats
"@zap":
description: Chatbesked, der viser stream-zaps
write:
label: Skriv en besked
"@label":
description: Label på chatbeskedens inputfelt
no_signer: Kan ikke skrive beskeder med npub-login
"@no_signer":
description: Chat-inputmeddelelse vises, når brugeren kun er logget ind med pubkey
login: Log ind for at sende beskeder
"@login":
description: Chat-inputmeddelelse vises, når brugeren er logget ud
badge:
awarded_to: "Tildelt til:"
"@awarded_to":
description: Overskrift over liste over brugere, der har fået tildelt et badge
raid:
to: RAIDING $name
"@to":
description: Chat raid-besked til en anden stream
from: RAID FRA $name
"@from":
description: Chat raid-besked fra en anden stream
countdown: Raiding i $time
"@countdown":
description: Nedtællingstimer til auto-raiding
goal:
title: "Mål: $amount"
remaining: "Resterende: $amount"
complete: KOMPLET
button:
login: Login
logout: Log ud
edit_profile: Rediger profil
"@login":
description: Knaptekst til login-knappen
follow: Følg med
"@follow":
description: Knaptekst til følg-knappen
unfollow: Ikke følge
"@unfollow":
description: Knaptekst til unfollow-knappen
mute: Dæmpet
unmute: Slå lyden fra
share: Del
save: Gemme
connect: Opret forbindelse
settings: Indstillinger
embed:
article_by: Artikel af $name
note_by: Note fra $name
live_stream_by: Livestream på $name
stream_list:
following: Efterfølgende
live: Live
planned: Planlagt
ended: Afsluttet
"@stream_list":
description: Overskrifter på streaminglister efter streamingtype
live/afsluttet/planlagt osv.
zap:
title: Zap $name
custom_amount: Brugerdefineret beløb
confirm: Bekræft
comment: Kommentar
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
no_wallet: Ingen lightning wallet installeret
no_lud16: Ingen lyn-adresse fundet
profile:
past_streams: Tidligere strømme
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
balance: Balance
name: Tegnebog
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
key: Login med nøgle
create: Opret konto
error:
invalid_key: Ugyldig nøgle
live:
start: GO LIVE
configure_stream: Konfigurer stream
endpoint: Slutpunkt
accept_tos: Accepter TOS
balance_left:
zero:
other: ~${time}
title: Titel
summary: Sammenfatning
image: Forsidebillede
tags: Tags
nsfw: NSFW-indhold
nsfw_description: Tjek her, om denne stream indeholder nøgenhed eller pornografisk indhold.
error:
failed: Strømmen mislykkedes
connection_error: Forbindelsesfejl
start_failed: Stream-start mislykkedes, tjek venligst din saldo

View File

@ -0,0 +1,159 @@
upload_avatar: Avatar hochladen
"@upload_avatar":
description: Text, der den Benutzer auffordert, auf den Avatar-Platzhalter zu
klicken, um den Upload zu starten
most_zapped_streamers: Meistgezappte Streamer
"@most_zapped_streamers":
description: Überschrift über gelistete Top-Streamer nach Zaps
no_user_found: Kein Benutzer gefunden
"@no_user_found":
description: Kein Benutzer bei der Suche gefunden
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 Zuschauer
other: ${n:decimalPattern} Zuschauer
"@viewers":
description: Anzahl der Zuschauer des Streams
"@anon":
description: Ein anonymer Benutzer
stream:
status:
live: LIVE
ended: BEENDET
planned: GEPLANT
started: Gestartet $timestamp
notification: ${name} ging live!
chat:
disabled: CHAT DEAKTIVIERT
disabled_timeout: "Timeout läuft ab: $time"
timeout(rich): $mod gibt $user einen Timeout für ${time}
"@timeout":
description: Chat-Nachricht mit Timeout-Ereignissen
ended: STREAM BEENDET
"@ended":
description: Stream beendet Fußzeile am Ende des Chats
zap(rich): $user hat $amount sats gezappt
"@zap":
description: Chat-Nachricht mit Stream-Zaps
write:
label: Nachricht schreiben
"@label":
description: Beschriftung des Eingabefeldes für Chatnachrichten
no_signer: Mit npub-Login können keine Nachrichten geschrieben werden
"@no_signer":
description: Chat-Eingabemeldung wird angezeigt, wenn der Benutzer nur mit
Pubkey eingeloggt ist
login: Bitte anmelden, um Nachrichten zu senden
"@login":
description: Chat-Eingabemeldung wird angezeigt, wenn der Benutzer abgemeldet ist
badge:
awarded_to: "Verliehen an:"
"@awarded_to":
description: Überschrift über der Liste der Benutzer, die ein Abzeichen erhalten
haben
raid:
to: RAIDING $name
"@to":
description: Chat-Überfallnachricht an einen anderen Stream
from: RAID VON $name
"@from":
description: Chat-Raid-Nachricht aus einem anderen Stream
countdown: Raubzüge auf $time
"@countdown":
description: Countdown-Timer für automatisches Reiten
goal:
title: "Ziel: $amount"
remaining: "Verbleibend: $amount"
complete: COMPLETE
button:
login: Anmelden
logout: Abmelden
edit_profile: Profil anpassen
"@login":
description: Schaltflächentext für die Anmeldeschaltfläche
follow: Folgen
"@follow":
description: Schaltflächentext für die Schaltfläche "Folgen
unfollow: Entfolgen
"@unfollow":
description: Schaltflächentext für die "Unfollow"-Schaltfläche
mute: Stummschalten
unmute: Entstummen
share: Teilen
save: Speichern
connect: Verbinden Sie
settings: Einstellungen
embed:
article_by: Artikel von $name
note_by: Note von $name
live_stream_by: Live-Stream von $name
stream_list:
following: Folge ich
live: Live
planned: Geplant
ended: Beendet
"@stream_list":
description: Überschriften auf Stream-Listen nach Stream-Typ live/beendet/geplant usw.
zap:
title: $name zappen
custom_amount: Benutzerdefinierter Betrag
confirm: Bestätigen
comment: Kommentar
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
no_wallet: Keine Lightning-Brieftasche installiert
no_lud16: Keine Blitzadresse gefunden
profile:
past_streams: Vergangene Streams
settings:
button_profile: Profil bearbeiten
button_wallet: Wallet-Einstellungen
profile:
display_name: Name anzeigen
about: Über
nip05: Nostr-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
balance: Bilanz
name: Brieftasche
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
key: Anmeldung mit Schlüssel
create: Konto erstellen
error:
invalid_key: Ungültiger Schlüssel
live:
start: LIVE GEHEN
configure_stream: Stream konfigurieren
endpoint: Endpunkt
accept_tos: TOS akzeptieren
balance_left:
zero:
other: ~${time}
title: Titel
summary: Zusammenfassung
image: Titelbild
tags: Tags
nsfw: NSFW-Inhalt
nsfw_description: Prüfen Sie hier, ob dieser Stream Nacktheit oder
pornografische Inhalte enthält.
error:
failed: Stream fehlgeschlagen
connection_error: Verbindungsfehler
start_failed: Streamstart fehlgeschlagen, bitte überprüfen Sie Ihr Guthaben

View File

@ -0,0 +1,160 @@
upload_avatar: Ανέβασμα Avatar
"@upload_avatar":
description: Κείμενο που προτρέπει τον χρήστη να πατήσει το εικονίδιο avatar για
να ξεκινήσει το ανέβασμα
most_zapped_streamers: Τα περισσότερα Zapped Streamers
"@most_zapped_streamers":
description: Επικεφαλής πάνω από τα αναφερόμενα κορυφαία streamers από zaps
no_user_found: Δεν βρέθηκε χρήστης
"@no_user_found":
description: Δεν βρέθηκε χρήστης κατά την αναζήτηση
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 θεατής
other: ${n:decimalPattern} θεατές
"@viewers":
description: Αριθμός θεατών της ροής
"@anon":
description: Ένας ανώνυμος χρήστης
stream:
status:
live: LIVE
ended: ENDED
planned: ΣΧΕΔΙΑΣΜΟΣ
started: Ξεκίνησε $timestamp
notification: ${name} βγήκε ζωντανά!
chat:
disabled: ΑΠΕΝΕΡΓΟΠΟΙΗΜΈΝΗ ΣΥΝΟΜΙΛΊΑ
disabled_timeout: "Το χρονικό όριο λήγει: $time"
timeout(rich): $mod χρονομετρημένη λήξη $user για ${time}
"@timeout":
description: Μήνυμα συνομιλίας που εμφανίζει συμβάντα timeout
ended: STREAM ΤΕΛΕΙΩΣΕ
"@ended":
description: Η ροή τελείωσε το υποσέλιδο στο κάτω μέρος της συνομιλίας
zap(rich): $user zapped $amount sats
"@zap":
description: Μήνυμα συνομιλίας που δείχνει ροή ροής zaps
write:
label: Γράψτε μήνυμα
"@label":
description: Ετικέτα στο πλαίσιο εισαγωγής μηνύματος συνομιλίας
no_signer: Δεν μπορείτε να γράψετε μηνύματα με σύνδεση στο npub
"@no_signer":
description: Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης είναι
συνδεδεμένος μόνο με το κλειδί pubkey
login: Παρακαλώ συνδεθείτε για να στείλετε μηνύματα
"@login":
description: Μήνυμα εισόδου συνομιλίας που εμφανίζεται όταν ο χρήστης έχει
αποσυνδεθεί
badge:
awarded_to: "Απονέμεται σε:"
"@awarded_to":
description: Επικεφαλίδα πάνω από τη λίστα των χρηστών στους οποίους έχει
απονεμηθεί ένα σήμα
raid:
to: RAIDING $name
"@to":
description: Μήνυμα επιδρομής συνομιλίας σε άλλη ροή
from: RAID FROM $name
"@from":
description: Μήνυμα επιδρομής συνομιλίας από άλλη ροή
countdown: Επιδρομές στο $time
"@countdown":
description: Χρονοδιακόπτης αντίστροφης μέτρησης για αυτόματη ιππασία
goal:
title: "Στόχος: $amount"
remaining: "Υπόλοιπο: $amount"
complete: ΠΛΗΡΗΣ
button:
login: Σύνδεση
logout: Αποσύνδεση
edit_profile: Επεξεργασία προφίλ
"@login":
description: Κείμενο κουμπιού για το κουμπί σύνδεσης
follow: Ακολουθήστε το
"@follow":
description: Κείμενο κουμπιού για το κουμπί follow
unfollow: Ακολουθήστε το
"@unfollow":
description: Κείμενο κουμπιού για το κουμπί unfollow
mute: Σίγαση
unmute: Αποσυνδέστε τη φωνή σας από το
share: Μοιραστείτε το
save: Αποθήκευση
connect: Συνδέστε το
settings: Ρυθμίσεις
embed:
article_by: Άρθρο από $name
note_by: Σημείωση του $name
live_stream_by: Ζωντανή μετάδοση από το $name
stream_list:
following: Ακολουθώντας το
live: Ζωντανό
planned: Προγραμματισμένο
ended: Τελείωσε
"@stream_list":
description: Επικεφαλίδες στις λίστες ροής ανά τύπο ροής
ζωντανή/τελειωμένη/προγραμματισμένη κ.λπ.
zap:
title: Zap $name
custom_amount: Προσαρμοσμένο ποσό
confirm: Επιβεβαίωση
comment: Σχόλιο
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: Άνοιγμα στο πορτοφόλι
button_connect_wallet: Connect Wallet
copy: Αντιγραφή στο πρόχειρο
error:
invalid_custom_amount: Μη έγκυρο προσαρμοσμένο ποσό
no_wallet: Δεν έχει εγκατασταθεί πορτοφόλι αστραπής
no_lud16: Δεν βρέθηκε διεύθυνση κεραυνού
profile:
past_streams: Προηγούμενα ρεύματα
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
balance: Υπόλοιπο
name: Πορτοφόλι
error:
logged_out: Δεν μπορώ να συνδεθώ με πορτοφόλι όταν έχω αποσυνδεθεί
nwc_auth_event_not_found: Δεν βρέθηκε συμβάν εξουσιοδότησης πορτοφολιού
login:
username: Όνομα χρήστη
amber: Σύνδεση με Amber
key: Σύνδεση με κλειδί
create: Δημιουργία λογαριασμού
error:
invalid_key: Μη έγκυρο κλειδί
live:
start: GO LIVE
configure_stream: Διαμόρφωση ροής
endpoint: Τελικό σημείο
accept_tos: Αποδοχή TOS
balance_left:
zero:
other: ~${time}
title: Τίτλος
summary: Περίληψη
image: Εικόνα εξωφύλλου
tags: Ετικέτες
nsfw: Περιεχόμενο NSFW
nsfw_description: Ελέγξτε εδώ αν αυτή η ροή περιέχει γυμνό ή πορνογραφικό περιεχόμενο.
error:
failed: Το ρεύμα απέτυχε
connection_error: Σφάλμα σύνδεσης
start_failed: Η εκκίνηση της ροής απέτυχε, παρακαλούμε ελέγξτε το υπόλοιπό σας

View File

@ -0,0 +1,157 @@
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
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 viewer
other: ${n:decimalPattern} viewers
"@viewers":
description: Number of viewers of the stream
"@anon":
description: An anonymous user
stream:
status:
live: LIVE
ended: ENDED
planned: PLANNED
started: Started $timestamp
notification: ${name} went live!
chat:
disabled: CHAT DISABLED
disabled_timeout: "Timeout expires: $time"
timeout(rich): $mod timed out $user for ${time}
"@timeout":
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
error:
load_failed: Failed to load stream from ${url}
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
connect: Connect
settings: Settings
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
button_connect_wallet: Connect 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
settings:
button_profile: Edit Profile
button_wallet: Wallet Settings
profile:
display_name: Display Name
about: About
nip05: Nostr Address
lud16: Lightning Address
error:
logged_out: Cant edit profile when logged out
wallet:
connect_wallet: Connect Wallet (NWC nostr+walletconnect://)
disconnect_wallet: Disconnect Wallet
connect_1tap: 1-Tap Connection
paste: Paste URL
balance: Balance
name: Wallet
error:
logged_out: Cant connect wallet when logged out
nwc_auth_event_not_found: No wallet auth event found
login:
username: Username
amber: Login with Amber
key: Login with Key
create: Create Account
error:
invalid_key: Invalid key
live:
start: GO LIVE
configure_stream: Configure Stream
endpoint: Endpoint
accept_tos: Accept TOS
balance_left:
zero:
other: ~${time}
title: Title
summary: Summary
image: Cover Image
tags: Tags
nsfw: NSFW Content
nsfw_description: Check here if this stream contains nudity or pornographic content.
error:
failed: Stream failed
connection_error: Connection Error
start_failed: Stream start failed, please check your balance

View File

@ -0,0 +1,160 @@
upload_avatar: Subir avatar
"@upload_avatar":
description: Texto que indica al usuario que pulse el marcador de avatar para
iniciar la carga
most_zapped_streamers: Serpentinas más derribadas
"@most_zapped_streamers":
description: Encabezando streamers superiores listados por zaps
no_user_found: No se ha encontrado ningún usuario
"@no_user_found":
description: No se ha encontrado ningún usuario al realizar la búsqueda
anon: Anónimo
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 espectador
other: ${n:decimalPattern} espectadores
"@viewers":
description: Número de espectadores del flujo
"@anon":
description: Un usuario anónimo
stream:
status:
live: EN VIVO
ended: FIN
planned: PLANIFICADO
started: Comenzó $timestamp
notification: ${name} ¡se ha puesto en marcha!
chat:
disabled: CHAT DESHABILITADO
disabled_timeout: "El tiempo de espera expira: $time"
timeout(rich): $mod timed out $user para ${time}
"@timeout":
description: Mensaje de chat que muestra los eventos de tiempo de espera
ended: STREAM FINED
"@ended":
description: Stream finalizó en la parte inferior del chat
zap(rich): $user zapearon $amount sats
"@zap":
description: Mensaje de chat que muestra zaps de flujo
write:
label: Escribir mensaje
"@label":
description: Etiqueta del cuadro de entrada de mensajes de chat
no_signer: No se pueden escribir mensajes con el login npub
"@no_signer":
description: Mensaje de entrada en el chat que se muestra cuando el usuario está
conectado sólo con pubkey
login: Inicie sesión para enviar mensajes
"@login":
description: Mensaje de entrada al chat que se muestra cuando el usuario cierra
la sesión
badge:
awarded_to: "Concedido a:"
"@awarded_to":
description: Encabezamiento de la lista de usuarios a los que se ha concedido
una insignia
raid:
to: RAIDING $name
"@to":
description: Mensaje de raid de chat a otro flujo
from: RAID DESDE $name
"@from":
description: Mensaje de incursión en el chat desde otro flujo
countdown: Incursiones en $time
"@countdown":
description: Temporizador de cuenta atrás para auto-raiding
goal:
title: "Objetivo: $amount"
remaining: "Resto: $amount"
complete: COMPLETAR
button:
login: Iniciar Sesión
logout: Cerrar sesión
edit_profile: Editar Perfil
"@login":
description: Texto del botón de inicio de sesión
follow: Seguir
"@follow":
description: Texto del botón de seguimiento
unfollow: Dejar de seguir
"@unfollow":
description: Texto del botón "Dejar de seguir
mute: Silenciar
unmute: Dejar de silenciar
share: Compartir
save: Guardar
connect: Conectar
settings: Ajustes
embed:
article_by: Artículo de $name
note_by: Nota de $name
live_stream_by: Transmisión en directo por $name
stream_list:
following: Siguiendo
live: En directo
planned: Planificado
ended: Finalizado
"@stream_list":
description: Encabezamientos en las listas de flujos por tipo de flujo en
directo/finalizado/planificado, etc.
zap:
title: Zap $name
custom_amount: Importe personalizado
confirm: Confirmar
comment: Comentario
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
no_wallet: Sin monedero relámpago instalado
no_lud16: No se ha encontrado ninguna dirección de rayos
profile:
past_streams: Transmisiones anteriores
settings:
button_profile: Editar perfil
button_wallet: Configuración de la cartera
profile:
display_name: Mostrar nombre
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
balance: Saldo
name: Cartera
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
key: Inicio de sesión con clave
create: Crear una cuenta
error:
invalid_key: Clave no válida
live:
start: EN VIVO
configure_stream: Configurar Stream
endpoint: Punto final
accept_tos: Aceptar TOS
balance_left:
zero:
other: ~${time}
title: Título
summary: Resumen
image: Imagen de portada
tags: Etiquetas
nsfw: Contenido NSFW
nsfw_description: Compruebe aquí si este flujo contiene desnudos o contenido pornográfico.
error:
failed: Corriente fallida
connection_error: Error de conexión
start_failed: Error en el inicio de la transmisión, compruebe su saldo

View File

@ -0,0 +1,159 @@
upload_avatar: Lataa avatar
"@upload_avatar":
description: Teksti, joka kehottaa käyttäjää painamaan avatar-merkkiä
aloittaakseen lataamisen.
most_zapped_streamers: Eniten Zapped Streamers
"@most_zapped_streamers":
description: Päällekkäin lueteltujen alkuun streamers by zaps
no_user_found: Käyttäjää ei löytynyt
"@no_user_found":
description: Käyttäjää ei löytynyt haun yhteydessä
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 katsoja
other: ${n:decimalPattern} katsojat
"@viewers":
description: Streamin katsojien määrä
"@anon":
description: Nimetön käyttäjä
stream:
status:
live: LIVE
ended: ENDED
planned: SUUNNITELTU
started: Aloitettu $timestamp
notification: ${name} meni suoraksi!
chat:
disabled: CHAT POISTETTU KÄYTÖSTÄ
disabled_timeout: "Aikakatkaisu päättyy: $time"
timeout(rich): $mod ajastettu $user for ${time}
"@timeout":
description: Chat-viesti, joka näyttää aikakatkaisutapahtumat
ended: STREAM PÄÄTTYNYT
"@ended":
description: Virta päättyi alatunnisteen alareunaan chatissa
zap(rich): $user zappasi $amount satsia
"@zap":
description: Chat-viestin näyttäminen stream zaps
write:
label: Kirjoita viesti
"@label":
description: Chat-viestin syöttöruudun tarra
no_signer: Ei voi kirjoittaa viestejä npub-kirjautumisella
"@no_signer":
description: Chat-syöttöviesti näytetään, kun käyttäjä on kirjautunut sisään
vain pubkey-avaimella.
login: Kirjaudu sisään lähettääksesi viestejä
"@login":
description: Chat-syötteen viesti näytetään, kun käyttäjä on kirjautunut ulos.
badge:
awarded_to: "Myönnetty:"
"@awarded_to":
description: Merkin saaneiden käyttäjien luettelon otsikko
raid:
to: RAIDING $name
"@to":
description: Chat-viesti toiseen streamiin
from: RAID FROM $name
"@from":
description: Chat raid viesti toisesta virrasta
countdown: Ryöstöretket osoitteessa $time
"@countdown":
description: Lähtölaskenta ajastin automaattista ratsastusta varten
goal:
title: "Tavoite: $amount"
remaining: "Jäljellä: $amount"
complete: TÄYDELLINEN
button:
login: Kirjaudu sisään
logout: Kirjaudu ulos
edit_profile: Muokkaa profiilia
"@login":
description: Kirjautumispainikkeen teksti
follow: Seuraa
"@follow":
description: Seuraa-painikkeen painikkeen teksti
unfollow: Älä seuraa
"@unfollow":
description: Seuraa-painikkeen teksti
mute: Mykistä
unmute: Poista mykistys
share: Jaa
save: Tallenna
connect: Yhdistä
settings: Asetukset
embed:
article_by: Artikkeli $name
note_by: Viesti lähettäjältä $name
live_stream_by: Suora lähetys osoitteessa $name
stream_list:
following: Seuraa
live: Live
planned: Suunniteltu
ended: Päättynyt
"@stream_list":
description: Stream-luetteloiden otsikot stream-tyypeittäin
live/päättynyt/suunniteltu jne.
zap:
title: Zap $name
custom_amount: Mukautettu määrä
confirm: Vahvista
comment: Kommentoi
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ä
no_wallet: Ei asennettua salamalompakkoa
no_lud16: Salamaosoitetta ei löytynyt
profile:
past_streams: Aikaisemmat lähetykset
settings:
button_profile: Muokkaa profiilia
button_wallet: Lompakon asetukset
profile:
display_name: Näytön nimi
about: Tietoja
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
balance: Balance
name: Lompakko
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
key: Kirjaudu sisään avaimella
create: Luo tili
error:
invalid_key: Virheellinen avain
live:
start: GO LIVE
configure_stream: Määritä Stream
endpoint: Loppupiste
accept_tos: Hyväksy TOS
balance_left:
zero:
other: ~${time}
title: Otsikko
summary: Yhteenveto
image: Kansikuva
tags: Tunnisteet
nsfw: NSFW-sisältö
nsfw_description: Tarkista täältä, jos tämä stream sisältää alastomuutta tai
pornografista sisältöä.
error:
failed: Stream epäonnistui
connection_error: Yhteysvirhe
start_failed: Virran käynnistys epäonnistui, tarkista saldosi

View File

@ -0,0 +1,158 @@
upload_avatar: Télécharger l'avatar
"@upload_avatar":
description: Texte invitant l'utilisateur à cliquer sur l'espace réservé à
l'avatar pour commencer le téléchargement
most_zapped_streamers: Les Streamers les plus zappés
"@most_zapped_streamers":
description: Les têtes d'affiche sont listées par zaps.
no_user_found: Aucun utilisateur trouvé
"@no_user_found":
description: Aucun utilisateur n'a été trouvé lors de la recherche
anon: Anonyme
full_amount_sats: "${n:decimalPattern} sats"
viewers:
one: 1 téléspectateur
other: "${n:decimalPattern} téléspectateurs"
"@viewers":
description: Nombre de spectateurs du flux
"@anon":
description: Un utilisateur anonyme
stream:
status:
live: VIVRE
ended: FINI
planned: PRÉVU
started: Commencé à $timestamp
notification: ${name} est en ligne !
chat:
disabled: CHAT DISABLED
disabled_timeout: "Le délai expire : $time"
timeout(rich): $mod $user a expiré dans le temps pour ${time}
"@timeout":
description: Message de chat indiquant les événements de dépassement de délai
ended: STREAM ENDED
"@ended":
description: Stream ended footer at bottom of chat
zap(rich): $user a zappé $amount sats
"@zap":
description: Message de chat montrant des zaps de flux
write:
label: Message écrit
"@label":
description: Étiquette sur la boîte de saisie du message de chat
no_signer: Impossible d'écrire des messages avec le login npub
"@no_signer":
description: Message d'entrée du chat affiché lorsque l'utilisateur n'est
connecté qu'avec pubkey
login: Veuillez vous connecter pour envoyer des messages
"@login":
description: Message d'entrée du chat affiché lorsque l'utilisateur est déconnecté
badge:
awarded_to: "Attribué à :"
"@awarded_to":
description: Titre sur la liste des utilisateurs qui ont reçu un badge
raid:
to: RAIDING $name
"@to":
description: Message de raid par chat vers un autre flux
from: RAID FROM $name
"@from":
description: Message de raid sur le chat à partir d'un autre flux
countdown: Raid sur $time
"@countdown":
description: Compte à rebours pour l'auto-raid
goal:
title: "Objectif : $amount"
remaining: "Reste : $amount"
complete: COMPLET
button:
login: Se Connecter
logout: Se déconnecter
edit_profile: Modifier le Profil
"@login":
description: Texte du bouton de connexion
follow: Suivre
"@follow":
description: Texte du bouton de suivi
unfollow: Ne plus suivre
"@unfollow":
description: Texte du bouton pour le bouton "unfollow
mute: Muet
unmute: Retirer sourdine
share: Partager
save: Sauvegarder
connect: Connecter
settings: Paramètres
embed:
article_by: Article par $name
note_by: Note par $name
live_stream_by: Retransmission en direct sur $name
stream_list:
following: Abonnements
live: En direct
planned: Planifié
ended: Terminé
"@stream_list":
description: Rubriques sur les listes de flux par type de flux en direct/fini/prévu, etc.
zap:
title: Zap $name
custom_amount: Montant personnalisé
confirm: Confirmer
comment: Commenter
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
no_wallet: Pas de porte-monnaie électronique installé
no_lud16: Pas d'adresse éclair trouvée
profile:
past_streams: Streams passés
settings:
button_profile: Modifier le profil
button_wallet: Paramètres du portefeuille
profile:
display_name: Nom d'affichage
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
balance: Équilibre
name: Portefeuille
error:
logged_out: Impossible de se connecter au portefeuille lorsque l'on est déconnecté
nwc_auth_event_not_found: Aucun événement d'authentification de portefeuille n'a été trouvé
login:
username: Nom dutilisateur
amber: Se connecter avec Amber
key: Connexion avec la clé
create: Créer un Compte
error:
invalid_key: Clé non valide
live:
start: GO LIVE
configure_stream: Configurer le flux
endpoint: Point final
accept_tos: Accepter les CGU
balance_left:
zero:
other: ~${time}
title: Titre
summary: Résumé
image: Image de couverture
tags: Tags
nsfw: Contenu NSFW
nsfw_description: Cochez cette case si ce flux contient de la nudité ou du
contenu pornographique.
error:
failed: Échec du flux
connection_error: Erreur de connexion
start_failed: Le démarrage du flux a échoué, veuillez vérifier votre solde

View File

@ -0,0 +1,136 @@
upload_avatar: Avatár feltöltése
"@upload_avatar":
description: Szöveg, amely arra kéri a felhasználót, hogy a feltöltés
megkezdéséhez nyomja meg az avatar helyőrzőt
most_zapped_streamers: A legtöbb Zapped Streamers
"@most_zapped_streamers":
description: Irány a felsorolt top streamerek fölött zaps által
no_user_found: Nem talált felhasználó
"@no_user_found":
description: Kereséskor nem talált felhasználó
anon: Névtelen
viewers:
one: 1 néző
other: ${n:decimalPattern} nézők
"@viewers":
description: A stream nézőinek száma
"@anon":
description: Egy névtelen felhasználó
stream:
status:
live: ÉLŐ
ended: ENDED
planned: TERVEZETT
started: Elindult $timestamp
notification: ${name} elindult!
chat:
disabled: CHAT KIKAPCSOLVA
disabled_timeout: "Az időkorlát lejár: $time"
timeout(rich): $mod időzített $user a ${time}számára
"@timeout":
description: Chat üzenet az időkorlátos események megjelenítésével
ended: STREAM MEGSZÜNTETETT
"@ended":
description: A stream véget ért lábléc a chat alján
zap(rich): $user zap-elt $amount sats
"@zap":
description: Csevegőüzenet, amely stream zapokat mutat
write:
label: Üzenet írása
"@label":
description: Címke a csevegőüzenet beviteli mezőjén
no_signer: Nem tud üzeneteket írni az npub bejelentkezéssel
"@no_signer":
description: A csevegés bemeneti üzenete megjelenik, ha a felhasználó csak
pubkey-vel van bejelentkezve
login: Kérjük, jelentkezzen be az üzenetek küldéséhez
"@login":
description: A felhasználó kijelentkezésekor megjelenő csevegési beviteli üzenet
badge:
awarded_to: "Elnyerte:"
"@awarded_to":
description: Fejléc a jelvényt kapott felhasználók listája fölött
raid:
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":
description: Visszaszámláló időzítő az automatikus lovagláshoz
goal:
title: "Cél: $amount"
remaining: "Maradék: $amount"
complete: TELJES
button:
login: Bejelentkezés
logout: Kijelentkezés
edit_profile: Profil szerkesztése
"@login":
description: A bejelentkezési gomb szövege
follow: Követés
"@follow":
description: A követés gomb szövege
unfollow: Követés megszüntetése
"@unfollow":
description: A követés megszüntetése gomb szövege
mute: Némítás
unmute: Némítás visszavonása
share: Megosztás
save: Mentés
connect: Csatlakozás
settings: Beállítások
embed:
article_by: Cikk ${name}
note_by: $name bejegyzése
live_stream_by: Élő közvetítés a ${name} oldalon
stream_list:
following: Követettek bejegyzései
live: Élő
planned: Tervezett
ended: Véget ért
"@stream_list":
description: A stream-listák címsorai stream-típusonként élő/befejezett/tervezett stb.
zap:
title: Zap $name
custom_amount: Egyéni összeg
confirm: Megerősítés
comment: Hozzászólás
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
no_wallet: Nincs telepített villám tárca
no_lud16: Nem talált villámcím
profile:
past_streams: Múltbeli Streamek
settings:
button_profile: Profil szerkesztése
button_wallet: Pénztárca beállítások
profile:
display_name: Megjelenített név
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
key: Bejelentkezés kulccsal
create: Fiók Létrehozása
error:
invalid_key: Érvénytelen kulcs

View File

@ -0,0 +1,158 @@
upload_avatar: Carica Avatar
"@upload_avatar":
description: Testo che richiede all'utente di premere il segnaposto dell'avatar
per iniziare il caricamento
most_zapped_streamers: Il maggior numero di streamer bloccati
"@most_zapped_streamers":
description: Direzione sopra elencata top streamers da zaps
no_user_found: Nessun utente trovato
"@no_user_found":
description: Nessun utente trovato durante la ricerca
anon: Anonimo
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 spettatore
other: ${n:decimalPattern} spettatori
"@viewers":
description: Numero di spettatori del flusso
"@anon":
description: Un utente anonimo
stream:
status:
live: IN DIRETTA
ended: FINE
planned: PREVISTO
started: Avviato $timestamp
notification: ${name} è andato in onda!
chat:
disabled: CHAT DISABILITATA
disabled_timeout: "Il timeout scade: $time"
timeout(rich): $mod time out $user per ${time}
"@timeout":
description: Messaggio di chat che mostra gli eventi di timeout
ended: STREAM ENDED
"@ended":
description: Il flusso si è concluso con un piè di pagina in fondo alla chat
zap(rich): $user ha effettuato uno zap di $amount sats
"@zap":
description: Messaggio di chat che mostra gli zap del flusso
write:
label: Scrivi il messaggio
"@label":
description: Etichetta della casella di immissione del messaggio di chat
no_signer: Impossibile scrivere messaggi con il login npub
"@no_signer":
description: Messaggio di ingresso alla chat mostrato quando l'utente è connesso
solo con la pubkey
login: Effettuare il login per inviare messaggi
"@login":
description: Messaggio di input della chat mostrato quando l'utente è disconnesso
badge:
awarded_to: "Assegnato a:"
"@awarded_to":
description: Intestazione dell'elenco degli utenti a cui è stato assegnato un badge
raid:
to: RAIDING $name
"@to":
description: Messaggio di chat raid in un altro flusso
from: RAID DA $name
"@from":
description: Messaggio di chat raid da un altro flusso
countdown: Raid in $time
"@countdown":
description: Timer per il conto alla rovescia per l'auto-raid
goal:
title: "Obiettivo: $amount"
remaining: "Restante: $amount"
complete: COMPLETO
button:
login: Login
logout: Logout
edit_profile: Modifica profilo
"@login":
description: Testo del pulsante per il pulsante di accesso
follow: Segui
"@follow":
description: Testo del pulsante per il pulsante Segui
unfollow: Smetti di seguire
"@unfollow":
description: Testo del pulsante per il pulsante unfollow
mute: Silenzia
unmute: Riattiva
share: Condividi
save: Salva
connect: Collegare
settings: Impostazioni
embed:
article_by: Articolo di $name
note_by: Nota di $name
live_stream_by: Streaming in diretta da $name
stream_list:
following: Seguiti
live: Dal vivo
planned: Pianificato
ended: Terminato
"@stream_list":
description: Titoli sugli elenchi dei flussi per tipo di flusso
live/finito/pianificato ecc.
zap:
title: Zap $name
custom_amount: Importo personalizzato
confirm: Conferma
comment: Commenta
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
no_wallet: Nessun portafoglio Lightning installato
no_lud16: Nessun indirizzo di fulmine trovato
profile:
past_streams: Flussi passati
settings:
button_profile: Modifica profilo
button_wallet: Impostazioni del portafoglio
profile:
display_name: Nome visualizzato
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
balance: Equilibrio
name: Portafoglio
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
key: Accesso con chiave
create: Crea un account
error:
invalid_key: Chiave non valida
live:
start: VAI IN DIRETTA
configure_stream: Configurare il flusso
endpoint: Punto finale
accept_tos: Accettare i TOS
balance_left:
zero:
other: ~${time}
title: Titolo
summary: Sintesi
image: Immagine di copertina
tags: Tag
nsfw: Contenuto NSFW
nsfw_description: Controllare qui se questo streaming contiene nudità o contenuti pornografici.
error:
failed: Flusso fallito
connection_error: Errore di connessione
start_failed: Avvio del flusso fallito, controllare il saldo

View File

@ -0,0 +1,155 @@
upload_avatar: 画像アップロード
"@upload_avatar":
description: アバターのプレースホルダーを押してアップロードを開始するよう促すテキスト
most_zapped_streamers: 最もザッピングされたストリーマー
"@most_zapped_streamers":
description: ザップによるリストの上のストリーマーに向かう
no_user_found: ユーザーが見つかりません
"@no_user_found":
description: 検索してもユーザーが見つからない
anon: 匿名
full_amount_sats: "${n:decimalPattern} サッツ"
viewers:
one: 1 視聴者
other: ${n:decimalPattern} 人が視聴中
"@viewers":
description: ストリームの視聴者数
"@anon":
description: 匿名ユーザー
stream:
status:
live: ライブ
ended: 終了
planned: 予定
started: $timestamp を開始
notification: ${name} がライブを開始した!
chat:
disabled: チャット無効
disabled_timeout: タイムアウト: $time
timeout(rich): $mod タイムアウト $user for ${time}
"@timeout":
description: タイムアウトイベントを表示するチャットメッセージ
ended: 配信終了
"@ended":
description: チャットの下にストリーム終了のフッター
zap(rich): $user が $amount sats をザップしました
"@zap":
description: ストリームのザッピングを表示するチャットメッセージ
write:
label: メッセージを書く
"@label":
description: チャットメッセージ入力ボックスのラベル
no_signer: npubログインでメッセージが書けない
"@no_signer":
description: ユーザーがpubkeyのみでログインしている場合に表示されるチャット入力メッセージ
login: メッセージを送信するにはログインしてください
"@login":
description: ログアウト時に表示されるチャット入力メッセージ
badge:
awarded_to: 受賞者
"@awarded_to":
description: バッジを授与されたユーザーのリスト上の見出し
raid:
to: RAIDING $name
"@to":
description: 別のストリームへのチャット襲撃メッセージ
from: RAID FROM $name
"@from":
description: 他のストリームからのチャット襲撃メッセージ
countdown: $timeにおける襲撃
"@countdown":
description: 自動騎乗のカウントダウン・タイマー
goal:
title: 目標額: $amount
remaining: 残り: $amount
complete: 完了
button:
login: ログイン
logout: ログアウト
edit_profile: プロフィールを編集
"@login":
description: ログインボタンのテキスト
follow: フォロー
"@follow":
description: フォローボタンのテキスト
unfollow: フォロー解除
"@unfollow":
description: フォロー解除ボタンのテキスト
mute: ミュート
unmute: ミュート解除
share: 共有
save: 保存
connect: 接続
settings: 設定
embed:
article_by: 記事: $name
note_by: $name の投稿
live_stream_by: ライブ・ストリーム $name
stream_list:
following: フォロー中
live: ライブ配信中
planned: 予定あり
ended: 終了しました
"@stream_list":
description: ライブ/終了/予定など、ストリーム・タイプ別のストリーム・リストの見出し。
zap:
title: $name をザップ
custom_amount: カスタム金額
confirm: 確認
comment: コメント
button_zap_ready: $amount satsをザップする
button_zap: ザップ
button_open_wallet: ウォレットで開く
button_connect_wallet: コネクトウォレット
copy: クリップボードにコピー
error:
invalid_custom_amount: 無効なカスタム金額
no_wallet: Lightningウォレット未装着
no_lud16: 雷アドレスが見つかりません
profile:
past_streams: 過去の配信
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を貼り付ける
balance: バランス
name: 財布
error:
logged_out: ログアウト時にウォレットに接続できない
nwc_auth_event_not_found: ウォレットの認証イベントが見つかりません
login:
username: ユーザー名
amber: 琥珀でログイン
key: キーでログイン
create: アカウントを作成する
error:
invalid_key: 無効なキー
live:
start: ライブ中継
configure_stream: ストリームの設定
endpoint: エンドポイント
accept_tos: TOSを受け入れる
balance_left:
zero:
other: ~${time}
title: タイトル
summary: 概要
image: 表紙画像
tags: タグ
nsfw: NSFWコンテンツ
nsfw_description: このストリームにヌードやポルノが含まれている場合は、ここをチェックしてください。
error:
failed: ストリーム失敗
connection_error: 接続エラー
start_failed: ストリームの開始に失敗しました。

View File

@ -0,0 +1,155 @@
upload_avatar: 아바타 업로드
"@upload_avatar":
description: 아바타 플레이스홀더를 눌러 업로드를 시작하라는 메시지를 표시하는 텍스트
most_zapped_streamers: 가장 많이 재핑된 스트리머
"@most_zapped_streamers":
description: 나열된 상위 스트리머를 잽별로 살펴보기
no_user_found: 사용자를 찾을 수 없습니다.
"@no_user_found":
description: 검색 시 사용자를 찾을 수 없음
anon: Anon
full_amount_sats: "${n:decimalPattern} sats"
viewers:
one: 시청자 1명
other: "{n:decimalPattern} 시청자"
"@viewers":
description: 스트림 시청자 수
"@anon":
description: 익명 사용자
stream:
status:
live: 라이브
ended: 종료
planned: 계획된
started: 시작 $timestamp
notification: ${name} 라이브가 시작되었습니다!
chat:
disabled: 채팅 사용 안 함
disabled_timeout: "시간 초과가 만료되었습니다: $time"
timeout(rich): $mod 시간 초과됨 $user ${time}
"@timeout":
description: 시간 초과 이벤트를 표시하는 채팅 메시지
ended: 스트림 종료
"@ended":
description: 채팅 하단의 스트림 종료 푸터
zap(rich): $user ZAPP $amount SATS
"@zap":
description: 채팅 메시지 스트림 끊김 표시
write:
label: 메시지 작성
"@label":
description: 채팅 메시지 입력 상자의 라벨
no_signer: npub 로그인으로 메시지를 작성할 수 없습니다.
"@no_signer":
description: 사용자가 공개 키로만 로그인한 경우에 표시되는 채팅 입력 메시지
login: 메시지를 보내려면 로그인하세요.
"@login":
description: 사용자가 로그아웃할 때 표시되는 채팅 입력 메시지
badge:
awarded_to: 수상 대상
"@awarded_to":
description: 배지를 받은 사용자 목록으로 이동하기
raid:
to: RAIDing $name
"@to":
description: 다른 스트림으로 채팅 레이드 메시지 보내기
from: RAID FROM $name
"@from":
description: 다른 스트림의 채팅 레이드 메시지
countdown: $time에서 레이드
"@countdown":
description: 자동 레이드를 위한 카운트다운 타이머
goal:
title: "목표: $amount"
remaining: "남음: $amount"
complete: 완료
button:
login: 로그인
logout: 로그아웃
edit_profile: 프로필 수정
"@login":
description: 로그인 버튼의 버튼 텍스트
follow: 팔로우
"@follow":
description: 팔로우 버튼의 버튼 텍스트
unfollow: 언팔로우
"@unfollow":
description: 언팔로우 버튼의 버튼 텍스트
mute: 뮤트
unmute: 뮤트 해제
share: 공유
save: 저장
connect: 연결
settings: 설정
embed:
article_by: "작성자: $name"
note_by: "노트 작성됨: $name"
live_stream_by: "라이브 스트리밍: $name"
stream_list:
following: 팔로잉
live: 라이브
planned: 계획된
ended: 종료됨
"@stream_list":
description: 실시간/종료/예정 등 스트림 유형별로 스트림 목록의 제목을 표시합니다.
zap:
title: Zap $name
custom_amount: 사용자 지정 금액
confirm: 확인
comment: 댓글
button_zap_ready: Zap $amount sats
button_zap: Zap
button_open_wallet: 지갑에서 열기
button_connect_wallet: 지갑 연결
copy: 클립보드에 복사
error:
invalid_custom_amount: 잘못된 사용자 지정 금액
no_wallet: 라이트닝 월렛이 설치되지 않았습니다.
no_lud16: 번개 주소를 찾을 수 없습니다.
profile:
past_streams: 과거 스트림
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 붙여넣기
balance: 잔액
name: 지갑
error:
logged_out: 로그아웃 시 지갑 연결 불가
nwc_auth_event_not_found: 지갑 인증 이벤트를 찾을 수 없습니다.
login:
username: 사용자 이름
amber: Amber로 로그인
key: 키로 로그인
create: 계정 만들기
error:
invalid_key: 잘못된 키
live:
start: 라이브 시작하기
configure_stream: 스트림 구성
endpoint: 엔드포인트
accept_tos: TOS 수락
balance_left:
zero:
other: ~${time}
title: 제목
summary: 요약
image: 표지 이미지
tags: 태그
nsfw: NSFW 콘텐츠
nsfw_description: 이 스트림에 노출 또는 음란 콘텐츠가 포함되어 있는지 여기에서 확인하세요.
error:
failed: 스트림 실패
connection_error: 연결 오류
start_failed: 스트림 시작에 실패했습니다. 잔액을 확인해 주세요.

View File

@ -0,0 +1,158 @@
upload_avatar: Avatar uploaden
"@upload_avatar":
description: Tekst die de gebruiker vraagt om op de avatar-plaatshouder te
klikken om te beginnen met uploaden
most_zapped_streamers: Meeste Zapped Streamers
"@most_zapped_streamers":
description: Koers over beursgenoteerde topstreamers door zaps
no_user_found: Geen gebruiker gevonden
"@no_user_found":
description: Geen gebruiker gevonden bij het zoeken
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 kijker
other: ${n:decimalPattern} kijkers
"@viewers":
description: Aantal kijkers van de stream
"@anon":
description: Een anonieme gebruiker
stream:
status:
live: LIVE
ended: GESLOTEN
planned: GEPLAND
started: Begonnen met $timestamp
notification: ${name} ging live!
chat:
disabled: CHAT UITGESCHAKELD
disabled_timeout: "Time-out loopt af: $time"
timeout(rich): $mod timed out $user voor ${time}
"@timeout":
description: Chatbericht met time-outgebeurtenissen
ended: STREAM BEËINDIGD
"@ended":
description: Voettekst einde stream onderaan chat
zap(rich): $user zapped $amount sats
"@zap":
description: Chatbericht met stream zaps
write:
label: Schrijf bericht
"@label":
description: Label op het invoerveld voor chatberichten
no_signer: Kan geen berichten schrijven met npub login
"@no_signer":
description: Chatinvoerbericht getoond wanneer de gebruiker alleen is ingelogd
met pubkey
login: Log in om berichten te verzenden
"@login":
description: Chatinvoerbericht dat wordt weergegeven wanneer de gebruiker is
uitgelogd
badge:
awarded_to: "Toegekend aan:"
"@awarded_to":
description: Kop boven de lijst met gebruikers die een badge hebben gekregen
raid:
to: RAIDING $name
"@to":
description: Chat raid bericht naar een andere stream
from: RAID VAN $name
"@from":
description: Chat invalbericht van een andere stream
countdown: Overvallen in $time
"@countdown":
description: Afteltimer voor automatisch rijden
goal:
title: "Doel: $amount"
remaining: "Overblijvend: $amount"
complete: COMPLETE
button:
login: Inloggen
logout: Uitloggen
edit_profile: Bewerk Profiel
"@login":
description: Knoptekst voor de aanmeldknop
follow: Volgen
"@follow":
description: Knoptekst voor de volgknop
unfollow: Ontvolgen
"@unfollow":
description: Knoptekst voor de knop Ontvolgen
mute: Dempen
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
live_stream_by: Live stream via $name
stream_list:
following: Volgt
live: Live
planned: Gepland
ended: Beëindigd
"@stream_list":
description: Rubrieken op streamlijsten per streamtype live/beëindigd/gepland etc.
zap:
title: Zap $name
custom_amount: Aangepast bedrag
confirm: Bevestig
comment: Opmerking
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
no_wallet: Geen bliksemportemonnee geïnstalleerd
no_lud16: Geen bliksemadres gevonden
profile:
past_streams: Afgelopen Streams
settings:
button_profile: Profiel bewerken
button_wallet: Portemonnee-instellingen
profile:
display_name: Naam weergeven
about: Over
nip05: Nostr 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
balance: Saldo
name: Portemonnee
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
key: Inloggen met sleutel
create: Account aanmaken
error:
invalid_key: Ongeldige sleutel
live:
start: LIVE GAAN
configure_stream: Stream configureren
endpoint: Eindpunt
accept_tos: TOS accepteren
balance_left:
zero:
other: ~${time}
title: Titel
summary: Samenvatting
image: Afbeelding omslag
tags: Tags
nsfw: NSFW-inhoud
nsfw_description: Controleer hier of deze stream naaktheid of pornografische inhoud bevat.
error:
failed: Stream mislukt
connection_error: Fout bij verbinding
start_failed: Stream start mislukt, controleer uw saldo

View File

@ -0,0 +1,158 @@
upload_avatar: Prześlij awatar
"@upload_avatar":
description: Tekst zachęcający użytkownika do kliknięcia symbolu zastępczego
awatara w celu rozpoczęcia przesyłania.
most_zapped_streamers: Większość zapped streamerów
"@most_zapped_streamers":
description: Przechodzenie nad wymienionymi topowymi streamerami przez zapy
no_user_found: Nie znaleziono użytkownika
"@no_user_found":
description: Nie znaleziono użytkownika podczas wyszukiwania
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 przeglądarka
other: "{n:decimalPattern} widzów"
"@viewers":
description: Liczba widzów strumienia
"@anon":
description: Anonimowy użytkownik
stream:
status:
live: NA ŻYWO
ended: ZAKOŃCZONY
planned: PLANOWANE
started: Start $timestamp
notification: ${name} został uruchomiony!
chat:
disabled: CZAT WYŁĄCZONY
disabled_timeout: "Upłynął limit czasu: $time"
timeout(rich): $mod upłynął limit czasu $user dla ${time}
"@timeout":
description: Komunikat czatu pokazujący zdarzenia przekroczenia limitu czasu
ended: TRANSMISJA ZAKOŃCZONA
"@ended":
description: Stream zakończył stopkę na dole czatu
zap(rich): $user zapped $amount sats
"@zap":
description: Wiadomość na czacie pokazująca zapy strumienia
write:
label: Napisz wiadomość
"@label":
description: Etykieta w polu wprowadzania wiadomości czatu
no_signer: Nie można pisać wiadomości z loginem npub
"@no_signer":
description: Komunikat wejściowy czatu wyświetlany, gdy użytkownik jest
zalogowany tylko za pomocą klucza pubkey
login: Zaloguj się, aby wysyłać wiadomości
"@login":
description: Komunikat wejściowy czatu wyświetlany, gdy użytkownik jest wylogowany
badge:
awarded_to: "Przyznano:"
"@awarded_to":
description: Nagłówek nad listą użytkowników, którzy otrzymali odznakę
raid:
to: RAIDING $name
"@to":
description: Przesyłanie wiadomości na czacie do innego strumienia
from: RAID Z $name
"@from":
description: Nalot na czat z innego strumienia
countdown: Naloty w $time
"@countdown":
description: Zegar odliczający czas do automatycznej jazdy
goal:
title: "Cel: $amount"
remaining: "Pozostałe: $amount"
complete: ZAKOŃCZONE
button:
login: Logowanie
logout: Wylogowanie
edit_profile: Edytuj profil
"@login":
description: Tekst przycisku logowania
follow: Śledź
"@follow":
description: Tekst przycisku dla przycisku śledzenia
unfollow: Nie obserwuj
"@unfollow":
description: Tekst przycisku cofnięcia obserwowania
mute: Wyciszenie
unmute: Wyłącz wyciszenie
share: Udział
save: Zapisz
connect: Połączenie
settings: Ustawienia
embed:
article_by: Artykuł autorstwa $name
note_by: Uwaga $name
live_stream_by: Transmisja na żywo przez $name
stream_list:
following: Następujący
live: Na żywo
planned: Planowane
ended: Zakończony
"@stream_list":
description: Nagłówki na listach strumieni według typu strumienia na żywo /
zakończony / planowany itp.
zap:
title: Zap $name
custom_amount: Kwota niestandardowa
confirm: Potwierdzenie
comment: Komentarz
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
no_wallet: Brak zainstalowanego portfela Lightning
no_lud16: Nie znaleziono adresu pioruna
profile:
past_streams: Poprzednie strumienie
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
balance: Równowaga
name: Portfel
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
key: Logowanie za pomocą klucza
create: Utwórz konto
error:
invalid_key: Nieprawidłowy klucz
live:
start: GO LIVE
configure_stream: Konfiguracja strumienia
endpoint: Punkt końcowy
accept_tos: Zaakceptuj Regulamin
balance_left:
zero:
other: ~${time}
title: Tytuł
summary: Podsumowanie
image: Obraz na okładce
tags: Tagi
nsfw: Treści NSFW
nsfw_description: Sprawdź tutaj, czy ten stream zawiera nagość lub treści pornograficzne.
error:
failed: Strumień nie powiódł się
connection_error: Błąd połączenia
start_failed: Uruchomienie strumienia nie powiodło się, sprawdź saldo

View File

@ -0,0 +1,158 @@
upload_avatar: Carregar Avatar
"@upload_avatar":
description: Texto solicitando que o usuário clique no espaço reservado do
avatar para iniciar o upload
most_zapped_streamers: Streamers mais afetados
"@most_zapped_streamers":
description: Dirigindo-se para as principais serpentinas listadas por zaps
no_user_found: Nenhum usuário encontrado
"@no_user_found":
description: Nenhum usuário foi encontrado durante a pesquisa
anon: Anônimo
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 visualizador
other: ${n:decimalPattern} espectadores
"@viewers":
description: Número de espectadores da transmissão
"@anon":
description: Um usuário anônimo
stream:
status:
live: AO VIVO
ended: FINALIZADO
planned: PLANEJADO
started: Iniciado em $timestamp
notification: ${name} foi ao ar!
chat:
disabled: BATE-PAPO DESATIVADO
disabled_timeout: "O tempo limite expira: $time"
timeout(rich): $mod Tempo esgotado $user para ${time}
"@timeout":
description: Mensagem de bate-papo mostrando eventos de tempo limite
ended: TRANSMISSÃO ENCERRADA
"@ended":
description: O rodapé do fluxo terminou na parte inferior do bate-papo
zap(rich): $user zapeou $amount sats
"@zap":
description: Mensagem de bate-papo mostrando zaps de fluxo
write:
label: Escrever mensagem
"@label":
description: Rótulo na caixa de entrada da mensagem de bate-papo
no_signer: Não é possível escrever mensagens com o login do npub
"@no_signer":
description: Mensagem de entrada de bate-papo exibida quando o usuário está
conectado apenas com a pubkey
login: Faça login para enviar mensagens
"@login":
description: Mensagem de entrada de chat exibida quando o usuário está desconectado
badge:
awarded_to: "Prêmio concedido a:"
"@awarded_to":
description: Cabeçalho sobre a lista de usuários que receberam um emblema
raid:
to: RAIDING $name
"@to":
description: Mensagem de invasão de bate-papo para outro fluxo
from: RAID DE $name
"@from":
description: Mensagem de invasão de bate-papo de outro fluxo
countdown: Incursões em $time
"@countdown":
description: Cronômetro de contagem regressiva para o ataque automático
goal:
title: "Meta: $amount"
remaining: "Restante: $amount"
complete: COMPLETO
button:
login: Entrar
logout: Sair
edit_profile: Editar perfil
"@login":
description: Texto do botão para o botão de login
follow: Seguir
"@follow":
description: Texto do botão para o botão Seguir
unfollow: Deixar de seguir
"@unfollow":
description: Texto do botão para o botão deixar de seguir
mute: Silenciar
unmute: Desmutar
share: Compartilhar
save: Salvar
connect: Conectar
settings: Configurações
embed:
article_by: Artigo de $name
note_by: Nota de $name
live_stream_by: Transmissão ao vivo pelo site $name
stream_list:
following: Seguindo
live: Ao vivo
planned: Planejado
ended: Encerrado
"@stream_list":
description: Cabeçalhos nas listas de transmissões por tipo de transmissão ao
vivo/terminada/planejada etc.
zap:
title: Zap $name
custom_amount: Valor personalizado
confirm: Confirmar
comment: Comentar
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
no_wallet: Nenhuma carteira lightning instalada
no_lud16: Nenhum endereço de raio encontrado
profile:
past_streams: Transmissões Passadas
settings:
button_profile: Editar perfil
button_wallet: Configurações da carteira
profile:
display_name: Nome de exibição
about: Sobre
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
balance: Equilíbrio
name: Carteira
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
key: Login com chave
create: Criar Conta
error:
invalid_key: Chave inválida
live:
start: GO LIVE
configure_stream: Configurar fluxo
endpoint: Ponto final
accept_tos: Aceitar os Termos de Serviço
balance_left:
zero:
other: ~${time}
title: Título
summary: Resumo
image: Imagem da capa
tags: Tags
nsfw: Conteúdo NSFW
nsfw_description: Verifique aqui se essa transmissão contém nudez ou conteúdo pornográfico.
error:
failed: O fluxo falhou
connection_error: Erro de conexão
start_failed: Falha no início do fluxo, verifique seu saldo

View File

@ -0,0 +1,159 @@
upload_avatar: Încărcați Avatar
"@upload_avatar":
description: Text care solicită utilizatorului să atingă marcajul avatar pentru
a începe încărcarea
most_zapped_streamers: Cele mai multe Streamers Zapped
"@most_zapped_streamers":
description: Cap peste streamers de top enumerate de zaps
no_user_found: Niciun utilizator găsit
"@no_user_found":
description: Nu s-a găsit niciun utilizator la căutare
anon: Anon
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 vizualizator
other: ${n:decimalPattern} telespectatori
"@viewers":
description: Numărul de telespectatori ai fluxului
"@anon":
description: Un utilizator anonim
stream:
status:
live: ÎN DIRECT
ended: TERMINAT
planned: PLANIFICATE
started: A început $timestamp
notification: ${name} a intrat în direct!
chat:
disabled: CHAT DEZACTIVAT
disabled_timeout: "Timpul expiră: $time"
timeout(rich): $mod Timed out $user pentru ${time}
"@timeout":
description: Mesaj de chat care afișează evenimentele de timeout
ended: STREAM ÎNCHEIAT
"@ended":
description: Stream a încheiat footer-ul în partea de jos a chat-ului
zap(rich): $user zapped $amount sats
"@zap":
description: Mesaj de chat care arată zapsuri de flux
write:
label: Scrieți mesajul
"@label":
description: Etichetă pe caseta de introducere a mesajului de chat
no_signer: Nu se pot scrie mesaje cu autentificarea npub
"@no_signer":
description: Mesajul de intrare în chat afișat atunci când utilizatorul este
conectat doar cu pubkey
login: Vă rugăm să vă autentificați pentru a trimite mesaje
"@login":
description: Mesajul de intrare în chat afișat atunci când utilizatorul este
deconectat
badge:
awarded_to: "Premiat pentru:"
"@awarded_to":
description: Antet peste lista de utilizatori care au primit o insignă
raid:
to: RAIDING $name
"@to":
description: Chat mesaj raid la un alt flux
from: RAID DE LA $name
"@from":
description: Chat raid mesaj din alt flux
countdown: Raiduri în $time
"@countdown":
description: Cronometru cu numărătoare inversă pentru auto-raid
goal:
title: "Obiectiv: $amount"
remaining: "Rămase: $amount"
complete: COMPLET
button:
login: Autentificare
logout: Ieșire
edit_profile: Editare profil
"@login":
description: Textul butonului pentru butonul de conectare
follow: Urmați
"@follow":
description: Textul butonului pentru butonul de urmărire
unfollow: Unfollow
"@unfollow":
description: Textul butonului pentru butonul unfollow
mute: Mut
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
live_stream_by: Transmisiune live prin $name
stream_list:
following: În urma
live: În direct
planned: Planificate
ended: Încheiat
"@stream_list":
description: Rubrici pe listele de fluxuri în funcție de tipul fluxului în
direct/terminat/planificat etc.
zap:
title: Zap $name
custom_amount: Sumă personalizată
confirm: Confirmați
comment: Comentariu
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ă
no_wallet: Nu este instalat niciun portofel Lightning
no_lud16: Nu a fost găsită nicio adresă de fulgere
profile:
past_streams: Fluxuri trecute
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
balance: Echilibru
name: Portofel
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
key: Autentificare cu cheie
create: Creare cont
error:
invalid_key: Cheie invalidă
live:
start: GO LIVE
configure_stream: Configurați fluxul
endpoint: Punct final
accept_tos: Acceptați TOS
balance_left:
zero:
other: ~${time}
title: Titlu
summary: Rezumat
image: Imagine de copertă
tags: Etichete
nsfw: Conținut NSFW
nsfw_description: Bifați aici dacă acest flux conține nuditate sau conținut pornografic.
error:
failed: Fluxul a eșuat
connection_error: Eroare de conectare
start_failed: Pornirea fluxului a eșuat, vă rugăm să verificați soldul

View File

@ -0,0 +1,160 @@
upload_avatar: Загрузить аватар
"@upload_avatar":
description: Текст, побуждающий пользователя нажать кнопку с изображением
аватара, чтобы начать загрузку
most_zapped_streamers: Самые прыткие стримеры
"@most_zapped_streamers":
description: Направляясь по перечисленным верхним стримерам с помощью запс
no_user_found: Пользователь не найден
"@no_user_found":
description: Пользователь не найден при поиске
anon: Аноним
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 зритель
other: ${n:decimalPattern} зрителей
"@viewers":
description: Количество зрителей потока
"@anon":
description: Анонимный пользователь
stream:
status:
live: LIVE
ended: КОНЕЦ
planned: ПЛАНИРУЕМЫЙ
started: Начало $timestamp
notification: ${name} запустился!
chat:
disabled: ЧАТ ОТКЛЮЧЕН
disabled_timeout: "Таймаут истекает: $time"
timeout(rich): $mod тайм-аут $user для ${time}
"@timeout":
description: Сообщение в чате, показывающее события по тайм-ауту
ended: ТРАНСЛЯЦИЯ ОКОНЧЕНА
"@ended":
description: Поток закончился в нижней части чата
zap(rich): $user запнул $amount сат
"@zap":
description: Сообщение в чате, отображающее потоковые зазоры
write:
label: Написать сообщение
"@label":
description: Надпись на поле ввода сообщения чата
no_signer: Невозможно писать сообщения с логином npub
"@no_signer":
description: Сообщение о входе в чат, отображаемое при входе пользователя только
с pubkey
login: Пожалуйста, войдите в систему, чтобы отправлять сообщения
"@login":
description: Сообщение о входе в чат, отображаемое при выходе пользователя из
системы
badge:
awarded_to: "Награждается:"
"@awarded_to":
description: Заголовок над списком пользователей, награжденных значком
raid:
to: RAIDING $name
"@to":
description: Сообщение о рейде в чате в другой поток
from: RAID FROM $name
"@from":
description: Сообщение о рейде в чате из другого потока
countdown: Рейды в $time
"@countdown":
description: Таймер обратного отсчета для автопоездки
goal:
title: "Цель: $amount"
remaining: "Осталось: $amount"
complete: КОМПЛЕКТ
button:
login: Логин
logout: Выйти
edit_profile: Редактировать профиль
"@login":
description: Текст кнопки для входа в систему
follow: Подписаться
"@follow":
description: Текст кнопки для кнопки следования
unfollow: Отписаться
"@unfollow":
description: Текст кнопки для кнопки "Развернуть
mute: Заглушить
unmute: Включить уведомления
share: Поделиться
save: Сохранить
connect: Подключайтесь
settings: Настройки
embed:
article_by: Статья $name
note_by: Заметка на сайте $name
live_stream_by: "Прямая трансляция: $name"
stream_list:
following: Подписки
live: Прямой эфир
planned: Запланировано
ended: Завершено
"@stream_list":
description: Заголовки в списках потоков по типу потока -
живой/законченный/запланированный и т. д.
zap:
title: Запнуть ($name
custom_amount: Пользовательская сумма
confirm: Подтвердить
comment: Комментарий
button_zap_ready: Запнуть $amount сат
button_zap: Зап
button_open_wallet: Открыть в кошельке
button_connect_wallet: Подключить кошелек
copy: Скопировано в буфер обмена
error:
invalid_custom_amount: Недопустимая пользовательская сумма
no_wallet: Кошелек молнии не установлен
no_lud16: Адрес молнии не найден
profile:
past_streams: Предыдущие трансляции
settings:
button_profile: Редактировать профиль
button_wallet: Настройки кошелька
profile:
display_name: Отображаемое имя
about: О сайте
nip05: Адрес Ностр
lud16: Адрес молнии
error:
logged_out: Невозможно редактировать профиль при выходе из системы
wallet:
connect_wallet: Кошелек Connect (NWC nostr+walletconnect://)
disconnect_wallet: Отключить кошелек
connect_1tap: 1-кратное соединение
paste: Вставить URL
balance: Баланс
name: Кошелек
error:
logged_out: Невозможно подключить кошелек при выходе из системы
nwc_auth_event_not_found: Событие аутентификации кошелька не найдено
login:
username: Имя пользователя
amber: Войти с помощью Amber
key: Вход в систему с помощью ключа
create: Создать аккаунт
error:
invalid_key: Неверный ключ
live:
start: ПЕРЕЙТИ В ПРЯМОЙ ЭФИР
configure_stream: Настроить поток
endpoint: Конечная точка
accept_tos: Принять TOS
balance_left:
zero:
other: ~${time}
title: Название
summary: Резюме
image: Изображение на обложке
tags: Теги
nsfw: NSFW-контент
nsfw_description: Отметьте здесь, если этот поток содержит наготу или
порнографические материалы.
error:
failed: Сбой потока
connection_error: Ошибка подключения
start_failed: Запуск потока не удался, пожалуйста, проверьте баланс

View File

@ -0,0 +1,157 @@
upload_avatar: Ladda upp avatar
"@upload_avatar":
description: Text som uppmanar användaren att trycka på avatar platshållaren för
att påbörja uppladdningen
most_zapped_streamers: De flest zappade streamers
"@most_zapped_streamers":
description: Rubrik över listade topp streamers av zaps
no_user_found: Ingen användare hittades
"@no_user_found":
description: Ingen användare hittades vid sökning
anon: Anno
full_amount_sats: ${n:decimalPattern} sats
viewers:
one: 1 tittare
other: ${n:decimalPattern} tittare
"@viewers":
description: Antal tittare på strömmingen
"@anon":
description: En anonym användare
stream:
status:
live: LIVE
ended: AVSLUTAD
planned: PLANERADE
started: Startad $timestamp
notification: ${name} gick live!
chat:
disabled: CHAT AVSTÄNGD
disabled_timeout: "Tidsgränsen går ut: $time"
timeout(rich): $mod tidsbegränsad $user för ${time}
"@timeout":
description: Chattmeddelande som visar timeout-händelser
ended: STREAM AVSLUTAD
"@ended":
description: Streama slutade sidfot längst ned i chatten
zap(rich): $user zapped $amount sats
"@zap":
description: Chattmeddelande som visar strömavbrott
write:
label: Skriv meddelande
"@label":
description: Etikett på inmatningsrutan för chattmeddelanden
no_signer: Det går inte att skriva meddelanden med n-pub inloggning
"@no_signer":
description: Chattinmatningsmeddelande som visas när användaren endast är
inloggad med publik nyckel
login: Logga in för att skicka meddelanden
"@login":
description: Chattinmatningsmeddelande som visas när användaren är utloggad
badge:
awarded_to: "Tilldelas till:"
"@awarded_to":
description: Rubrik över listan över användare som tilldelas ett märke
raid:
to: RAIDING ${name}
"@to":
description: Chatt raid meddelande till en annan ström
from: RAID FRÅN ${name}
"@from":
description: Chatt raid meddelande från en annan ström
countdown: Radiering i ${time}
"@countdown":
description: Nedräkningstimer för auto- radiering
goal:
title: "Mål: $amount"
remaining: "Kvarvarande: $amount"
complete: KOMPLETT
button:
login: Logga in
logout: Logga ut
edit_profile: Redigera profil
"@login":
description: Knapptext för inloggningsknappen
follow: Följ
"@follow":
description: Knapptext för följ-knappen
unfollow: Sluta följa
"@unfollow":
description: Knapptext för sluta följa knappen
mute: Tysta
unmute: Avtysta
share: Dela
save: Spara
connect: Anslut
settings: Inställningar
embed:
article_by: Artikel av ${name}
note_by: Anteckning av $name
live_stream_by: Direktsändning via ${name}
stream_list:
following: Följer
live: Live
planned: Planerade
ended: Avslutade
"@stream_list":
description: Rubriker på strömlistor efter strömtyp live/avslutad/planerad etc.
zap:
title: Zap $name
custom_amount: Anpassat belopp
confirm: Bekräfta
comment: Kommentar
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
no_wallet: Ingen blixtplånbok installerad
no_lud16: Ingen blixtadress hittades
profile:
past_streams: Tidigare streamar
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
error:
logged_out: Kan inte redigera profil när jag är utloggad
wallet:
connect_wallet: Anslut plånbok (NWC nostr+walletconnect://)
disconnect_wallet: Koppla bort plånboken
connect_1tap: 1-tryck anslutning
paste: Klistra in URL
balance: Balans
name: Plånbok
error:
logged_out: Kan inte ansluta plånbok när du är utloggad
nwc_auth_event_not_found: Inget autentiseringshändelse för plånbok hittades
login:
username: Användarnamn
amber: Logga in med Amber
key: Logga in med nyckel
create: Skapa konto
error:
invalid_key: Ogiltig nyckel
live:
start: GÅ DIREKT
configure_stream: Konfigurera ström
endpoint: Slutpunkt
accept_tos: Acceptera TOS
balance_left:
zero:
other: ~${time}
title: Titel
summary: Sammanfattning
image: Omslagsbild
tags: Etiketter
nsfw: NSFW-innehåll
nsfw_description: Markera här om denna stream innehåller nakenhet eller pornografiskt innehåll.
error:
failed: Strömmen misslyckades
connection_error: Anslutningsfel
start_failed: Stream start misslyckades, vänligen kontrollera ditt saldo

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