@streamplace/components 0.9.9 → 0.9.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/assets/badges/live.png +0 -0
  2. package/assets/badges/live_2x.png +0 -0
  3. package/assets/badges/mod.png +0 -0
  4. package/assets/badges/mod_2x.png +0 -0
  5. package/assets/badges/vip.png +0 -0
  6. package/assets/badges/vip_2x.png +0 -0
  7. package/dist/components/chat/badge.d.ts +10 -0
  8. package/dist/components/chat/badge.d.ts.map +1 -0
  9. package/dist/components/chat/badge.js +29 -0
  10. package/dist/components/chat/badge.js.map +1 -0
  11. package/dist/components/chat/chat-box.d.ts +5 -1
  12. package/dist/components/chat/chat-box.d.ts.map +1 -1
  13. package/dist/components/chat/chat-box.js +55 -50
  14. package/dist/components/chat/chat-box.js.map +1 -1
  15. package/dist/components/chat/chat-message.d.ts.map +1 -1
  16. package/dist/components/chat/chat-message.js +16 -11
  17. package/dist/components/chat/chat-message.js.map +1 -1
  18. package/dist/components/chat/chat.d.ts.map +1 -1
  19. package/dist/components/chat/chat.js +35 -41
  20. package/dist/components/chat/chat.js.map +1 -1
  21. package/dist/components/chat/emoji-suggestions.d.ts +7 -18
  22. package/dist/components/chat/emoji-suggestions.d.ts.map +1 -1
  23. package/dist/components/chat/emoji-suggestions.js +6 -2
  24. package/dist/components/chat/emoji-suggestions.js.map +1 -1
  25. package/dist/components/chat/system-message.d.ts.map +1 -1
  26. package/dist/components/chat/system-message.js +9 -1
  27. package/dist/components/chat/system-message.js.map +1 -1
  28. package/dist/components/chat/teleport-modal.d.ts +9 -0
  29. package/dist/components/chat/teleport-modal.d.ts.map +1 -0
  30. package/dist/components/chat/teleport-modal.js +148 -0
  31. package/dist/components/chat/teleport-modal.js.map +1 -0
  32. package/dist/components/chat/user-profile-card.d.ts +12 -0
  33. package/dist/components/chat/user-profile-card.d.ts.map +1 -0
  34. package/dist/components/chat/user-profile-card.js +136 -0
  35. package/dist/components/chat/user-profile-card.js.map +1 -0
  36. package/dist/components/dashboard/chat-panel.d.ts +3 -1
  37. package/dist/components/dashboard/chat-panel.d.ts.map +1 -1
  38. package/dist/components/dashboard/chat-panel.js +2 -2
  39. package/dist/components/dashboard/chat-panel.js.map +1 -1
  40. package/dist/components/dashboard/header.d.ts +1 -1
  41. package/dist/components/dashboard/header.d.ts.map +1 -1
  42. package/dist/components/dashboard/header.js +4 -0
  43. package/dist/components/dashboard/header.js.map +1 -1
  44. package/dist/components/dashboard/information-widget.d.ts.map +1 -1
  45. package/dist/components/dashboard/information-widget.js +13 -11
  46. package/dist/components/dashboard/information-widget.js.map +1 -1
  47. package/dist/components/mobile-player/fullscreen.d.ts.map +1 -1
  48. package/dist/components/mobile-player/fullscreen.js +2 -1
  49. package/dist/components/mobile-player/fullscreen.js.map +1 -1
  50. package/dist/components/mobile-player/fullscreen.native.d.ts.map +1 -1
  51. package/dist/components/mobile-player/fullscreen.native.js +3 -2
  52. package/dist/components/mobile-player/fullscreen.native.js.map +1 -1
  53. package/dist/components/mobile-player/ui/audio-only-overlay.d.ts +2 -0
  54. package/dist/components/mobile-player/ui/audio-only-overlay.d.ts.map +1 -0
  55. package/dist/components/mobile-player/ui/audio-only-overlay.js +29 -0
  56. package/dist/components/mobile-player/ui/audio-only-overlay.js.map +1 -0
  57. package/dist/components/mobile-player/ui/index.d.ts +1 -0
  58. package/dist/components/mobile-player/ui/index.d.ts.map +1 -1
  59. package/dist/components/mobile-player/ui/index.js +1 -0
  60. package/dist/components/mobile-player/ui/index.js.map +1 -1
  61. package/dist/components/mobile-player/ui/input.d.ts +1 -2
  62. package/dist/components/mobile-player/ui/input.d.ts.map +1 -1
  63. package/dist/components/mobile-player/ui/input.js +2 -2
  64. package/dist/components/mobile-player/ui/input.js.map +1 -1
  65. package/dist/components/mobile-player/ui/metrics.d.ts.map +1 -1
  66. package/dist/components/mobile-player/ui/metrics.js +20 -2
  67. package/dist/components/mobile-player/ui/metrics.js.map +1 -1
  68. package/dist/components/mobile-player/ui/viewer-context-menu.d.ts.map +1 -1
  69. package/dist/components/mobile-player/ui/viewer-context-menu.js +29 -1
  70. package/dist/components/mobile-player/ui/viewer-context-menu.js.map +1 -1
  71. package/dist/components/mobile-player/use-webrtc.d.ts +4 -2
  72. package/dist/components/mobile-player/use-webrtc.d.ts.map +1 -1
  73. package/dist/components/mobile-player/use-webrtc.js +89 -15
  74. package/dist/components/mobile-player/use-webrtc.js.map +1 -1
  75. package/dist/components/mobile-player/video-async.native.d.ts.map +1 -1
  76. package/dist/components/mobile-player/video-async.native.js +15 -5
  77. package/dist/components/mobile-player/video-async.native.js.map +1 -1
  78. package/dist/components/mobile-player/video.d.ts.map +1 -1
  79. package/dist/components/mobile-player/video.js +10 -7
  80. package/dist/components/mobile-player/video.js.map +1 -1
  81. package/dist/components/ui/dialog.d.ts.map +1 -1
  82. package/dist/components/ui/dialog.js +8 -0
  83. package/dist/components/ui/dialog.js.map +1 -1
  84. package/dist/hooks/useLivestreamInfo.d.ts +0 -2
  85. package/dist/hooks/useLivestreamInfo.d.ts.map +1 -1
  86. package/dist/hooks/useLivestreamInfo.js +13 -24
  87. package/dist/hooks/useLivestreamInfo.js.map +1 -1
  88. package/dist/hooks/useSegmentTiming.d.ts +1 -1
  89. package/dist/hooks/useSegmentTiming.d.ts.map +1 -1
  90. package/dist/hooks/useSegmentTiming.js +4 -0
  91. package/dist/hooks/useSegmentTiming.js.map +1 -1
  92. package/dist/i18n/i18n-loader.native.d.ts.map +1 -1
  93. package/dist/i18n/i18n-loader.native.js +13 -4
  94. package/dist/i18n/i18n-loader.native.js.map +1 -1
  95. package/dist/lib/slash-commands/teleport.d.ts +5 -1
  96. package/dist/lib/slash-commands/teleport.d.ts.map +1 -1
  97. package/dist/lib/slash-commands/teleport.js +57 -1
  98. package/dist/lib/slash-commands/teleport.js.map +1 -1
  99. package/dist/livestream-store/chat.d.ts +1 -0
  100. package/dist/livestream-store/chat.d.ts.map +1 -1
  101. package/dist/livestream-store/chat.js +10 -1
  102. package/dist/livestream-store/chat.js.map +1 -1
  103. package/dist/livestream-store/livestream-state.d.ts +2 -0
  104. package/dist/livestream-store/livestream-state.d.ts.map +1 -1
  105. package/dist/livestream-store/livestream-store.d.ts +1 -1
  106. package/dist/livestream-store/livestream-store.d.ts.map +1 -1
  107. package/dist/livestream-store/livestream-store.js +10 -1
  108. package/dist/livestream-store/livestream-store.js.map +1 -1
  109. package/dist/livestream-store/websocket-consumer.d.ts.map +1 -1
  110. package/dist/livestream-store/websocket-consumer.js +1 -0
  111. package/dist/livestream-store/websocket-consumer.js.map +1 -1
  112. package/dist/player-store/player-state.d.ts +1 -5
  113. package/dist/player-store/player-state.d.ts.map +1 -1
  114. package/dist/player-store/player-store.d.ts.map +1 -1
  115. package/dist/player-store/player-store.js +16 -5
  116. package/dist/player-store/player-store.js.map +1 -1
  117. package/dist/player-store/single-player-provider.d.ts +0 -2
  118. package/dist/player-store/single-player-provider.d.ts.map +1 -1
  119. package/dist/player-store/single-player-provider.js +0 -2
  120. package/dist/player-store/single-player-provider.js.map +1 -1
  121. package/dist/streamplace-store/stream.d.ts +4 -2
  122. package/dist/streamplace-store/stream.d.ts.map +1 -1
  123. package/dist/streamplace-store/stream.js +36 -74
  124. package/dist/streamplace-store/stream.js.map +1 -1
  125. package/locales/manifest.json +21 -1
  126. package/locales/ro-RO/common.ftl +74 -0
  127. package/locales/ro-RO/settings.ftl +233 -0
  128. package/locales/zh-Hans/common.ftl +57 -0
  129. package/locales/zh-Hans/settings.ftl +222 -0
  130. package/node-compile-cache/v22.15.0-x64-efe9a9df-0/37be0eec +0 -0
  131. package/package.json +2 -2
  132. package/src/components/chat/badge.tsx +45 -0
  133. package/src/components/chat/chat-box.tsx +84 -54
  134. package/src/components/chat/chat-message.tsx +36 -21
  135. package/src/components/chat/chat.tsx +105 -88
  136. package/src/components/chat/emoji-suggestions.tsx +12 -21
  137. package/src/components/chat/system-message.tsx +12 -2
  138. package/src/components/chat/teleport-modal.tsx +310 -0
  139. package/src/components/chat/user-profile-card.tsx +284 -0
  140. package/src/components/dashboard/chat-panel.tsx +8 -0
  141. package/src/components/dashboard/header.tsx +7 -3
  142. package/src/components/dashboard/information-widget.tsx +15 -9
  143. package/src/components/mobile-player/fullscreen.native.tsx +3 -0
  144. package/src/components/mobile-player/fullscreen.tsx +2 -0
  145. package/src/components/mobile-player/ui/audio-only-overlay.tsx +48 -0
  146. package/src/components/mobile-player/ui/index.ts +1 -0
  147. package/src/components/mobile-player/ui/input.tsx +1 -5
  148. package/src/components/mobile-player/ui/metrics.tsx +17 -2
  149. package/src/components/mobile-player/ui/viewer-context-menu.tsx +40 -3
  150. package/src/components/mobile-player/use-webrtc.tsx +118 -17
  151. package/src/components/mobile-player/video-async.native.tsx +18 -5
  152. package/src/components/mobile-player/video.tsx +10 -7
  153. package/src/components/ui/dialog.tsx +8 -0
  154. package/src/hooks/useLivestreamInfo.ts +15 -24
  155. package/src/hooks/useSegmentTiming.tsx +7 -2
  156. package/src/i18n/i18n-loader.native.ts +9 -0
  157. package/src/lib/slash-commands/teleport.ts +68 -0
  158. package/src/livestream-store/chat.tsx +12 -0
  159. package/src/livestream-store/livestream-state.tsx +2 -0
  160. package/src/livestream-store/livestream-store.tsx +9 -1
  161. package/src/livestream-store/websocket-consumer.tsx +1 -0
  162. package/src/player-store/player-state.tsx +1 -7
  163. package/src/player-store/player-store.tsx +16 -7
  164. package/src/player-store/single-player-provider.tsx +0 -4
  165. package/src/streamplace-store/stream.tsx +42 -99
  166. package/node-compile-cache/v22.15.0-x64-92db9086-0/37be0eec +0 -0
@@ -0,0 +1,233 @@
1
+ # Settings Page Translations - Romanian (Romania)
2
+
3
+ ## App Version
4
+ app-version = Streamplace v{ $version }
5
+ download-new-update = Descărcați noua actualizare
6
+ check-for-updates = Căutați actualizări
7
+ bundled-runtype = Bundled
8
+ ota-runtype = Over-the-Air (OTA)
9
+ recovery-runtype = Mod de recuperare
10
+
11
+ modal-latest-version = Aveți cea mai recentă versiune.
12
+ modal-no-update-available = Aveți cea mai recentă versiune de Streamplace, ura!
13
+ modal-update-available-title = Actualizare disponibilă
14
+ modal-update-available-description = O nouă versiune de Streamplace este gata de descărcare
15
+ modal-update-failed = Căutarea actualizării a eșuat. Este posibil să fie nevoie să actualizați aplicația prin { $store }.
16
+ modal-update-failed-title = Actualizare eșuată
17
+ modal-update-failed-description = Căutarea actualizării a eșuat. Este posibil să fie nevoie să actualizați aplicația prin { $store }.
18
+ button-reload-app-on-update = Aplicați actualizarea (va reîncărca aplicația)
19
+
20
+ ## Custom Node Settings
21
+ use-custom-node = Utilizați nodul personalizat
22
+ default-url = Default: { $url }
23
+ enter-custom-node-url = Introduceți adresa URL a nodului personalizat
24
+ save-button = SALVARE
25
+
26
+ ## Language Settings
27
+ language-selection = Limbă
28
+ language-selection-description = Alegeți-vă limba preferată
29
+ input-search-languages = Căutați limbi...
30
+ help-translate = Ajutați-ne să traducem Streamplace
31
+ help-translate-description = Căutăm voluntari care să ne ajute la traducerea Streamplace în mai multe limbi. Dacă sunteți interesați, vă rugăm să ne contactați pe Discord sau GitHub!
32
+ currently-translating = Traducerile sunt pe drum
33
+ currently-translating-description = Este posibil ca unele părți ale aplicației să pară incomplete. Vă mulțumim pentru răbdare!
34
+
35
+ ## Debug Recording
36
+ debug-recording-title = Permiteți-i lui { $host } să înregistreze transmisiunea live pentru depanare și îmbunătățirea serviciului
37
+ debug-recording-description = Opțional
38
+
39
+ ## Key Management
40
+ manage-keys = Gestionare Chei
41
+
42
+ ## Settings Page Specific
43
+ settings-title = Setări
44
+
45
+ ## Navigation Categories
46
+ about = Despre
47
+ account = Cont
48
+ advanced = Complex
49
+ danmu = Danmu
50
+ developer = Dezvoltator
51
+ languages = Limbi
52
+ privacy-security = Confidențialitate și securitate
53
+ streaming = Streaming
54
+
55
+ ## Common Actions
56
+ cancel = Anulare
57
+ create = Creare
58
+ delete = Ștergere
59
+ refresh = Reîmprospătare
60
+ save-button = Salvare
61
+ sign-in = Conectare
62
+ update = Actualizare
63
+ log-out = Deconectare
64
+ optional = opțional
65
+
66
+ ## Account Settings
67
+ account-greeting = Hei, @{ $handle }.
68
+ edit-profile-bluesky = Editare profil (pe Bluesky)
69
+ change-name-color = Schimbați culoarea numelui
70
+
71
+ ## Key Management
72
+ key-management = Gestionare chei
73
+ key-manager = Manager cheie
74
+ manage-keys = Gestionare chei
75
+ your-stream-pubkeys = Cheile publice ale transmisiunii dvs.
76
+ no-keys = Nicio cheie configurată
77
+ pubkey-description = Cheile publice sunt asociate cu cheile de transmisiune (utilizate în software-ul de streaming) pentru a semna și verifica transmisiunea.
78
+ keys-count = { $count ->
79
+ [one] { $count } cheie
80
+ *[other] { $count } chei
81
+ }
82
+
83
+ ## Recommendations
84
+ recommendations = Recomandări
85
+ manage-recommendations = Gestionați recomandările
86
+ recommendations-to-others = Recomandări pentru Alții
87
+ recommendations-description = Distribuie până la 8 streameri pe care îi recomandați spectatorilor dvs.
88
+ no-recommendations-yet = Nu au fost configurate recomandări încă
89
+ add-recommendation = Adăugare recomandare
90
+ streamer-did = DID Streamer
91
+ recommendations-count = { $count ->
92
+ [one] { $count } recomandare
93
+ *[other] { $count } (de) recomandări
94
+ }
95
+
96
+ ## Webhook Management
97
+ webhooks = Webhook-uri
98
+ webhook-integrations = Integrari Webhook
99
+ webhook-integrations-description = Conectați servicii externe pentru a primi actualizări în timp real despre transmisiunile dvs.
100
+ create-webhook = Creare Webhook
101
+ edit-webhook = Editare Webhook
102
+ delete-webhook = Ștergere Webhook
103
+ no-webhooks-yet = Nu sunt încă configurate webhook-uri
104
+ failed-load-webhooks = Nu s-au putut încărca webhook-urile
105
+ webhook-will-no-longer-receive-events = Acest webhook nu va mai primi evenimente
106
+ create-first-webhook-description = Creați-vă primul webhook pentru a începe să primiți evenimente de transmisiune
107
+ example-captain-hook = Captain Hook
108
+ webhooks-count = { $count ->
109
+ [one] { $count } webhook
110
+ *[other] { $count } (de) webhook-uri
111
+ }
112
+
113
+ ## Webhook Events
114
+ activates-on = Se activează la:
115
+ events = Evenimente
116
+ events-livestream = Evenimente în transmisiuni
117
+ events-chat = Evenimente de conversașie
118
+ untitled-webhook = Webhook fără titlu
119
+ inactive = Inactiv
120
+ active = Activ
121
+
122
+ ## Multistreaming
123
+ multistream = Multi-transmisiune
124
+ multistream-targets = Ținte multi-transmisiune
125
+ multistream-description = Distribuie automat transmisiunile tale live Streamplace către alte servicii de streaming precum Twitch sau YouTube.
126
+ create-multistream-target = Creare țintă multi-transmisiune
127
+ untitled-multistream-target = Țintă fără titlu
128
+ failed-load-multistream-targets = Nu s-au putut încărca țintele multi-transmisiune. Vă rugăm să încercați din nou.
129
+ failed-toggle-multistream-target = Nu s-a putut comuta ținta multi-transmisiune. Vă rugăm să încercați din nou.
130
+ failed-delete-multistream-target = Ștergerea țintei multi-transmisiune nu a reușit. Încercați din nou.
131
+ no-multistream-targets-yet = Nu există încă ținte!
132
+ multistream-targets-count = { $count ->
133
+ [one] { $count } țintă
134
+ *[other] { $count } (de) ținte
135
+ }
136
+ multistream-delete-target-confirmation = Sunteți sigur că vreți să ștergeți „{ $target }”?
137
+ this-action-cannot-be-undone = Această acțiune nu poate fi anulată.
138
+ rtmp-target-name = Țintă RTMP
139
+ rtmp-target-url = URL RTMP
140
+ rtmp-target-name-placeholder = Ținta mea transmisiune
141
+ multistream-create-target = Creare țintă
142
+ multistream-edit-target = Editare țintă
143
+ created = creată
144
+ status = stare
145
+
146
+ ## Debug Recording
147
+ debug-recording = Depanare înregistrare
148
+
149
+ ## Danmu Settings
150
+ danmu = Danmu
151
+ danmu-enabled = Activare Danmu
152
+ danmu-enabled-description = Afișați mesajele din chatul live ca comentarii plutitoare pe ecran
153
+ danmu-opacity = Opacitate
154
+ danmu-speed = Viteză
155
+ danmu-lane-count = Număr de benzi
156
+ danmu-max-messages = Mesaje maxime
157
+
158
+ ## General
159
+ app-version-description = Nu sunt disponibile actualizări în acest moment
160
+ confirm-delete = Sigur vreți să ștergeți asta?
161
+ action-cannot-be-undone = Această acțiune nu poate fi anulată
162
+ name-optional = Nume (opțional)
163
+ deleting = Se șterge...
164
+ saving = Se salvează...
165
+ go-to-dashboard = Mergeți la tabloul de bord
166
+ need-setup-live-dashboard = Trebuie să configurați mai întâi transmisiunile? Vizitați tabloul de bord al transmisiunilor
167
+ no-languages-found = Nu s-au găsit limbi
168
+
169
+ ## Branding Administration
170
+ branding = Branding
171
+ branding-admin = Administrarea brandingului
172
+ branding-admin-description = Personalizați-vă instanța Streamplace. Rețineți că propagarea setărilor poate dura câteva ore.
173
+ branding-login-required = Vă rugăm să vă conectați pentru a gestiona brandingul
174
+ branding-configuration = Configurare
175
+ branding-text-settings = Setări text
176
+ branding-colors = Culori
177
+ branding-legal-links = Link-uri legale
178
+ branding-images = Imagini
179
+
180
+ ## Branding Fields
181
+ branding-broadcaster-did = DID radiodifuzor
182
+ branding-broadcaster-did-description = Lăsați gol pentru a utiliza valorile implicite ale serverului
183
+ branding-site-title = Titlul site-ului
184
+ branding-site-title-placeholder = Introduceți un nou titlu de site
185
+ branding-site-description = Descrierea site-ului
186
+ branding-site-description-placeholder = Introduceți descrierea site-ului
187
+ branding-default-streamer = Streamer implicit
188
+ branding-default-streamer-none = Nimic
189
+ branding-default-streamer-placeholder = did:plc:...
190
+ branding-clear-default-streamer = Ștergeți Streamerul implicit
191
+ branding-primary-color = Culoare primară
192
+ branding-primary-color-placeholder = #6366f1
193
+ branding-accent-color = Culoare de accent
194
+ branding-accent-color-placeholder = #8b5cf6
195
+ branding-main-logo = Logo principal
196
+ branding-main-logo-description = SVG, PNG, or JPEG (max 500KB)
197
+ branding-favicon = Favicon
198
+ branding-favicon-description = SVG, PNG, sau ICO (maxim 100KB)
199
+ branding-sidebar-bg = Imagine de fundal din bara laterală
200
+ branding-sidebar-bg-description = SVG, PNG sau JPEG (maxim 500kb) - apare aliniat la partea de jos a barei laterale, pe lățime completă. Încărcați o imagine cu opacitate pentru cele mai bune rezultate, deoarece în prezent nu există o opțiune separată de opacitate.
201
+ branding-current = Current: { $value }
202
+ branding-dimensions = { $height } x { $width }
203
+
204
+ ## Branding Actions
205
+ branding-upload-logo = Încărcare logo
206
+ branding-delete-logo = Ștergere logo
207
+ branding-upload-favicon = Încărcare Favicon
208
+ branding-delete-favicon = Ștergere Favicon
209
+ branding-upload-background = Încărcare imagine de fundal
210
+ branding-delete-background = Ștergere imagine de fundal
211
+ branding-web-only = Încărcarea imaginilor este disponibilă doar pe web.
212
+
213
+ ## Branding Legal Links
214
+ refresh-branding = Actualizați elementele de branding
215
+ branding-add-legal-link = Adăugați link legal
216
+ branding-edit-legal-link = Editați linkul legal
217
+ branding-legal-link-text-placeholder = Textul linkului (de exemplu, Politica de confidențialitate)
218
+ branding-legal-link-url-placeholder = Adresa URL (de ex., https://example.com/privacy)
219
+ add = Adăugare
220
+ edit = Editare
221
+
222
+ ## Branding Toast Messages
223
+ branding-not-authenticated = Vă rugăm să vă conectați mai întâi
224
+ branding-empty-value = Vă rugăm să introduceți o valoare
225
+ branding-update-success = { $key } a fost actualizat cu succes
226
+ branding-upload-success = { $key } a fost încărcat cu succes
227
+ branding-delete-success = { $key } a fost șters cu succes
228
+ branding-upload-failed = Încărcare eșuată
229
+ branding-delete-failed = Ștergere eșuată
230
+ branding-not-available = Încărcarea de fișiere este disponibilă doar pe web.
231
+
232
+ ## Navigation Categories (About Page)
233
+ node-legal-documents = Documente specifice radiodifuzorului
@@ -0,0 +1,57 @@
1
+ # Common UI Translations - Chinese (Simplified)
2
+
3
+ ## General UI
4
+ loading = 正在加载...
5
+ error = 错误
6
+ cancel = 取消
7
+ confirm = 确认
8
+ close = 关闭
9
+ open = 开启
10
+ ok = 确定
11
+ yes = 是
12
+ no = 否
13
+ continue = 继续
14
+ back = 返回
15
+ next = 下一步
16
+ finish = 完成
17
+
18
+ ## Actions
19
+ save = 保存
20
+ delete = 删除
21
+ edit = 编辑
22
+ create = 创建
23
+ update = 更新
24
+ refresh = 刷新
25
+
26
+ ## Status Messages
27
+ success = 成功
28
+ warning = 警告
29
+ info = 信息
30
+
31
+ ## Input Placeholders
32
+ search-placeholder = 搜索...
33
+ message-input = 输入您的消息...
34
+
35
+ ## Authentication & Access
36
+ please-log-in-to-access-this-page = 请登录以访问此页面
37
+ go-to-settings = 前往设置
38
+ go-back = 返回
39
+
40
+ ## Demo and Testing
41
+ welcome-user = 欢迎,{ $username }!
42
+ notification-count = { $count ->
43
+ [0] 无通知
44
+ *[other] { $count } 则通知
45
+ }
46
+
47
+ ## Offline User
48
+ user-offline = 用户离线
49
+ user-offline-message = { $source ->
50
+ [streamer] 看起来 <1>@{ $handle } 离线</1>了,但他们推荐观看:
51
+ *[default] 看起来 <1>@{ $handle } 离线</1>了,但我们推荐观看:
52
+ }
53
+ user-offline-no-recommendations =
54
+ 看起来 <1>@{ $handle } 离线</1>了。
55
+ 请稍后再来看看。
56
+ streaming-title = 正在直播 { $title }
57
+ viewer-count = { $count } 位观众
@@ -0,0 +1,222 @@
1
+ # Settings Page Translations - Chinese (Simplified)
2
+
3
+ ## App Version
4
+ app-version = Streamplace v{ $version }
5
+ download-new-update = 下载新更新
6
+ check-for-updates = 检查更新
7
+
8
+ bundled-runtype = 捆绑版
9
+ ota-runtype = 空中下载 (OTA)
10
+ recovery-runtype = 复原模式
11
+
12
+ modal-latest-version = 您正在使用最新版本。
13
+ modal-no-update-available = 您已经在使用最新版本的 Streamplace,太棒了!
14
+ modal-update-available-title = 有可用更新
15
+ modal-update-available-description = 新版本的 Streamplace 已准备好下载
16
+ modal-update-failed = 更新检查失败。您可能需要透过 { $store } 更新应用程序。
17
+ modal-update-failed-title = 更新失败
18
+ modal-update-failed-description = 更新检查失败。您可能需要透过 { $store } 更新应用程序。
19
+ button-reload-app-on-update = 套用更新 (将重新加载应用程序)
20
+
21
+ ## Custom Node Settings
22
+ use-custom-node = 使用自定义节点
23
+ default-url = 默认:{ $url }
24
+ enter-custom-node-url = 输入自定义节点网址
25
+ save-button = 保存
26
+
27
+ ## Language Settings
28
+ language-selection = 语言
29
+ language-selection-description = 选择您偏好的语言
30
+ input-search-languages = 搜索语言...
31
+ help-translate = 帮助我们翻译 Streamplace
32
+ help-translate-description = 我们正在寻找志愿者协助将 Streamplace 翻译成更多语言。如果您有兴趣,请在 Discord 或 GitHub 上与我们联系!
33
+ currently-translating = 翻译正在进行中
34
+ currently-translating-description = 应用程序的某些部分可能看起来不完整。感谢您的耐心等待!
35
+
36
+ ## Debug Recording
37
+ debug-recording-title = 允许 { $host } 录制您的直播串流以进行除错和服务改善
38
+ debug-recording-description = 可选项目
39
+
40
+ ## Key Management
41
+ manage-keys = 管理密钥
42
+
43
+ ## Settings Page Specific
44
+ settings-title = 设置
45
+
46
+ ## Navigation Categories
47
+ about = 关于
48
+ account = 帐户
49
+ advanced = 高端
50
+ danmu = 弹幕
51
+ developer = 开发者
52
+ languages = 语言
53
+ privacy-security = 隐私与安全
54
+ streaming = 串流
55
+
56
+ ## Common Actions
57
+ cancel = 取消
58
+ create = 创建
59
+ delete = 删除
60
+ refresh = 刷新
61
+ save-button = 保存
62
+ sign-in = 登录
63
+ update = 更新
64
+ log-out = 注销
65
+ optional = 选填
66
+
67
+ ## Account Settings
68
+ account-greeting = 嗨,@{ $handle }。
69
+ edit-profile-bluesky = 在 Bluesky 编辑个人数据
70
+ change-name-color = 变更名称颜色
71
+
72
+ ## Key Management
73
+ key-management = 密钥管理
74
+ key-manager = 密钥管理器
75
+ manage-keys = 管理密钥
76
+ your-stream-pubkeys = 您的串流公开密钥
77
+ no-keys = 尚未设置密钥
78
+ pubkey-description = 公开密钥与串流密钥 (用于串流软件) 配对以签署和验证您的串流
79
+ keys-count = { $count } 个密钥
80
+
81
+ ## Recommendations
82
+ recommendations = 推荐主播
83
+ manage-recommendations = 管理推荐主播
84
+ recommendations-to-others = 向他人推荐主播
85
+ recommendations-description = 向您的观众推荐最多 8 位主播
86
+ no-recommendations-yet = 尚未配置推荐
87
+ add-recommendation = 添加推荐
88
+ streamer-did = 主播 DID
89
+ recommendations-count = { $count } 位推荐主播
90
+
91
+ ## Webhook Management
92
+ webhooks = Webhooks
93
+ webhook-integrations = Webhook 集成
94
+ webhook-integrations-description = 连接外部服务以即时接收有关您串流的更新
95
+ create-webhook = 创建 Webhook
96
+ edit-webhook = 编辑 Webhook
97
+ delete-webhook = 删除 Webhook
98
+ no-webhooks-yet = 尚未设置 Webhook
99
+ failed-load-webhooks = 加载 Webhook 失败
100
+ webhook-will-no-longer-receive-events = 此 Webhook 将不再接收事件
101
+ create-first-webhook-description = 创建您的第一个 Webhook 以开始接收串流事件
102
+ example-captain-hook = Hook 船长
103
+ webhooks-count = { $count } 个 Webhook
104
+
105
+ ## Webhook Events
106
+ activates-on = 触发于:
107
+ events = 事件
108
+ events-livestream = 直播串流事件
109
+ events-chat = 聊天事件
110
+ untitled-webhook = 未命名的 Webhook
111
+ inactive = 停用
112
+ active = 活动
113
+
114
+ ## Multistreaming
115
+ multistream = 多重串流
116
+ multistream-targets = 多重串流目标
117
+ multistream-description = 自动将您的 Streamplace 直播推送到 Twitch 或 YouTube 等其他直播平台。
118
+ create-multistream-target = 创建多重串流目标
119
+ untitled-multistream-target = 未命名目标
120
+ failed-load-multistream-targets = 加载多重串流目标失败。请重试。
121
+ failed-toggle-multistream-target = 切换多重串流目标失败。请重试。
122
+ failed-delete-multistream-target = 删除多重串流目标失败。请重试。
123
+ no-multistream-targets-yet = 还没有目标!
124
+ multistream-targets-count = { $count } 个目标
125
+ multistream-delete-target-confirmation = 您确定要删除“{ $target }”吗?
126
+ this-action-cannot-be-undone = 此操作无法撤销。
127
+ rtmp-target-name = RTMP 目标
128
+ rtmp-target-url = RTMP 网址
129
+ rtmp-target-name-placeholder = 我的多重串流目标
130
+ multistream-create-target = 创建目标
131
+ multistream-edit-target = 编辑目标
132
+ created = 创建于
133
+ status = 状态
134
+
135
+ ## Debug Recording
136
+ debug-recording = 调试录制
137
+
138
+ ## Danmu Settings
139
+ danmu = 弹幕
140
+ danmu-enabled = 启用弹幕
141
+ danmu-enabled-description = 将即时聊天消息以浮动评论的形式显示在您的屏幕上
142
+ danmu-opacity = 不透明度
143
+ danmu-speed = 速度
144
+ danmu-lane-count = 轨道数量
145
+ danmu-max-messages = 最大消息数
146
+
147
+ ## General
148
+ app-version-description = 当前没有可用的更新
149
+ confirm-delete = 您确定要删除吗?
150
+ action-cannot-be-undone = 此操作无法撤销
151
+ name-optional = 名称 (选填)
152
+ deleting = 正在删除...
153
+ saving = 正在保存...
154
+ go-to-dashboard = 前往仪表板
155
+ need-setup-live-dashboard = 需要先设置串流吗?请访问直播仪表板
156
+ no-languages-found = 找不到语言
157
+
158
+ ## Branding Administration
159
+ branding = 品牌
160
+ branding-admin = 品牌管理
161
+ branding-admin-description = 自定义您的 Streamplace 实例。请注意,设置可能需要几小时才能生效。
162
+ branding-login-required = 请登录以管理品牌
163
+ branding-configuration = 配置
164
+ branding-text-settings = 文字设置
165
+ branding-colors = 颜色
166
+ branding-legal-links = 法律链接
167
+ branding-images = 图像
168
+
169
+ ## Branding Fields
170
+ branding-broadcaster-did = 主播 DID
171
+ branding-broadcaster-did-description = 留空以使用服务器默认值
172
+ branding-site-title = 网站标题
173
+ branding-site-title-placeholder = 输入新网站标题
174
+ branding-site-description = 网站描述
175
+ branding-site-description-placeholder = 输入网站描述
176
+ branding-default-streamer = 默认主播
177
+ branding-default-streamer-none = 无
178
+ branding-default-streamer-placeholder = did:plc:...
179
+ branding-clear-default-streamer = 清除默认主播
180
+ branding-primary-color = 首要颜色
181
+ branding-primary-color-placeholder = #6366f1
182
+ branding-accent-color = 强调色
183
+ branding-accent-color-placeholder = #8b5cf6
184
+ branding-main-logo = 主标志
185
+ branding-main-logo-description = SVG、PNG 或 JPEG (最大 500KB)
186
+ branding-favicon = 网站图标
187
+ branding-favicon-description = SVG、PNG 或 ICO (最大 100KB)
188
+ branding-sidebar-bg = 侧边栏背景图片
189
+ branding-sidebar-bg-description = SVG、PNG 或 JPEG (最大 500KB) - 显示在侧边栏底部,全宽显示。为了获得最佳效果,请上传一张带有透明度的图片,因为目前没有单独的透明度选项。
190
+ branding-current = 当前:{ $value }
191
+ branding-dimensions = { $height } x { $width }
192
+
193
+ ## Branding Actions
194
+ branding-upload-logo = 上传标志
195
+ branding-delete-logo = 删除标志
196
+ branding-upload-favicon = 上传网站图标
197
+ branding-delete-favicon = 删除网站图标
198
+ branding-upload-background = 上传背景
199
+ branding-delete-background = 删除背景
200
+ branding-web-only = 图像上传仅在网页端可用。
201
+
202
+ ## Branding Legal Links
203
+ refresh-branding = 更新品牌资源
204
+ branding-add-legal-link = 添加法律链接
205
+ branding-edit-legal-link = 编辑法律链接
206
+ branding-legal-link-text-placeholder = 链接文本 (例如:隐私政策)
207
+ branding-legal-link-url-placeholder = 网址 (例如:https://example.com/privacy)
208
+ add = 添加
209
+ edit = 编辑
210
+
211
+ ## Branding Toast Messages
212
+ branding-not-authenticated = 请先登录
213
+ branding-empty-value = 请输入一个数值
214
+ branding-update-success = { $key } 更新成功
215
+ branding-upload-success = { $key } 上传成功
216
+ branding-delete-success = { $key } 删除成功
217
+ branding-upload-failed = 上传失败
218
+ branding-delete-failed = 删除失败
219
+ branding-not-available = 文件上传仅在网页版上可用
220
+
221
+ ## Navigation Categories (About Page)
222
+ node-legal-documents = 主播专属文档
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamplace/components",
3
- "version": "0.9.9",
3
+ "version": "0.9.11",
4
4
  "description": "Streamplace React (Native) Components",
5
5
  "main": "dist/index.js",
6
6
  "types": "src/index.tsx",
@@ -81,5 +81,5 @@
81
81
  "i18n:watch": "nodemon --watch 'locales/**/*.ftl' --exec 'node scripts/compile-translations.js'",
82
82
  "i18n:extract": "i18next-cli extract && node scripts/migrate-i18n.js"
83
83
  },
84
- "gitHead": "cf61dbb06ea4d6ec58d1d151ea4bcc3749f6a427"
84
+ "gitHead": "997c3a36457de118b92d21a0148bd4e863e77b06"
85
85
  }
@@ -0,0 +1,45 @@
1
+ import { Image, Platform } from "react-native";
2
+ import { ChatMessageViewHydrated } from "streamplace";
3
+
4
+ export const BADGE_IMAGES: Record<string, ReturnType<typeof require>> = {
5
+ "place.stream.badge.defs#mod": require("../../../assets/badges/mod_2x.png"),
6
+ "place.stream.badge.defs#streamer": require("../../../assets/badges/live_2x.png"),
7
+ "place.stream.badge.defs#vip": require("../../../assets/badges/vip_2x.png"),
8
+ };
9
+
10
+ export const Badge = ({
11
+ badgeType,
12
+ size = 18,
13
+ }: {
14
+ badgeType: string;
15
+ size?: number;
16
+ }) => {
17
+ const source = BADGE_IMAGES[badgeType];
18
+ if (!source) return null;
19
+ return (
20
+ <Image
21
+ source={source}
22
+ style={{
23
+ height: size,
24
+ width: size,
25
+ marginBottom: Platform.OS === "web" ? -size / 4 : 0,
26
+ marginRight: 2,
27
+ }}
28
+ />
29
+ );
30
+ };
31
+
32
+ export const BadgeDisplayRow = ({
33
+ badges,
34
+ }: {
35
+ badges: ChatMessageViewHydrated["badges"];
36
+ }) => {
37
+ if (!badges?.length) return null;
38
+ return (
39
+ <>
40
+ {badges.map((badge, index) => (
41
+ <Badge key={index} badgeType={badge.badgeType} />
42
+ ))}
43
+ </>
44
+ );
45
+ };