@streamplace/components 0.9.7 → 0.9.10

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 (195) 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 +9 -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 +37 -43
  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 +135 -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 +2 -3
  41. package/dist/components/dashboard/header.d.ts.map +1 -1
  42. package/dist/components/dashboard/header.js +6 -2
  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 +15 -12
  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/player.d.ts.map +1 -1
  54. package/dist/components/mobile-player/player.js +15 -0
  55. package/dist/components/mobile-player/player.js.map +1 -1
  56. package/dist/components/mobile-player/ui/audio-only-overlay.d.ts +2 -0
  57. package/dist/components/mobile-player/ui/audio-only-overlay.d.ts.map +1 -0
  58. package/dist/components/mobile-player/ui/audio-only-overlay.js +29 -0
  59. package/dist/components/mobile-player/ui/audio-only-overlay.js.map +1 -0
  60. package/dist/components/mobile-player/ui/index.d.ts +1 -0
  61. package/dist/components/mobile-player/ui/index.d.ts.map +1 -1
  62. package/dist/components/mobile-player/ui/index.js +1 -0
  63. package/dist/components/mobile-player/ui/index.js.map +1 -1
  64. package/dist/components/mobile-player/ui/input.d.ts +3 -2
  65. package/dist/components/mobile-player/ui/input.d.ts.map +1 -1
  66. package/dist/components/mobile-player/ui/input.js +18 -2
  67. package/dist/components/mobile-player/ui/input.js.map +1 -1
  68. package/dist/components/mobile-player/ui/metrics.d.ts.map +1 -1
  69. package/dist/components/mobile-player/ui/metrics.js +20 -2
  70. package/dist/components/mobile-player/ui/metrics.js.map +1 -1
  71. package/dist/components/mobile-player/ui/streamer-context-menu.d.ts +3 -1
  72. package/dist/components/mobile-player/ui/streamer-context-menu.d.ts.map +1 -1
  73. package/dist/components/mobile-player/ui/streamer-context-menu.js +64 -2
  74. package/dist/components/mobile-player/ui/streamer-context-menu.js.map +1 -1
  75. package/dist/components/mobile-player/ui/viewer-context-menu.d.ts.map +1 -1
  76. package/dist/components/mobile-player/ui/viewer-context-menu.js +29 -1
  77. package/dist/components/mobile-player/ui/viewer-context-menu.js.map +1 -1
  78. package/dist/components/mobile-player/use-webrtc.d.ts +4 -2
  79. package/dist/components/mobile-player/use-webrtc.d.ts.map +1 -1
  80. package/dist/components/mobile-player/use-webrtc.js +89 -15
  81. package/dist/components/mobile-player/use-webrtc.js.map +1 -1
  82. package/dist/components/mobile-player/video-async.native.d.ts.map +1 -1
  83. package/dist/components/mobile-player/video-async.native.js +15 -5
  84. package/dist/components/mobile-player/video-async.native.js.map +1 -1
  85. package/dist/components/mobile-player/video.d.ts.map +1 -1
  86. package/dist/components/mobile-player/video.js +10 -7
  87. package/dist/components/mobile-player/video.js.map +1 -1
  88. package/dist/components/ui/dialog.d.ts.map +1 -1
  89. package/dist/components/ui/dialog.js +8 -0
  90. package/dist/components/ui/dialog.js.map +1 -1
  91. package/dist/components/ui/textarea.d.ts.map +1 -1
  92. package/dist/components/ui/textarea.js +1 -1
  93. package/dist/components/ui/textarea.js.map +1 -1
  94. package/dist/hooks/index.d.ts +1 -0
  95. package/dist/hooks/index.d.ts.map +1 -1
  96. package/dist/hooks/index.js +1 -0
  97. package/dist/hooks/index.js.map +1 -1
  98. package/dist/hooks/useAQState.d.ts +2 -0
  99. package/dist/hooks/useAQState.d.ts.map +1 -0
  100. package/dist/hooks/useAQState.js +37 -0
  101. package/dist/hooks/useAQState.js.map +1 -0
  102. package/dist/hooks/useLivestreamInfo.d.ts +1 -2
  103. package/dist/hooks/useLivestreamInfo.d.ts.map +1 -1
  104. package/dist/hooks/useLivestreamInfo.js +18 -22
  105. package/dist/hooks/useLivestreamInfo.js.map +1 -1
  106. package/dist/hooks/useSegmentTiming.d.ts +1 -1
  107. package/dist/hooks/useSegmentTiming.d.ts.map +1 -1
  108. package/dist/hooks/useSegmentTiming.js +4 -0
  109. package/dist/hooks/useSegmentTiming.js.map +1 -1
  110. package/dist/i18n/i18n-loader.native.d.ts.map +1 -1
  111. package/dist/i18n/i18n-loader.native.js +13 -4
  112. package/dist/i18n/i18n-loader.native.js.map +1 -1
  113. package/dist/lib/slash-commands/teleport.d.ts +5 -1
  114. package/dist/lib/slash-commands/teleport.d.ts.map +1 -1
  115. package/dist/lib/slash-commands/teleport.js +57 -1
  116. package/dist/lib/slash-commands/teleport.js.map +1 -1
  117. package/dist/lib/theme/atoms.d.ts +125 -125
  118. package/dist/livestream-store/chat.d.ts +1 -0
  119. package/dist/livestream-store/chat.d.ts.map +1 -1
  120. package/dist/livestream-store/chat.js +10 -1
  121. package/dist/livestream-store/chat.js.map +1 -1
  122. package/dist/livestream-store/livestream-state.d.ts +2 -0
  123. package/dist/livestream-store/livestream-state.d.ts.map +1 -1
  124. package/dist/livestream-store/livestream-store.d.ts +1 -1
  125. package/dist/livestream-store/livestream-store.d.ts.map +1 -1
  126. package/dist/livestream-store/livestream-store.js +10 -1
  127. package/dist/livestream-store/livestream-store.js.map +1 -1
  128. package/dist/livestream-store/websocket-consumer.d.ts.map +1 -1
  129. package/dist/livestream-store/websocket-consumer.js +1 -0
  130. package/dist/livestream-store/websocket-consumer.js.map +1 -1
  131. package/dist/player-store/player-state.d.ts +3 -5
  132. package/dist/player-store/player-state.d.ts.map +1 -1
  133. package/dist/player-store/player-store.d.ts.map +1 -1
  134. package/dist/player-store/player-store.js +28 -5
  135. package/dist/player-store/player-store.js.map +1 -1
  136. package/dist/player-store/single-player-provider.d.ts +0 -2
  137. package/dist/player-store/single-player-provider.d.ts.map +1 -1
  138. package/dist/player-store/single-player-provider.js +0 -2
  139. package/dist/player-store/single-player-provider.js.map +1 -1
  140. package/dist/streamplace-store/branding.d.ts.map +1 -1
  141. package/dist/streamplace-store/branding.js +52 -1
  142. package/dist/streamplace-store/branding.js.map +1 -1
  143. package/dist/streamplace-store/stream.d.ts +4 -2
  144. package/dist/streamplace-store/stream.d.ts.map +1 -1
  145. package/dist/streamplace-store/stream.js +36 -74
  146. package/dist/streamplace-store/stream.js.map +1 -1
  147. package/locales/en-US/common.ftl +13 -1
  148. package/locales/manifest.json +21 -1
  149. package/locales/ro-RO/common.ftl +74 -0
  150. package/locales/ro-RO/settings.ftl +233 -0
  151. package/locales/zh-Hans/common.ftl +57 -0
  152. package/locales/zh-Hans/settings.ftl +222 -0
  153. package/node-compile-cache/v22.15.0-x64-efe9a9df-0/37be0eec +0 -0
  154. package/package.json +2 -2
  155. package/src/components/chat/badge.tsx +45 -0
  156. package/src/components/chat/chat-box.tsx +84 -54
  157. package/src/components/chat/chat-message.tsx +25 -21
  158. package/src/components/chat/chat.tsx +107 -90
  159. package/src/components/chat/emoji-suggestions.tsx +12 -21
  160. package/src/components/chat/system-message.tsx +12 -2
  161. package/src/components/chat/teleport-modal.tsx +310 -0
  162. package/src/components/chat/user-profile-card.tsx +275 -0
  163. package/src/components/dashboard/chat-panel.tsx +8 -0
  164. package/src/components/dashboard/header.tsx +8 -17
  165. package/src/components/dashboard/information-widget.tsx +17 -10
  166. package/src/components/mobile-player/fullscreen.native.tsx +3 -0
  167. package/src/components/mobile-player/fullscreen.tsx +2 -0
  168. package/src/components/mobile-player/player.tsx +22 -1
  169. package/src/components/mobile-player/ui/audio-only-overlay.tsx +48 -0
  170. package/src/components/mobile-player/ui/index.ts +1 -0
  171. package/src/components/mobile-player/ui/input.tsx +42 -12
  172. package/src/components/mobile-player/ui/metrics.tsx +17 -2
  173. package/src/components/mobile-player/ui/streamer-context-menu.tsx +138 -2
  174. package/src/components/mobile-player/ui/viewer-context-menu.tsx +40 -3
  175. package/src/components/mobile-player/use-webrtc.tsx +118 -17
  176. package/src/components/mobile-player/video-async.native.tsx +18 -5
  177. package/src/components/mobile-player/video.tsx +10 -7
  178. package/src/components/ui/dialog.tsx +8 -0
  179. package/src/components/ui/textarea.tsx +2 -0
  180. package/src/hooks/index.ts +1 -0
  181. package/src/hooks/useAQState.ts +37 -0
  182. package/src/hooks/useLivestreamInfo.ts +21 -22
  183. package/src/hooks/useSegmentTiming.tsx +7 -2
  184. package/src/i18n/i18n-loader.native.ts +9 -0
  185. package/src/lib/slash-commands/teleport.ts +68 -0
  186. package/src/livestream-store/chat.tsx +12 -0
  187. package/src/livestream-store/livestream-state.tsx +2 -0
  188. package/src/livestream-store/livestream-store.tsx +9 -1
  189. package/src/livestream-store/websocket-consumer.tsx +1 -0
  190. package/src/player-store/player-state.tsx +4 -7
  191. package/src/player-store/player-store.tsx +33 -7
  192. package/src/player-store/single-player-provider.tsx +0 -4
  193. package/src/streamplace-store/branding.tsx +60 -1
  194. package/src/streamplace-store/stream.tsx +42 -99
  195. package/node-compile-cache/v22.15.0-x64-92db9086-0/37be0eec +0 -0
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useCreateStreamRecord = useCreateStreamRecord;
4
4
  exports.useUpdateStreamRecord = useUpdateStreamRecord;
5
+ exports.useEndLivestream = useEndLivestream;
5
6
  const tslib_1 = require("tslib");
6
7
  const api_1 = require("@atproto/api");
7
8
  const streamplace_store_1 = require("./streamplace-store");
@@ -97,73 +98,10 @@ function useCreateStreamRecord() {
97
98
  let agent = (0, xrpc_1.usePDSAgent)();
98
99
  let url = (0, streamplace_store_1.useUrl)();
99
100
  const uploadThumbnail = useUploadThumbnail();
100
- return async ({ title, customThumbnail, submitPost, canonicalUrl, notificationSettings, }) => {
101
- if (typeof submitPost !== "boolean") {
102
- submitPost = true;
103
- }
101
+ return async ({ title, customThumbnail, submitPost, canonicalUrl, notificationSettings, idleTimeoutSeconds, }) => {
104
102
  if (!agent) {
105
103
  throw new Error("No PDS agent found");
106
104
  }
107
- if (!agent.did) {
108
- throw new Error("No user DID found, assuming not logged in");
109
- }
110
- const u = new URL(url);
111
- let thumbnail = undefined;
112
- if (customThumbnail) {
113
- try {
114
- thumbnail = await uploadThumbnail(agent, customThumbnail);
115
- }
116
- catch (e) {
117
- throw new Error(`Custom thumbnail upload failed ${e}`);
118
- }
119
- }
120
- else {
121
- // No custom thumbnail: fetch the server-side image and upload it
122
- // try thrice lel
123
- let tries = 0;
124
- try {
125
- for (; tries < 3; tries++) {
126
- try {
127
- console.log(`Fetching thumbnail from ${u.protocol}//${u.host}/api/playback/${agent.did}/stream.png`);
128
- const thumbnailRes = await fetch(`${u.protocol}//${u.host}/api/playback/${agent.did}/stream.png`);
129
- if (!thumbnailRes.ok) {
130
- throw new Error(`Failed to fetch thumbnail: ${thumbnailRes.status})`);
131
- }
132
- const thumbnailBlob = await thumbnailRes.blob();
133
- console.log(thumbnailBlob);
134
- thumbnail = await uploadThumbnail(agent, thumbnailBlob);
135
- }
136
- catch (e) {
137
- console.warn(`Failed to fetch thumbnail, retrying (${tries + 1}/3): ${e}`);
138
- // Wait 1 second before retrying
139
- await new Promise((resolve) => setTimeout(resolve, 2000));
140
- if (tries === 2) {
141
- throw new Error(`Failed to fetch thumbnail after 3 tries: ${e}`);
142
- }
143
- }
144
- }
145
- }
146
- catch (e) {
147
- throw new Error(`Thumbnail upload failed ${e}`);
148
- }
149
- }
150
- let newPost = undefined;
151
- const did = agent.did;
152
- const profile = await agent.getProfile({ actor: did });
153
- if (submitPost) {
154
- if (!profile) {
155
- throw new Error("No profile found for the user DID");
156
- }
157
- const params = new URLSearchParams({
158
- did: did,
159
- time: new Date().toISOString(),
160
- });
161
- let post = await buildGoLivePost(title, u, profile.data, params, thumbnail, agent);
162
- newPost = await createNewPost(agent, post);
163
- if (!newPost.uri || !newPost.cid) {
164
- throw new Error("Cannot read properties of undefined (reading 'uri' or 'cid')");
165
- }
166
- }
167
105
  let platform = react_native_1.Platform.OS;
168
106
  let platVersion = react_native_1.Platform.Version
169
107
  ? react_native_1.Platform.Version.toString()
@@ -174,32 +112,44 @@ function useCreateStreamRecord() {
174
112
  window.navigator) {
175
113
  platVersion = (0, browser_1.getBrowserName)(window.navigator.userAgent);
176
114
  }
177
- const thisUrl = `${url}/${profile.data.handle}`;
178
- if (!canonicalUrl) {
179
- canonicalUrl = thisUrl;
115
+ if (!agent.did) {
116
+ throw new Error("No user DID found, assuming not logged in");
180
117
  }
118
+ const thisUrl = `${url}/${agent.did}`;
181
119
  const record = {
182
120
  $type: "place.stream.livestream",
183
121
  title: title,
184
122
  url: thisUrl,
185
123
  createdAt: new Date().toISOString(),
124
+ lastSeenAt: new Date().toISOString(),
186
125
  // would match up with e.g. https://stream.place/iame.li
187
126
  canonicalUrl: canonicalUrl,
188
127
  // user agent style string
189
128
  // e.g. `@streamplace/components/0.1.0 (ios, 32.0)`
190
129
  agent: `@streamplace/components/${package_json_1.default.version} (${platform}, ${platVersion})`,
191
- post: newPost,
192
- thumb: thumbnail,
130
+ idleTimeoutSeconds: idleTimeoutSeconds,
193
131
  };
194
132
  if (notificationSettings) {
195
133
  record.notificationSettings = notificationSettings;
196
134
  }
197
- await agent.com.atproto.repo.createRecord({
198
- repo: agent.did,
199
- collection: "place.stream.livestream",
200
- record,
135
+ if (customThumbnail) {
136
+ try {
137
+ const thumbnail = await uploadThumbnail(agent, customThumbnail);
138
+ record.thumb = thumbnail;
139
+ }
140
+ catch (e) {
141
+ throw new Error(`Custom thumbnail upload failed ${e}`);
142
+ }
143
+ }
144
+ const output = await agent.place.stream.live.startLivestream({
145
+ livestream: record,
146
+ streamer: agent.did,
147
+ createBlueskyPost: submitPost,
201
148
  });
202
- return record;
149
+ if (!output.success) {
150
+ throw new Error("Failed to start livestream");
151
+ }
152
+ return output.data;
203
153
  };
204
154
  }
205
155
  function useUpdateStreamRecord(customUrl = null) {
@@ -250,4 +200,16 @@ function useUpdateStreamRecord(customUrl = null) {
250
200
  return record;
251
201
  };
252
202
  }
203
+ function useEndLivestream() {
204
+ let agent = (0, xrpc_1.usePDSAgent)();
205
+ return async () => {
206
+ if (!agent) {
207
+ throw new Error("No PDS agent found");
208
+ }
209
+ if (!agent.did) {
210
+ throw new Error("No user DID found, assuming not logged in");
211
+ }
212
+ return await agent.place.stream.live.stopLivestream({});
213
+ };
214
+ }
253
215
  //# sourceMappingURL=stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/streamplace-store/stream.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/streamplace-store/stream.tsx"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ user-offline-message = { $source ->
51
51
  [streamer] Looks like <1>@{ $handle } is offline</1>, but they recommend checking out:
52
52
  *[default] Looks like <1>@{ $handle } is offline</1>, but we recommend checking out:
53
53
  }
54
- user-offline-no-recommendations =
54
+ user-offline-no-recommendations =
55
55
  Looks like <1>@{ $handle } is offline</1> right now.
56
56
  Check back later.
57
57
  streaming-title = streaming { $title }
@@ -60,3 +60,15 @@ viewer-count = { $count ->
60
60
  [1] 1 viewer
61
61
  *[other] { $count } viewers
62
62
  }
63
+
64
+ ## PDS Host Selector
65
+ pds-selector-title = New to the Atmosphere?
66
+ pds-selector-description = You'll need to select a PDS (Personal Data Server) to access apps on the Atmosphere, such as Bluesky, Tangled, and Spark.
67
+ pds-selector-custom-label = Another PDS
68
+ pds-selector-custom-description = Enter your own PDS host URL
69
+ pds-selector-custom-url-label = Custom PDS URL
70
+ pds-selector-custom-url-placeholder = https://pds.example.com
71
+ pds-selector-learn-more = Learn more about self-hosting
72
+ pds-selector-info = Each host has their own policies and reliability standards. Your ATProto data lives on the host you choose and you can migrate later. Note: Streamplace has its own moderation rules - you can be banned from Streamplace regardless of which host you choose.
73
+ pds-selector-read-policies = Read { $label }'s <tosLink>Terms of Service</tosLink> and <privacyLink>Privacy Policy</privacyLink> before continuing.
74
+ pds-selector-handle-policy-checkbox = I have read and agree to the <policyLink>handle policy</policyLink>
@@ -1,5 +1,13 @@
1
1
  {
2
- "supportedLocales": ["en-US", "pt-BR", "es-ES", "zh-Hant", "fr-FR"],
2
+ "supportedLocales": [
3
+ "en-US",
4
+ "pt-BR",
5
+ "es-ES",
6
+ "zh-Hant",
7
+ "fr-FR",
8
+ "zh-Hans",
9
+ "ro-RO"
10
+ ],
3
11
  "fallbackChain": ["en-US"],
4
12
  "languages": {
5
13
  "en-US": {
@@ -31,6 +39,18 @@
31
39
  "name": "French",
32
40
  "nativeName": "Français",
33
41
  "flag": "🇫🇷"
42
+ },
43
+ "zh-Hans": {
44
+ "code": "zh-Hans",
45
+ "name": "Chinese (Simplified)",
46
+ "nativeName": "简体中文",
47
+ "flag": "汉"
48
+ },
49
+ "ro-RO": {
50
+ "code": "ro-RO",
51
+ "name": "Romanian",
52
+ "nativeName": "Română",
53
+ "flag": "🇷🇴"
34
54
  }
35
55
  }
36
56
  }
@@ -0,0 +1,74 @@
1
+ # Common UI Translations - English (US)
2
+
3
+ ## General UI
4
+ loading = Se încarcă...
5
+ error = Eroare
6
+ cancel = Anulare
7
+ confirm = Confirmare
8
+ close = Închidere
9
+ open = Deschidere
10
+ ok = OK
11
+ yes = Da
12
+ no = Nu
13
+ continue = Continuare
14
+ back = Înapoi
15
+ next = Următorul
16
+ finish = Finalizare
17
+
18
+ ## Actions
19
+ save = Salvare
20
+ delete = Ștergere
21
+ edit = Editare
22
+ create = Creare
23
+ update = Actualizare
24
+ refresh = Reîmprospătare
25
+
26
+ ## Status Messages
27
+ success = Succes
28
+ warning = Avertisment
29
+ info = Informație
30
+
31
+ ## Input Placeholders
32
+ search-placeholder = Căutare...
33
+ message-input = Introduceți-vă mesajul...
34
+
35
+ ## Authentication & Access
36
+ please-log-in-to-access-this-page = Vă rugăm să vă conectați pentru a accesa această pagină
37
+ go-to-settings = Mergeți la Setări
38
+ go-back = Mergeți înapoi
39
+
40
+ ## Demo and Testing
41
+ welcome-user = Bun venit, { $username }!
42
+ notification-count = { $count ->
43
+ [0] Nici o notificare
44
+ [1] O notificare
45
+ *[other] { $count } (de) notificări
46
+ }
47
+
48
+ ## Offline User
49
+ user-offline = utilizatorul este offline
50
+ user-offline-message = { $source ->
51
+ [streamer] Se pare că <1>@{ $handle } este offline</1>, dar recomandă să vizionați:
52
+ *[default] Se pare că <1>@{ $handle } este offline</1>, dar vă recomandăm să vizionați:
53
+ }
54
+ user-offline-no-recommendations =
55
+ Se pare că <1>@{ $handle } este offline</1> acum.
56
+ Reveniți mai târziu.
57
+ streaming-title = transmisie în direct { $title }
58
+ viewer-count = { $count ->
59
+ [0] 0 vizionări
60
+ [1] 1 vizionare
61
+ *[other] { $count } (de) vizionări
62
+ }
63
+
64
+ ## PDS Host Selector
65
+ pds-selector-title = Nou pe Atmosphere?
66
+ pds-selector-description = Va trebui să selectați un PDS (Personal Data Server) pentru a accesa aplicațiile de pe Atmosphere, cum ar fi Bluesky, Tangled și Spark.
67
+ pds-selector-custom-label = Alt PDS
68
+ pds-selector-custom-description = Introduceți adresa URL a propriei gazde PDS
69
+ pds-selector-custom-url-label = URL PDS personalizat
70
+ pds-selector-custom-url-placeholder = https://pds.exemplu.ro
71
+ pds-selector-learn-more = Aflați mai multe despre găzduirea proprie
72
+ pds-selector-info = Fiecare gazdă are propriile politici și standarde de fiabilitate. Datele dvs. ATProto se află pe gazda pe care o alegeți și le puteți migra ulterior. Notă: Streamplace are propriile reguli de moderare - accesul dvs. poate fi interzis pe Streamplace indiferent de gazda pe care o alegeți.
73
+ pds-selector-read-policies = Citiți <tosLink>Termenii și condițiile</tosLink> și <privacyLink>Politica de confidențialitate</privacyLink> ale { $label } înainte de a continua.
74
+ pds-selector-handle-policy-checkbox = Am citit și sunt de acord cu <policyLink>politica de gestionare</policyLink>
@@ -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 } 位观众