From 9027cbdf3e7d119032b95966376a4b7a2d673be1 Mon Sep 17 00:00:00 2001 From: Hampus Date: Sat, 19 Sep 2026 16:46:22 +0200 Subject: [PATCH] fix(voice): send screen shares at the quality the user picked (#2840) --- fluxer_admin/openapi-admin.json | 54 - fluxer_admin/src/api/types/instance_config.rs | 42 - fluxer_admin/src/routes/system_actions.rs | 42 +- .../src/templates/pages/instance_config.rs | 111 +- fluxer_admin/tests/api_deserialization.rs | 8 - fluxer_admin/tests/htmx_acceptance.rs | 1 - .../tests/voice_restriction_writes.rs | 33 - .../InstanceConfigAdminController.ts | 16 - .../api/experiment/ExperimentController.ts | 5 +- .../tests/ExperimentController.test.ts | 91 - .../instance/InstanceConfigRepository.test.ts | 73 - .../api/instance/InstanceConfigRepository.ts | 21 - fluxer_api/src/api/openapi/openapi.json | 14 +- .../src/room/PCTransport.test.ts | 23 + .../livekit-client/src/room/PCTransport.ts | 3 + .../src/room/PCTransportManager.ts | 5 - .../livekit-client/src/room/RTCEngine.test.ts | 42 +- .../pkgs/livekit-client/src/room/RTCEngine.ts | 2 +- .../src/room/participant/LocalParticipant.ts | 28 +- .../livekit-client/src/room/utils.test.ts | 52 +- .../pkgs/livekit-client/src/room/utils.ts | 19 + .../src/features/i18n/locales/ar/messages.po | 662 ++- .../locales/auto-i18n-reviewed-unchanged.json | 12 + .../src/features/i18n/locales/bg/messages.po | 662 ++- .../src/features/i18n/locales/cs/messages.po | 662 ++- .../src/features/i18n/locales/da/messages.po | 662 ++- .../src/features/i18n/locales/de/messages.po | 662 ++- .../src/features/i18n/locales/el/messages.po | 662 ++- .../features/i18n/locales/en-GB/messages.po | 666 ++- .../features/i18n/locales/en-US/messages.po | 662 ++- .../features/i18n/locales/es-419/messages.po | 662 ++- .../features/i18n/locales/es-ES/messages.po | 662 ++- .../src/features/i18n/locales/fi/messages.po | 662 ++- .../src/features/i18n/locales/fr/messages.po | 662 ++- .../src/features/i18n/locales/he/messages.po | 662 ++- .../src/features/i18n/locales/hi/messages.po | 662 ++- .../src/features/i18n/locales/hr/messages.po | 662 ++- .../src/features/i18n/locales/hu/messages.po | 662 ++- .../src/features/i18n/locales/id/messages.po | 662 ++- .../src/features/i18n/locales/it/messages.po | 662 ++- .../src/features/i18n/locales/ja/messages.po | 662 ++- .../src/features/i18n/locales/ko/messages.po | 662 ++- .../src/features/i18n/locales/lt/messages.po | 662 ++- .../src/features/i18n/locales/nl/messages.po | 662 ++- .../src/features/i18n/locales/no/messages.po | 662 ++- .../src/features/i18n/locales/pl/messages.po | 662 ++- .../features/i18n/locales/pt-BR/messages.po | 662 ++- .../src/features/i18n/locales/ro/messages.po | 662 ++- .../src/features/i18n/locales/ru/messages.po | 662 ++- .../features/i18n/locales/sv-SE/messages.po | 662 ++- .../src/features/i18n/locales/th/messages.po | 662 ++- .../src/features/i18n/locales/tr/messages.po | 662 ++- .../src/features/i18n/locales/uk/messages.po | 662 ++- .../src/features/i18n/locales/vi/messages.po | 662 ++- .../features/i18n/locales/zh-CN/messages.po | 662 ++- .../features/i18n/locales/zh-TW/messages.po | 662 ++- .../components/modals/tabs/UserVideoTab.tsx | 13 - .../ActiveScreenShareMenu.module.css | 24 - .../components/ActiveScreenShareMenu.tsx | 81 +- .../components/AudioSourcePickerLinux.tsx | 13 +- .../voice/components/StreamInfoPill.tsx | 43 +- .../features/voice/components/StreamKeys.ts | 27 - .../components/StreamSettingsMenuContent.tsx | 16 +- .../VoiceConnectionStatus.module.css | 11 - .../VoiceParticipantTile.module.css | 6 - .../voice/components/VoiceParticipantTile.tsx | 57 +- .../VoiceParticipantTileStateMachine.ts | 2 - .../modals/ScreenSharePickerModal.tsx | 10 +- .../LocalParticipantControls.tsx | 17 +- .../LocalParticipantControlsStateMachine.ts | 7 - .../voice_participant_tile/shared.ts | 5 - .../voice/engine/MediaEngineFacade.ts | 4 - .../engine/ScreenShareCodecNegotiation.ts | 4 - .../engine/ScreenShareUnderperformance.ts | 1059 ----- .../VoiceEngineV2AppConnectionHostAdapter.ts | 11 +- ...gineV2AppScreenShareDeliveryWiring.test.ts | 4180 ----------------- ...EngineV2AppScreenShareExecutionAdapter.tsx | 338 +- ...VoiceEngineV2AppScreenShareLiveKitFlows.ts | 15 +- ...oiceEngineV2AppScreenShareTrackPlumbing.ts | 43 +- .../VoiceEngineV2AppScreenShareWiring.test.ts | 1814 +++++++ .../DisplayMediaCapture.ts | 2 + .../voice_screen_share_manager/shared.ts | 219 +- .../voice/state/ActiveScreenShareSource.ts | 18 + .../voice/state/ScreenShareDelivery.ts | 252 - .../voice/state/ScreenShareDeliveryRollout.ts | 20 - .../voice/utils/CodecCapabilityDetector.ts | 16 +- .../voice/utils/GpuEncoderCapabilities.ts | 60 +- .../voice/utils/NativeAudioCaptureBridge.ts | 24 + .../voice/utils/ScreenShareAudioSummary.ts | 65 +- .../voice/utils/ScreenShareCodecSelection.ts | 92 +- .../voice/utils/ScreenShareLifecycleLog.ts | 26 - .../voice/utils/ScreenShareOptions.ts | 208 +- .../voice/utils/ScreenShareStartFlow.ts | 119 +- .../voice/utils/VideoDecoderCapabilities.ts | 8 +- .../utils/VoiceMessageDescriptors.test.ts | 744 +-- .../voice/utils/VoiceMessageDescriptors.ts | 253 +- .../src/content/docs/admin-api/instance.mdx | 29 +- .../src/content/docs/http-api/experiments.mdx | 32 +- .../schema/src/domains/admin/AdminSchemas.ts | 6 - .../experiment/ClientBehaviorExperiment.ts | 58 - .../domains/experiment/ExperimentSchemas.ts | 11 - .../experiment/ScreenShareDeliverySchemas.ts | 30 - 102 files changed, 12454 insertions(+), 20847 deletions(-) delete mode 100644 fluxer_app/src/features/voice/components/ActiveScreenShareMenu.module.css delete mode 100644 fluxer_app/src/features/voice/engine/ScreenShareUnderperformance.ts delete mode 100644 fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareDeliveryWiring.test.ts create mode 100644 fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts delete mode 100644 fluxer_app/src/features/voice/state/ScreenShareDelivery.ts delete mode 100644 fluxer_app/src/features/voice/state/ScreenShareDeliveryRollout.ts delete mode 100644 packages/schema/src/domains/experiment/ClientBehaviorExperiment.ts delete mode 100644 packages/schema/src/domains/experiment/ScreenShareDeliverySchemas.ts diff --git a/fluxer_admin/openapi-admin.json b/fluxer_admin/openapi-admin.json index b56b332d9..353d30e22 100644 --- a/fluxer_admin/openapi-admin.json +++ b/fluxer_admin/openapi-admin.json @@ -10524,7 +10524,6 @@ }, "gateway_rollout": {"$ref": "#/components/schemas/GatewayRolloutConfigResponse"}, "voice_noise_suppression": {"$ref": "#/components/schemas/VoiceNoiseSuppressionConfigResponse"}, - "screen_share_delivery": {"$ref": "#/components/schemas/ScreenShareDeliveryConfigResponse"}, "experiment_delivery": {"$ref": "#/components/schemas/ExperimentDeliveryConfigResponse"}, "registration": { "type": "object", @@ -10952,7 +10951,6 @@ "sso", "gateway_rollout", "voice_noise_suppression", - "screen_share_delivery", "experiment_delivery", "registration", "self_hosted", @@ -11087,10 +11085,6 @@ "nullable": true, "allOf": [{"$ref": "#/components/schemas/VoiceNoiseSuppressionConfigUpdateRequest"}] }, - "screen_share_delivery": { - "nullable": true, - "allOf": [{"$ref": "#/components/schemas/ScreenShareDeliveryConfigUpdateRequest"}] - }, "experiment_delivery": { "nullable": true, "allOf": [{"$ref": "#/components/schemas/ExperimentDeliveryConfigUpdateRequest"}] @@ -15184,24 +15178,6 @@ "poll_jitter_percent": {"type": "integer", "minimum": 0, "maximum": 50} } }, - "ScreenShareDeliveryConfigUpdateRequest": { - "type": "object", - "properties": { - "enabled": {"type": "boolean"}, - "rollout_basis_points": {"type": "integer", "minimum": 0, "maximum": 10000}, - "rollout_salt": {"type": "string", "minLength": 1, "maxLength": 64}, - "included_user_ids": { - "maxItems": 1000, - "type": "array", - "items": {"type": "string", "pattern": "^\\d{1,20}$"} - }, - "excluded_user_ids": { - "maxItems": 1000, - "type": "array", - "items": {"type": "string", "pattern": "^\\d{1,20}$"} - } - } - }, "VoiceNoiseSuppressionConfigUpdateRequest": { "type": "object", "properties": { @@ -15268,36 +15244,6 @@ "required": ["poll_interval_seconds", "poll_jitter_percent"], "additionalProperties": false }, - "ScreenShareDeliveryConfigResponse": { - "type": "object", - "properties": { - "enabled": {"default": false, "type": "boolean"}, - "config_version": {"default": 0, "type": "integer", "minimum": 0, "maximum": 9007199254740991}, - "rollout_basis_points": {"default": 0, "type": "integer", "minimum": 0, "maximum": 10000}, - "rollout_salt": {"default": "screen-share-delivery-v1", "type": "string", "minLength": 1, "maxLength": 64}, - "included_user_ids": { - "default": [], - "maxItems": 1000, - "type": "array", - "items": {"type": "string", "pattern": "^\\d{1,20}$"} - }, - "excluded_user_ids": { - "default": [], - "maxItems": 1000, - "type": "array", - "items": {"type": "string", "pattern": "^\\d{1,20}$"} - } - }, - "required": [ - "enabled", - "config_version", - "rollout_basis_points", - "rollout_salt", - "included_user_ids", - "excluded_user_ids" - ], - "additionalProperties": false - }, "VoiceNoiseSuppressionConfigResponse": { "type": "object", "properties": { diff --git a/fluxer_admin/src/api/types/instance_config.rs b/fluxer_admin/src/api/types/instance_config.rs index 3e2ac54ba..f70d959d1 100644 --- a/fluxer_admin/src/api/types/instance_config.rs +++ b/fluxer_admin/src/api/types/instance_config.rs @@ -23,8 +23,6 @@ pub struct InstanceConfigResponse { #[serde(default)] pub voice_noise_suppression: VoiceNoiseSuppressionConfigResponse, #[serde(default)] - pub screen_share_delivery: ScreenShareDeliveryConfigResponse, - #[serde(default)] pub experiment_delivery: ExperimentDeliveryConfigResponse, } @@ -517,44 +515,6 @@ impl Default for VoiceNoiseSuppressionConfigResponse { } } -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(default)] -pub struct ScreenShareDeliveryConfigResponse { - pub enabled: bool, - pub config_version: u64, - pub rollout_basis_points: u32, - pub rollout_salt: String, - pub included_user_ids: Vec, - pub excluded_user_ids: Vec, -} - -impl Default for ScreenShareDeliveryConfigResponse { - fn default() -> Self { - Self { - enabled: false, - config_version: 0, - rollout_basis_points: 0, - rollout_salt: "screen-share-delivery-v1".to_owned(), - included_user_ids: Vec::new(), - excluded_user_ids: Vec::new(), - } - } -} - -#[derive(Clone, Debug, Default, Serialize)] -pub struct ScreenShareDeliveryConfigUpdateRequest { - #[serde(skip_serializing_if = "Option::is_none")] - pub enabled: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub rollout_basis_points: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub rollout_salt: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub included_user_ids: Option>, - #[serde(skip_serializing_if = "Option::is_none")] - pub excluded_user_ids: Option>, -} - #[derive(Clone, Debug, Default, Serialize)] pub struct VoiceNoiseSuppressionConfigUpdateRequest { #[serde(skip_serializing_if = "Option::is_none")] @@ -697,8 +657,6 @@ pub struct InstanceConfigUpdateRequest { #[serde(skip_serializing_if = "Option::is_none")] pub voice_noise_suppression: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub screen_share_delivery: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub experiment_delivery: Option, } diff --git a/fluxer_admin/src/routes/system_actions.rs b/fluxer_admin/src/routes/system_actions.rs index 4e7021610..5be5a3e37 100644 --- a/fluxer_admin/src/routes/system_actions.rs +++ b/fluxer_admin/src/routes/system_actions.rs @@ -18,9 +18,9 @@ use crate::{ InstanceRegistrationConfigUpdateRequest, InstanceServicesUpdateRequest, InstanceYoutubeIntegrationUpdateRequest, LimitConfigUpdateRequest, LimitRule, LimitRuleFilters, NoiseSuppressionBackend, PremiumMode, RegistrationMode, - ScreenShareDeliveryConfigUpdateRequest, SsoConfigUpdateRequest, - VOICE_NS_MAX_GUILD_OVERRIDES, VOICE_NS_MAX_TARGETED_USERS, VoiceE2eeScope, - VoiceNoiseSuppressionConfigUpdateRequest, VoiceNoiseSuppressionGuildOverride, + SsoConfigUpdateRequest, VOICE_NS_MAX_GUILD_OVERRIDES, VOICE_NS_MAX_TARGETED_USERS, + VoiceE2eeScope, VoiceNoiseSuppressionConfigUpdateRequest, + VoiceNoiseSuppressionGuildOverride, }, }, config::AdminConfig, @@ -207,10 +207,6 @@ pub async fn instance_config_post( Ok(update) => instance_config_result(client.update_instance_config(&update).await), Err(message) => FlashData::error(message), }, - "update_screen_share_delivery" => match build_screen_share_delivery_update(&form) { - Ok(update) => instance_config_result(client.update_instance_config(&update).await), - Err(message) => FlashData::error(message), - }, "update_experiment_delivery" => match build_experiment_delivery_update(&form) { Ok(update) => instance_config_result(client.update_instance_config(&update).await), Err(message) => FlashData::error(message), @@ -573,38 +569,6 @@ fn parse_voice_noise_suppression_guild_overrides( Ok(overrides) } -fn build_screen_share_delivery_update( - form: &MultiValueForm, -) -> Result { - Ok(InstanceConfigUpdateRequest { - screen_share_delivery: Some(ScreenShareDeliveryConfigUpdateRequest { - enabled: Some(form.bool_value("screen_share_delivery_enabled")), - rollout_basis_points: parse_form_number( - form, - "screen_share_delivery_rollout_basis_points", - "Rollout basis points", - 0, - EXPERIMENT_ROLLOUT_BASIS_POINTS_MAX, - )?, - rollout_salt: parse_experiment_rollout_salt( - form, - "screen_share_delivery_rollout_salt", - )?, - included_user_ids: Some(parse_experiment_user_ids( - form.first("screen_share_delivery_included_user_ids") - .unwrap_or_default(), - "Included user IDs", - )?), - excluded_user_ids: Some(parse_experiment_user_ids( - form.first("screen_share_delivery_excluded_user_ids") - .unwrap_or_default(), - "Excluded user IDs", - )?), - }), - ..Default::default() - }) -} - fn build_voice_noise_suppression_update( form: &MultiValueForm, ) -> Result { diff --git a/fluxer_admin/src/templates/pages/instance_config.rs b/fluxer_admin/src/templates/pages/instance_config.rs index 6c3524cd4..40d497505 100644 --- a/fluxer_admin/src/templates/pages/instance_config.rs +++ b/fluxer_admin/src/templates/pages/instance_config.rs @@ -6,8 +6,8 @@ use crate::{ InstanceConfigResponse, InstanceIntegrationsResponse, InstanceMediaResponse, InstancePolicyResponse, InstanceRegistrationResponse, LimitConfigResponse, NoiseSuppressionBackend, PendingRegistrationResponse, RegistrationUrlResponse, - ScreenShareDeliveryConfigResponse, SsoConfigResponse, VOICE_NS_MAX_GUILD_OVERRIDES, - VOICE_NS_MAX_TARGETED_USERS, VoiceNoiseSuppressionConfigResponse, + SsoConfigResponse, VOICE_NS_MAX_GUILD_OVERRIDES, VOICE_NS_MAX_TARGETED_USERS, + VoiceNoiseSuppressionConfigResponse, }, config::AdminConfig, middleware::auth::AuthContext, @@ -148,7 +148,6 @@ pub fn instance_config_page( html! { (gateway_rollout_section(base, csrf_token, &instance_config.gateway_rollout)) (voice_noise_suppression_section(base, csrf_token, &instance_config.voice_noise_suppression)) - (screen_share_delivery_section(base, csrf_token, &instance_config.screen_share_delivery)) (experiment_delivery_section(base, csrf_token, &instance_config.experiment_delivery)) @if let Some(limit_config) = limit_config { (limit_config_section(base, limit_config)) @@ -1188,112 +1187,6 @@ fn voice_noise_suppression_section( ) } -fn screen_share_delivery_section( - base: &str, - csrf_token: &str, - screen_share_delivery: &ScreenShareDeliveryConfigResponse, -) -> Markup { - let status = if screen_share_delivery.enabled { - ("Live", BadgeVariant::Success) - } else { - ("Inert", BadgeVariant::Default) - }; - let included_user_ids = screen_share_delivery.included_user_ids.join("\n"); - let excluded_user_ids = screen_share_delivery.excluded_user_ids.join("\n"); - section_card_with_description( - "Screen Share Delivery", - "Picks whether a targeted client adapts its own screen share after it starts. A targeted \ - client measures what the encoder sends, steps the share down a resolution and frame rate \ - ladder while it cannot keep up, probes back up when it can, remembers the settled rung \ - per codec, and tells the sharer what is going out. A client that is not targeted \ - publishes the same target and never changes it. Both arms still get the publish-time \ - fixes and both arms still recover a stalled encoder. While the master switch below is \ - off every client publishes and holds, whatever the rest of these fields say.", - html! { - form method="post" action={(base) "/instance-config?action=update_screen_share_delivery"} { - (csrf_input(csrf_token)) - div class="space-y-6" { - div class="flex flex-wrap items-center gap-2" { - h3 class="text-sm font-semibold text-neutral-900" { "Master switch" } - (badge(status.0, status.1)) - span class="text-xs text-neutral-500" { - "Config version " (screen_share_delivery.config_version) - } - } - (checkbox( - "screen_share_delivery_enabled", - "true", - "Serve screen share delivery assignments to clients", - screen_share_delivery.enabled, - true, - )) - p class="text-xs text-neutral-500" { - "Off is the safe state. With this unchecked every client is told the \ - rollout is inert and holds its published target for the life of the \ - share, so the rollout and targeting fields below have no effect at all." - } - - h3 class="text-sm font-semibold text-neutral-900" { "Rollout" } - (number_field( - "screen_share_delivery_rollout_basis_points", - "Rollout (basis points)", - &screen_share_delivery.rollout_basis_points.to_string(), - Some(0), Some(10000), "1", - Some("Share of users bucketed into the canary, in basis points: 0 is nobody, 100 is 1%, 10000 is everybody."), - )) - div class="flex flex-col gap-2" { - (text_input( - "screen_share_delivery_rollout_salt", - "Rollout Salt", - &screen_share_delivery.rollout_salt, - "screen-share-delivery-v1", - )) - p class="text-xs text-neutral-500" { - "Seeds the bucketing hash. Changing it reshuffles which users fall \ - inside the percentage above. Leave it alone to keep the current \ - cohort stable." - } - } - div class="flex flex-col gap-2" { - (textarea_input( - "screen_share_delivery_included_user_ids", - "Always-on User IDs", - "1500000000000000001\n1500000000000000002", - &included_user_ids, - 4, - false, - )) - p class="text-xs text-neutral-500" { - "One snowflake per line, or comma separated. These users are targeted \ - regardless of the percentage above. IDs must contain 1 to 20 decimal \ - digits. Invalid entries prevent the save; blank entries and duplicate \ - IDs are ignored." - } - } - div class="flex flex-col gap-2" { - (textarea_input( - "screen_share_delivery_excluded_user_ids", - "Never-on User IDs", - "1500000000000000003\n1500000000000000004", - &excluded_user_ids, - 4, - false, - )) - p class="text-xs text-neutral-500" { - "Same format. Exclusion wins over both the always-on list and the \ - percentage, so this is the per-user kill switch." - } - } - - (form_actions(html! { - (submit_button("Save Screen Share Delivery Configuration")) - })) - } - } - }, - ) -} - fn experiment_delivery_section( base: &str, csrf_token: &str, diff --git a/fluxer_admin/tests/api_deserialization.rs b/fluxer_admin/tests/api_deserialization.rs index 44d21425f..67ec233e3 100644 --- a/fluxer_admin/tests/api_deserialization.rs +++ b/fluxer_admin/tests/api_deserialization.rs @@ -410,14 +410,6 @@ fn deserialize_instance_config_response_with_unknown_keys() { "future_object_knob": {"nested": true}, "future_list_knob": ["a", "b"] }, - "screen_share_delivery": { - "enabled": false, - "config_version": 0, - "rollout_basis_points": 0, - "rollout_salt": "screen-share-delivery-v1", - "included_user_ids": [], - "excluded_user_ids": [] - }, "experiment_delivery": {"poll_interval_seconds": 300, "poll_jitter_percent": 15}, "registration": { "mode": "open", diff --git a/fluxer_admin/tests/htmx_acceptance.rs b/fluxer_admin/tests/htmx_acceptance.rs index 3b8c4f55f..877793c3b 100644 --- a/fluxer_admin/tests/htmx_acceptance.rs +++ b/fluxer_admin/tests/htmx_acceptance.rs @@ -465,7 +465,6 @@ async fn mutating_admin_pages_render_usable_csrf_tokens() { "/instance-config?action=update_gateway_rollout", "/instance-config?action=update_sso", "/instance-config?action=update_voice_noise_suppression", - "/instance-config?action=update_screen_share_delivery", "/instance-config?action=update_experiment_delivery", ][..], ), diff --git a/fluxer_admin/tests/voice_restriction_writes.rs b/fluxer_admin/tests/voice_restriction_writes.rs index 47ad16bdd..6280db981 100644 --- a/fluxer_admin/tests/voice_restriction_writes.rs +++ b/fluxer_admin/tests/voice_restriction_writes.rs @@ -95,39 +95,6 @@ async fn clearing_the_region_restriction_fields_reaches_the_api_as_empty_lists() assert_eq!(body["allowed_guild_ids"], json!([])); } -#[tokio::test] -async fn the_screen_share_delivery_form_keeps_the_included_and_excluded_lists_apart() { - let app = setup().await; - let csrf_token = csrf_token(&app).await; - let status = post_form( - &app, - "/instance-config?action=update_screen_share_delivery", - &format!( - "_csrf={csrf_token}&screen_share_delivery_enabled=true\ - &screen_share_delivery_rollout_basis_points=2500\ - &screen_share_delivery_rollout_salt=screen-share-delivery-v1\ - &screen_share_delivery_included_user_ids=1500000000000000001\ - &screen_share_delivery_excluded_user_ids=1500000000000000002" - ), - ) - .await; - assert_eq!(status, StatusCode::SEE_OTHER); - - let body = captured_body(&app, "PATCH /admin/instance/config"); - let delivery = &body["screen_share_delivery"]; - assert_eq!(delivery["enabled"], json!(true)); - assert_eq!(delivery["rollout_basis_points"], json!(2500)); - assert_eq!(delivery["rollout_salt"], json!("screen-share-delivery-v1")); - assert_eq!( - delivery["included_user_ids"], - json!(["1500000000000000001"]) - ); - assert_eq!( - delivery["excluded_user_ids"], - json!(["1500000000000000002"]) - ); -} - struct TestApp { router: Router, session_cookie: String, diff --git a/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts b/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts index 3e8d0b33a..09337c6a7 100644 --- a/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts +++ b/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts @@ -34,7 +34,6 @@ import {GatewayRolloutConfigSchema} from '@fluxer/schema/src/domains/admin/Gatew import {VoiceNoiseSuppressionConfigSchema} from '@fluxer/schema/src/domains/admin/VoiceNoiseSuppressionSchemas'; import {UserIdParam} from '@fluxer/schema/src/domains/common/CommonParamSchemas'; import {ExperimentDeliveryConfigSchema} from '@fluxer/schema/src/domains/experiment/ExperimentSchemas'; -import {ScreenShareDeliveryConfigSchema} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; import type {InstanceBranding} from '@fluxer/schema/src/domains/instance/InstanceSchemas'; import {SmtpEmailProvider} from '@pkgs/email/src/SmtpEmailProvider'; import type {Context} from 'hono'; @@ -60,7 +59,6 @@ async function buildInstanceConfigResponse(): Promise { ssoConfig, gatewayRollout, voiceNoiseSuppression, - screenShareDelivery, experimentDelivery, registrationConfig, registrationUrls, @@ -69,7 +67,6 @@ async function buildInstanceConfigResponse(): Promise { instanceConfigRepository.getSsoConfig(), instanceConfigRepository.getGatewayRolloutConfig(), instanceConfigRepository.getVoiceNoiseSuppressionConfig(), - instanceConfigRepository.getScreenShareDeliveryConfig(), instanceConfigRepository.getExperimentDeliveryConfig(), instanceConfigRepository.getRegistrationConfig(), instanceConfigRepository.getRegistrationUrlsForAdmin(), @@ -101,7 +98,6 @@ async function buildInstanceConfigResponse(): Promise { }, gateway_rollout: gatewayRollout, voice_noise_suppression: voiceNoiseSuppression, - screen_share_delivery: screenShareDelivery, experiment_delivery: experimentDelivery, registration: { ...registrationConfig, @@ -265,18 +261,6 @@ export function InstanceConfigAdminController(app: HonoApp) { await instanceConfigRepository.setVoiceNoiseSuppressionConfig(validated); } } - if (data.screen_share_delivery) { - const patch = omitUndefinedFields(data.screen_share_delivery); - if (Object.keys(patch).length > 0) { - const currentScreenShareDelivery = await instanceConfigRepository.getScreenShareDeliveryConfig(); - const validated = ScreenShareDeliveryConfigSchema.parse({ - ...currentScreenShareDelivery, - ...patch, - config_version: currentScreenShareDelivery.config_version + 1, - }); - await instanceConfigRepository.setScreenShareDeliveryConfig(validated); - } - } if (data.experiment_delivery) { const currentExperimentDelivery = await instanceConfigRepository.getExperimentDeliveryConfig(); const validated = ExperimentDeliveryConfigSchema.parse({ diff --git a/fluxer_api/src/api/experiment/ExperimentController.ts b/fluxer_api/src/api/experiment/ExperimentController.ts index 1f1c80999..77570311e 100644 --- a/fluxer_api/src/api/experiment/ExperimentController.ts +++ b/fluxer_api/src/api/experiment/ExperimentController.ts @@ -10,7 +10,6 @@ import {entityTagMatches} from '@app/api/utils/EntityTag'; import {Headers as HttpHeaders} from '@fluxer/constants/src/Headers'; import {resolveVoiceNoiseSuppressionAssignment} from '@fluxer/schema/src/domains/admin/VoiceNoiseSuppressionSchemas'; import {ExperimentAssignmentsResponse} from '@fluxer/schema/src/domains/experiment/ExperimentSchemas'; -import {resolveScreenShareDeliveryAssignment} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; export function ExperimentController(app: HonoApp) { app.get( @@ -29,10 +28,9 @@ export function ExperimentController(app: HonoApp) { }), async (ctx) => { const instanceConfigRepository = ctx.get('instanceConfigRepository'); - const [delivery, voiceConfig, screenShareDeliveryConfig] = await Promise.all([ + const [delivery, voiceConfig] = await Promise.all([ instanceConfigRepository.getExperimentDeliveryConfig(), instanceConfigRepository.getVoiceNoiseSuppressionConfig(), - instanceConfigRepository.getScreenShareDeliveryConfig(), ]); const userId = ctx.get('user').id.toString(); const body: ExperimentAssignmentsResponse = { @@ -40,7 +38,6 @@ export function ExperimentController(app: HonoApp) { poll_jitter_percent: delivery.poll_jitter_percent, assignments: { voice_noise_suppression: resolveVoiceNoiseSuppressionAssignment(voiceConfig, userId), - screen_share_delivery: resolveScreenShareDeliveryAssignment(screenShareDeliveryConfig, userId), }, }; const etag = `"${createHash('sha256').update(JSON.stringify(body)).digest('hex')}"`; diff --git a/fluxer_api/src/api/experiment/tests/ExperimentController.test.ts b/fluxer_api/src/api/experiment/tests/ExperimentController.test.ts index d094f97dd..3b20faad7 100644 --- a/fluxer_api/src/api/experiment/tests/ExperimentController.test.ts +++ b/fluxer_api/src/api/experiment/tests/ExperimentController.test.ts @@ -17,10 +17,6 @@ import { type ExperimentDeliveryConfigResponse, readVoiceNoiseSuppressionAssignment, } from '@fluxer/schema/src/domains/experiment/ExperimentSchemas'; -import { - INERT_SCREEN_SHARE_DELIVERY_ASSIGNMENT, - ScreenShareDeliveryConfigSchema, -} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; import {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest'; const NOT_MODIFIED = 304; @@ -55,7 +51,6 @@ describe('GET /experiments', () => { poll_jitter_percent: DEFAULT_EXPERIMENT_POLL_JITTER_PERCENT, assignments: { voice_noise_suppression: INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT, - screen_share_delivery: INERT_SCREEN_SHARE_DELIVERY_ASSIGNMENT, }, }); }); @@ -144,92 +139,6 @@ describe('GET /experiments', () => { }); }); - it('resolves the screen share delivery caller through its own config', async () => { - const targeted = await createTestAccount(harness); - const untargeted = await createTestAccount(harness); - await getInstanceConfigRepository().setScreenShareDeliveryConfig( - ScreenShareDeliveryConfigSchema.parse({ - enabled: true, - config_version: 21, - rollout_basis_points: 0, - included_user_ids: [targeted.userId], - }), - ); - - const targetedBody = await createBuilder(harness, targeted.token) - .get(ENDPOINT) - .execute(); - expect(targetedBody.assignments.screen_share_delivery).toEqual({ - enabled: true, - config_version: 21, - user_targeted: true, - source: 'user_rule', - }); - - const untargetedBody = await createBuilder(harness, untargeted.token) - .get(ENDPOINT) - .execute(); - expect(untargetedBody.assignments.screen_share_delivery).toEqual({ - enabled: true, - config_version: 21, - user_targeted: false, - source: null, - }); - }); - - it('excludes a screen share delivery user the allowlist and the canary both hold', async () => { - const account = await createTestAccount(harness); - await getInstanceConfigRepository().setScreenShareDeliveryConfig( - ScreenShareDeliveryConfigSchema.parse({ - enabled: true, - config_version: 3, - rollout_basis_points: 10000, - included_user_ids: [account.userId], - excluded_user_ids: [account.userId], - }), - ); - - const body = await createBuilder(harness, account.token).get(ENDPOINT).execute(); - - expect(body.assignments.screen_share_delivery).toEqual({ - enabled: true, - config_version: 3, - user_targeted: false, - source: null, - }); - }); - - it('bumps the screen share delivery config version on an admin update and serves it', async () => { - const admin = await setUserACLs(harness, await createTestAccount(harness), [ - AdminACLs.AUTHENTICATE, - AdminACLs.INSTANCE_CONFIG_VIEW, - AdminACLs.INSTANCE_CONFIG_UPDATE, - ]); - - const patched = await createBuilder<{ - screen_share_delivery: {config_version: number; enabled: boolean; rollout_basis_points: number}; - voice_noise_suppression: {config_version: number}; - }>(harness, admin.token) - .patch('/admin/instance/config') - .body({screen_share_delivery: {enabled: true, rollout_basis_points: 10000}}) - .execute(); - expect(patched.screen_share_delivery).toMatchObject({ - config_version: 1, - enabled: true, - rollout_basis_points: 10000, - }); - expect(patched.voice_noise_suppression.config_version).toBe(0); - - const body = await createBuilder(harness, admin.token).get(ENDPOINT).execute(); - expect(body.assignments.screen_share_delivery).toMatchObject({ - enabled: true, - config_version: 1, - user_targeted: true, - source: 'canary', - }); - expect(body.assignments.voice_noise_suppression).toEqual(INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT); - }); - it('revalidates with a strong etag and answers 304 when nothing changed', async () => { const account = await createTestAccount(harness); diff --git a/fluxer_api/src/api/instance/InstanceConfigRepository.test.ts b/fluxer_api/src/api/instance/InstanceConfigRepository.test.ts index a30d313f7..4e863259f 100644 --- a/fluxer_api/src/api/instance/InstanceConfigRepository.test.ts +++ b/fluxer_api/src/api/instance/InstanceConfigRepository.test.ts @@ -17,16 +17,10 @@ import { DEFAULT_EXPERIMENT_DELIVERY_CONFIG, type ExperimentDeliveryConfig, } from '@fluxer/schema/src/domains/experiment/ExperimentSchemas'; -import { - type ScreenShareDeliveryConfig, - ScreenShareDeliveryConfigSchema, -} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; import {afterEach, describe, expect, it, vi} from 'vitest'; const VOICE_NOISE_SUPPRESSION_CONFIG_KEY = 'voice_noise_suppression_config'; const EXPERIMENT_DELIVERY_CONFIG_KEY = 'experiment_delivery_config'; -const SCREEN_SHARE_DELIVERY_CONFIG_KEY = 'screen_share_delivery_config'; -const DEFAULT_SCREEN_SHARE_DELIVERY_CONFIG: ScreenShareDeliveryConfig = ScreenShareDeliveryConfigSchema.parse({}); const APP_PUBLIC_CONFIG_KEY = 'app_public_config'; const INSTANCE_POLICY_CONFIG_KEY = 'instance_policy_config'; const INSTANCE_INTEGRATIONS_CONFIG_KEY = 'instance_integrations_config'; @@ -389,73 +383,6 @@ describe('InstanceConfigRepository', () => { }); }); - it('returns the default screen share delivery config when the key is absent', async () => { - const executor = new CountingInMemoryCassandraQueryExecutor(); - setCassandraQueryExecutorForTesting(executor); - const kvProvider = new MockKVProvider(); - const repository = createRepository(kvProvider); - - await expect(repository.getScreenShareDeliveryConfig()).resolves.toEqual(DEFAULT_SCREEN_SHARE_DELIVERY_CONFIG); - }); - - it('reads the screen share delivery config from its own key', async () => { - const executor = new CountingInMemoryCassandraQueryExecutor(); - setCassandraQueryExecutorForTesting(executor); - const kvProvider = new MockKVProvider(); - const repository = createRepository(kvProvider); - - await repository.setConfig( - SCREEN_SHARE_DELIVERY_CONFIG_KEY, - JSON.stringify({enabled: true, config_version: 4, rollout_basis_points: 2500}), - ); - await repository.setVoiceNoiseSuppressionConfig({ - ...DEFAULT_VOICE_NOISE_SUPPRESSION_CONFIG, - enabled: false, - config_version: 77, - }); - - await expect(repository.getScreenShareDeliveryConfig()).resolves.toEqual({ - ...DEFAULT_SCREEN_SHARE_DELIVERY_CONFIG, - enabled: true, - config_version: 4, - rollout_basis_points: 2500, - }); - }); - - it('round-trips a stored screen share delivery config', async () => { - const executor = new CountingInMemoryCassandraQueryExecutor(); - setCassandraQueryExecutorForTesting(executor); - const kvProvider = new MockKVProvider(); - const repository = createRepository(kvProvider); - - const config: ScreenShareDeliveryConfig = { - enabled: true, - config_version: 6, - rollout_basis_points: 1000, - rollout_salt: 'screen-share-delivery-v2', - included_user_ids: ['1400000000000000001'], - excluded_user_ids: ['1400000000000000002'], - }; - await repository.setScreenShareDeliveryConfig(config); - - await expect(repository.getScreenShareDeliveryConfig()).resolves.toEqual(config); - await expect(repository.getConfig(SCREEN_SHARE_DELIVERY_CONFIG_KEY)).resolves.toBe(JSON.stringify(config)); - }); - - it('fills missing screen share delivery fields from the schema defaults', async () => { - const executor = new CountingInMemoryCassandraQueryExecutor(); - setCassandraQueryExecutorForTesting(executor); - const kvProvider = new MockKVProvider(); - const repository = createRepository(kvProvider); - - await repository.setConfig(SCREEN_SHARE_DELIVERY_CONFIG_KEY, JSON.stringify({enabled: true})); - - await expect(repository.getScreenShareDeliveryConfig()).resolves.toEqual({ - ...DEFAULT_SCREEN_SHARE_DELIVERY_CONFIG, - enabled: true, - }); - }); - it('publishes a refresh so another repository observes the voice noise suppression config', async () => { const executor = new CountingInMemoryCassandraQueryExecutor(); setCassandraQueryExecutorForTesting(executor); diff --git a/fluxer_api/src/api/instance/InstanceConfigRepository.ts b/fluxer_api/src/api/instance/InstanceConfigRepository.ts index da7a1cb10..bc335b5b6 100644 --- a/fluxer_api/src/api/instance/InstanceConfigRepository.ts +++ b/fluxer_api/src/api/instance/InstanceConfigRepository.ts @@ -36,10 +36,6 @@ import { type ExperimentDeliveryConfig, ExperimentDeliveryConfigSchema, } from '@fluxer/schema/src/domains/experiment/ExperimentSchemas'; -import { - type ScreenShareDeliveryConfig, - ScreenShareDeliveryConfigSchema, -} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; import { type InstanceAppPublic, InstanceAppPublicSchema, @@ -58,7 +54,6 @@ import {z} from 'zod'; const GATEWAY_ROLLOUT_CONFIG_KEY = 'gateway_rollout_config'; const VOICE_NOISE_SUPPRESSION_CONFIG_KEY = 'voice_noise_suppression_config'; -const SCREEN_SHARE_DELIVERY_CONFIG_KEY = 'screen_share_delivery_config'; const EXPERIMENT_DELIVERY_CONFIG_KEY = 'experiment_delivery_config'; const REGISTRATION_CONFIG_KEY = 'registration_config'; const REGISTRATION_URLS_KEY = 'registration_urls'; @@ -344,7 +339,6 @@ type StoredConfigSection = | 'app public' | 'gateway rollout' | 'voice noise suppression' - | 'screen share delivery' | 'experiment delivery' | 'instance policy' | 'integrations' @@ -483,10 +477,6 @@ function parseStoredVoiceNoiseSuppressionConfig(raw: string | null): VoiceNoiseS return parseStoredConfigOrDefault(VoiceNoiseSuppressionConfigSchema, raw, 'voice noise suppression'); } -function parseStoredScreenShareDeliveryConfig(raw: string | null): ScreenShareDeliveryConfig { - return parseStoredConfigOrDefault(ScreenShareDeliveryConfigSchema, raw, 'screen share delivery'); -} - function parseStoredExperimentDeliveryConfig(raw: string | null): ExperimentDeliveryConfig { return parseStoredConfigOrDefault(ExperimentDeliveryConfigSchema, raw, 'experiment delivery'); } @@ -1014,7 +1004,6 @@ export class InstanceConfigRepository { parseStoredGatewayRolloutConfig(snapshot.get(GATEWAY_ROLLOUT_CONFIG_KEY) ?? null), ); parseStoredVoiceNoiseSuppressionConfig(snapshot.get(VOICE_NOISE_SUPPRESSION_CONFIG_KEY) ?? null); - parseStoredScreenShareDeliveryConfig(snapshot.get(SCREEN_SHARE_DELIVERY_CONFIG_KEY) ?? null); parseStoredExperimentDeliveryConfig(snapshot.get(EXPERIMENT_DELIVERY_CONFIG_KEY) ?? null); const policy = parseStoredInstancePolicyConfig(snapshot.get(INSTANCE_POLICY_CONFIG_KEY) ?? null); checkStoredConfig('registration', () => @@ -1096,16 +1085,6 @@ export class InstanceConfigRepository { await this.setConfig(VOICE_NOISE_SUPPRESSION_CONFIG_KEY, JSON.stringify(validated)); } - async getScreenShareDeliveryConfig(): Promise { - const raw = await this.getConfig(SCREEN_SHARE_DELIVERY_CONFIG_KEY); - return parseStoredScreenShareDeliveryConfig(raw); - } - - async setScreenShareDeliveryConfig(config: ScreenShareDeliveryConfig): Promise { - const validated = validateStoredConfig(ScreenShareDeliveryConfigSchema, config, 'screen share delivery'); - await this.setConfig(SCREEN_SHARE_DELIVERY_CONFIG_KEY, JSON.stringify(validated)); - } - async getExperimentDeliveryConfig(): Promise { const raw = await this.getConfig(EXPERIMENT_DELIVERY_CONFIG_KEY); return parseStoredExperimentDeliveryConfig(raw); diff --git a/fluxer_api/src/api/openapi/openapi.json b/fluxer_api/src/api/openapi/openapi.json index a487c6f55..8301ac723 100644 --- a/fluxer_api/src/api/openapi/openapi.json +++ b/fluxer_api/src/api/openapi/openapi.json @@ -27436,8 +27436,7 @@ "assignments": { "type": "object", "properties": { - "voice_noise_suppression": {"$ref": "#/components/schemas/VoiceNoiseSuppressionAssignmentResponse"}, - "screen_share_delivery": {"$ref": "#/components/schemas/ScreenShareDeliveryAssignmentResponse"} + "voice_noise_suppression": {"$ref": "#/components/schemas/VoiceNoiseSuppressionAssignmentResponse"} }, "additionalProperties": false } @@ -31030,17 +31029,6 @@ "additionalProperties": false }, "DonationCurrency": {"type": "string", "enum": ["usd", "eur", "brl", "inr", "pln", "try", "sek", "dkk", "nok"]}, - "ScreenShareDeliveryAssignmentResponse": { - "type": "object", - "properties": { - "enabled": {"type": "boolean"}, - "config_version": {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, - "user_targeted": {"type": "boolean"}, - "source": {"anyOf": [{"type": "string", "enum": ["user_rule", "canary"]}, {"type": "null"}]} - }, - "required": ["enabled", "config_version", "user_targeted", "source"], - "additionalProperties": false - }, "VoiceNoiseSuppressionAssignmentResponse": { "type": "object", "properties": { diff --git a/fluxer_app/pkgs/livekit-client/src/room/PCTransport.test.ts b/fluxer_app/pkgs/livekit-client/src/room/PCTransport.test.ts index 71b7908fb..1670adf31 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/PCTransport.test.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/PCTransport.test.ts @@ -11,6 +11,7 @@ import { ensureAudioNackAndStereo, ensureOpusFmtp, ensureVideoDDExtension, + placeholderMidsFromTransceivers, videoSectionCanReceiveAV1, } from './PCTransport.ts'; import {ddExtensionURI} from './utils.ts'; @@ -239,3 +240,25 @@ describe('ensureVideoDDExtension', () => { expect(sectionOf(sdp, '2').ext).toHaveLength(2); }); }); + +describe('placeholderMidsFromTransceivers', () => { + function transceiver( + mid: string | null, + track: MediaStreamTrack | null, + currentDirection: RTCRtpTransceiverDirection | null, + ): RTCRtpTransceiver { + return {mid, currentDirection, sender: {track}} as unknown as RTCRtpTransceiver; + } + + it('keeps the trackless recvonly sections that still hold an m-line', () => { + const mids = placeholderMidsFromTransceivers([ + transceiver('3', null, 'recvonly'), + transceiver('7', {} as MediaStreamTrack, 'sendonly'), + ]); + expect(mids).toEqual(new Set(['3'])); + }); + + it('drops a transceiver that unpublish stopped so its recycled m-section is not fmtp-conformed', () => { + expect(placeholderMidsFromTransceivers([transceiver('7', null, 'stopped')])).toEqual(new Set()); + }); +}); diff --git a/fluxer_app/pkgs/livekit-client/src/room/PCTransport.ts b/fluxer_app/pkgs/livekit-client/src/room/PCTransport.ts index 36b60bdf6..c8f78487c 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/PCTransport.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/PCTransport.ts @@ -849,6 +849,9 @@ export function collectStereoMids( export function placeholderMidsFromTransceivers(transceivers: ReadonlyArray): Set { const mids = new Set(); for (const transceiver of transceivers) { + if (transceiver.currentDirection === 'stopped') { + continue; + } if (transceiver.mid && !transceiver.sender.track) { mids.add(transceiver.mid); } diff --git a/fluxer_app/pkgs/livekit-client/src/room/PCTransportManager.ts b/fluxer_app/pkgs/livekit-client/src/room/PCTransportManager.ts index ca56d04d8..c79a7b3c7 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/PCTransportManager.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/PCTransportManager.ts @@ -106,11 +106,6 @@ export class PCTransportManager { this.isPublisherConnectionRequired = mode !== 'subscriber-primary'; this.isSubscriberConnectionRequired = mode === 'subscriber-primary'; this.publisher = new PCTransport(rtcConfig, loggerOptions); - if (subscriberVideoCodecExclusions?.length) { - for (const codec of subscriberVideoCodecExclusions) { - this.publisher.excludedVideoDecoderMimeTypes.add(`video/${codec}`); - } - } this._mode = mode; if (mode !== 'publisher-only') { this.subscriber = new PCTransport(rtcConfig, loggerOptions); diff --git a/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.test.ts b/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.test.ts index 8cad0c9aa..851d5cd9b 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.test.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.test.ts @@ -2,7 +2,8 @@ // // SPDX-License-Identifier: Apache-2.0 import {describe, expect, it} from 'vitest'; -import {selectPublisherCodecPreferences} from './RTCEngine.ts'; +import type {InternalRoomOptions} from '../options.ts'; +import RTCEngine, {selectPublisherCodecPreferences} from './RTCEngine.ts'; function codec( mimeType: string, @@ -112,3 +113,42 @@ describe('selectPublisherCodecPreferences', () => { expect(selectPublisherCodecPreferences('av1', [codec('video/VP8'), codec('video/rtx')])).toEqual([]); }); }); + +describe('publisher data channels before negotiation', () => { + function engineWithPublisherChannels(hasPublisherChannels: boolean) { + const engine = new RTCEngine({} as InternalRoomOptions); + const created: Array = []; + const internals = engine as unknown as { + _isClosed: boolean; + pcManager: unknown; + dataChannels: {hasPublisherChannels: boolean; createPublisherChannels: () => void}; + }; + internals._isClosed = false; + internals.dataChannels = { + hasPublisherChannels, + createPublisherChannels: () => created.push('publisher'), + }; + internals.pcManager = { + requirePublisher: () => {}, + negotiate: async () => {}, + publisher: { + off: () => {}, + once: () => {}, + getTransceivers: () => [{} as RTCRtpTransceiver], + }, + }; + return {engine, created}; + } + + it('creates them on a renegotiation that already carries transceivers', async () => { + const {engine, created} = engineWithPublisherChannels(false); + await engine.negotiate(); + expect(created).toEqual(['publisher']); + }); + + it('leaves the existing channels alone', async () => { + const {engine, created} = engineWithPublisherChannels(true); + await engine.negotiate(); + expect(created).toEqual([]); + }); +}); diff --git a/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.ts b/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.ts index 8906aa2f8..8b06c15b8 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.ts @@ -1559,7 +1559,7 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit } this.pcManager.requirePublisher(); - if (this.pcManager.publisher.getTransceivers().length === 0 && !this.dataChannels.hasPublisherChannels) { + if (!this.dataChannels.hasPublisherChannels) { this.createDataChannels(); } diff --git a/fluxer_app/pkgs/livekit-client/src/room/participant/LocalParticipant.ts b/fluxer_app/pkgs/livekit-client/src/room/participant/LocalParticipant.ts index 4a0299b5b..69430df2e 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/participant/LocalParticipant.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/participant/LocalParticipant.ts @@ -108,6 +108,7 @@ import { isWeb, selectPreferredVideoCodec, sleep, + stopTransceiversForSender, supportsVideoCodec, usesLegacySVCEncodings, } from '../utils.ts'; @@ -436,8 +437,9 @@ export default class LocalParticipant extends Participant { enabled: boolean, options?: ScreenShareCaptureOptions, publishOptions?: TrackPublishOptions, + audioPublishOptions?: TrackPublishOptions, ): Promise { - return this.setTrackEnabled(Track.Source.ScreenShare, enabled, options, publishOptions); + return this.setTrackEnabled(Track.Source.ScreenShare, enabled, options, publishOptions, audioPublishOptions); } async setE2EEEnabled(enabled: boolean) { @@ -474,12 +476,14 @@ export default class LocalParticipant extends Participant { enabled: boolean, options?: ScreenShareCaptureOptions, publishOptions?: TrackPublishOptions, + audioPublishOptions?: TrackPublishOptions, ): Promise; private async setTrackEnabled( source: Track.Source, enabled: true, options?: VideoCaptureOptions | AudioCaptureOptions | ScreenShareCaptureOptions, publishOptions?: TrackPublishOptions, + audioPublishOptions?: TrackPublishOptions, ) { this.log.debug('setTrackEnabled', {source, enabled}); if (this.republishPromise) { @@ -548,7 +552,12 @@ export default class LocalParticipant extends Participant { for (const localTrack of localTracks) { this.log.info('publishing track', getLogContextFromTrack(localTrack)); - publishPromises.push(this.publishTrack(localTrack, publishOptions)); + publishPromises.push( + this.publishTrack( + localTrack, + audioPublishOptions && isAudioTrack(localTrack) ? audioPublishOptions : publishOptions, + ), + ); } const publishedTracks = await Promise.all(publishPromises); @@ -1421,29 +1430,30 @@ export default class LocalParticipant extends Participant { const trackSender = track.sender; track.sender = undefined; if (this.engine.pcManager && this.engine.pcManager.currentState < PCTransportState.FAILED && trackSender) { + const publisher = this.engine.pcManager.publisher; try { - for (const transceiver of this.engine.pcManager.publisher.getTransceivers()) { - if (transceiver.sender === trackSender) { - transceiver.direction = 'inactive'; - negotiationNeeded = true; - } - } try { negotiationNeeded = this.engine.removeTrack(trackSender); } catch (e) { this.log.warn(e); negotiationNeeded = true; } + if (stopTransceiversForSender(publisher.getTransceivers(), trackSender)) { + negotiationNeeded = true; + } if (isLocalVideoTrack(track)) { for (const [, trackInfo] of track.simulcastCodecs) { if (trackInfo.sender) { try { - negotiationNeeded = this.engine.removeTrack(trackInfo.sender); + negotiationNeeded = this.engine.removeTrack(trackInfo.sender) || negotiationNeeded; } catch (e) { this.log.warn(e); negotiationNeeded = true; } + if (stopTransceiversForSender(publisher.getTransceivers(), trackInfo.sender)) { + negotiationNeeded = true; + } trackInfo.sender = undefined; } } diff --git a/fluxer_app/pkgs/livekit-client/src/room/utils.test.ts b/fluxer_app/pkgs/livekit-client/src/room/utils.test.ts index 7ba7fbe6d..4e33bdac0 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/utils.test.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/utils.test.ts @@ -3,7 +3,14 @@ // SPDX-License-Identifier: Apache-2.0 import {afterEach, beforeEach, describe, expect, it} from 'vitest'; import {screenCaptureToDisplayMediaStreamOptions} from './track/utils.ts'; -import {selectPreferredVideoCodec, supportsAV1, supportsH265, supportsVideoCodec, supportsVP9} from './utils.ts'; +import { + selectPreferredVideoCodec, + stopTransceiversForSender, + supportsAV1, + supportsH265, + supportsVideoCodec, + supportsVP9, +} from './utils.ts'; const originalNavigator = globalThis.navigator; const originalSender = globalThis.RTCRtpSender; @@ -91,3 +98,46 @@ describe('screenCaptureToDisplayMediaStreamOptions', () => { expect(options.systemAudio).toBe('exclude'); }); }); + +describe('stopTransceiversForSender', () => { + type FakeTransceiver = {sender: RTCRtpSender; direction: string; stopCalls: number; stop?: () => void}; + + function fakeTransceiver(sender: RTCRtpSender, canStop = true): FakeTransceiver { + const transceiver: FakeTransceiver = {sender, direction: 'sendonly', stopCalls: 0}; + if (canStop) { + transceiver.stop = () => { + transceiver.stopCalls += 1; + transceiver.direction = 'stopped'; + }; + } + return transceiver; + } + + function asTransceivers(list: Array): ReadonlyArray { + return list as unknown as ReadonlyArray; + } + + it('stops the transceiver holding the sender so the m-section can be recycled', () => { + const sender = {} as RTCRtpSender; + const mine = fakeTransceiver(sender); + const theirs = fakeTransceiver({} as RTCRtpSender); + expect(stopTransceiversForSender(asTransceivers([theirs, mine]), sender)).toBe(true); + expect(mine.stopCalls).toBe(1); + expect(mine.direction).toBe('stopped'); + expect(theirs.stopCalls).toBe(0); + expect(theirs.direction).toBe('sendonly'); + }); + + it('reports no match when the sender is not on the connection', () => { + const mine = fakeTransceiver({} as RTCRtpSender); + expect(stopTransceiversForSender(asTransceivers([mine]), {} as RTCRtpSender)).toBe(false); + expect(mine.stopCalls).toBe(0); + }); + + it('falls back to inactive where stop is unavailable', () => { + const sender = {} as RTCRtpSender; + const mine = fakeTransceiver(sender, false); + expect(stopTransceiversForSender(asTransceivers([mine]), sender)).toBe(true); + expect(mine.direction).toBe('inactive'); + }); +}); diff --git a/fluxer_app/pkgs/livekit-client/src/room/utils.ts b/fluxer_app/pkgs/livekit-client/src/room/utils.ts index 5b7f5f3fe..2f56ef0bd 100644 --- a/fluxer_app/pkgs/livekit-client/src/room/utils.ts +++ b/fluxer_app/pkgs/livekit-client/src/room/utils.ts @@ -158,6 +158,25 @@ export function negotiateDependencyDescriptor(transceiver: RTCRtpTransceiver): b } } +export function stopTransceiversForSender( + transceivers: ReadonlyArray, + sender: RTCRtpSender, +): boolean { + let matched = false; + for (const transceiver of transceivers) { + if (transceiver.sender !== sender) { + continue; + } + matched = true; + if (typeof transceiver.stop === 'function') { + transceiver.stop(); + } else { + transceiver.direction = 'inactive'; + } + } + return matched; +} + export function isSVCSimulcast(codec?: string, options?: {simulcast?: boolean; scalabilityMode?: string}): boolean { return isSVCCodec(codec) && !!options?.simulcast && !!options.scalabilityMode?.startsWith('L1T'); } diff --git a/fluxer_app/src/features/i18n/locales/ar/messages.po b/fluxer_app/src/features/i18n/locales/ar/messages.po index 3040c7ffd..e7b604051 100644 --- a/fluxer_app/src/features/i18n/locales/ar/messages.po +++ b/fluxer_app/src/features/i18n/locales/ar/messages.po @@ -862,11 +862,6 @@ msgstr "يريد {clientLabel} الاتصال" msgid "{clientName} will use this account for this authorization." msgstr "سيستخدم {clientName} هذا الحساب لهذا التفويض." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "لا يمكن لـ {codec} مواكبة الأداء على هذا الجهاز. اضبط برنامج الترميز على تلقائي في الإعدادات المتقدمة للسماح ببرنامج ترميز أسرع." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "لا يمكن الوصول إلى {communityName} حاليًا إلا ل msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ بلا حدود} zero {# مشارك} one {مشارك واحد} two {مشاركان} few {# مشاركين} many {# مشاركًا} other {# مشارك}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, zero {... (بقي # سطر)} one {... (بقي سطر واحد)} two {... (بقي سطران)} few {... (بقي # أسطر)} many {... (بقي # سطرًا)} other {... (بقي # سطر)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, zero {... (بقي # صف)} one {... (بقي صف واحد)} two {... (بقي صفان)} few {... (بقي # صفوف)} many {... (بقي # صفًا)} other {... (بقي # صف)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, zero {توسيع (# سطر)} one {توسيع (سطر و msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, zero {توسيع (# صف)} one {توسيع (صف واحد)} two {توسيع (صفان)} few {توسيع (# صفوف)} many {توسيع (# صفًا)} other {توسيع (# صف)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, zero {توسيع # جهاز آخر} one {توسيع جهاز آخر} two {توسيع جهازين آخرين} few {توسيع # أجهزة أخرى} many {توسيع # جهازًا آخر} other {توسيع # جهاز آخر}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, zero {# في المكالمة} one {في المكالم msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, zero {الانضمام إلى مكالمة الفيديو (# مشارك)} one {الانضمام إلى مكالمة الفيديو (مشارك واحد)} two {الانضمام إلى مكالمة الفيديو (مشاركان)} few {الانضمام إلى مكالمة الفيديو (# مشاركين)} many {الانضمام إلى مكالمة الفيديو (# مشاركًا)} other {الانضمام إلى مكالمة الفيديو (# مشارك)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, zero {متابعة مشاهدة # بث وإضافة هذا البث} one {متابعة مشاهدة بث واحد وإضافة هذا البث} two {متابعة مشاهدة بثين وإضافة هذا البث} few {متابعة مشاهدة # بثوث وإضافة هذا البث} many {متابعة مشاهدة # بثًا وإضافة هذا البث} other {متابعة مشاهدة # بث وإضافة هذا البث}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, zero {تنتهي صلاحية رابط الدعوة خلال # يوم.} one {تنتهي صلاحية رابط الدعوة خلال يوم واحد.} two {تنتهي صلاحية رابط الدعوة خلال يومين.} few {تنتهي صلاحية رابط الدعوة خلال # أيام.} many {تنتهي صلاحية رابط الدعوة خلال # يومًا.} other {تنتهي صلاحية رابط الدعوة خلال # يوم.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} ساعات" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} إطار/ث" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} إطارًا في الثانية" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, zero {# تجاوز} one {تجاوز واحد} tw msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "سيتحقق {paymentProviderName} أولًا من أن بطاقتك مؤهلة للتسعير المحلي، ثم ينقلك إلى صفحة الدفع. ارجع إلى {productName} بعد إتمام الدفع." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} غير متاح على هذا الجهاز، لذا يستخدم بثك {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "يحتاج {productName} إلى الوصول إلى الميكروفون الخاص بك. اسمح بالوصول إلى الميكروفون في إعدادات خصوصية نظام التشغيل الخاص بك وأعد تشغيل التطبيق." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "يحتاج {productName} إلى الوصول إلى الكاميرا لعرض أجهزتك." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} متصل" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} إطار/ث" @@ -2510,11 +2500,6 @@ msgstr "عنوان URL مكتوب في نص الرسالة" msgid "a user" msgstr "مستخدم" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "لا يمكن لأحد المشاهدين تشغيل {pinnedCodec}، لذا يستخدم بثك {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "قبول" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "رد" @@ -3178,12 +3163,12 @@ msgstr "إضافة إلى مجموعة" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "إضافة إلى الوسائط المحفوظة" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "إضافة إلى صور GIF المفضلة (بالرابط فقط)" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "خيارات متقدمة" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "إعدادات الفيديو المتقدمة" @@ -3451,7 +3436,7 @@ msgstr "عناصر التحكم في المحاذاة متاحة فقط على #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "سماح" msgid "Allow {everyoneMention} and {hereMention}" msgstr "السماح بـ {everyoneMention} و{hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "اسمح لـ {PRODUCT_NAME} بالوصول إلى الكاميرا في {MACOS_SYSTEM_SETTINGS_NAME} ← {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} ← {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "السماح بالرسائل المباشرة من البوتات" msgid "Allow bots to send you direct messages?" msgstr "السماح للبوتات بإرسال رسائل مباشرة إليك؟" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "السماح بالوصول إلى الكاميرا" @@ -4014,13 +3999,13 @@ msgstr "يمكنك التحكم في الرموز التعبيرية المتح #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "صورة GIF متحركة" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "فيديو GIF متحرك" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "تتطلب الأيقونات المتحركة ميزة المجتمع {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "صورة متحركة" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "معاينة الصورة المتحركة" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "يتطلب تحميل الملفات المتحركة اشتراكًا في {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "فيديو متحرك" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "حالة التطبيق" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "نافذة التطبيق" @@ -4361,7 +4346,7 @@ msgstr "تم تحديث التطبيق بنجاح" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "التطبيقات" @@ -4586,7 +4571,7 @@ msgstr "مرفق" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "المرفق {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "انتهت صلاحية المرفق" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "المرفق منتهي الصلاحية أو غير متاح" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "تم نسخ معرف المرفق إلى الحافظة" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "مستوى الصوت" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "الصوت مكتوم" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "فقدان حزم الصوت:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "مشغل الصوت" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "معاينة الصوت" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "معالجة الصوت (صوت مركّز)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "تقدم تشغيل الصوت" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "إعدادات الصوت" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "مصادر الصوت: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "تلقائي ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "التحكم التلقائي في الكسب" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "المتصفح: رجوع" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "الإعداد الافتراضي للمتصفح" @@ -6198,20 +6183,20 @@ msgstr "المكالمات" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "الكاميرا" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "يلزم الوصول إلى الكاميرا لمعاينات الأجهزة" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "لم يتم منح الوصول إلى الكاميرا. قم بتحديث أذونات الكاميرا، ثم حاول مرة أخرى." @@ -6276,13 +6261,13 @@ msgstr "معاينة الكاميرا" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "جودة الكاميرا" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "إعدادات الكاميرا" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "فشل التحقق من الكابتشا. حاول مرة أخرى." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "التقاط" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "التقاط صوت التطبيق" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "التقاط صوت سطح المكتب" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "التقاط صوت الجهاز" @@ -6736,12 +6721,12 @@ msgstr "تمت جدولة التغيير" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "تغيير البث" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "تغيير مصدر البث" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "الوصول إلى القناة" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "لا يمكن الوصول إلى القناة" @@ -7097,7 +7082,7 @@ msgstr "تم نسخ معرف القناة إلى الحافظة" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "رابط القناة" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "اختيار طريقة الدفع" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "اختر ما تريد مشاركته" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "مسح النطاقات الموثوقة ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "نص أوضح" @@ -8285,7 +8270,7 @@ msgstr "طي موضوع القناة" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "طي الأجهزة" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "منشئ المجتمع" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "تعطيل سمع العضو في المجتمع" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "شريط تذكير بمتطلبات المصادقة متعددة العوامل للمجتمع" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "كتم صوت العضو في المجتمع" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "الضبط الآن" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "تكوين مشاركة الشاشة أو إنهائها" @@ -8904,7 +8889,7 @@ msgstr "التأكيد أو النقر المزدوج للانضمام إلى ا msgid "Conflicts with {conflictLabel}" msgstr "يتعارض مع {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "وصّل كاميرا وحاول مرة أخرى." @@ -8913,7 +8898,7 @@ msgstr "وصّل كاميرا وحاول مرة أخرى." msgid "Connect a camera or virtual capture device, then try again." msgstr "وصّل كاميرا أو جهاز التقاط افتراضي، ثم حاول مرة أخرى." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "وصّل شاشة، ثم حاول مرة أخرى." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "عناصر تحكم مستوى صوت الاتصال" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "الاتصال: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "تم نسخ إحصائيات JSON إلى الحافظة" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "تم النسخ إلى الحافظة" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "نسخ معرف المرفق" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "نسخ الصوت" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "نسخ رابط الصوت" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "نسخ نقطة النهاية" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "نسخ رابط الملف" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "نسخ GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "نسخ رابط GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "نسخ المعرف" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "نسخ الصورة" @@ -9448,7 +9433,7 @@ msgstr "نسخ الصورة" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "نسخ رابط الصورة" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "نسخ رابط القسم" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "نسخ الوسائط" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "نسخ القيمة" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "نسخ الفيديو" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "نسخ رابط الفيديو" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "نسخ رابط الويب هوك" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "جارٍ نسخ الصورة..." @@ -10588,7 +10573,7 @@ msgstr "حاليًا: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "مخصص" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "إلغاء التفعيل" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "تعطيل السمع" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "تعطيل السمع على جميع الأجهزة" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "تعطيل السمع على الجهاز" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "تعطيل سمع الأعضاء الآخرين في القنوات الصوتية، فلا يمكنهم السمع أو التحدث." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "اختصار تعطيل السمع" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "تعطيل سمعك" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "السمع معطّل" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "السمع معطّل من قبل المشرفين" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "افتراضي" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "الكاميرا الافتراضية" @@ -11258,8 +11243,8 @@ msgstr "ديلاوير" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "حذف :{emojiName}:؟ لا يمكن التراجع عن هذا الإج #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "حذف \"{memeName}\"؟ لا يمكن التراجع عن هذا الإجراء." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "حذف الدعوة" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "حذف الوسائط" @@ -11466,8 +11451,8 @@ msgstr "حذف الدور" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "حذف الوسائط المحفوظة" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "الغياب عن سطح المكتب" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "جهاز كمبيوتر" @@ -11849,13 +11834,13 @@ msgstr "حالة المطور" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "أدوات المطور" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "أدوات المطور متاحة من شارة الموظف في رأس القناة." @@ -11879,6 +11864,17 @@ msgstr "الجهاز" msgid "Device alerts" msgstr "تنبيهات الجهاز" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "صوت الجهاز ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "صوت الجهاز فقط" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "تفاصيل الجهاز" @@ -11888,7 +11884,7 @@ msgstr "تفاصيل الجهاز" msgid "Device revoked" msgstr "تم إلغاء ربط الجهاز" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "اختيار الجهاز" @@ -11912,7 +11908,7 @@ msgstr "الجهاز:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "الأجهزة" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "تعتيم النص المشطوب" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "إدخال مباشر" @@ -12020,7 +12016,7 @@ msgstr "التحميل المباشر نشط" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "تعطيل" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "قيمة معطلة" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "تعطيل المعاينات يوقف تحميل المعاينات المستقبلية. قد تظل صور المعاينة الموجودة مرئية حتى انتهاء البث أو تحديث المعاينة." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "تجاهل الرسالة الصوتية" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "قطع الاتصال" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "قطع اتصال جميع الأجهزة" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "قطع اتصال الجهاز" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "العرض" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "شاشة" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification وضعه في مجلد <1>.well-known حتى نتمكن من التحقق من النطاق." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "تنزيل الصوت" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "تنزيل تحديث تطبيق سطح المكتب {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "تنزيل الملف" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "تنزيل fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "تنزيل ملف GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "تنزيل الصورة" @@ -12714,7 +12710,7 @@ msgstr "تنزيل المثبّت" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "تنزيل الوسائط" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "تنزيل الحزمة" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "تنزيل الفيديو" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "الصدى" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "إلغاء الصدى" @@ -12963,7 +12959,7 @@ msgstr "تعديل صلاحية الوصول لـ {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "تعديل النص البديل" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "تعديل اختصار لوحة المفاتيح" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "تعديل الوسائط" @@ -13102,8 +13098,8 @@ msgstr "تعديل محرك البحث العكسي للصور" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "تعديل الوسائط المحفوظة" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "تفعيل إشعارات المتصفح" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "اسمح بالوصول إلى الكاميرا لمعاينة الكاميرات وأجهزة الالتقاط قبل اختيار أحدها للبث." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "تفعيل أو تعطيل أدوات الترجمة المدمجة. تظهر أدوات الترجمة المفعّلة في قائمة سياق الرسالة عند تحديد النص." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "تفعيل المعاينات" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "إنهاء مشاركة الشاشة" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "التشفير التام بين الطرفين غير متاح لوجود مشارك غير مدعوم في هذه المكالمة." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "التشفير التام بين الطرفين غير متاح لوجود مشارك غير مدعوم في هذه القناة الصوتية." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "ترفيه" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "الشاشة بأكملها" @@ -14095,7 +14091,7 @@ msgstr "الشاشة بأكملها" msgid "Entire system" msgstr "النظام بأكمله" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "صوت النظام بالكامل" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "استبعاد مستخدم" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "استبعاد من صوت النظام" @@ -14593,7 +14589,7 @@ msgstr "تعذّر نسخ رابط الدعوة" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "تعذّر النسخ إلى الحافظة" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "تعذّر تحميل الدعوات. حاول مرة أخرى." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "تعذّر تحميل المصادر القابلة للمشاركة." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "إحضار النافذة إلى المقدمة" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "صوت مركّز" @@ -15322,10 +15318,6 @@ msgstr "إعدادات المجلد" msgid "Follow us on {blueskyProviderName}" msgstr "تابعنا على {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "اتباع جهاز الإدخال الصوتي" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "إعادة توجيه" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "تقديم {defaultSeekAmount} ثوانٍ" @@ -15592,14 +15584,14 @@ msgstr "إطار" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "معدل الإطارات" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "تتطلب معدلات الإطارات التي تزيد عن 30 إطارًا في الثانية {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "زر Y / المثلث في يد التحكم" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "ألعاب" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "جارٍ تحميل منتقي صور GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "معاينة GIF" @@ -16429,7 +16421,7 @@ msgstr "تم منح {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "يمنح جميع الأذونات ويتجاوز قيود القنوات. إذن حساس للغاية." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "تحديد دقيق" @@ -16992,7 +16984,7 @@ msgstr "إخفاء كلمة المرور" msgid "Hide picture-in-picture popout?" msgstr "إخفاء نافذة \"صورة داخل صورة\" المنبثقة؟" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "إخفاء صورة المعاينة المصغرة" @@ -17386,7 +17378,7 @@ msgstr "إذا أردت أن يتمكن هؤلاء الأعضاء من الوص #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "تجاهل" @@ -17395,11 +17387,11 @@ msgstr "تجاهل" msgid "Ignore friend request" msgstr "تجاهل طلب الصداقة" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "تجاهل الأجهزة المادية" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "تجاهل وسائط الإدخال" @@ -17430,7 +17422,7 @@ msgstr "هل تريد تجاهل طلب الصداقة من {displayName}؟" msgid "Ignore this channel's slowmode cooldown." msgstr "تجاهل فترة انتظار الوضع البطيء في هذه القناة." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "تجاهل الأجهزة الافتراضية" @@ -17468,7 +17460,7 @@ msgstr "إلينوي" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "صورة" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "أصول الصور" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "تم نسخ الصورة إلى الحافظة" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "خيارات الصورة" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "معاينة الصورة" @@ -17540,7 +17532,7 @@ msgstr "تحميل صورة" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "في محادثة صوتية" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "في الدردشة الصوتية" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "تضمين الكل باستثناء المحدد" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "تضمين التطبيقات" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "الإدخال والإخراج" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "جهاز الإدخال" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "ملف تعريف الإدخال: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "إعدادات الإدخال" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "حالات حقول الإدخال" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "مستوى صوت الإدخال" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "رابط الدعوة مخفي أثناء المشاركة:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "تم إخفاء رابط الدعوة أثناء المشاركة" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "الانتقال إلى {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "الانتقال إلى {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "الانتقال إلى المكالمة الحالية" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "الانتقال إلى القناة المرتبطة" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "الانتقال إلى الرسالة المرتبطة" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "الانتقال إلى الرسالة من {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "الانتقال إلى الرسالة في {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "التخطيط" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "معرفة المزيد عن معاينات مشاركة الشاشة" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "تنسيق الروابط" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "الرابط غير متاح" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "تطبيق Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "الافتراضي في Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "جارٍ تحميل السمة..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "جارٍ التحميل..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "تطبيق macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "الافتراضي في macOS" @@ -20289,7 +20281,7 @@ msgstr "المقطع التالي" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "خيارات الوسائط" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "تشغيل / إيقاف مؤقت" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "معاينة الوسائط" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "تخطيط الرسائل" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "رابط الرسالة" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "اختبار الميكروفون" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "محتوى الميكروفون والكاميرا ومشاركة الشاشة مشفّر تشفيرًا تامًا بين الطرفين." @@ -21019,7 +21011,7 @@ msgstr "قُصَّر معرضون للخطر، أو محتوى للبالغين #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "كلمات بها أخطاء إملائية" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "جهاز جوال" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "كتم الكل" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "كتم صوت جميع الأجهزة" @@ -21653,13 +21645,13 @@ msgstr "مكتوم" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "الميكروفون مكتوم" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "مكتوم الصوت من المشرفين" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "لا يوجد إذن {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "لا يمكن الوصول" @@ -22282,7 +22274,7 @@ msgstr "لم يتم العثور على أي إعدادات متقدمة" msgid "No AFK channel" msgstr "لا توجد قناة خمول" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "لم يتم العثور على نوافذ تطبيقات" @@ -22300,6 +22292,11 @@ msgstr "لا توجد أصول بعد" msgid "No audio" msgstr "لا يوجد صوت" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "لا يوجد صوت من هذا الجهاز" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "لا توجد تطبيقات مصرّح بها" @@ -22341,7 +22338,7 @@ msgstr "لا توجد إشارات مرجعية" msgid "No bot banner" msgstr "لا توجد لافتة للبوت" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "لم يتم العثور على كاميرا" @@ -22421,7 +22418,7 @@ msgstr "لا يوجد وصف." msgid "No desktop update is available." msgstr "لا يتوفر تحديث لتطبيق سطح المكتب." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "لم يتم العثور على شاشات عرض" @@ -22650,7 +22647,7 @@ msgstr "لم يتم استلام نص الرد" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "لا توجد نتائج" @@ -22679,7 +22676,7 @@ msgstr "لا توجد أدوار بعد. أضف أدوارًا في {rolesSettin #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "لا توجد وسائط محفوظة" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "بوابة الضوضاء" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "إزالة الضوضاء" @@ -22877,7 +22874,7 @@ msgstr "عدم التحويل" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "لا شيء" @@ -23286,7 +23283,7 @@ msgstr "ينطبق على الشاشات العريضة فقط." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "يتم قبول بطاقات الائتمان فقط. لا يمكن استخدام بطاقات الخصم والبطاقات مسبقة الدفع في التحقق من المحتوى للبالغين." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "مكبرات الصوت الافتراضية فقط" @@ -23334,7 +23331,7 @@ msgstr "لا تشغّل هنا إلا التعليمات البرمجية الت msgid "Only show message previews for DMs with unread messages" msgstr "إظهار معاينات الرسائل فقط للرسائل المباشرة التي تحتوي على رسائل غير مقروءة" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "مكبرات الصوت فقط" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "فتح {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "فتح {labelText} في الإعدادات" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "فتح @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "فتح إعدادات الوسائط المتقدمة" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "افتح نافذة تطبيق، ثم حاول مرة أخرى." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "فتح صورة GIF المتحركة في عرض كامل" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "فتح فيديو GIF المتحرك في عرض كامل" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "فتح الصوت في عرض كامل" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "فتح رابط الصوت" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "فتح المتصفح" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "فتح منتقي المتصفح" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "فتح قائمة المفضلة" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "فتح رابط الملف" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "فتح رابط GIF" @@ -23651,7 +23648,7 @@ msgstr "فتح الصورة في المتصفح" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "فتح الصورة في عرض كامل" @@ -23660,7 +23657,7 @@ msgstr "فتح الصورة في عرض كامل" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "فتح رابط الصورة" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "فتح رسالة مباشرة من النظام" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "فتح منتقي النظام" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "فتح الفيديو في عرض كامل" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "فتح رابط الفيديو" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "فتح المحادثة الصوتية" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "فتح إعدادات الصوت والفيديو" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "الإخراج" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "جهاز الإخراج" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "إعدادات الإخراج" @@ -24094,7 +24091,7 @@ msgstr "إعدادات الإخراج" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "مستوى صوت الإخراج" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "حد المشاركين" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "خيارات المشارك لـ {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "المعاينة مخفية" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "يخزّن {productName} صور المعاينة مؤقتًا لتوصيلها، وهي غير مشفرة تشفيرًا تامًا بين الطرفين. عطّل المعاينات إذا كنت لا تريد رفع لقطات من مشاركة الشاشة لإنشاء الصور المصغرة." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "يخزّن {productName} صور المعاينة مؤقتًا لتوصيلها، وهي غير مشفرة تشفيرًا تامًا بين الطرفين. لا يحتاج الأشخاص في هذه المحادثة الجماعية إلى مشاهدة بثك فعليًا لرؤية الصورة المصغرة." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "يخزّن {productName} صور المعاينة مؤقتًا لتوصيلها، وهي غير مشفرة تشفيرًا تامًا بين الطرفين. لا يزال الأشخاص بحاجة إلى إذن للاتصال، لكنهم لا يحتاجون إلى مشاهدة بثك فعليًا." @@ -26269,7 +26266,7 @@ msgstr "تم نسخ المرجع." msgid "Referral parameters" msgstr "معلمات الإحالة" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "تحديث مصادر الصوت" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "تم النقر على الزر العادي." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "رفض" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "إزالة من المجموعة" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "إزالة من الوسائط المحفوظة" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "إلغاء إبقاء النافذة في المقدمة" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "إزالة من صور GIF المفضلة (بالرابط فقط)" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "تم إلغاء حظر {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "إرجاع {defaultSeekAmount} ثوانٍ" @@ -28202,7 +28199,7 @@ msgstr "حفظ الأيقونة" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "احفظ بعض الوسائط من الرسائل لتبدأ!" @@ -28313,7 +28310,7 @@ msgstr "مطلوب إذن تسجيل الشاشة" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "مشاركة الشاشة" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "تعزيز صوت مشاركة الشاشة" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "تعذّر بدء صوت مشاركة الشاشة" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "عناصر التحكم في مُرمِّز مشاركة الشاشة" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "انتهت مشاركة الشاشة" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "سلوك معاينة مشاركة الشاشة" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "معاينات مشاركة الشاشة" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "معاينات مشاركة الشاشة معطّلة." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "معاينات مشاركة الشاشة مفعّلة." @@ -28391,13 +28388,13 @@ msgstr "خصوصية مشاركة الشاشة" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "جودة مشاركة الشاشة" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "إعدادات مشاركة الشاشة" @@ -28723,7 +28720,7 @@ msgstr "البحث عن الأدوار أو الأعضاء…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "البحث في الوسائط المحفوظة" @@ -28942,12 +28939,12 @@ msgstr "معاينة التنقل في الفيديو" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "تحديد" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "تحديد {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "إرسال رابط إعادة التعيين" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "إرسال الوسائط المحفوظة {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "تم تعيين موضع في قائمة الأعضاء للدور" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "تم التعيين بواسطة إعداد {preset}. يؤدي اختيار قيمة هنا إلى التبديل إلى مخصص." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "عيّن مستوى صوت مخصصًا لكل صوت على حدة. الأصوات التي ليس لها مستوى مخصص تتبع مستوى الصوت الرئيسي." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "تعيين اختصار تعطيل السمع" @@ -29669,11 +29666,6 @@ msgstr "تأجيل هذا التحقق" msgid "Set this check aside?" msgstr "هل تريد تأجيل هذا التحقق؟" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "تم الإعداد للإرسال بدقة {resolution} بمعدل {frameRate} إطارًا في الثانية مع برنامج الترميز {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "الإعدادات" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "رابط الإعدادات" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "مشاركة الهدية" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "مشاركة الشاشة" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "مشاركة مع مشرفي المجتمع." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "مشاركة شاشتك" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "شارك شاشتك بدقة عالية (1080p) أو رباعية عالية الدقة (1440p) أو بدقة المصدر الأصلية، بمعدل يصل إلى 60 إطارًا في الثانية." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "النافذة المشتركة" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "صوت النافذة المشتركة" @@ -30624,6 +30616,10 @@ msgstr "مكالمات صامتة" msgid "Silent calls from everyone" msgstr "مكالمات صامتة من الجميع" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "صامت عندما لا يحتوي جهاز الالتقاط على مدخل صوتي خاص به" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "التمرير السلس" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "فيديو أكثر سلاسة" @@ -31005,11 +31001,6 @@ msgstr "تعذر إضافة بعض الرموز التعبيرية" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "بعض الملفات التي تحاول تحميلها تتجاوز الحد الأقصى للحجم وهو {maxSizeFormatted} لكل ملف." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "لم يتم تطبيق بعض إعدادات البث على بثك المباشر." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "الأصوات" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "المصدر" @@ -31569,7 +31560,7 @@ msgstr "بدء مكالمة صوتية؟" msgid "Start call" msgstr "بدء المكالمة" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "بدء اختبار الكاميرا وتكوين المؤثرات" @@ -31910,7 +31901,7 @@ msgstr "إيقاف النطق" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "إيقاف البث" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "إيقاف الوثوق بجميع الروابط؟" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "إيقاف المشاهدة" @@ -31982,7 +31973,7 @@ msgstr "يمنع صوت مكبرات الصوت من العودة إلى الم #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "بث" @@ -32001,11 +31992,6 @@ msgstr "انتهى البث" msgid "Stream hidden" msgstr "تم إخفاء البث" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "البث لا يواكب المعدل المطلوب" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "جودة البث" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "إعدادات البث" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "تم تعديل إعدادات البث" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "إعلانات النظام من فريق {productName}. لا يمكنك #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "الجهاز الافتراضي للنظام" @@ -33036,13 +33017,8 @@ msgstr "تمت إضافة البوت إلى <0>{destinationName}." msgid "The bot has been added." msgstr "تمت إضافة البوت." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "يرسل المتصفح {deliveredResolution} بدلاً من {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "لا تزال معاينة الكاميرا قيد الإيقاف. حاول البث مرة أخرى بعد لحظة." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "منح الدور {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "توقف مصدر مشاركة الشاشة عن إرسال الفيديو، لذلك أُوقفت مشاركة شاشتك." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "وحدة تحكم المتصفح هذه أداة للمطورين." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "هذه المكالمة مشفرة تشفيرًا تامًا بين الطرفين." @@ -33645,11 +33621,6 @@ msgstr "لا يمكن لإصدار سطح المكتب هذا تثبيت الت msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "لا يمكن لإصدار التطوير هذا تحديث نفسه. نزّل مثبّت سطح المكتب لاختبار عملية التحديث." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "لم يتمكن هذا الجهاز من مواكبة {targetResolution} بمعدل {targetFrameRate} إطارًا في الثانية في المرة الأخيرة، لذلك بدأ بثك بمعدل {resolution} بمعدل {frameRate} إطارًا في الثانية." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "هذا التثبيت مُدار بواسطة نظامك. حدّث {productName} من مركز البرامج أو مدير الحزم." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "يسمح هذا المثيل حاليًا بمشاركة الشاشة بدقة تصل إلى 720p بمعدل 30 إطارًا في الثانية." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "قناة الرابط هذه مصنفة للمحتوى للبالغين وقد تفتح مواد غير مناسبة لبعض المستخدمين." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "هذا الرابط غير متاح لحسابك." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "هذا الخيار مطلوب. يرجى تقديم قيمة." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "لا يمكن لهذا المشارك التحدث في هذه القناة" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "السمع معطّل لدى هذا المشارك" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "عطّل المشرفون السمع لدى هذا المشارك" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "لقد تم استخدام رقم الهاتف هذا بالفعل. جرّب رقمًا آخر أو اتصل بالدعم." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "هذه الأداة متاحة فقط في تطبيق سطح المكتب." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "تبديل عناصر التحكم" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "تبديل تعطيل السمع" @@ -34666,7 +34637,7 @@ msgstr "لا تنطبق تغييرات أيقونة علبة النظام إلا #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "صور GIF رائجة" @@ -34760,7 +34731,7 @@ msgstr "جرّب عبارة بحث مختلفة." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "جرّب مصطلح بحث أو فلتر مختلف" @@ -34839,11 +34810,6 @@ msgstr "جرّب فلاتر أو مصطلحات بحث مختلفة." msgid "Try editing your message again." msgstr "حاول تعديل رسالتك مرة أخرى." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "جرب الجودة الكاملة مرة أخرى" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "جرّب البحث عن شيء مثل \"السمة\" أو \"الإشعارات\" أو \"الخصوصية\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "أوقف تشغيل أي شيء لا يناسبك. قد تتوقف بعض الميزات عن العمل." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "أوقف مشاركة الصوت لهذا المصدر أو حاول مرة أخرى بعد لحظة." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "التشغيل تلقائيًا عند اكتشاف OBS أو XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "تشغيل الكاميرا" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "غير قابل للتحصيل" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "إلغاء تعطيل السمع" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "إلغاء تعطيل السمع على جميع الأجهزة" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "إلغاء تعطيل سمعك" @@ -35558,7 +35524,7 @@ msgstr "مستخدم غير معروف" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "مستخدم غير معروف" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "افتح الرموز التعبيرية المخصصة في الرسائل المباشرة مع {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "افتح مشاركة الشاشة عالية الدقة باستخدام {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "إلغاء كتم صوت {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "إلغاء كتم صوت جميع الأجهزة" @@ -35741,7 +35707,7 @@ msgstr "مجموعة بلا اسم" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "جهاز إدخال بلا اسم" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "تحميل رموز تعبيرية وملصقات جديدة، وإدارة ما أنشأته بنفسك." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "تحميل إطارات معاينة لمشاركة الشاشة." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "تم نسخ الرابط إلى الحافظة" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "علامة المستخدم (اختياري)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "مستوى صوت المستخدم" @@ -37227,7 +37193,7 @@ msgstr "فقدان حزم الفيديو:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "معاينة الفيديو" @@ -37283,7 +37249,7 @@ msgstr "فيديو مرفوع" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "الصوت والفيديو" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "إعدادات الصوت والفيديو" @@ -37685,7 +37651,7 @@ msgstr "اختصارات الصوت والفيديو" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "مكالمة صوتية" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "تصحيح أخطاء الاتصال الصوتي" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "تعطيل السمع" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "رسالة صوتية" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "مشغل الرسائل الصوتية" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "إعدادات الصوت" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "إلغاء تعطيل السمع" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "انتظر هنا" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "في انتظار الاتصال..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "عند النشر كروابط في الدردشة" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "عند تفعيل المعاينات، يرفع {productName} لقطات متفرقة بصيغة JPEG من مشاركة شاشتك حتى يتمكن الآخرون في هذه المحادثة الجماعية من رؤية صورة مصغرة قبل المشاهدة." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "عند تفعيل المعاينات، يرفع {productName} لقطات متفرقة بصيغة JPEG من مشاركة شاشتك حتى يتمكن الأشخاص الذين لديهم إذن الاتصال بهذه القناة الصوتية من رؤية صورة مصغرة قبل المشاهدة." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "عند تفعيل المعاينات، يرفع {productName} لقطات متفرقة بصيغة JPEG من مشاركة شاشتك حتى يتمكن الشخص الآخر في هذه الرسالة المباشرة من رؤية صورة مصغرة قبل المشاهدة." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "قد تظهر خلفية رمادية بدلًا من الشفافية في النوافذ المقطوعة من أعلى الشاشة أو أسفلها، وعند تثبيت أدوات المطورين داخل النافذة." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "الافتراضي في Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "لقد تم حظرك من هذا المجتمع ولا يمكنك الانضمام إليه." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "سمعك معطّل" @@ -38833,11 +38799,6 @@ msgstr "أنت تستخدم إصدار {releaseChannel} من {productName}." msgid "You aren't in any communities right now." msgstr "أنت لست عضوًا في أي مجتمعات حاليًا." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "لقد طلبت {resolution} بمعدل {frameRate} إطارًا في الثانية" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "لا يمكنك إرسال رسائل في هذا المجتمع." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "لا يمكنك مشاركة شاشتك في هذه القناة" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "لا يمكنك التحدث في هذه القناة" @@ -39036,7 +38997,7 @@ msgstr "لا يمكنك التحدث في هذه القناة" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "لا يمكنك تشغيل الكاميرا في هذه القناة" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "لقد غيرت علامتك أثناء استخدامك لـ {PREMIUM_PRODUCT_NAME}. ستتغير عشوائيًا عند انتهاء صلاحية {PREMIUM_PRODUCT_NAME} الخاص بك، ما لم يتم تجديده." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "ليس لديك صلاحية الوصول إلى القناة التي أُرسلت فيها هذه الرسالة." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "ستبقى في {ownedNames}. لا يمكن للمالك مغادرة مجتمعه." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "عطّل المشرفون سمعك" @@ -39699,11 +39660,6 @@ msgstr "طلبك قيد المراجعة. لا يزال بإمكانك تحدي msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "يتطلب متصفحك تفاعلًا من المستخدم قبل تشغيل الصوت. انقر على الزر أدناه لتمكين الدردشة الصوتية." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "جهاز الالتقاط الخاص بك يرسل {deliveredResolution} بدلاً من {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "جارٍ التحقق من بطاقتك لمعرفة الأسعار المحلية. يستغرق هذا عادةً لحظة." @@ -39734,36 +39690,11 @@ msgstr "مجتمعك مُدرج في الاكتشاف. يمكنك تحديث ت msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "يحتاج مجتمعك إلى {minMemberCount, plural, zero {# عضو} one {عضو واحد} two {عضوين} few {# أعضاء} many {# عضوًا} other {# عضو}} على الأقل قبل أن يمكن إدراجه في الاكتشاف." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "لا يمكن لاتصالك مواكبة ذلك. تم ضبط البث الخاص بك على {frameRate} إطارًا في الثانية بدقة {resolution} ويحصل المشاهدون على حوالي {deliveredFrameRate} إطارًا في الثانية." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "تم التحقق من بطاقتك الائتمانية. إذا كانت البطاقة صالحة، فسيتم إلغاء قفل محتوى البالغين قريبًا. يمكنك إغلاق علامة التبويب هذه والعودة إلى التطبيق." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "جهازك لا يستطيع المواكبة. تم ضبط البث الخاص بك على {frameRate} إطارًا في الثانية بدقة {resolution} ويحصل المشاهدون على حوالي {deliveredFrameRate} إطارًا في الثانية." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "لم يتمكن جهازك من مواكبة الأمر، لذا يرسل بثك الآن {frameRate} إطارًا في الثانية للحفاظ على حدة {resolution}." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "لم يتمكن جهازك من مواكبة ذلك، لذا أصبح بثك يرسل {resolution} بمعدل {frameRate} إطارًا في الثانية بدلاً من {targetResolution} بمعدل {targetFrameRate} إطارًا في الثانية." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "لم يتمكن جهازك من مواكبة الأمر، لذا يرسل بثك الآن {resolution} للحفاظ على سلاسة {frameRate} إطارًا في الثانية." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "يتطلب تسجيلك فحصًا إضافيًا لمكافحة الرسائل المزعجة قبل أن تتمكن من المتابعة." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "تحتاج جودة الشاشة المحفوظة لديك بدقة {savedResolution} بمعدل إطارات {savedFrameRate} إطارًا في الثانية إلى {premiumProductName}، لذا تستخدم المشاركات دقة {resolution} بمعدل إطارات {frameRate} إطارًا في الثانية." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "تعذّر نشر مشاركة شاشتك باستخدام برنامج ترميز فيديو متوافق، لذا تم إيقافها. حاول المشاركة مرة أخرى." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "يُنتج مصدرك حوالي {sourceFrameRate} إطارًا في الثانية" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "البث المباشر الخاص بك لا يزال نشطًا" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "تم تبديل بثك إلى {codec} لأن {previousCodec} لم يتمكن من مواكبة الأداء على هذا الجهاز. قد يرى المشاهدون توقفًا قصيرًا." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "تم تعيين عنوان URL المخصص إلى {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "توقف مُرمّز الفيديو الخاص بك عن ترميز الإطارات، لذا تم إيقاف مشاركة شاشتك. حاول المشاركة مرة أخرى." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "توقف مشفر الفيديو الخاص بك، لذا تم تبديل بثك إلى {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json b/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json index 96694eaaa..80ac8d6c1 100644 --- a/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json +++ b/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json @@ -1833,6 +1833,12 @@ { "msgid": "Desktop audio isn't available right now on macOS." }, + { + "msgid": "Device audio ({deviceLabel})" + }, + { + "msgid": "Device audio only" + }, { "msgid": "Device volume" }, @@ -2148,6 +2154,9 @@ { "msgid": "No application windows found" }, + { + "msgid": "No audio from this device" + }, { "msgid": "No displays found" }, @@ -2718,6 +2727,9 @@ { "msgid": "Sign-in details" }, + { + "msgid": "Silent when the capture device has no audio input of its own" + }, { "msgid": "Single community" }, diff --git a/fluxer_app/src/features/i18n/locales/bg/messages.po b/fluxer_app/src/features/i18n/locales/bg/messages.po index d924acf98..8983ccad1 100644 --- a/fluxer_app/src/features/i18n/locales/bg/messages.po +++ b/fluxer_app/src/features/i18n/locales/bg/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} иска да се свърже" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} ще използва този акаунт за тази оторизация." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} не може да се справи на това устройство. Задайте кодек на Автоматичен в Разширени настройки, за да позволите по-бърз." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Общността {communityName} в момента е достъпна msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Без ограничение} one {# участник} other {# участници}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (остава # ред)} other {... (остават # реда)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (остава # ред)} other {... (остават # реда)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Разгъване (# ред)} other {Разгъв msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Разгъване (# ред)} other {Разгъване (# реда)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Разгъване на # друго устройство} other {Разгъване на # други устройства}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {В разговор} other {# в разговор}} msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Присъединяване към видеоразговор (# участник)} other {Присъединяване към видеоразговор (# участници)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Продължи да гледаш # поток и добави този} other {Продължи да гледаш # потока и добави този}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Линкът ти за покана изтича след # ден.} other {Линкът ти за покана изтича след # дни.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} часа" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# презаписване} other {# пре msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} първо ще провери дали картата ти отговаря на условията за локализирани цени, след което ще те насочи към плащането. Върни се в {productName}, след като приключиш." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} не е наличен на това устройство, затова потокът ви използва {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} се нуждае от достъп до микрофона ти. Разреши достъпа до микрофона в настройките за поверителност на операционната система и рестартирай приложението." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} се нуждае от достъп до камерата, за да покаже списък с устройствата ти." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} онлайн" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "URL, въведен в текста на съобщението" msgid "a user" msgstr "потребител" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Един зрител не може да възпроизведе {pinnedCodec}, затова потокът ви използва {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Приемане" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Отговаряне" @@ -3178,12 +3163,12 @@ msgstr "Добавяне към група" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Добавяне към запазени медии" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Добавяне към любимите GIF файлове, запазени по URL адрес" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Разширени" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Разширени настройки за видео" @@ -3451,7 +3436,7 @@ msgstr "Контролите за подравняване са налични #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Разрешаване" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Разрешаване на {everyoneMention} и {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Разреши на {PRODUCT_NAME} достъп до камерата ти в {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Разрешаване на директни съобщения от б msgid "Allow bots to send you direct messages?" msgstr "Да се разреши ли на ботовете да ти изпращат директни съобщения?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Разрешаване на камерата" @@ -4014,13 +3999,13 @@ msgstr "Анимираните емоджита, GIF файловете и ст #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Анимиран GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Анимиран GIF видеоклип" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Анимираните икони изискват функцията на общността {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Анимирано изображение" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Преглед на анимирано изображение" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Качването на анимирани файлове изисква абонамент за {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Анимирано видео" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Състояние на приложението" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Прозорец на приложение" @@ -4361,7 +4346,7 @@ msgstr "Приложението е актуализирано успешно" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Приложения" @@ -4586,7 +4571,7 @@ msgstr "прикачен файл" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Прикачен файл {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Срокът на прикачения файл е изтекъл" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Срокът на прикачения файл е изтекъл или файлът е недостъпен" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID на прикачения файл е копирано в клипборда" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Ниво на звука" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Звукът е изключен" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Загуба на аудиопакети:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Аудиоплеър" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Преглед на аудио" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Обработка на аудио (фокусиран глас)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Напредък на аудиото" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Настройки на звука" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Аудиоизточници: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Автоматично ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Автоматичен контрол на усилването" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Браузър: назад" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "По подразбиране за браузъра" @@ -6198,20 +6183,20 @@ msgstr "Обаждания" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Камера" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "За визуализация на устройствата е нужен достъп до камерата" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Достъпът до камерата не е разрешен. Актуализирай разрешенията за камерата и опитай отново." @@ -6276,13 +6261,13 @@ msgstr "Визуализация на камерата" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Качество на камерата" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Настройки на камерата" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Проверката с CAPTCHA не бе успешна. Опитай пак." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Запис" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Запис на звука от приложението" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Запис на звука от работния плот" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Запис на звука от устройството" @@ -6736,12 +6721,12 @@ msgstr "Планирана промяна" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Промени потока" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Промяна на източника на потока" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Достъп до канал" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Достъпът до канала е отказан" @@ -7097,7 +7082,7 @@ msgstr "ID на канала е копирано в клипборда" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "линк към канал" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Избери начин на плащане" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Избери какво да споделиш" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Изчистване на доверени домейни ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "По-ясен текст" @@ -8285,7 +8270,7 @@ msgstr "Свиване на темата на канала" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Свиване на устройствата" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Създател на общността" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Изключване на целия звук в общността" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Лента за изискване за MFA на общността" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Изключване на микрофона в общността" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Конфигуриране сега" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Настройване или край на споделянето на екрана" @@ -8904,7 +8889,7 @@ msgstr "Потвърждение или двойно щракване при п msgid "Conflicts with {conflictLabel}" msgstr "В конфликт с {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Свържи камера и опитай отново." @@ -8913,7 +8898,7 @@ msgstr "Свържи камера и опитай отново." msgid "Connect a camera or virtual capture device, then try again." msgstr "Свържи камера или виртуално устройство за заснемане и опитай отново." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Свържи дисплей и опитай отново." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Управление на силата на звука по връзки" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Връзка: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "JSON със статистиката е копиран в клипбор #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Копирано в клипборда" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Копирай ID на прикачения файл" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Копирай аудиото" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Копирай линка към аудиото" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Копирай крайната точка" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Копирай линка към файла" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Копирай GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Копирай линка към GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Копирай идентификатор" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Копирай изображението" @@ -9448,7 +9433,7 @@ msgstr "Копирай изображението" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Копирай линка към изображението" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Копирай линка към секцията" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Копирай медията" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Копирай стойността" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Копирай видеоклипа" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Копирай линка към видеоклипа" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Копирай URL адреса на уебхука" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Копиране на изображение..." @@ -10588,7 +10573,7 @@ msgstr "В момента: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "По избор" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Деактивиране" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Изключване на звука" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Изключване на звука на всички устройства" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Изключване на звука на устройството" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Изключване на звука на други членове в гласови канали, така че да не могат да чуват или говорят." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Клавишна комбинация за изключване на звука" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Изключване на звука" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Звукът е изключен" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Звукът е изключен от модератори" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "По подразбиране" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Камера по подразбиране" @@ -11258,8 +11243,8 @@ msgstr "Делауер" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Изтриване на :{emojiName}:? Това действие не м #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Изтриване на „{memeName}“? Това действие не може да бъде отменено." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Изтриване на покана" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Изтриване на медия" @@ -11466,8 +11451,8 @@ msgstr "Изтриване на роля" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Изтриване на запазена медия" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Отсъствие от компютъра" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Настолно устройство" @@ -11849,13 +11834,13 @@ msgstr "Състояние за разработчици" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Инструменти за разработчици" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Инструментите за разработчици са достъпни от значката на екипа в заглавката на канала." @@ -11879,6 +11864,17 @@ msgstr "Устройство" msgid "Device alerts" msgstr "Предупреждения за устройства" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Аудио на устройството ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Само аудио от устройството" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Подробности за устройството" @@ -11888,7 +11884,7 @@ msgstr "Подробности за устройството" msgid "Device revoked" msgstr "Достъпът на устройството е отнет" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Избор на устройство" @@ -11912,7 +11908,7 @@ msgstr "Устройство:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Устройства" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Приглушаване на зачеркнатия текст" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Директен вход" @@ -12020,7 +12016,7 @@ msgstr "Директното качване е активно" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Изключване" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Деактивирана стойност" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Изключването на визуализациите спира бъдещите качвания на визуализации. Съществуващите изображения може да останат видими, докато потокът не приключи или визуализацията не се опресни." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Отхвърляне на гласовото съобщение" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Прекъсване" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Прекъсване на връзката за всички устройства" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Прекъсване на връзката за устройството" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Показване" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Екран" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification и го постави в папката си <1>.well-known, за да можем да потвърдим домейна." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Изтегляне на аудио" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Изтегляне на актуализация за настолното приложение {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Изтегляне на файл" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Изтегляне на fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Изтегляне на GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Изтегляне на изображение" @@ -12714,7 +12710,7 @@ msgstr "Изтегляне на инсталатор" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Изтегляне на медия" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Изтегляне на пакет" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Изтегляне на видео" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Ехо" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Потискане на ехото" @@ -12963,7 +12959,7 @@ msgstr "Редактиране на достъп за {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Редактиране на алтернативен текст" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Редактиране на клавишна комбинация" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Редактиране на медия" @@ -13102,8 +13098,8 @@ msgstr "Редактиране на търсачка по изображение #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Редактиране на запазена медия" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Включване на известия в браузъра" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Разреши достъп до камерата, за да преглеждаш камери и устройства за заснемане, преди да избереш кое да споделяш." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Активирай или деактивирай вградените преводачи. Активираните преводачи се показват в контекстното меню на съобщението, когато е избран текст." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Разреши визуализациите" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Край на споделянето на екрана" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Криптирането от край до край не е налично, защото в разговора има неподдържан участник." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Криптирането от край до край не е налично, защото в този гласов канал има неподдържан участник." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Развлечения" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Цял екран" @@ -14095,7 +14091,7 @@ msgstr "Цял екран" msgid "Entire system" msgstr "Цялата система" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Звук от цялата система" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "изключване на потребител" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Изключване от системата" @@ -14593,7 +14589,7 @@ msgstr "Неуспешно копиране на линка за покана" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Неуспешно копиране в клипборда" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Неуспешно зареждане на поканите. Опитай отново." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Неуспешно зареждане на източници за споделяне." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Покажи прозореца" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Фокусиран глас" @@ -15322,10 +15318,6 @@ msgstr "Настройки на папката" msgid "Follow us on {blueskyProviderName}" msgstr "Последвай ни в {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Следване на гласовия вход" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Препращане" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Превъртане напред с {defaultSeekAmount} секунди" @@ -15592,14 +15584,14 @@ msgstr "Рамка" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Кадрова честота" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Кадрова честота над 30 FPS изисква {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Геймпад Y / Триъгълник" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Игри" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Зареждане на избора на GIF файлове" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Преглед на GIF" @@ -16429,7 +16421,7 @@ msgstr "Предоставени {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Предоставя всички разрешения и заобикаля ограниченията на канала. Изключително чувствително разрешение." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Подробен избор" @@ -16992,7 +16984,7 @@ msgstr "Скрий паролата" msgid "Hide picture-in-picture popout?" msgstr "Да се скрие ли изскачащият прозорец „картина в картината“?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Скрий миниатюрата за предварителен преглед" @@ -17386,7 +17378,7 @@ msgstr "Ако искаш тези членове да имат достъп д #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Игнориране" @@ -17395,11 +17387,11 @@ msgstr "Игнориране" msgid "Ignore friend request" msgstr "Игнориране на покана за приятелство" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Игнориране на хардуерни устройства" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Игнориране на входни медии" @@ -17430,7 +17422,7 @@ msgstr "Да игнорираш ли поканата за приятелств msgid "Ignore this channel's slowmode cooldown." msgstr "Игнориране на бавния режим в този канал." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Игнориране на виртуални" @@ -17468,7 +17460,7 @@ msgstr "Илинойс" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Изображение" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Изображения" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Изображението е копирано в клипборда" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Опции за изображение" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Преглед на изображението" @@ -17540,7 +17532,7 @@ msgstr "Качване на изображение" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "В гласов чат" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "В гласов чат" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Включване на всички освен избраните" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Включване на приложения" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Вход и изход" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Входно устройство" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Входен профил: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Настройки на входа" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Състояния на полетата" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Сила на входния звук" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Линкът за покана е скрит, докато споделяш:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Линкът за покана е скрит, докато споделяш" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Към {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Към {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Към текущия разговор" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Към свързания канал" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Към свързаното съобщение" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Към съобщението от {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Към съобщението в {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Оформление" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Научи повече за предварителния преглед на споделянето на екрана" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Стил на линковете" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Линкът не е наличен" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Приложение за Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "По подразбиране за Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Зареждане на тема..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Зареждане..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Приложение за macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "По подразбиране за macOS" @@ -20289,7 +20281,7 @@ msgstr "Следваща песен" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Опции за медия" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Възпроизвеждане/пауза" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Преглед на медия" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Оформление на съобщенията" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "линк към съобщение" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Тест на микрофона" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Микрофонът, камерата и съдържанието на споделения екран са криптирани от край до край." @@ -21019,7 +21011,7 @@ msgstr "Непълнолетни в риск, съдържание за възр #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Грешно написани думи" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Мобилно устройство" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Изключване на всички звуци" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Изключване на микрофона на всички устройства" @@ -21653,13 +21645,13 @@ msgstr "Заглушено" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Микрофонът е изключен" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Микрофонът е изключен от модератори" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Няма разрешение {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Няма достъп" @@ -22282,7 +22274,7 @@ msgstr "Не са намерени разширени настройки" msgid "No AFK channel" msgstr "Няма AFK канал" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Не са намерени прозорци на приложения" @@ -22300,6 +22292,11 @@ msgstr "Все още няма ресурси" msgid "No audio" msgstr "Без звук" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Няма аудио от това устройство" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Няма оторизирани приложения" @@ -22341,7 +22338,7 @@ msgstr "Няма отметки" msgid "No bot banner" msgstr "Няма банер на бота" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Не е намерена камера" @@ -22421,7 +22418,7 @@ msgstr "Няма описание." msgid "No desktop update is available." msgstr "Няма налична актуализация за настолната версия." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Не са намерени дисплеи" @@ -22650,7 +22647,7 @@ msgstr "Няма получен отговор" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Няма резултати" @@ -22679,7 +22676,7 @@ msgstr "Все още няма роли. Добави роли в {rolesSettings #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Няма запазени медии" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Шумов гейт" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Потискане на шума" @@ -22877,7 +22874,7 @@ msgstr "Без преобразуване" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Няма" @@ -23286,7 +23283,7 @@ msgstr "Прилага се само на широки екрани." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Приемат се само кредитни карти. Дебитните и предплатените карти не могат да се използват за проверката за съдържание за възрастни." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Само високоговорители по подразбиране" @@ -23334,7 +23331,7 @@ msgstr "Изпълнявай код тук само ако разбираш то msgid "Only show message previews for DMs with unread messages" msgstr "Показване на визуализации само за DM с непрочетени съобщения" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Само високоговорители" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Отваряне на {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Отваряне на {labelText} в настройките" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Отваряне на @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Отваряне на разширените настройки за медия" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Отвори прозорец на приложение и опитай отново." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Отваряне на анимиран GIF в пълен изглед" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Отваряне на анимирано GIF видео в пълен изглед" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Отваряне на аудиото в пълен изглед" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Отваряне на линка към аудиото" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Отваряне на браузъра" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Отваряне на браузър" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Отваряне на менюто с любими" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Отваряне на линка към файла" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Отваряне на линка към GIF" @@ -23651,7 +23648,7 @@ msgstr "Отваряне на изображението в браузър" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Отваряне на изображението в пълен изглед" @@ -23660,7 +23657,7 @@ msgstr "Отваряне на изображението в пълен изгл #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Отваряне на линка към изображението" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Отваряне на системно DM" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Отваряне на системния инструмент за избор" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Отваряне на видеоклипа в пълен изглед" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Отваряне на линка към видеоклипа" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Отваряне на гласов чат" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Отваряне на настройките за глас и видео" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Изход" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Изходно устройство" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Настройки на изхода" @@ -24094,7 +24091,7 @@ msgstr "Настройки на изхода" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Сила на изходния звук" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Лимит на участниците" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Опции за участник: {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Прегледът е скрит" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Изображенията за визуализация се съхраняват временно от {productName} за доставяне и не са криптирани от край до край. Изключи визуализациите, ако не искаш кадри от споделянето на екрана да се качват за миниатюри." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Изображенията за визуализация се съхраняват временно от {productName} за доставяне и не са криптирани от край до край. Не е нужно хората в това групово DM да гледат активно стрийма ти, за да видят миниатюрата." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Изображенията за визуализация се съхраняват временно от {productName} за доставяне и не са криптирани от край до край. Хората все още се нуждаят от разрешение да се свържат, но не е нужно активно да гледат стрийма ти." @@ -26269,7 +26266,7 @@ msgstr "Препратката е копирана." msgid "Referral parameters" msgstr "Реферални параметри" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Обнови аудиоизточниците" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Натиснат е обикновен бутон." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Отхвърляне" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Премахване от групата" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Премахване от запазените медии" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Без задържане отгоре" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Премахване от любимите GIF файлове, запазени по URL адрес" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Отменена забрана за {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Превъртане назад с {defaultSeekAmount} секунди" @@ -28202,7 +28199,7 @@ msgstr "Запазване на иконата" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Запази медия от съобщения, за да започнеш!" @@ -28313,7 +28310,7 @@ msgstr "Изисква се разрешение за запис на екран #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Споделяне на екран" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Усилване на звука при споделяне на екран" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Аудиото за споделяне на екрана не можа да стартира" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Контроли за кодиране на споделяне на екрана" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Споделянето на екрана приключи" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Поведение при предварителен преглед на споделянето на екрана" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Предварителен преглед на споделянето на екрана" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Предварителните прегледи за споделяне на екрана са деактивирани." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Предварителните прегледи за споделяне на екрана са активирани." @@ -28391,13 +28388,13 @@ msgstr "Поверителност на споделяне на екрана" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Качество на споделяне на екрана" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Настройки за споделяне на екран" @@ -28723,7 +28720,7 @@ msgstr "Търсене на роли или членове…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Търсене в запазени медии" @@ -28942,12 +28939,12 @@ msgstr "Преглед при превъртане" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Избери" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Избери {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Изпращане на линк за нулиране" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Изпращане на запазена медия {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Зададе позиция в списъка с членове за ролята" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Зададено от {preset} председ. Избирането на стойност тук превключва към „Персонализирано“." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Задай персонализирана сила на звука за отделни звуци. Звуците без персонализирана настройка следват общата сила на звука." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Задаване на клавишна комбинация за изключване на звука" @@ -29669,11 +29666,6 @@ msgstr "Остави тази проверка настрана" msgid "Set this check aside?" msgstr "Да оставиш ли тази проверка настрана?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Зададено за изпращане на {resolution} при {frameRate} FPS с {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Настройки" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "линк към настройките" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Споделяне на подарък" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Сподели екран" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Споделяне с модератори на общността." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Споделяне на екрана" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Споделяй екрана си с висока разделителна способност (1080p), Quad HD (1440p) или оригиналната разделителна способност на източника, при до 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Споделен прозорец" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Звук от споделения прозорец" @@ -30624,6 +30616,10 @@ msgstr "Безшумни повиквания" msgid "Silent calls from everyone" msgstr "Безшумни повиквания от всички" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Тихо, когато устройството за заснемане няма собствен аудио вход" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Плавно превъртане" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "По-плавно видео" @@ -31005,11 +31001,6 @@ msgstr "Някои емоджита не можаха да бъдат добав msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Някои от файловете, които се опитваш да качиш, надвишават максималния размер от {maxSizeFormatted} на файл." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Някои настройки на потока не можаха да бъдат приложени към вашия поток на живо." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Звуци" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Източник" @@ -31569,7 +31560,7 @@ msgstr "Да започнеш ли гласово повикване?" msgid "Start call" msgstr "Започване на разговор" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Стартиране на тест на камерата и конфигуриране на ефекти" @@ -31910,7 +31901,7 @@ msgstr "Спиране на прочитането" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Спиране на стрийминга" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Да спреш ли да се доверяваш на всички линкове?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Спиране на гледането" @@ -31982,7 +31973,7 @@ msgstr "Спира звука от високоговорителите да с #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Излъчване" @@ -32001,11 +31992,6 @@ msgstr "Потокът приключи" msgid "Stream hidden" msgstr "Потокът е скрит" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Потокът изостава" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Качество на потока" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Настройки на потока" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Настройките на потока бяха коригирани" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Системни съобщения от екипа на {productName}. #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Системно по подразбиране" @@ -33036,13 +33017,8 @@ msgstr "Ботът е добавен към <0>{destinationName}." msgid "The bot has been added." msgstr "Ботът е добавен." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Браузърът изпраща {deliveredResolution} вместо {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Предварителният преглед на камерата все още се спира. Опитай да споделиш екрана отново след малко." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Ролята предостави {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Източникът на споделяне на екрана спря да изпраща видео, поради което споделянето на екрана беше прекратено." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Тази конзола на браузъра е инструмент за разработчици." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Този разговор е криптиран от край до край." @@ -33645,11 +33621,6 @@ msgstr "Тази версия на настолното приложение н msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Тази развойна версия не може да се актуализира сама. Изтегли инсталатор за настолното приложение, за да тестваш процеса на актуализация." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Това устройство не успя да поддържа {targetResolution} при {targetFrameRate} FPS последния път, затова стриймът ви започна при {resolution} при {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Тази инсталация се управлява от системата ти. Актуализирай {productName} през софтуерния център или мениджъра на пакети." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Тази инстанция в момента позволява споделяне на екран до 720p при 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Този канал с линкове е маркиран за съдържание за възрастни и може да отваря материали, които може да са неподходящи за някои потребители." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Този линк не е наличен за акаунта ти." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Тази опция е задължителна. Въведи стойност." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Този участник не може да говори в този канал" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Звукът на този участник е изключен" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Звукът на този участник е изключен от модератори" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Този телефонен номер вече е използван. Опитай друг номер или се свържи с поддръжката." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Този инструмент за избор е наличен само в настолното приложение." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Показване/скриване на контролите" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Включване/изключване на звука" @@ -34666,7 +34637,7 @@ msgstr "Промените по иконата в системния трей с #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Популярни GIF файлове" @@ -34760,7 +34731,7 @@ msgstr "Опитай с друго търсене." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Опитай с друг термин за търсене или филтър" @@ -34839,11 +34810,6 @@ msgstr "Опитай с други филтри или термини за тъ msgid "Try editing your message again." msgstr "Опитай да редактираш съобщението си отново." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Опитай отново с пълно качество" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Опитай да потърсиш нещо като „тема“, „известия“ или „поверителност“" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Изключи всичко, с което не се чувстваш комфортно. Някои функции може да спрат да работят." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Изключи споделянето на аудио за този източник или опитай отново след малко." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Автоматично включване при засичане на OBS или XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Включване на камерата" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Несъбираемо" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Включване на звука" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Включване на звука на всички устройства" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Включване на звука" @@ -35558,7 +35524,7 @@ msgstr "неизвестен потребител" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Неизвестен потребител" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Отключи персонализирани емоджита в DM с {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Отключи споделяне на екран в HD с {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Включване на звука за {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Включване на микрофона на всички устройства" @@ -35741,7 +35707,7 @@ msgstr "Група без име" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Неименуван вход" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Качване на нови емоджита и стикери и управление на собствените ти творения." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Качване на кадри за визуализация при споделяне на екран." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL адресът е копиран в клипборда" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Потребителски таг (по избор)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Сила на звука на потребителя" @@ -37227,7 +37193,7 @@ msgstr "Загуба на видеопакети:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Преглед на видео" @@ -37283,7 +37249,7 @@ msgstr "Качване на видео" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Глас и видео" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Настройки за глас и видео" @@ -37685,7 +37651,7 @@ msgstr "Преки пътища за глас и видео" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Гласово повикване" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Отстраняване на грешки при гласова връзка" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Изключване на звука в гласов чат" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Гласово съобщение" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Плейър за гласови съобщения" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Настройки на гласа" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Включване на звука в гласов чат" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Изчакай тук" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Изчакване на връзка..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Когато се публикуват като линкове в чата" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Когато визуализациите са включени, {productName} качва периодично JPEG кадри от споделения ти екран, за да могат останалите в това групово DM да видят миниатюра, преди да гледат." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Когато визуализациите са включени, {productName} качва периодично JPEG кадри от споделения ти екран, за да могат хората с разрешение да се присъединят към този гласов канал да видят миниатюра, преди да гледат." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Когато визуализациите са включени, {productName} качва периодично JPEG кадри от споделения ти екран, за да може другият човек в това DM да види миниатюра, преди да гледа." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Прозорците, отрязани в горната или долната част на екрана, както и закачените инструменти за разработчици, може да показват сив фон, вместо да останат прозрачни." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows по подразбиране" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Наложена ти е забрана в тази общност и не можеш да се присъединиш." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Звукът ти е изключен" @@ -38833,11 +38799,6 @@ msgstr "Използваш {releaseChannel} версия на {productName}." msgid "You aren't in any communities right now." msgstr "В момента не членуваш в общности." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Поискахте {resolution} при {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Не можеш да изпращаш съобщения в тази о #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Не можеш да споделяш екрана си в този канал" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Не можеш да говориш в този канал" @@ -39036,7 +38997,7 @@ msgstr "Не можеш да говориш в този канал" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Не можеш да включиш камерата си в този канал" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Промени тага си, докато ползваше {PREMIUM_PRODUCT_NAME}. Тагът ти ще бъде преизбран на случаен принцип, когато {PREMIUM_PRODUCT_NAME} ти изтече, освен ако не се поднови." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Нямаш достъп до канала, където е изпратено това съобщение." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Оставаш в {ownedNames}. Собствениците не могат да напуснат собствената си общност." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Звукът ти е изключен от модератори" @@ -39699,11 +39660,6 @@ msgstr "Заявлението ти е в процес на преглед. Вс msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Браузърът ти изисква взаимодействие с потребителя, преди да пусне звук. Натисни бутона по-долу, за да включиш гласовия чат." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Вашето устройство за заснемане изпраща {deliveredResolution} вместо {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Проверяваме картата ти за локализирани цени. Това обикновено отнема само момент." @@ -39734,36 +39690,11 @@ msgstr "Общността ти е включена в Откриване. Мо msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Общността ти трябва да има поне {minMemberCount, plural, one {# член} other {# членове}}, преди да може да бъде включена в Откриване." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Връзката ви не успява да поддържа скоростта. Потокът ви е настроен на {frameRate} FPS при {resolution}, а зрителите получават около {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Кредитната ти карта е проверена. Ако картата е валидна, съдържанието за възрастни ще се отключи скоро. Можеш да затвориш този раздел и да се върнеш в приложението." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Устройството ви не успява да се справи. Потокът ви е настроен на {frameRate} FPS при {resolution}, а зрителите получават около {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Устройството ви не успя да се справи, затова потокът ви сега изпраща {frameRate} FPS, за да запази {resolution} ясен." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Устройството ви не успя да се справи, затова потокът ви сега изпраща {resolution} при {frameRate} FPS вместо {targetResolution} при {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Устройството ви не успя да се справи, затова потокът ви сега изпраща {resolution}, за да поддържа {frameRate} FPS плавни." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Регистрацията ти изисква допълнителна проверка срещу спам, преди да продължиш." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Вашата запазена настройка {savedResolution} при {savedFrameRate} FPS изисква {premiumProductName}, така че споделянията използват {resolution} при {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Споделянето на екрана ти не можа да бъде публикувано със съвместим видео кодек, затова беше спряно. Опитай да споделиш отново." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Вашият източник произвежда около {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Потокът ти все още е на живо" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Потокът ви беше превключен към {codec}, защото {previousCodec} не успяваше да се справи на това устройство. Зрителите може да видят кратка пауза." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Персонализираният ти URL адрес е зададен на {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Видеоенкодерът ти спря да кодира кадри, затова споделянето на екрана беше спряно. Опитай да споделиш отново." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Видео енкодерът ви спря, затова потокът ви премина към {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/cs/messages.po b/fluxer_app/src/features/i18n/locales/cs/messages.po index 8a0f82ca0..b89e5ced8 100644 --- a/fluxer_app/src/features/i18n/locales/cs/messages.po +++ b/fluxer_app/src/features/i18n/locales/cs/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} se chce připojit" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} použije tento účet pro tuto autorizaci." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} na tomto zařízení nestíhá. V pokročilém nastavení vyberte Automaticky, abyste povolili rychlejší kodek." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Komunita „{communityName}“ je nyní přístupná pouze zaměstnanců msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Bez omezení} one {# účastník} few {# účastníci} many {# účastníka} other {# účastníků}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (zbývá # řádek)} few {... (zbývají # řádky)} many {... (zbývá # řádku)} other {... (zbývá # řádků)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (zbývá # řádek)} few {... (zbývají # řádky)} many {... (zbývá # řádku)} other {... (zbývá # řádků)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Rozbalit (# řádek)} few {Rozbalit (# řádky)} ma msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Rozbalit (# řádek)} few {Rozbalit (# řádky)} many {Rozbalit (# řádku)} other {Rozbalit (# řádků)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Rozbalit # další zařízení} few {Rozbalit # další zařízení} many {Rozbalit # dalšího zařízení} other {Rozbalit # dalších zařízení}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {V hovoru} other {# v hovoru}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Připojit se k videohovoru (# účastník)} few {Připojit se k videohovoru (# účastníci)} many {Připojit se k videohovoru (# účastníka)} other {Připojit se k videohovoru (# účastníků)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Dál sledovat # stream a přidat tento} few {Dál sledovat # streamy a přidat tento} many {Dál sledovat # streamu a přidat tento} other {Dál sledovat # streamů a přidat tento}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Váš odkaz na pozvánku vyprší za # den.} few {Váš odkaz na pozvánku vyprší za # dny.} many {Váš odkaz na pozvánku vyprší za # dne.} other {Váš odkaz na pozvánku vyprší za # dní.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} hodiny" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} snímků/s" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# přepsání} other {# přepsání}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} nejprve ověří, zda vaše karta splňuje podmínky pro místní ceny, a poté vás přesměruje k platbě. Po dokončení se vraťte do aplikace {productName}." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} není na tomto zařízení k dispozici, takže váš stream používá {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} potřebuje přístup k vašemu mikrofonu. Povolte přístup k mikrofonu v nastavení soukromí operačního systému a restartujte aplikaci." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "Aplikace {productName} potřebuje přístup ke kameře, aby mohla zobrazit vaše zařízení." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "adresa URL napsaná v textu zprávy" msgid "a user" msgstr "uživatel" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Divák nemůže přehrát {pinnedCodec}, takže váš stream používá {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Přijmout" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Přijmout" @@ -3178,12 +3163,12 @@ msgstr "Přidat do skupiny" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Přidat k uloženým médiím" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Přidat mezi oblíbené GIFy uložené pouze jako URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Pokročilé" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Pokročilé nastavení videa" @@ -3451,7 +3436,7 @@ msgstr "Ovládací prvky zarovnání jsou dostupné pouze na širších obrazovk #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Povolit" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Povolit zmínky {everyoneMention} a {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Povolte aplikaci {PRODUCT_NAME} přístup k vaší kameře v {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Povolit přímé zprávy od botů" msgid "Allow bots to send you direct messages?" msgstr "Povolit botům posílat vám přímé zprávy?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Povolit kameru" @@ -4014,13 +3999,13 @@ msgstr "Přehrávání animovaných emoji, GIFů a samolepek můžete nastavit n #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animovaný GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animované video GIF" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animované ikony vyžadují funkci komunity {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animovaný obrázek" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Náhled animovaného obrázku" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Nahrávání animovaných souborů vyžaduje předplatné {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animované video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Stav aplikace" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Okno aplikace" @@ -4361,7 +4346,7 @@ msgstr "Aplikace byla úspěšně aktualizována" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplikace" @@ -4586,7 +4571,7 @@ msgstr "příloha" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Příloha {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Platnost přílohy vypršela" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Platnost přílohy vypršela nebo příloha není k dispozici" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID přílohy zkopírováno do schránky" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Úroveň zvuku" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Zvuk vypnutý" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Ztráta zvukových paketů:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Přehrávač zvuku" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Náhled zvuku" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Zpracování zvuku (hlas v popředí)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Průběh přehrávání zvuku" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Nastavení zvuku" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Zvukové zdroje: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automaticky ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatické řízení zesílení" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Prohlížeč: zpět" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Výchozí nastavení prohlížeče" @@ -6198,20 +6183,20 @@ msgstr "Hovory" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Přístup ke kameře je potřeba pro náhledy zařízení" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Přístup ke kameře nebyl udělen. Aktualizujte oprávnění ke kameře a zkuste to znovu." @@ -6276,13 +6261,13 @@ msgstr "Náhled kamery" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kvalita kamery" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Nastavení kamery" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Ověření CAPTCHA se nezdařilo. Zkuste to znovu." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Zachytávání" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Zachytávat zvuk aplikace" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Zachytávat zvuk z počítače" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Zachytávat zvuk zařízení" @@ -6736,12 +6721,12 @@ msgstr "Změna naplánována" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Změnit stream" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Změnit zdroj streamu" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Přístup k kanálu" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Přístup k tomuto kanálu odepřen" @@ -7097,7 +7082,7 @@ msgstr "ID kanálu zkopírováno do schránky" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "odkaz na kanál" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Zvolte způsob platby" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Vyberte, co chcete sdílet" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Vymazat důvěryhodné domény ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Zřetelnější text" @@ -8285,7 +8270,7 @@ msgstr "Sbalit téma kanálu" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Sbalit zařízení" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Tvůrce komunity" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Vypnout zvuk v komunitě" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Lišta s požadavkem komunity na vícefaktorové ověřování" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Ztlumit mikrofon v komunitě" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Nastavit nyní" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Nastavit nebo ukončit sdílení obrazovky" @@ -8904,7 +8889,7 @@ msgstr "Potvrzení nebo dvojité kliknutí pro připojení k hlasovým kanálům msgid "Conflicts with {conflictLabel}" msgstr "V konfliktu s {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Připojte kameru a zkuste to znovu." @@ -8913,7 +8898,7 @@ msgstr "Připojte kameru a zkuste to znovu." msgid "Connect a camera or virtual capture device, then try again." msgstr "Připojte kameru nebo virtuální záznamové zařízení a zkuste to znovu." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Připojte displej a zkuste to znovu." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Ovládací prvky hlasitosti připojení" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Připojení: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistiky ve formátu JSON zkopírovány do schránky" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Zkopírováno do schránky" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopírovat ID přílohy" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopírovat zvuk" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopírovat odkaz na zvuk" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopírovat koncový bod" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopírovat odkaz na soubor" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopírovat GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopírovat odkaz na GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopírovat identifikátor" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopírovat obrázek" @@ -9448,7 +9433,7 @@ msgstr "Kopírovat obrázek" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopírovat odkaz na obrázek" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Kopírovat odkaz na tuto sekci" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopírovat média" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopírovat hodnotu" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopírovat video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopírovat odkaz na video" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopírovat URL webhooku" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopírování obrázku..." @@ -10588,7 +10573,7 @@ msgstr "Aktuálně: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Vlastní" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deaktivovat" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Vypnout zvuk" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Vypnout zvuk na všech zařízeních" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Vypnout zvuk na zařízení" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Vypnout zvuk ostatním členům v hlasových kanálech, takže neuslyší ostatní ani nebudou moci mluvit." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Zkratka pro vypnutí zvuku" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Vypnout si zvuk" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Zvuk vypnutý" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Zvuk vypnutý moderátory" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Výchozí" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Výchozí kamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Smazat :{emojiName}:? Tuto akci nelze vrátit zpět." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Smazat „{memeName}“? Tuto akci nelze vrátit zpět." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Smazat pozvánku" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Smazat média" @@ -11466,8 +11451,8 @@ msgstr "Smazat roli" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Smazat uložená média" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Mimo počítač" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Počítač" @@ -11849,13 +11834,13 @@ msgstr "Stav pro vývojáře" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Nástroje pro vývojáře" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Nástroje pro vývojáře jsou dostupné z odznaku pro zaměstnance v záhlaví kanálu." @@ -11879,6 +11864,17 @@ msgstr "Zařízení" msgid "Device alerts" msgstr "Upozornění na zařízení" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Zvuk zařízení ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Zvuk zařízení" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Podrobnosti o zařízení" @@ -11888,7 +11884,7 @@ msgstr "Podrobnosti o zařízení" msgid "Device revoked" msgstr "Zařízení odhlášeno" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Výběr zařízení" @@ -11912,7 +11908,7 @@ msgstr "Zařízení:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Zařízení" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Snížit výraznost přeškrtnutého textu" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Přímý vstup" @@ -12020,7 +12016,7 @@ msgstr "Přímé nahrávání aktivní" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Vypnout" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Neaktivní hodnota" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Vypnutím náhledů se zastaví odesílání nových náhledů. Stávající obrázky náhledů mohou zůstat viditelné, dokud stream neskončí nebo se náhledy neobnoví." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Zahodit hlasovou zprávu" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Odpojit" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Odpojit všechna zařízení" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Odpojit zařízení" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Zobrazení" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Obrazovka" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification a umístěte jej do složky <1>.well-known, abychom mohli ověřit doménu." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Stáhnout zvuk" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Stáhnout aktualizaci desktopové aplikace {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Stáhnout soubor" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Stáhnout fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Stáhnout GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Stáhnout obrázek" @@ -12714,7 +12710,7 @@ msgstr "Stáhnout instalační program" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Stáhnout média" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Stáhnout balíček" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Stáhnout video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Ozvěna" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Potlačení ozvěny" @@ -12963,7 +12959,7 @@ msgstr "Upravit přístup pro {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Upravit alternativní text" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Upravit klávesovou zkratku" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Upravit média" @@ -13102,8 +13098,8 @@ msgstr "Upravit vyhledávač pro vyhledávání podle obrázku" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Upravit uložená média" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Povolit oznámení prohlížeče" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Povolte přístup ke kameře, abyste si před výběrem zdroje streamu mohli prohlédnout náhled kamer a záznamových zařízení." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Zapněte nebo vypněte vestavěné překladače. Zapnuté překladače se zobrazují v kontextové nabídce zprávy po výběru textu." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Povolit náhledy" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Ukončit sdílení obrazovky" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Koncové šifrování není k dispozici, protože ho některý z účastníků tohoto hovoru nepodporuje." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Koncové šifrování není k dispozici, protože ho některý z účastníků tohoto hlasového kanálu nepodporuje." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Zábava" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Celá obrazovka" @@ -14095,7 +14091,7 @@ msgstr "Celá obrazovka" msgid "Entire system" msgstr "Celý systém" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Veškerý zvuk systému" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "vyloučit uživatele" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Vyloučit ze systému" @@ -14593,7 +14589,7 @@ msgstr "Odkaz na pozvánku se nepodařilo zkopírovat" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Zkopírování do schránky se nezdařilo" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Nepodařilo se načíst pozvánky. Zkuste to znovu." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Nepodařilo se načíst dostupné zdroje pro sdílení." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Přesun okna do popředí" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Hlas v popředí" @@ -15322,10 +15318,6 @@ msgstr "Nastavení složky" msgid "Follow us on {blueskyProviderName}" msgstr "Sledujte nás na {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Použít vstup pro hlasové hovory" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Přeposlat" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Přetočit o {defaultSeekAmount} sekund dopředu" @@ -15592,14 +15584,14 @@ msgstr "Rámeček" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Snímková frekvence" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Snímková frekvence nad 30 FPS vyžaduje {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Gamepad Y / Trojúhelník" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Hraní" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Načítání výběru GIFů" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Náhled GIFu" @@ -16429,7 +16421,7 @@ msgstr "Udělena oprávnění {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Uděluje všechna oprávnění a obchází omezení kanálů. Jde o vysoce citlivé oprávnění." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Podrobný výběr" @@ -16992,7 +16984,7 @@ msgstr "Skrýt heslo" msgid "Hide picture-in-picture popout?" msgstr "Skrýt obraz v obraze?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Skrýt miniaturu náhledu" @@ -17386,7 +17378,7 @@ msgstr "Pokud chcete těmto členům umožnit přístup ke starším zprávám o #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorovat" @@ -17395,11 +17387,11 @@ msgstr "Ignorovat" msgid "Ignore friend request" msgstr "Ignorovat žádost o přátelství" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorovat hardwarová zařízení" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorovat vstupní média" @@ -17430,7 +17422,7 @@ msgstr "Ignorovat žádost o přátelství od uživatele {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorovat čekací dobu pomalého režimu v tomto kanálu." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorovat virtuální" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Obrázek" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Obrázky" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Obrázek zkopírován do schránky" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Možnosti obrázku" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Náhled obrázku" @@ -17540,7 +17532,7 @@ msgstr "Nahrání obrázku" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "V hovoru" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "V hlasovém hovoru" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Zahrnout vše kromě vybraných" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Zahrnout aplikace" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Vstup a výstup" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Vstupní zařízení" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Vstupní profil: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Nastavení vstupu" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Stavy vstupních polí" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Hlasitost vstupu" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Odkaz na pozvánku je skrytý, když sdílíte:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Odkaz na pozvánku je při sdílení maskován" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Přejít na {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Přejít na {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Přejít na aktuální hovor" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Přejít na odkazovaný kanál" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Přejít na odkazovanou zprávu" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Přejít ke zprávě od {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Přejít na zprávu v {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Rozvržení" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Zjistěte více o náhledech sdílené obrazovky" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Styl odkazů" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Odkaz není k dispozici" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Aplikace pro Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Výchozí zařízení v systému Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Načítání motivu..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Načítání..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Aplikace pro macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Výchozí zařízení v macOS" @@ -20289,7 +20281,7 @@ msgstr "Další skladba" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Možnosti médií" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Přehrát/pozastavit" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Náhled média" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Rozložení zpráv" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "odkaz na zprávu" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Test mikrofonu" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Zvuk mikrofonu, obraz kamery a sdílená obrazovka jsou chráněny koncovým šifrováním." @@ -21019,7 +21011,7 @@ msgstr "Ohrožení nezletilých, obsah pro dospělé na nevhodném místě nebo #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Překlepy" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobilní zařízení" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Ztlumit vše" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Ztlumit mikrofon na všech zařízeních" @@ -21653,13 +21645,13 @@ msgstr "Ztlumeno" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofon je ztlumený" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Mikrofon ztlumený moderátory" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Chybí oprávnění {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Bez přístupu" @@ -22282,7 +22274,7 @@ msgstr "Nenalezena žádná rozšířená nastavení" msgid "No AFK channel" msgstr "Žádný AFK kanál" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Nebyla nalezena žádná okna aplikací" @@ -22300,6 +22292,11 @@ msgstr "Zatím žádné soubory" msgid "No audio" msgstr "Žádný zvuk" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Z tohoto zařízení není zvuk" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Žádné autorizované aplikace" @@ -22341,7 +22338,7 @@ msgstr "Žádné záložky" msgid "No bot banner" msgstr "Žádný banner bota" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Nenalezena žádná kamera" @@ -22421,7 +22418,7 @@ msgstr "Bez popisu." msgid "No desktop update is available." msgstr "Není k dispozici žádná aktualizace desktopové aplikace." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Nebyly nalezeny žádné obrazovky" @@ -22650,7 +22647,7 @@ msgstr "Nebylo přijato žádné tělo odpovědi" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Žádné výsledky" @@ -22679,7 +22676,7 @@ msgstr "Zatím žádné role. Přidejte role v {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Žádná uložená média" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Šumová brána" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Potlačení šumu" @@ -22877,7 +22874,7 @@ msgstr "Bez převodu" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Žádné" @@ -23286,7 +23283,7 @@ msgstr "Platí pouze na dostatečně širokých obrazovkách." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Přijímány jsou pouze kreditní karty. Debetní a předplacené karty nelze použít k ověření věku pro obsah pro dospělé." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Pouze výchozí reproduktory" @@ -23334,7 +23331,7 @@ msgstr "Spouštějte zde kód, pouze pokud přesně rozumíte tomu, co dělá." msgid "Only show message previews for DMs with unread messages" msgstr "Zobrazovat náhledy zpráv pouze u soukromých konverzací s nepřečtenými zprávami" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Pouze reproduktory" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Otevřít {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Otevřít {labelText} v nastavení" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Otevřít @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Otevřít rozšířené nastavení médií" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Otevřete okno aplikace a zkuste to znovu." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Otevřít animovaný GIF v plném zobrazení" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Otevřít animované GIF video v plném zobrazení" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Otevřít zvuk v plném zobrazení" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Otevřít odkaz na zvuk" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Otevřít prohlížeč" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Otevřít výběr prohlížeče" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Otevřít nabídku oblíbených" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Otevřít odkaz na soubor" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Otevřít odkaz na GIF" @@ -23651,7 +23648,7 @@ msgstr "Otevřít obrázek v prohlížeči" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Otevřít obrázek v plném zobrazení" @@ -23660,7 +23657,7 @@ msgstr "Otevřít obrázek v plném zobrazení" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Otevřít odkaz na obrázek" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Otevřít systémovou soukromou konverzaci" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Otevřít systémový výběr" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Otevřít video v plném zobrazení" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Otevřít odkaz na video" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Otevřít hlasový hovor" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Otevřít nastavení zvuku a videa" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Výstup" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Výstupní zařízení" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Nastavení výstupu" @@ -24094,7 +24091,7 @@ msgstr "Nastavení výstupu" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Hlasitost výstupu" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Limit účastníků" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Možnosti účastníka {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Náhled skryt" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Služba {productName} dočasně ukládá obrázky náhledů kvůli jejich doručení. Náhledy nejsou chráněny koncovým šifrováním. Pokud nechcete, aby se snímky sdílené obrazovky nahrávaly pro vytváření miniatur, vypněte náhledy." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Služba {productName} dočasně ukládá obrázky náhledů kvůli jejich doručení. Náhledy nejsou chráněny koncovým šifrováním. Lidé v této skupinové konverzaci nemusí aktivně sledovat váš stream, aby viděli miniaturu." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Služba {productName} dočasně ukládá obrázky náhledů kvůli jejich doručení. Náhledy nejsou chráněny koncovým šifrováním. Lidé stále potřebují oprávnění k připojení, ale nemusí aktivně sledovat váš stream." @@ -26269,7 +26266,7 @@ msgstr "Odkaz zkopírován." msgid "Referral parameters" msgstr "Parametry doporučení" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Obnovit zdroje zvuku" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Bylo kliknuto na běžné tlačítko." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Odmítnout" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Odebrat ze skupiny" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Odstranit z uložených médií" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Odebrat ze seznamu oken nahoře" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Odebrat z oblíbených GIFů uložených pouze jako URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Ban uživatele {0} byl zrušen" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Přetočit o {defaultSeekAmount, plural, one {# sekundu} few {# sekundy} many {# sekundy} other {# sekund}} zpět" @@ -28202,7 +28199,7 @@ msgstr "Uložit ikonu" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Pokud chcete začít, uložte si nějaká média ze zpráv!" @@ -28313,7 +28310,7 @@ msgstr "Je potřeba povolit nahrávání obrazovky" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Sdílení obrazovky" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Zvýšení hlasitosti zvuku při sdílení obrazovky" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Zvuk sdílení obrazovky se nespustil" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Ovládací prvky enkodéru pro sdílení obrazovky" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Sdílení obrazovky ukončeno" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Chování náhledu sdílení obrazovky" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Náhledy sdílení obrazovky" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Náhledy sdílení obrazovky jsou vypnuté." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Náhledy sdílení obrazovky jsou povolené." @@ -28391,13 +28388,13 @@ msgstr "Soukromí sdílení obrazovky" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Kvalita sdílení obrazovky" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Nastavení sdílení obrazovky" @@ -28723,7 +28720,7 @@ msgstr "Hledat role nebo členy…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Hledat uložená média" @@ -28942,12 +28939,12 @@ msgstr "Náhled při přetáčení" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Vybrat" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Vybrat {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Odeslat odkaz pro resetování" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Odeslat uložené médium {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Nastavena pozice role v seznamu členů" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Nastaveno předvolbou {preset}. Výběr hodnoty zde přepne na Vlastní." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Nastavte si vlastní hlasitost pro jednotlivé zvuky. Zvuky bez vlastního nastavení se řídí hlavní hlasitostí." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Nastavit zkratku pro vypnutí zvuku" @@ -29669,11 +29666,6 @@ msgstr "Odložit tuto kontrolu" msgid "Set this check aside?" msgstr "Odložit tuto kontrolu?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Odesílat v rozlišení {resolution} při {frameRate} snímcích za sekundu s kodekem {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Nastavení" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "odkaz na nastavení" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Sdílet dárek" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Sdílet obrazovku" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Sdílet s moderátory komunity." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Sdílet obrazovku" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Sdílejte obrazovku ve vysokém rozlišení (1080p), Quad HD (1440p) nebo v nativním rozlišení zdroje, a to až při 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Sdílené okno" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Zvuk sdíleného okna" @@ -30624,6 +30616,10 @@ msgstr "Tiché hovory" msgid "Silent calls from everyone" msgstr "Tiché hovory od všech" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Tiché, když zachytávací zařízení nemá vlastní zvukový vstup" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Plynulé posouvání" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Plynulejší video" @@ -31005,11 +31001,6 @@ msgstr "Některé emoji nebylo možné přidat" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Některé soubory, které se snažíte nahrát, překračují maximální limit velikosti {maxSizeFormatted} na soubor." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Některá nastavení streamu se nepodařilo použít pro váš živý přenos." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Zvuky" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Zdroj" @@ -31569,7 +31560,7 @@ msgstr "Zahájit hlasový hovor?" msgid "Start call" msgstr "Zahájit hovor" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Spustit test kamery a konfigurovat efekty" @@ -31910,7 +31901,7 @@ msgstr "Zastavit předčítání" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Zastavit streamování" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Přestat důvěřovat všem odkazům?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Zastavit sledování" @@ -31982,7 +31973,7 @@ msgstr "Zabrání tomu, aby se zvuk z reproduktorů vracel do mikrofonu." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31992,6 @@ msgstr "Stream skončil" msgid "Stream hidden" msgstr "Stream skryt" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Stream nestíhá" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Kvalita streamu" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Nastavení streamu" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Nastavení streamu bylo upraveno" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Systémová oznámení od zaměstnanců {productName}. Zde nelze odpoví #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Výchozí systémové" @@ -33036,13 +33017,8 @@ msgstr "Bot byl přidán do <0>{destinationName}." msgid "The bot has been added." msgstr "Bot byl přidán." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Prohlížeč posílá {deliveredResolution} místo {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Náhled kamery se stále zastavuje. Zkuste streamovat znovu za chvíli." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Role udělila {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Zdroj sdílení obrazovky přestal odesílat video, takže bylo ukončeno sdílení obrazovky." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Tato konzole prohlížeče je nástroj pro vývojáře." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Tento hovor je chráněn koncovým šifrováním." @@ -33645,11 +33621,6 @@ msgstr "Tato verze desktopové aplikace neumožňuje instalovat aktualizace př msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Tato vývojová verze se nemůže sama aktualizovat. Stáhněte si desktopový instalátor a otestujte proces aktualizace." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Toto zařízení to minule nezvládlo při {targetResolution} s {targetFrameRate} snímky/s, takže váš stream začal na {resolution} s {frameRate} snímky/s." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Tato instalace je spravována vaším systémem. Aktualizujte aplikaci {productName} prostřednictvím vašeho softwarového centra nebo správce balíčků." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Tato instance momentálně umožňuje sdílení obrazovky až do rozlišení 720p při 30 snímcích za sekundu." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Tento kanál s odkazem je označen jako kanál pro dospělé a může otevřít materiál, který nemusí být vhodný pro některé uživatele." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Tento odkaz není pro váš účet dostupný." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Tato možnost je povinná. Zadejte prosím hodnotu." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Tento účastník nemůže v tomto kanálu mluvit" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Tento účastník má vypnutý zvuk" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Moderátoři tomuto účastníkovi vypnuli zvuk" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Toto telefonní číslo již bylo použito. Zkuste jiné číslo nebo kontaktujte podporu." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Tento panel výběru je dostupný pouze v desktopové aplikaci." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Přepnout ovládání" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Vypnout nebo zapnout zvuk" @@ -34666,7 +34637,7 @@ msgstr "V Linuxu se změny ikony v oznamovací oblasti projeví až po restartu, #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Populární GIFy" @@ -34760,7 +34731,7 @@ msgstr "Zkuste jiný vyhledávací dotaz." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Zkuste jiný výraz nebo filtr" @@ -34839,11 +34810,6 @@ msgstr "Zkuste jiné filtry nebo hledané výrazy." msgid "Try editing your message again." msgstr "Zkuste zprávu upravit znovu." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Zkusit znovu v plné kvalitě" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Zkuste hledat něco jako \"motiv\", \"oznámení\" nebo \"soukromí\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Vypněte vše, s čím nesouhlasíte. Některé funkce pak nemusí fungovat." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Vypněte sdílení zvuku pro tento zdroj nebo to zkuste za chvíli znovu." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Zapnout automaticky při detekci OBS nebo XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Zapnout kameru" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Nedobytné" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Zapnout zvuk" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Zapnout zvuk na všech zařízeních" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Zapnout si zvuk" @@ -35558,7 +35524,7 @@ msgstr "neznámý uživatel" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Neznámý uživatel" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Odemkněte vlastní emoji v soukromých konverzacích s {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Odemkněte sdílení obrazovky v HD rozlišení s {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Zapnout zvuk: {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Zapnout mikrofony na všech zařízeních" @@ -35741,7 +35707,7 @@ msgstr "Nepojmenovaná skupina" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Nepojmenovaný vstup" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Nahrávat nová emoji a samolepky a spravovat vlastní výtvory." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Nahrávat snímky náhledů sdílených obrazovek." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "Adresa URL zkopírována do schránky" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Uživatelská značka (volitelné)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Hlasitost uživatele" @@ -37227,7 +37193,7 @@ msgstr "Ztráta video paketů:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Náhled videa" @@ -37283,7 +37249,7 @@ msgstr "Nahrání videa" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Zvuk a video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Nastavení zvuku a videa" @@ -37685,7 +37651,7 @@ msgstr "Zkratky pro hovory a videohovory" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Hlasový hovor" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Ladění hlasového připojení" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Vypnutí zvuku hovoru" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Hlasová zpráva" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Přehrávač hlasových zpráv" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Nastavení hlasu" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Zapnutí zvuku hovoru" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Počkejte zde" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Čekání na připojení..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Při odeslání jako odkazy do chatu" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Když jsou náhledy zapnuté, {productName} občas nahraje snímek sdílené obrazovky ve formátu JPEG, aby ostatní účastníci této skupinové konverzace viděli miniaturu ještě před zahájením sledování." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Když jsou náhledy zapnuté, {productName} občas nahraje snímek sdílené obrazovky ve formátu JPEG, aby lidé s oprávněním připojit se k tomuto hlasovému kanálu viděli miniaturu ještě před zahájením sledování." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Když jsou náhledy zapnuté, {productName} občas nahraje snímek sdílené obrazovky ve formátu JPEG, aby druhý účastník této soukromé konverzace viděl miniaturu ještě před zahájením sledování." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "U oken přesahujících horní nebo dolní okraj obrazovky a u ukotvených DevTools se může místo průhledného pozadí vykreslit šedé pozadí." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Výchozí zařízení systému Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "V této komunitě máte ban a nemůžete se připojit." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Máte vypnutý zvuk" @@ -38833,11 +38799,6 @@ msgstr "Používáte {releaseChannel} sestavení aplikace {productName}." msgid "You aren't in any communities right now." msgstr "Momentálně nejste v žádné komunitě." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Požadovali jste {resolution} při {frameRate} snímcích za sekundu" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "V této komunitě nemůžete odesílat zprávy." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "V tomto kanálu nemůžete sdílet obrazovku" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "V tomto kanálu nemůžete mluvit" @@ -39036,7 +38997,7 @@ msgstr "V tomto kanálu nemůžete mluvit" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "V tomto kanálu nelze zapnout kameru" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Změnili jste si uživatelskou značku, když jste měli {PREMIUM_PRODUCT_NAME}. Náhodně se změní, až vaše předplatné {PREMIUM_PRODUCT_NAME} vyprší, pokud se neobnoví." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Nemáte přístup ke kanálu, ve kterém byla tato zpráva odeslána." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Zůstanete v {ownedNames}. Vlastníci nemohou opustit vlastní komunitu." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderátoři vám vypnuli zvuk" @@ -39699,11 +39660,6 @@ msgstr "Vaše žádost čeká na posouzení. Stále můžete upravovat údaje v msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Váš prohlížeč vyžaduje interakci uživatele, než bude možné přehrát zvuk. Kliknutím na tlačítko níže povolíte hlasový chat." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Vaše zachytávací zařízení posílá {deliveredResolution} místo {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Ověřujeme vaši kartu kvůli místním cenám. Obvykle to chvíli trvá." @@ -39734,36 +39690,11 @@ msgstr "Vaše komunita je uvedena v Objevování. Níže můžete upravit údaje msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Vaše komunita musí mít alespoň {minMemberCount, plural, one {# člena} few {# členy} many {# člena} other {# členů}}, aby mohla být uvedena v Objevování." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Vaše připojení nestíhá. Váš stream je nastaven na {frameRate} FPS při rozlišení {resolution} a diváci dostávají přibližně {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Vaše kreditní karta byla zkontrolována. Pokud je platná, obsah pro dospělé se brzy odemkne. Můžete zavřít tuto kartu prohlížeče a vrátit se do aplikace." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Vaše zařízení to nezvládá. Váš stream je nastaven na {frameRate} FPS při rozlišení {resolution} a diváci dostávají přibližně {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Vaše zařízení to nezvládlo, takže váš stream nyní posílá {frameRate} FPS, aby zůstalo {resolution} ostré." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Vaše zařízení to nezvládlo, takže váš stream nyní odesílá {resolution} při {frameRate} FPS místo {targetResolution} při {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Vaše zařízení to nezvládlo, takže váš stream nyní odesílá {resolution}, aby udržel {frameRate} FPS plynulé." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Než budete moct pokračovat, je potřeba provést dodatečnou kontrolu proti spamu." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Vaše uložené rozlišení {savedResolution} s frekvencí {savedFrameRate} snímků za sekundu vyžaduje {premiumProductName}, takže sdílení používá rozlišení {resolution} s frekvencí {frameRate} snímků za sekundu." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Sdílení obrazovky se nepodařilo publikovat s kompatibilním video kodekem, proto bylo zastaveno. Zkuste sdílet znovu." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Vaše zdrojové zařízení produkuje přibližně {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Váš stream je stále aktivní" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Vaše streamování se přeplo na {codec}, protože {previousCodec} na tomto zařízení nestíhal. Diváci mohou zaznamenat krátkou pauzu." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Váš vlastní odkaz na pozvánku byl nastaven na {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Enkodér videa přestal kódovat snímky, takže sdílení obrazovky bylo ukončeno. Zkuste sdílet znovu." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Vaše video kódování se zastavilo, takže se váš stream přepnul na {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/da/messages.po b/fluxer_app/src/features/i18n/locales/da/messages.po index 31d805784..8896b61d4 100644 --- a/fluxer_app/src/features/i18n/locales/da/messages.po +++ b/fluxer_app/src/features/i18n/locales/da/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} vil oprette forbindelse" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} vil bruge denne konto til denne godkendelse." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} kan ikke følge med på denne enhed. Indstil codec'en til Automatisk i Avancerede indstillinger for at tillade en hurtigere." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} er i øjeblikket kun tilgængelig for {productName}-meda msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Ingen grænse} one {# deltager} other {# deltagere}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# linje tilbage)} other {... (# linjer tilbage)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {… (# række tilbage)} other {… (# rækker tilbage)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Vis (# linje)} other {Vis (# linjer)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Vis (# række)} other {Vis (# rækker)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Vis # anden enhed} other {Vis # andre enheder}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {I opkald} other {# i opkald}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Deltag i videoopkald (# deltager)} other {Deltag i videoopkald (# deltagere)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Fortsæt med at se # stream, og tilføj denne} other {Fortsæt med at se # streams, og tilføj denne}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Dit invitationslink udløber om # dag.} other {Dit invitationslink udløber om # dage.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} timer" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} billeder/sek." @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# tilpasning} other {# tilpasninger}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} kontrollerer først, om dit kort opfylder betingelserne for lokal prissætning, og sender dig derefter videre til betalingen. Vend tilbage til {productName}, når du er færdig." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} er ikke tilgængelig på denne enhed, så din stream bruger {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} skal have adgang til din mikrofon. Giv mikrofonadgang i operativsystemets privatlivsindstillinger, og genstart appen." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} skal have adgang til kameraet for at vise dine enheder." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "en URL skrevet i beskedteksten" msgid "a user" msgstr "en bruger" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "En seer kan ikke afspille {pinnedCodec}, så din stream bruger {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Accepter" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Besvar" @@ -3178,12 +3163,12 @@ msgstr "Føj til gruppe" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Føj til gemte medier" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Tilføj til URL-baserede GIF-favoritter" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avanceret" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Avancerede videoindstillinger" @@ -3451,7 +3436,7 @@ msgstr "Kontroller til placering er kun tilgængelige på bredere skærme" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Tillad" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Tillad {everyoneMention} og {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Tillad {PRODUCT_NAME} at få adgang til dit kamera i {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Tillad direkte beskeder fra bots" msgid "Allow bots to send you direct messages?" msgstr "Tillad bots at sende dig direkte beskeder?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Tillad kamera" @@ -4014,13 +3999,13 @@ msgstr "Du styrer animerede emojis, GIF’er og klistermærker under fanen Anima #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animeret GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animeret GIF-video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animerede ikoner kræver fællesskabsfunktionen {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animeret billede" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Forhåndsvisning af animeret billede" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Upload af animerede filer kræver et {premiumProductName}-abonnement." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animeret video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Apptilstand" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Appvindue" @@ -4361,7 +4346,7 @@ msgstr "Appen er opdateret" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Apps" @@ -4586,7 +4571,7 @@ msgstr "vedhæftet fil" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Vedhæftet fil {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Vedhæftet fil er udløbet" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Vedhæftet fil er udløbet eller utilgængelig" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Id for vedhæftet fil kopieret til udklipsholder" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Lydniveau" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Lyd slået fra" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Tab af lydpakker:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Lydafspiller" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Lydforhåndsvisning" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Lydbehandling (fokuseret tale)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Afspilningsposition" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Lydindstillinger" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Lydkilder: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatisk ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatisk forstærkningskontrol" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser: tilbage" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Browserstandard" @@ -6198,20 +6183,20 @@ msgstr "Opkald" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Kameraadgang er nødvendig for at forhåndsvise enheder" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Kameraadgang blev ikke givet. Opdater kameratilladelser, og prøv igen." @@ -6276,13 +6261,13 @@ msgstr "Forhåndsvisning af kamera" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kamerakvalitet" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kameraindstillinger" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha-verificering mislykkedes. Prøv igen." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Optag" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Optag app-lyd" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Optag computerens lyd" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Optag enhedslyd" @@ -6736,12 +6721,12 @@ msgstr "Ændring planlagt" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Skift stream" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Skift kilde til stream" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Kanaladgang" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Adgang til kanal nægtet" @@ -7097,7 +7082,7 @@ msgstr "Kanal-id kopieret til udklipsholder" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "kanallink" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Vælg betalingsmetode" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Vælg noget at dele" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Ryd godkendte domæner ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Klarere tekst" @@ -8285,7 +8270,7 @@ msgstr "Skjul kanalemne" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Skjul enheder" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Fællesskabets skaber" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Slå lyden fra for medlemmet i fællesskabet" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Banner for fællesskabets MFA-krav" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Slå mikrofonen fra for medlemmet i fællesskabet" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Konfigurer nu" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Konfigurer eller afslut skærmdeling" @@ -8904,7 +8889,7 @@ msgstr "Bekræftelse eller dobbeltklik ved deltagelse i fællesskabets talekanal msgid "Conflicts with {conflictLabel}" msgstr "Konflikter med {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Tilslut et kamera og prøv igen." @@ -8913,7 +8898,7 @@ msgstr "Tilslut et kamera og prøv igen." msgid "Connect a camera or virtual capture device, then try again." msgstr "Tilslut et kamera eller en virtuel optagelsesenhed, og prøv igen." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Tilslut en skærm, og prøv igen." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Lydstyrkekontroller for forbindelsen" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Forbindelse: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistik-JSON kopieret til udklipsholder" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Kopieret til udklipsholder" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopiér id for vedhæftet fil" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopiér lyd" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopiér lydlink" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopiér endepunkt" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopiér fillink" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopiér GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopiér GIF-link" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopiér id" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopiér billede" @@ -9448,7 +9433,7 @@ msgstr "Kopiér billede" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopiér billedlink" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Kopiér link til sektionen" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopiér medie" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopiér værdi" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopiér video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopiér videolink" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopiér webhook-URL" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopierer billede ..." @@ -10588,7 +10573,7 @@ msgstr "Aktuelt: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Brugerdefineret" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deaktiver" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Slå lyden fra" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Slå lyden fra på alle enheder" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Slå lyden fra på enhed" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Slå lyden fra for andre medlemmer i talekanaler, så de hverken kan høre eller tale." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Genvej til at slå lyden fra" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Slå lyden fra for dig selv" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Lyden er slået fra" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Lyden er slået fra af moderatorer" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Standard" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Standardkamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Slet :{emojiName}:? Kan ikke fortrydes." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Slet \"{memeName}\"? Kan ikke fortrydes." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Slet invitation" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Slet medier" @@ -11466,8 +11451,8 @@ msgstr "Slet rolle" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Slet gemte medier" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Ikke ved computeren" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Computer" @@ -11849,13 +11834,13 @@ msgstr "Udviklerstatus" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Udviklerværktøjer" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Udviklerværktøjerne er tilgængelige via medarbejderbadget i kanalens topbjælke." @@ -11879,6 +11864,17 @@ msgstr "Enhed" msgid "Device alerts" msgstr "Notifikationer om enheder" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Enhedslyd ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Kun lyden fra enheden" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Enhedsdetaljer" @@ -11888,7 +11884,7 @@ msgstr "Enhedsdetaljer" msgid "Device revoked" msgstr "Enhed logget ud" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Valg af enhed" @@ -11912,7 +11908,7 @@ msgstr "Enhed:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Enheder" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Dæmp gennemstreget tekst" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Direkte input" @@ -12020,7 +12016,7 @@ msgstr "Direkte upload aktiv" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Deaktiver" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Deaktiveret værdi" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Hvis du deaktiverer forhåndsvisninger, stopper det fremtidige upload af forhåndsvisninger. Eksisterende forhåndsvisningsbilleder kan stadig være synlige, indtil streamen slutter, eller forhåndsvisningen opdateres." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Kassér talebesked" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Afbryd forbindelse" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Afbryd alle enheder" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Afbryd enhed" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Visning" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Skærm" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification, og læg den i din <1>.well-known-mappe, så vi kan validere domænet." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Hent lyd" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Download version {version} af computerappen ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Hent fil" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Download fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Hent GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Hent billede" @@ -12714,7 +12710,7 @@ msgstr "Download installationsprogram" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Download medier" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Download pakke" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Hent video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Ekko" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Ekkoannullering" @@ -12963,7 +12959,7 @@ msgstr "Rediger adgang for {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Rediger alternativ tekst" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Rediger tastaturgenvej" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Rediger medie" @@ -13102,8 +13098,8 @@ msgstr "Rediger søgemaskine til omvendt billedsøgning" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Rediger gemte medier" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Slå browsernotifikationer til" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Aktivér kameraadgang for at få vist kameraer og optageenheder, før du vælger en til at streame." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Slå indbyggede oversættere til eller fra. Aktiverede oversættere vises i beskedens kontekstmenu, når tekst er markeret." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Aktivér forhåndsvisninger" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Afslut skærmdeling" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "End-to-end-kryptering er ikke tilgængelig, fordi en deltager i dette opkald ikke understøtter funktionen." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "End-to-end-kryptering er ikke tilgængelig, fordi en deltager i denne talekanal ikke understøtter funktionen." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Underholdning" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Hele skærmen" @@ -14095,7 +14091,7 @@ msgstr "Hele skærmen" msgid "Entire system" msgstr "Hele systemet" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Hele systemets lyd" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "udeluk en bruger" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Udeluk fra system" @@ -14593,7 +14589,7 @@ msgstr "Kunne ikke kopiere invitationslink" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Kunne ikke kopiere til udklipsholder" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Kunne ikke indlæse invitationer. Prøv igen." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Kunne ikke indlæse delbare kilder." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Aktiver vindue" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Fokuseret tale" @@ -15322,10 +15318,6 @@ msgstr "Mappeindstillinger" msgid "Follow us on {blueskyProviderName}" msgstr "Følg os på {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Brug samme input som til taleopkald" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Videresend" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Spol {defaultSeekAmount} sekunder frem" @@ -15592,14 +15584,14 @@ msgstr "Ramme" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Billedhastighed" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Billedhastigheder over 30 FPS kræver {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Controller Y / Trekant" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Gaming" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF-vælger indlæses" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF-forhåndsvisning" @@ -16429,7 +16421,7 @@ msgstr "Tildelte {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Giver alle tilladelser og omgår kanalbegrænsninger. Giver omfattende adgang." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Detaljeret valg" @@ -16992,7 +16984,7 @@ msgstr "Skjul adgangskode" msgid "Hide picture-in-picture popout?" msgstr "Skjul billede-i-billede-vinduet?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Skjul miniaturebilledet til forhåndsvisning" @@ -17386,7 +17378,7 @@ msgstr "Hvis du vil give disse medlemmer adgang til tidligere beskeder sendt eft #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorer" @@ -17395,11 +17387,11 @@ msgstr "Ignorer" msgid "Ignore friend request" msgstr "Ignorer venneanmodning" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorer hardwareenheder" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorer inputmedie" @@ -17430,7 +17422,7 @@ msgstr "Ignorer venneanmodningen fra {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorer ventetiden i langsom tilstand i denne kanal." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorer virtuelle enheder" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Billede" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Billedressourcer" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Billede kopieret til udklipsholder" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Billedindstillinger" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Billedforhåndsvisning" @@ -17540,7 +17532,7 @@ msgstr "Billedupload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "I taleopkald" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "I talechat" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Inkluder alle undtagen valgte" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Inkluder apps" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Input og output" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Inputenhed" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Inputprofil: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Indstillinger for input" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Tilstande for inputfelter" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Indgangslydstyrke" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Invitationslinket er skjult under deling:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Invitationslink maskeret under deling" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Gå til {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Gå til {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Gå til det aktuelle opkald" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Gå til den linkede kanal" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Gå til den linkede besked" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Gå til beskeden fra {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Gå til beskeden i {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Layout" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Få mere at vide om forhåndsvisninger af skærmdeling" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Linktypografi" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link ikke tilgængeligt" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux-app" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux-standard" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Indlæser tema ..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Indlæser..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS-app" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS-standard" @@ -20289,7 +20281,7 @@ msgstr "Næste nummer" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Medieindstillinger" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Afspil/pause" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Medieforhåndsvisning" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Beskedlayout" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "beskedlink" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofontest" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Mikrofon-, kamera- og skærmdelingsindhold er ende-til-ende-krypteret." @@ -21019,7 +21011,7 @@ msgstr "Mindreårige i fare, indhold for voksne det forkerte sted eller uønsket #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Stavefejl" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobilenhed" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Slå alle lyde fra" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Slå mikrofonen fra på alle enheder" @@ -21653,13 +21645,13 @@ msgstr "Sat på lydløs" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofonen er slået fra" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Mikrofonen er slået fra af moderatorer" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Mangler tilladelsen {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Ingen adgang" @@ -22282,7 +22274,7 @@ msgstr "Ingen avancerede indstillinger fundet" msgid "No AFK channel" msgstr "Ingen AFK-kanal" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Ingen programvinduer fundet" @@ -22300,6 +22292,11 @@ msgstr "Ingen ressourcer endnu" msgid "No audio" msgstr "Ingen lyd" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Ingen lyd fra denne enhed" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Ingen godkendte apps" @@ -22341,7 +22338,7 @@ msgstr "Ingen gemte beskeder" msgid "No bot banner" msgstr "Intet bot-banner" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Intet kamera fundet" @@ -22421,7 +22418,7 @@ msgstr "Ingen beskrivelse." msgid "No desktop update is available." msgstr "Der er ingen opdatering til computerappen." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Ingen skærme fundet" @@ -22650,7 +22647,7 @@ msgstr "Ingen svartekst modtaget" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Ingen resultater" @@ -22679,7 +22676,7 @@ msgstr "Ingen roller endnu. Tilføj roller under {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Ingen gemte medier" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Støjport" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Støjreduktion" @@ -22877,7 +22874,7 @@ msgstr "Ingen konvertering" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Ingen" @@ -23286,7 +23283,7 @@ msgstr "Gælder kun på brede skærme." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Kun kreditkort accepteres. Debetkort og forudbetalte kort kan ikke bruges til adgangsbekræftelse for indhold for voksne." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Kun standardhøjttalere" @@ -23334,7 +23331,7 @@ msgstr "Kør kun kode her, hvis du forstår præcis, hvad den gør." msgid "Only show message previews for DMs with unread messages" msgstr "Vis kun beskedforhåndsvisninger for DM'er med ulæste beskeder" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Kun højttalere" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Åbn {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Åbn {labelText} i indstillingerne" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Åbn @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Åbn avancerede medieindstillinger" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Åbn et programvindue, og prøv igen." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Åbn animeret GIF i fuld visning" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Åbn animeret GIF-video i fuld visning" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Åbn lyd i fuld visning" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Åbn lydlink" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Åbn browser" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Åbn browservælger" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Åbn favoritmenu" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Åbn fillink" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Åbn GIF-link" @@ -23651,7 +23648,7 @@ msgstr "Åbn billede i browser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Åbn billede i fuld visning" @@ -23660,7 +23657,7 @@ msgstr "Åbn billede i fuld visning" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Åbn billedlink" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Åbn system-DM" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Åbn systemvælger" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Åbn video i fuld visning" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Åbn videolink" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Åbn talechat" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Åbn indstillinger for lyd og video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Output" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Outputenhed" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Lydudgangsindstillinger" @@ -24094,7 +24091,7 @@ msgstr "Lydudgangsindstillinger" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Lydstyrke for output" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Maksimalt antal deltagere" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Indstillinger for {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Forhåndsvisning skjult" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Forhåndsvisningsbilleder gemmes midlertidigt af {productName} med henblik på levering og er ikke ende-til-ende-krypterede. Deaktiver forhåndsvisninger, hvis du ikke ønsker, at skærmdelingsbilleder uploades til miniaturebilleder." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Forhåndsvisningsbilleder gemmes midlertidigt af {productName} med henblik på levering og er ikke ende-til-ende-krypterede. Personer i denne gruppe-DM behøver ikke aktivt at se din stream for at se miniaturebilledet." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Forhåndsvisningsbilleder gemmes midlertidigt af {productName} med henblik på levering og er ikke ende-til-ende-krypterede. Folk skal stadig have tilladelse til at deltage, men de behøver ikke aktivt at se din stream." @@ -26269,7 +26266,7 @@ msgstr "Reference kopieret." msgid "Referral parameters" msgstr "Henvisningsparametre" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Opdater lydkilder" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Der blev klikket på den almindelige knap." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Afvis" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Fjern fra gruppe" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Fjern fra gemte medier" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Slå altid øverst fra" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Fjern fra URL-baserede GIF-favoritter" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Ophævede udelukkelse for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Spol {defaultSeekAmount} sekunder tilbage" @@ -28202,7 +28199,7 @@ msgstr "Gem ikon" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Gem medier fra beskeder for at komme i gang!" @@ -28313,7 +28310,7 @@ msgstr "Skærmoptagelsestilladelse påkrævet" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Skærmdeling" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Lydforstærkning ved skærmdeling" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Skærmdelingens lyd kunne ikke startes" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Indstillinger for videokodning ved skærmdeling" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Skærmdeling afsluttet" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Indstillinger for forhåndsvisning af skærmdeling" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Forhåndsvisninger af skærmdeling" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Skærmdelingens forhåndsvisninger er deaktiveret." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Forhåndsvisninger af skærmdeling er aktiveret." @@ -28391,13 +28388,13 @@ msgstr "Privatliv ved skærmdeling" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Kvalitet af skærmdeling" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Indstillinger for skærmdeling" @@ -28723,7 +28720,7 @@ msgstr "Søg efter roller eller medlemmer …" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Søg i gemte medier" @@ -28942,12 +28939,12 @@ msgstr "Forhåndsvisning ved spoling" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Vælg" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Vælg {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Send link til nulstilling" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Send det gemte medie {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Angav en position i medlemslisten for rollen" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Indstillet af {preset}-forudindstillingen. Valg af en værdi her skifter til Brugerdefineret." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Indstil individuelle lydstyrker for hver lyd. Lyde uden en tilpasset indstilling følger den overordnede lydstyrke." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Angiv genvej til at slå lyden fra" @@ -29669,11 +29666,6 @@ msgstr "Udsæt denne kontrol" msgid "Set this check aside?" msgstr "Udsæt denne kontrol?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Sendt med {resolution} ved {frameRate} FPS og {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Indstillinger" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "indstillingslink" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Del gave" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Del skærm" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Del med fællesskabsmoderatorer." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Del din skærm" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Del din skærm i HD (1080p), quad HD (1440p) eller kildens oprindelige opløsning med op til 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Delt vindue" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Lyd fra delt vindue" @@ -30624,6 +30616,10 @@ msgstr "Lydløse opkald" msgid "Silent calls from everyone" msgstr "Lydløse opkald fra alle" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Stille, når enheden ikke har egen lydinput" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Jævn rulning" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Mere flydende video" @@ -31005,11 +31001,6 @@ msgstr "Nogle emojis kunne ikke tilføjes" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Nogle af de filer, du prøver at uploade, overskrider den maksimale størrelsesgrænse på {maxSizeFormatted} pr. fil." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Nogle streamindstillinger kunne ikke anvendes på din live stream." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Lyde" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Kilde" @@ -31569,7 +31560,7 @@ msgstr "Start et taleopkald?" msgid "Start call" msgstr "Start opkald" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Start kameratest, og konfigurer effekter" @@ -31910,7 +31901,7 @@ msgstr "Stop oplæsning" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Stop streaming" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Stop med at stole på alle links?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Stop med at se" @@ -31982,7 +31973,7 @@ msgstr "Forhindrer, at lyden fra dine højttalere sendes tilbage til din mikrofo #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31992,6 @@ msgstr "Stream afsluttet" msgid "Stream hidden" msgstr "Stream skjult" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Streamen kan ikke følge med" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Streamkvalitet" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Streamindstillinger" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Streamindstillinger blev justeret" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Systemmeddelelser fra {productName}-medarbejdere. Du kan ikke svare her. #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Systemstandard" @@ -33036,13 +33017,8 @@ msgstr "Botten er blevet føjet til <0>{destinationName}." msgid "The bot has been added." msgstr "Botten er blevet tilføjet." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Browseren sender {deliveredResolution} i stedet for {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Kameraforhåndsvisningen er stadig ved at stoppe. Prøv at streame igen om et øjeblik." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Rollen gav {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Skærmdelingskilden er stoppet med at sende video, så din skærmdeling blev stoppet." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Denne browserkonsol er et udviklerværktøj." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Dette opkald er ende-til-ende-krypteret." @@ -33645,11 +33621,6 @@ msgstr "Denne version af computerappen kan ikke installere opdateringer i {produ msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Denne udviklingsversion kan ikke opdatere sig selv. Download en installationsfil til computerappen for at afprøve opdateringsforløbet." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Denne enhed kunne ikke følge med {targetResolution} ved {targetFrameRate} FPS sidst, så din stream startede ved {resolution} ved {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Denne installation administreres af dit system. Opdater {productName} via dit softwarecenter eller din pakkehåndtering." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Denne instans tillader i øjeblikket skærmdeling op til 720p ved 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Denne linkkanal er mærket som indhold for voksne og kan åbne materiale, der er upassende for nogle brugere." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Dette link er ikke tilgængeligt for din konto." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Denne indstilling er påkrævet. Angiv venligst en værdi." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Denne deltager kan ikke tale i denne kanal" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Lyden fra opkaldet er slået fra for denne deltager" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Denne deltager kan ikke høre opkaldet, fordi moderatorerne har slået lyden fra" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Dette telefonnummer er allerede blevet brugt. Prøv et andet nummer, eller kontakt support." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Denne vælger er kun tilgængelig i computerappen." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Vis/skjul kontroller" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Slå lyden fra/til" @@ -34666,7 +34637,7 @@ msgstr "Ændringer af ikonet i systembakken træder først i kraft efter en gens #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Populære GIF'er" @@ -34760,7 +34731,7 @@ msgstr "Prøv en anden søgning." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Prøv et andet søgeord eller filter" @@ -34839,11 +34810,6 @@ msgstr "Prøv andre filtre eller søgetermer." msgid "Try editing your message again." msgstr "Prøv at redigere din besked igen." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Prøv fuld kvalitet igen" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Prøv at søge efter noget som \"tema\", \"notifikationer\" eller \"privatliv\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Slå alt fra, du ikke er tryg ved. Nogle funktioner holder muligvis op med at virke." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Slå lyddeling fra for denne kilde, eller prøv igen om et øjeblik." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Slå til automatisk, når OBS eller XSplit registreres" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Slå kamera til" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Uopkrævelig" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Slå lyden til" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Slå lyden til på alle enheder" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Slå lyden til igen" @@ -35558,7 +35524,7 @@ msgstr "ukendt bruger" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Ukendt bruger" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Lås op for tilpassede emojis i direkte beskeder med {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Lås op for HD-skærmdeling med {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Slå lyden til for {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Slå mikrofonen til på alle enheder" @@ -35741,7 +35707,7 @@ msgstr "Navnløs gruppe" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Unavngivet input" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Upload nye emojis og klistermærker, og administrer dine egne kreationer." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Upload forhåndsvisningsbilleder fra skærmdelinger." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL kopieret til udklipsholder" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Brugertag (valgfrit)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Brugerens lydstyrke" @@ -37227,7 +37193,7 @@ msgstr "Videopakketab:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Videoforhåndsvisning" @@ -37283,7 +37249,7 @@ msgstr "Videoupload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Lyd og video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Indstillinger for lyd og video" @@ -37685,7 +37651,7 @@ msgstr "Genveje til tale- og videoopkald" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Taleopkald" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Fejlfinding af taleforbindelse" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Slå lyden fra i taleopkald" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Talebesked" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Afspiller til talebeskeder" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Taleindstillinger" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Slå lyden til i taleopkald" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Vent her" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Venter på forbindelse ..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Når de slås op som links i chatten" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Når forhåndsvisninger er aktiveret, uploader {productName} lejlighedsvise JPEG-billeder fra din skærmdeling, så andre i denne gruppe-DM kan se et miniaturebillede, før de begynder at se streamen." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Når forhåndsvisninger er aktiveret, uploader {productName} lejlighedsvise JPEG-billeder fra din skærmdeling, så personer med tilladelse til at deltage i denne talekanal kan se et miniaturebillede, før de begynder at se streamen." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Når forhåndsvisninger er aktiveret, uploader {productName} lejlighedsvise JPEG-billeder fra din skærmdeling, så den anden person i denne DM kan se et miniaturebillede, før vedkommende begynder at se streamen." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Vinduer, der er beskåret øverst eller nederst på skærmen, og fastgjorte DevTools kan vise en grå baggrund i stedet for at forblive gennemsigtige." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows-standard" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Du er blevet udelukket fra dette fællesskab og kan ikke deltage." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Lyden fra opkaldet er slået fra" @@ -38833,11 +38799,6 @@ msgstr "Du bruger en {releaseChannel}-version af {productName}." msgid "You aren't in any communities right now." msgstr "Du er ikke medlem af nogen fællesskaber lige nu." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Du bad om {resolution} ved {frameRate} billeder/sek" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Du kan ikke sende beskeder i dette fællesskab." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Du kan ikke dele din skærm i denne kanal" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Du kan ikke tale i denne kanal" @@ -39036,7 +38997,7 @@ msgstr "Du kan ikke tale i denne kanal" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Du kan ikke slå dit kamera til i denne kanal" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Du ændrede dit tag, mens du havde {PREMIUM_PRODUCT_NAME}. Det vil blive ændret tilfældigt, når dit {PREMIUM_PRODUCT_NAME} udløber, medmindre det fornyes." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Du har ikke adgang til den kanal, hvor denne besked blev sendt." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Du bliver i {ownedNames}. Ejere kan ikke forlade deres eget fællesskab." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderatorer har slået lyden fra opkaldet fra for dig" @@ -39699,11 +39660,6 @@ msgstr "Din ansøgning afventer gennemgang. Du kan stadig opdatere oplysningerne msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Din browser kræver brugerinteraktion, før lyd kan afspilles. Klik på knappen herunder for at aktivere talechat." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Din enhed sender {deliveredResolution} i stedet for {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Dit kort bliver tjekket for at se, om du kan få den lokale pris. Det tager som regel et øjeblik." @@ -39734,36 +39690,11 @@ msgstr "Dit fællesskab vises i Opdag. Du kan opdatere oplysningerne herunder el msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Dit fællesskab skal have mindst {minMemberCount, plural, one {# medlem} other {# medlemmer}}, før det kan vises i Opdag." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Din forbindelse kan ikke følge med. Din stream er sat til {frameRate} FPS ved {resolution}, og seere får omkring {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Dit kreditkort er blevet tjekket. Hvis kortet er gyldigt, får du snart adgang til indhold for voksne. Du kan lukke denne fane og vende tilbage til appen." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Din enhed kan ikke følge med. Din stream er indstillet til {frameRate} FPS ved {resolution}, og seere får omkring {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Din enhed kunne ikke følge med, så din stream sender nu {frameRate} FPS for at holde {resolution} skarp." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Din enhed kunne ikke følge med, så din stream sender nu {resolution} ved {frameRate} FPS i stedet for {targetResolution} ved {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Din enhed kunne ikke følge med, så din stream sender nu {resolution} for at holde {frameRate} FPS flydende." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Din registrering kræver et ekstra anti-spam-tjek, før du kan fortsætte." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Din gemte {savedResolution} med {savedFrameRate} FPS kræver {premiumProductName}, så delinger bruger {resolution} med {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Din skærmdeling kunne ikke sendes med et kompatibelt videokodek, så den blev stoppet. Prøv at dele igen." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Din kilde producerer ca. {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Din stream er stadig live" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Din stream skiftede til {codec}, fordi {previousCodec} ikke kunne følge med på denne enhed. Seere kan opleve en kort pause." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Dit brugerdefinerede invitationslink er nu {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Din video-encoder stoppede med at kode billeder, så din skærmdeling blev stoppet. Prøv at dele igen." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Din video-encoder stoppede, så dit stream skiftede til {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/de/messages.po b/fluxer_app/src/features/i18n/locales/de/messages.po index 129d091b6..3e9e99229 100644 --- a/fluxer_app/src/features/i18n/locales/de/messages.po +++ b/fluxer_app/src/features/i18n/locales/de/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} möchte sich verbinden" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} wird diesen Account für diese Autorisierung verwenden." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} kann auf diesem Gerät nicht mithalten. Stelle das Codec auf Automatisch in den erweiterten Einstellungen ein, um ein schnelleres zu ermöglichen." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} ist derzeit nur für {productName}-Mitarbeiter zugängli msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Keine Beschränkung} one {# Teilnehmer} other {# Teilnehmer}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# Zeile übrig)} other {... (# Zeilen übrig)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# Zeile übrig)} other {... (# Zeilen übrig)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Ausklappen (# Zeile)} other {Ausklappen (# Zeilen)} msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Ausklappen (# Zeile)} other {Ausklappen (# Zeilen)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {# weiteres Gerät einblenden} other {# weitere Geräte einblenden}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Im Anruf} other {# im Anruf}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Videoanruf beitreten (# Teilnehmer)} other {Videoanruf beitreten (# Teilnehmer)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {# Stream weiter ansehen und diesen hinzufügen} other {# Streams weiter ansehen und diesen hinzufügen}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Dein Einladungslink läuft in # Tag ab.} other {Dein Einladungslink läuft in # Tagen ab.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} Stunden" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# Überschreibung} other {# Überschreibung msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} prüft zuerst, ob deine Karte für regionale Preise berechtigt ist, und leitet dich dann zur Zahlung weiter. Kehre zu {productName} zurück, sobald du den Vorgang abgeschlossen hast." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} ist auf diesem Gerät nicht verfügbar, daher verwendet dein Stream {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} benötigt Zugriff auf dein Mikrofon. Erlaube den Mikrofonzugriff in den Datenschutzeinstellungen deines Betriebssystems und starte die App neu." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} benötigt Kamerazugriff, um deine Geräte aufzulisten." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "eine URL, die im Nachrichtentext eingegeben wurde" msgid "a user" msgstr "ein Nutzer" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Ein Zuschauer kann {pinnedCodec} nicht abspielen, daher verwendet dein Stream {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Annehmen" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Annehmen" @@ -3178,12 +3163,12 @@ msgstr "Zur Gruppe hinzufügen" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Zu \"Gespeicherte Medien\" hinzufügen" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Zu den URL-basierten GIF-Favoriten hinzufügen" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Erweitert" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Erweiterte Videoeinstellungen" @@ -3451,7 +3436,7 @@ msgstr "Ausrichtungsoptionen sind nur auf breiteren Bildschirmen verfügbar" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Zulassen" msgid "Allow {everyoneMention} and {hereMention}" msgstr "{everyoneMention} und {hereMention} erlauben" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Erlaube {PRODUCT_NAME} unter {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME} den Zugriff auf deine Kamera." @@ -3618,7 +3603,7 @@ msgstr "Direktnachrichten von Bots zulassen" msgid "Allow bots to send you direct messages?" msgstr "Sollen Bots dir Direktnachrichten senden dürfen?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Kamerazugriff erlauben" @@ -4014,13 +3999,13 @@ msgstr "Animierte Emojis, GIFs und Sticker bleiben im Tab „Animation“ unter #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animiertes GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animiertes GIF-Video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animierte Symbole erfordern die Community-Funktion \"{animatedIconFeature}\"." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animiertes Bild" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Vorschau des animierten Bildes" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Für animierte Uploads ist ein {premiumProductName}-Abonnement erforderlich." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animiertes Video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "App-Status" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "App-Fenster" @@ -4361,7 +4346,7 @@ msgstr "Anwendung erfolgreich aktualisiert" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Anwendungen" @@ -4586,7 +4571,7 @@ msgstr "Anhang" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Anhang {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Anhang abgelaufen" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Anhang ist abgelaufen oder nicht verfügbar" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Anhang-ID in die Zwischenablage kopiert" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Audiopegel" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio stummgeschaltet" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Audio-Paketverlust:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Audioplayer" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Audiovorschau" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Audioverarbeitung (Fokus auf Stimme)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Wiedergabefortschritt" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Audioeinstellungen" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Audioquellen: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatisch ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatische Lautstärkeregelung" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser: Zurück" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Standardeinstellung des Browsers" @@ -6198,20 +6183,20 @@ msgstr "Anrufe" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Kamera-Zugriff wird für Geräte-Vorschauen benötigt" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Der Kamera-Zugriff wurde nicht gewährt. Aktualisiere die Kamera-Berechtigungen und versuche es erneut." @@ -6276,13 +6261,13 @@ msgstr "Kameravorschau" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kameraqualität" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kameraeinstellungen" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha-Verifizierung fehlgeschlagen. Bitte versuche es erneut." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Aufnehmen" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "App-Audio aufnehmen" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Desktop-Audio aufnehmen" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Geräteaudio aufnehmen" @@ -6736,12 +6721,12 @@ msgstr "Änderung geplant" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Stream ändern" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Stream-Quelle ändern" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Kanalzugriff" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Kanalzugriff verweigert" @@ -7097,7 +7082,7 @@ msgstr "Kanal-ID in die Zwischenablage kopiert" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "Kanal-Link" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Zahlungsmethode auswählen" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Wähle etwas zum Teilen" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Vertrauenswürdige Domains löschen ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Klarerer Text" @@ -8285,7 +8270,7 @@ msgstr "Kanalthema einklappen" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Geräte einklappen" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Community-Ersteller" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Ton in der Community ausschalten" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Hinweisleiste zur MFA-Pflicht in der Community" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Community-Stummschaltung" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Jetzt konfigurieren" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Bildschirmfreigabe konfigurieren oder beenden" @@ -8904,7 +8889,7 @@ msgstr "Bestätigung oder Doppelklick zum Beitreten zu einem Sprachkanal in der msgid "Conflicts with {conflictLabel}" msgstr "In Konflikt mit {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Kamera verbinden und erneut versuchen." @@ -8913,7 +8898,7 @@ msgstr "Kamera verbinden und erneut versuchen." msgid "Connect a camera or virtual capture device, then try again." msgstr "Schließe eine Kamera oder ein virtuelles Aufnahmegerät an und versuche es dann erneut." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Schließe einen Bildschirm an und versuche es erneut." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Verbindungslautstärkeregelung" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Verbindung: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistik-JSON in die Zwischenablage kopiert" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "In die Zwischenablage kopiert" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Anhang-ID kopieren" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Audio kopieren" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Audio-Link kopieren" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Endpunkt kopieren" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Dateilink kopieren" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "GIF kopieren" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "GIF-Link kopieren" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "ID kopieren" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Bild kopieren" @@ -9448,7 +9433,7 @@ msgstr "Bild kopieren" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Bildlink kopieren" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Link zum Abschnitt kopieren" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Medien kopieren" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Wert kopieren" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Video kopieren" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Videolink kopieren" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Webhook-URL kopieren" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Bild wird kopiert …" @@ -10588,7 +10573,7 @@ msgstr "Aktuell: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Benutzerdefiniert" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deaktivieren" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Ton ausschalten" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Ton auf allen Geräten ausschalten" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Ton auf diesem Gerät ausschalten" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Den Ton für andere Mitglieder in Sprachkanälen ausschalten, sodass sie weder hören noch sprechen können." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Tastenkombination zum Ausschalten des Tons" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Eigenen Ton ausschalten" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Ton ausgeschaltet" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Ton von Moderatoren ausgeschaltet" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Standard" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Standardkamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "\":{emojiName}:\" löschen? Kann nicht rückgängig gemacht werden." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "\"{memeName}\" löschen? Dies kann nicht rückgängig gemacht werden." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Einladung löschen" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Medien löschen" @@ -11466,8 +11451,8 @@ msgstr "Rolle löschen" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Gespeicherte Medien löschen" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Desktop abwesend" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Desktop-Gerät" @@ -11849,13 +11834,13 @@ msgstr "Entwicklerstatus" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Entwicklertools" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Entwicklertools sind über das Mitarbeiter-Abzeichen in der Kanalüberschrift verfügbar." @@ -11879,6 +11864,17 @@ msgstr "Gerät" msgid "Device alerts" msgstr "Gerätebenachrichtigungen" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Geräteaudio ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Nur Audiogerät" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Gerätedetails" @@ -11888,7 +11884,7 @@ msgstr "Gerätedetails" msgid "Device revoked" msgstr "Gerät entfernt" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Geräteauswahl" @@ -11912,7 +11908,7 @@ msgstr "Gerät:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Geräte" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Durchgestrichenen Text abdunkeln" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Direkteingabe" @@ -12020,7 +12016,7 @@ msgstr "Direkt-Upload aktiv" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Deaktivieren" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Deaktivierter Wert" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Wenn du die Vorschau deaktivierst, werden keine neuen Vorschau-Uploads mehr durchgeführt. Bereits hochgeladene Vorschaubilder können weiterhin sichtbar sein, bis der Stream endet oder die Vorschau aktualisiert wird." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Sprachnachricht verwerfen" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Trennen" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Alle Geräte trennen" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Gerät trennen" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Anzeige" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Bildschirm" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification herunter und lege die Datei in deinem Ordner <1>.well-known ab, damit wir die Domain überprüfen können." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Audio herunterladen" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Desktop-Update {version} herunterladen ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Datei herunterladen" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "fluxer-verification herunterladen" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "GIF herunterladen" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Bild herunterladen" @@ -12714,7 +12710,7 @@ msgstr "Installer herunterladen" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Medien herunterladen" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Paket herunterladen" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Video herunterladen" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Echo" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Echo-Unterdrückung" @@ -12963,7 +12959,7 @@ msgstr "Zugriff für {0} bearbeiten" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Alternativtext bearbeiten" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Tastenkombination bearbeiten" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Medien bearbeiten" @@ -13102,8 +13098,8 @@ msgstr "Suchmaschine für die Bilderrückwärtssuche bearbeiten" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Gespeicherte Medien bearbeiten" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Browser-Benachrichtigungen aktivieren" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Kamerazugriff aktivieren, um Kameras und Aufnahmegeräte in der Vorschau anzuzeigen, bevor du eines zum Streamen auswählst." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Integrierte Übersetzer aktivieren oder deaktivieren. Aktivierte Übersetzer erscheinen im Nachrichten-Kontextmenü, wenn Text ausgewählt ist." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Vorschauen aktivieren" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Bildschirmfreigabe beenden" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Die Ende-zu-Ende-Verschlüsselung ist nicht verfügbar, da ein nicht unterstützter Teilnehmer in diesem Anruf ist." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Die Ende-zu-Ende-Verschlüsselung ist nicht verfügbar, da ein nicht unterstützter Teilnehmer in diesem Sprachkanal ist." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Unterhaltung" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Gesamter Bildschirm" @@ -14095,7 +14091,7 @@ msgstr "Gesamter Bildschirm" msgid "Entire system" msgstr "Gesamtes System" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Gesamtes System-Audio" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "einen Nutzer ausschließen" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Vom System ausschließen" @@ -14593,7 +14589,7 @@ msgstr "Einladungslink konnte nicht kopiert werden" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Kopieren in die Zwischenablage fehlgeschlagen" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Einladungen konnten nicht geladen werden. Bitte versuche es erneut." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Freigebbare Quellen konnten nicht geladen werden." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Fenster in den Vordergrund bringen" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Fokussierter Sprachchat" @@ -15322,10 +15318,6 @@ msgstr "Ordnereinstellungen" msgid "Follow us on {blueskyProviderName}" msgstr "Folge uns auf {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Spracheingabe folgen" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Weiterleiten" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} Sekunden vorspulen" @@ -15592,14 +15584,14 @@ msgstr "Rahmen" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Bildrate" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Bildraten über 30 FPS erfordern {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Gamepad Y / Dreieck" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Gaming" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF-Auswahl wird geladen" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF-Vorschau" @@ -16429,7 +16421,7 @@ msgstr "{permissions} gewährt" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Gewährt alle Berechtigungen und umgeht Kanalbeschränkungen. Hochsensibel." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Feinauswahl" @@ -16992,7 +16984,7 @@ msgstr "Passwort ausblenden" msgid "Hide picture-in-picture popout?" msgstr "Bild-im-Bild-Fenster ausblenden?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Vorschaubild ausblenden" @@ -17386,7 +17378,7 @@ msgstr "Wenn diese Mitglieder auf Nachrichten zugreifen können sollen, die nach #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorieren" @@ -17395,11 +17387,11 @@ msgstr "Ignorieren" msgid "Ignore friend request" msgstr "Freundschaftsanfrage ignorieren" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Hardwaregeräte ignorieren" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Eingabemedien ignorieren" @@ -17430,7 +17422,7 @@ msgstr "Freundschaftsanfrage von {displayName} ignorieren?" msgid "Ignore this channel's slowmode cooldown." msgstr "Wartezeit des Slow-Modus in diesem Kanal ignorieren." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Virtuelle ignorieren" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Bild" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Bild-Assets" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Bild in Zwischenablage kopiert" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Bildoptionen" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Bildvorschau" @@ -17540,7 +17532,7 @@ msgstr "Bild-Upload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Im Sprachchat" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Im Sprachchat" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Alle außer ausgewählten einschließen" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Apps einbeziehen" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Ein- und Ausgabe" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Eingabegerät" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Eingabeprofil: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Eingabeeinstellungen" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Eingabezustände" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Eingabelautstärke" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Einladungslink ist ausgeblendet, während du teilst:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Einladungslink ausgeblendet, während du teilst" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Zu {displayName} springen" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Springe zu {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Zum aktuellen Anruf springen" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Zum verlinkten Kanal springen" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Zur verlinkten Nachricht springen" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Gehe zu der Nachricht von {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Zur Nachricht in {labelText} springen" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Layout" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Mehr über Bildschirmfreigabe-Vorschauen erfahren" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Link-Stil" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link nicht verfügbar" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux-App" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux-Standard" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Design wird geladen …" #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Wird geladen..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS-App" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS-Standard" @@ -20289,7 +20281,7 @@ msgstr "Nächster Titel" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Medienoptionen" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Wiedergabe/Pause" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Medienvorschau" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Nachrichtenlayout" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "Nachrichtenlink" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofontest" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Mikrofon-, Kamera- und Bildschirmfreigabeinhalte sind Ende-zu-Ende-verschlüsselt." @@ -21019,7 +21011,7 @@ msgstr "Minderjährige in Gefahr, nicht jugendfreie Inhalte am falschen Ort oder #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Falsch geschriebene Wörter" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobilgerät" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Alle stummschalten" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Alle Geräte stummschalten" @@ -21653,13 +21645,13 @@ msgstr "Stummgeschaltet" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofon stummgeschaltet" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Von Moderatoren stummgeschaltet" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Keine Berechtigung \"{sendMessagesPermission}\"" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Kein Zugriff" @@ -22282,7 +22274,7 @@ msgstr "Keine erweiterten Einstellungen gefunden" msgid "No AFK channel" msgstr "Kein AFK-Kanal" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Keine Anwendungsfenster gefunden" @@ -22300,6 +22292,11 @@ msgstr "Noch keine Assets vorhanden" msgid "No audio" msgstr "Kein Audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Kein Audio von diesem Gerät" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Keine autorisierten Apps" @@ -22341,7 +22338,7 @@ msgstr "Keine Lesezeichen" msgid "No bot banner" msgstr "Kein Bot-Banner" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Keine Kamera gefunden" @@ -22421,7 +22418,7 @@ msgstr "Keine Beschreibung." msgid "No desktop update is available." msgstr "Kein Desktop-Update verfügbar." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Keine Displays gefunden" @@ -22650,7 +22647,7 @@ msgstr "Kein Antworttext empfangen" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Keine Ergebnisse" @@ -22679,7 +22676,7 @@ msgstr "Noch keine Rollen. Füge Rollen in {rolesSettingsPath} hinzu" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Keine gespeicherten Medien" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Noise-Gate" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Rauschunterdrückung" @@ -22877,7 +22874,7 @@ msgstr "Nicht konvertieren" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Keine" @@ -23286,7 +23283,7 @@ msgstr "Gilt nur für breite Bildschirme." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Es werden nur Kreditkarten akzeptiert. Debit- und Prepaid-Karten können für die Altersprüfung für nicht jugendfreie Inhalte nicht verwendet werden." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Nur Standardlautsprecher" @@ -23334,7 +23331,7 @@ msgstr "Führe hier nur Code aus, wenn du genau verstehst, was er bewirkt." msgid "Only show message previews for DMs with unread messages" msgstr "Nachrichtenvorschauen nur für DMs mit ungelesenen Nachrichten anzeigen" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Nur Lautsprecher" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "{displayName} öffnen" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Öffne {labelText} in den Einstellungen" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "@{displayName} öffnen" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Erweiterte Medieneinstellungen öffnen" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Öffne ein Anwendungsfenster und versuche es dann erneut." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Animiertes GIF in Vollansicht öffnen" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Animiertes GIF-Video in Vollansicht öffnen" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Audio in Vollansicht öffnen" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Audio-Link öffnen" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Browser öffnen" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Browser-Auswahl öffnen" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Favoriten-Menü öffnen" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Dateilink öffnen" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "GIF-Link öffnen" @@ -23651,7 +23648,7 @@ msgstr "Bild im Browser öffnen" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Bild in Vollansicht öffnen" @@ -23660,7 +23657,7 @@ msgstr "Bild in Vollansicht öffnen" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Bildlink öffnen" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "System-DM öffnen" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Systemauswahl öffnen" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Video in Vollansicht öffnen" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Videolink öffnen" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Sprachchat öffnen" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Einstellungen für Audio & Video öffnen" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Ausgabe" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Ausgabegerät" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Ausgabeeinstellungen" @@ -24094,7 +24091,7 @@ msgstr "Ausgabeeinstellungen" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Ausgabelautstärke" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Teilnehmerlimit" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Optionen für {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Vorschau ausgeblendet" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Vorschaubilder werden von {productName} vorübergehend zur Auslieferung gespeichert und sind nicht Ende-zu-Ende-verschlüsselt. Deaktiviere Vorschauen, wenn du nicht möchtest, dass Einzelbilder deiner Bildschirmfreigabe als Vorschaubilder hochgeladen werden." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Vorschaubilder werden von {productName} vorübergehend zur Auslieferung gespeichert und sind nicht Ende-zu-Ende-verschlüsselt. Personen in dieser Gruppen-DM müssen deinen Stream nicht aktiv ansehen, um das Vorschaubild zu sehen." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Vorschaubilder werden von {productName} vorübergehend zur Auslieferung gespeichert und sind nicht Ende-zu-Ende-verschlüsselt. Nutzer benötigen weiterhin die Berechtigung, eine Verbindung herzustellen, müssen aber nicht aktiv deinen Stream ansehen." @@ -26269,7 +26266,7 @@ msgstr "Referenz kopiert." msgid "Referral parameters" msgstr "Empfehlungsparameter" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Audioquellen aktualisieren" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Normaler Button geklickt." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Ablehnen" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Aus Gruppe entfernen" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Aus den gespeicherten Medien entfernen" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Nicht mehr obenan anzeigen" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Aus der Liste der per URL gespeicherten GIFs entfernen" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Ban für {0} aufgehoben" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} Sekunden zurückspulen" @@ -28202,7 +28199,7 @@ msgstr "Symbol speichern" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Speichere Medien aus Chats, um loszulegen!" @@ -28313,7 +28310,7 @@ msgstr "Berechtigung zur Bildschirmaufnahme erforderlich" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Bildschirm teilen" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Audio-Boost für Bildschirmfreigabe" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Bildschirmfreigabe-Audio konnte nicht gestartet werden" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Encoder-Einstellungen für die Bildschirmfreigabe" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Bildschirmfreigabe beendet" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Verhalten der Bildschirmfreigabe-Vorschau" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Bildschirmfreigabe-Vorschauen" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Bildschirmfreigabe-Vorschauen sind deaktiviert." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Bildschirmfreigabe-Vorschauen sind aktiviert." @@ -28391,13 +28388,13 @@ msgstr "Bildschirmfreigabe-Datenschutz" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Qualität der Bildschirmfreigabe" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Bildschirmfreigabe-Einstellungen" @@ -28723,7 +28720,7 @@ msgstr "Rollen oder Mitglieder suchen …" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Gespeicherte Medien suchen" @@ -28942,12 +28939,12 @@ msgstr "Vorschau beim Spulen" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Auswählen" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "{accessibleName} auswählen" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Zurücksetzungslink senden" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Gespeichertes Medium \"{memeName}\" senden" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Eine Position in der Mitgliederliste für die Rolle festgelegt" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Festgelegt durch die {preset}-Voreinstellung. Die Auswahl eines Wertes hier wechselt zu Benutzerdefiniert." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Lege eigene Lautstärken für einzelne Töne fest. Töne ohne eigene Einstellung verwenden die Gesamtlautstärke." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Tastenkombination zum Ausschalten des Tons festlegen" @@ -29669,11 +29666,6 @@ msgstr "Diese Prüfung zurückstellen" msgid "Set this check aside?" msgstr "Diese Prüfung zurückstellen?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Gesendet in {resolution} mit {frameRate} FPS und {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Einstellungen" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "Einstellungen-Link" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Geschenk teilen" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Bildschirm teilen" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Mit Community-Mods teilen." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Bildschirm teilen" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Teile deinen Bildschirm in HD (1080p), Quad HD (1440p) oder nativer Quellauflösung mit bis zu 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Freigegebenes Fenster" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio des geteilten Fensters" @@ -30624,6 +30616,10 @@ msgstr "Lautlose Anrufe" msgid "Silent calls from everyone" msgstr "Lautlose Anrufe von allen" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Stumm, wenn das Aufnahmegerät keinen eigenen Audioeingang hat" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Flüssiges Scrollen" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Flüssigeres Video" @@ -31005,11 +31001,6 @@ msgstr "Einige Emojis konnten nicht hinzugefügt werden" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Einige Dateien, die du hochladen möchtest, überschreiten die maximale Größe von {maxSizeFormatted} pro Datei." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Einige Stream-Einstellungen konnten nicht auf deinen Live-Stream angewendet werden." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Töne" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Quelle" @@ -31569,7 +31560,7 @@ msgstr "Sprachanruf starten?" msgid "Start call" msgstr "Anruf starten" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Kameratest starten und Effekte konfigurieren" @@ -31910,7 +31901,7 @@ msgstr "Vorlesen beenden" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Streaming beenden" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Allen Links nicht mehr vertrauen?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Ansehen beenden" @@ -31982,7 +31973,7 @@ msgstr "Verhindert, dass deine Lautsprecher in dein Mikrofon zurückkoppeln." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31992,6 @@ msgstr "Stream beendet" msgid "Stream hidden" msgstr "Stream ausgeblendet" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Stream kommt nicht hinterher" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Streamqualität" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Stream-Einstellungen" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Stream-Einstellungen wurden angepasst" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Systemankündigungen vom {productName}-Team. Hier kannst du nicht antwor #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Systemstandard" @@ -33036,13 +33017,8 @@ msgstr "Der Bot wurde zu <0>{destinationName} hinzugefügt." msgid "The bot has been added." msgstr "Der Bot wurde hinzugefügt." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Der Browser sendet {deliveredResolution} statt {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Die Kamera-Vorschau wird noch gestoppt. Versuche es gleich noch einmal mit dem Streamen." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Die Rolle gewährte {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Die Quelle der Bildschirmfreigabe hat keine Videodaten mehr gesendet. Deshalb wurde deine Bildschirmfreigabe beendet." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Diese Browser-Konsole ist ein Entwickler-Tool." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Dieser Anruf ist Ende-zu-Ende-verschlüsselt." @@ -33645,11 +33621,6 @@ msgstr "Diese Desktop-Version kann keine Updates innerhalb von {productName} ins msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Diese Entwicklungsversion kann sich nicht selbst updaten. Lade ein Desktop-Installationsprogramm herunter, um den Ablauf von Updates zu testen." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Dieses Gerät konnte letztes Mal nicht mit {targetResolution} bei {targetFrameRate} FPS mithalten, daher wurde dein Stream mit {resolution} bei {frameRate} FPS gestartet." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Diese Installation wird von deinem System verwaltet. Aktualisiere {productName} über dein Softwarecenter oder deinen Paketmanager." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Diese Instanz erlaubt derzeit Bildschirmfreigabe bis zu 720p bei 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Dieser Link-Kanal ist als nicht jugendfrei gekennzeichnet und kann Inhalte enthalten, die für manche Nutzer unangemessen sein könnten." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Dieser Link ist für deinen Account nicht verfügbar." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Diese Option ist erforderlich. Bitte gib einen Wert an." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Dieser Teilnehmer kann in diesem Kanal nicht sprechen" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Der Ton dieses Teilnehmers ist ausgeschaltet" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Der Ton dieses Teilnehmers wurde von Moderatoren ausgeschaltet" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Diese Telefonnummer wurde bereits verwendet. Versuche es mit einer anderen Nummer oder kontaktiere den Support." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Diese Auswahl ist nur in der Desktop-App verfügbar." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Steuerung ein-/ausblenden" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Ton ein-/ausschalten" @@ -34666,7 +34637,7 @@ msgstr "Änderungen am Symbol im Infobereich werden unter Linux erst nach einem #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Angesagte GIFs" @@ -34760,7 +34731,7 @@ msgstr "Versuch eine andere Suchanfrage." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Versuch's mit einem anderen Suchbegriff oder Filter" @@ -34839,11 +34810,6 @@ msgstr "Versuche es mit anderen Filtern oder Suchbegriffen." msgid "Try editing your message again." msgstr "Versuch, deine Nachricht noch einmal zu bearbeiten." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Versuche es erneut mit voller Qualität" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Versuch mal, nach \"Design\", \"Benachrichtigungen\" oder \"Datenschutz\" zu suchen" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Deaktiviere alles, womit du dich nicht wohlfühlst. Einige Funktionen könnten dann nicht mehr richtig funktionieren." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Audiofreigabe für diese Quelle deaktivieren oder es in einem Moment erneut versuchen." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Automatisch einschalten, wenn OBS oder XSplit erkannt wird" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Kamera einschalten" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Uneinbringlich" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Ton einschalten" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Ton auf allen Geräten einschalten" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Eigenen Ton einschalten" @@ -35558,7 +35524,7 @@ msgstr "unbekannter Nutzer" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Unbekannter Nutzer" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Schalte benutzerdefinierte Emojis in DMs mit {premiumProductName} frei" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "HD-Bildschirmfreigabe mit {premiumProductName} freischalten" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Stummschaltung von {label} aufheben" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Stummschaltung aller Geräte aufheben" @@ -35741,7 +35707,7 @@ msgstr "Unbenannte Gruppe" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Unbenannte Eingabe" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Neue Emojis und Sticker hochladen und eigene Kreationen verwalten." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Vorschaubilder für Bildschirmfreigaben hochladen." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL in Zwischenablage kopiert" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Nutzer-Tag (optional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Nutzerlautstärke" @@ -37227,7 +37193,7 @@ msgstr "Videopaketverlust:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Videovorschau" @@ -37283,7 +37249,7 @@ msgstr "Video-Upload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Audio & Video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Einstellungen für Audio & Video" @@ -37685,7 +37651,7 @@ msgstr "Tastenkombinationen für Sprachchat und Video" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Sprachanruf" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Fehlerbehebung bei der Sprachverbindung" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Ton im Sprachchat ausschalten" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Sprachnachricht" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Sprachnachricht-Player" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Sprachchat-Einstellungen" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Ton im Sprachchat einschalten" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Hier warten" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Warten auf Verbindung..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Wenn als Link im Chat geteilt" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Wenn Vorschauen aktiviert sind, lädt {productName} gelegentlich Einzelbilder deiner Bildschirmfreigabe als JPEG hoch. So können andere Personen in dieser Gruppen-DM ein Vorschaubild sehen, bevor sie deinen Stream ansehen." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Wenn Vorschauen aktiviert sind, lädt {productName} gelegentlich Einzelbilder deiner Bildschirmfreigabe als JPEG hoch. So können Personen, die diesem Sprachkanal beitreten dürfen, ein Vorschaubild sehen, bevor sie deinen Stream ansehen." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Wenn Vorschauen aktiviert sind, lädt {productName} gelegentlich Einzelbilder deiner Bildschirmfreigabe als JPEG hoch. So kann die andere Person in dieser DM ein Vorschaubild sehen, bevor sie deinen Stream ansieht." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Wenn Fenster oben oder unten am Bildschirm abgeschnitten sind und angedockte Entwicklertools verwendet werden, kann ein grauer Hintergrund anstelle von Transparenz angezeigt werden." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows-Standard" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Du wurdest aus dieser Community ausgeschlossen und kannst ihr nicht beitreten." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Dein Ton ist ausgeschaltet" @@ -38833,11 +38799,6 @@ msgstr "Du verwendest einen {releaseChannel}-Build von {productName}." msgid "You aren't in any communities right now." msgstr "Du bist derzeit in keiner Community." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Du hast {resolution} mit {frameRate} FPS angefordert" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Du kannst in dieser Community keine Nachrichten senden." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Du kannst in diesem Kanal deinen Bildschirm nicht teilen" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Du kannst in diesem Kanal nicht sprechen" @@ -39036,7 +38997,7 @@ msgstr "Du kannst in diesem Kanal nicht sprechen" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Du kannst deine Kamera in diesem Kanal nicht einschalten" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Du hast deinen Tag geändert, während du {PREMIUM_PRODUCT_NAME} hattest. Er wird zufällig neu generiert, wenn dein {PREMIUM_PRODUCT_NAME} abläuft, es sei denn, es wird verlängert." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Du hast keinen Zugriff auf den Kanal, in dem diese Nachricht gesendet wurde." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Du bleibst in {ownedNames}. Besitzer können ihre eigene Community nicht verlassen." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Dein Ton wurde von Moderatoren ausgeschaltet" @@ -39699,11 +39660,6 @@ msgstr "Dein Antrag wartet auf Prüfung. Du kannst die Details deines Eintrags w msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Dein Browser erfordert eine Nutzerinteraktion, bevor Audio abgespielt werden kann. Klicke auf die Schaltfläche unten, um den Sprachchat zu aktivieren." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Dein Aufnahmegerät sendet {deliveredResolution} statt {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Deine Karte wird auf lokalisierte Preise geprüft. Dies dauert normalerweise einen Moment." @@ -39734,36 +39690,11 @@ msgstr "Deine Community ist unter „Entdecken“ aufgeführt. Du kannst die Det msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Deine Community braucht mindestens {minMemberCount, plural, one {# Mitglied} other {# Mitglieder}}, bevor sie unter „Entdecken“ aufgeführt werden kann." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Deine Verbindung kann nicht mithalten. Dein Stream ist auf {frameRate} FPS bei {resolution} eingestellt und Zuschauer erhalten etwa {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Deine Kreditkarte wurde überprüft. Wenn die Kreditkarte gültig ist, werden Inhalte für Erwachsene in Kürze freigeschaltet. Du kannst diesen Tab schließen und zur App zurückkehren." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Dein Gerät kann nicht mithalten. Dein Stream ist auf {frameRate} FPS bei {resolution} eingestellt und Zuschauer erhalten etwa {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Dein Gerät kam nicht hinterher, daher sendet dein Stream jetzt {frameRate} FPS, um {resolution} scharf zu halten." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Dein Gerät kam nicht hinterher, daher sendet dein Stream jetzt {resolution} mit {frameRate} FPS statt {targetResolution} mit {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Dein Gerät kam nicht hinterher, daher sendet dein Stream jetzt {resolution}, um {frameRate} FPS flüssig zu halten." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Deine Registrierung erfordert eine zusätzliche Anti-Spam-Prüfung, bevor du fortfahren kannst." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Deine gespeicherte {savedResolution} mit {savedFrameRate} FPS benötigt {premiumProductName}, daher werden Shares mit {resolution} mit {frameRate} FPS verwendet." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Deine Bildschirmfreigabe konnte nicht mit einem kompatiblen Videocodec veröffentlicht werden und wurde daher beendet. Versuche es erneut." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Deine Quelle produziert etwa {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Dein Stream ist weiterhin live" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Dein Stream wurde auf {codec} umgestellt, da {previousCodec} auf diesem Gerät nicht mithalten konnte. Zuschauer sehen möglicherweise eine kurze Unterbrechung." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Deine Vanity-URL wurde auf {inviteEndpoint}/{vanitySlug} festgelegt" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Dein Video-Encoder hat aufgehört, Frames zu kodieren, daher wurde deine Bildschirmfreigabe beendet. Versuche es erneut." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Deine Video-Encoder sind ausgefallen, daher wurde dein Stream auf {codec} umgestellt." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/el/messages.po b/fluxer_app/src/features/i18n/locales/el/messages.po index 8a909035b..f8e3a8965 100644 --- a/fluxer_app/src/features/i18n/locales/el/messages.po +++ b/fluxer_app/src/features/i18n/locales/el/messages.po @@ -862,11 +862,6 @@ msgstr "Το {clientLabel} θέλει να συνδεθεί" msgid "{clientName} will use this account for this authorization." msgstr "Το {clientName} θα χρησιμοποιήσει αυτόν τον λογαριασμό για αυτήν την εξουσιοδότηση." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "Το {codec} δεν μπορεί να ανταποκριθεί σε αυτήν τη συσκευή. Ορίστε τον κωδικοποιητή σε Αυτόματο στις Σύνθετες ρυθμίσεις για να επιτρέψετε έναν ταχύτερο." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Η κοινότητα {communityName} είναι προς το παρό msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Κανένα όριο} one {# συμμετέχων} other {# συμμετέχοντες}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# γραμμή απομένει)} other {... (# γραμμές απομένουν)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# σειρά απομένει)} other {... (# σειρές απομένουν)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Ανάπτυξη (# γραμμή)} other {Ανάπ msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Ανάπτυξη (# σειρά)} other {Ανάπτυξη (# σειρές)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Ανάπτυξη # άλλης συσκευής} other {Ανάπτυξη # άλλων συσκευών}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Σε κλήση} other {# σε κλήση}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Συμμετοχή σε βιντεοκλήση (# συμμετέχων)} other {Συμμετοχή σε βιντεοκλήση (# συμμετέχοντες)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Συνεχίστε να παρακολουθείτε # ροή και προσθέστε αυτήν} other {Συνεχίστε να παρακολουθείτε # ροές και προσθέστε αυτήν}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Ο σύνδεσμος πρόσκλησής σας λήγει σε # ημέρα.} other {Ο σύνδεσμος πρόσκλησής σας λήγει σε # ημέρες.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} ώρες" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} καρέ/δευτ" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# παράκαμψη} other {# παρακά msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "Το {paymentProviderName} θα επαληθεύσει πρώτα ότι η κάρτα σας είναι κατάλληλη για τοπική τιμολόγηση και, στη συνέχεια, θα σας μεταφέρει στην πληρωμή. Επιστρέψτε στο {productName} μόλις ολοκληρώσετε τη διαδικασία." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "Το {pinnedCodec} δεν είναι διαθέσιμο σε αυτήν τη συσκευή, οπότε η ροή σας χρησιμοποιεί {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "Το {productName} χρειάζεται πρόσβαση στο μικρόφωνό σας. Επιτρέψτε την πρόσβαση στο μικρόφωνο στις ρυθμίσεις απορρήτου του λειτουργικού σας συστήματος και επανεκκινήστε την εφαρμογή." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "Το {productName} χρειάζεται πρόσβαση στην κάμερα για να εμφανίσει τις συσκευές σας." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} σε σύνδεση" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "μια διεύθυνση URL που πληκτρολογήθηκε στ msgid "a user" msgstr "ένας χρήστης" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Ένας θεατής δεν μπορεί να αναπαράγει το {pinnedCodec}, οπότε η ροή σας χρησιμοποιεί {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Αποδοχή" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Απάντηση" @@ -3178,12 +3163,12 @@ msgstr "Προσθήκη σε ομάδα" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Προσθήκη στα αποθηκευμένα πολυμέσα" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Προσθήκη στα αγαπημένα GIF που αποθηκεύονται μόνο μέσω URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Για προχωρημένους" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Προηγμένες ρυθμίσεις βίντεο" @@ -3451,7 +3436,7 @@ msgstr "Οι ρυθμίσεις στοίχισης είναι διαθέσιμε #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Έγκριση" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Να επιτρέπονται οι αναφορές {everyoneMention} και {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Επιτρέψτε στο {PRODUCT_NAME} να έχει πρόσβαση στην κάμερά σας στις {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Να επιτρέπονται τα απευθείας μηνύματα msgid "Allow bots to send you direct messages?" msgstr "Να επιτρέπεται στα bot να σου στέλνουν απευθείας μηνύματα;" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Να επιτρέπεται η κάμερα" @@ -4014,13 +3999,13 @@ msgstr "Τα κινούμενα emoji, τα GIF και τα αυτοκόλλητ #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Κινούμενο GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Κινούμενο βίντεο GIF" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Τα κινούμενα εικονίδια απαιτούν τη λειτουργία κοινότητας {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Κινούμενη εικόνα" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Προεπισκόπηση κινούμενης εικόνας" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Η μεταφόρτωση κινούμενων αρχείων απαιτεί συνδρομή {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Κινούμενο βίντεο" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Κατάσταση εφαρμογής" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Παράθυρο εφαρμογής" @@ -4361,7 +4346,7 @@ msgstr "Η εφαρμογή ενημερώθηκε" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Εφαρμογές" @@ -4586,7 +4571,7 @@ msgstr "συνημμένο" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Συνημμένο {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Το συνημμένο έληξε" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Το συνημμένο έχει λήξει ή δεν είναι διαθέσιμο" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Το αναγνωριστικό συνημμένου αντιγράφηκε στο πρόχειρο" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Ένταση ήχου" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Ήχος σε σίγαση" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Απώλεια πακέτων ήχου:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Αναπαραγωγή ήχου" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Προεπισκόπηση ήχου" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Επεξεργασία ήχου (φωνή σε πρώτο πλάνο)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Πρόοδος ήχου" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Ρυθμίσεις ήχου" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Πηγές ήχου: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Αυτόματο ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Αυτόματος έλεγχος απολαβής" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Πρόγραμμα περιήγησης: πίσω" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Προεπιλεγμένη συσκευή του προγράμματος περιήγησης" @@ -6198,20 +6183,20 @@ msgstr "Κλήσεις" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Κάμερα" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Χρειάζεται πρόσβαση στην κάμερα για προεπισκοπήσεις συσκευών" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Η πρόσβαση στην κάμερα δεν παραχωρήθηκε. Ενημερώστε τις άδειες της κάμερας και δοκιμάστε ξανά." @@ -6276,13 +6261,13 @@ msgstr "Προεπισκόπηση κάμερας" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Ποιότητα κάμερας" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Ρυθμίσεις κάμερας" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Η επαλήθευση Captcha απέτυχε. Δοκιμάστε ξανά." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Λήψη" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Λήψη ήχου εφαρμογής" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Λήψη ήχου επιφάνειας εργασίας" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Λήψη ήχου συσκευής" @@ -6736,12 +6721,12 @@ msgstr "Προγραμματισμένη αλλαγή" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Αλλαγή ροής" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Αλλαγή πηγής ροής" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Πρόσβαση σε κανάλι" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Δεν επιτρέπεται η πρόσβαση στο κανάλι" @@ -7097,7 +7082,7 @@ msgstr "Το αναγνωριστικό καναλιού αντιγράφηκε #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "σύνδεσμος καναλιού" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Επιλέξτε τρόπο πληρωμής" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Επιλέξτε τι θα κοινοποιήσετε" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Εκκαθάριση αξιόπιστων τομέων ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Καθαρότερο κείμενο" @@ -8285,7 +8270,7 @@ msgstr "Σύμπτυξη θέματος καναλιού" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Σύμπτυξη συσκευών" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Δημιουργός κοινότητας" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Σίγαση ήχου μέλους στην κοινότητα" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Γραμμή ειδοποιήσεων απαίτησης MFA κοινότητας" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Σίγαση μέλους στην κοινότητα" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Ρύθμιση τώρα" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Διαμόρφωση ή τερματισμός κοινής χρήσης οθόνης" @@ -8904,7 +8889,7 @@ msgstr "Επιβεβαίωση ή διπλό κλικ για συμμετοχή msgid "Conflicts with {conflictLabel}" msgstr "Συγκρούεται με {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Συνδέστε μια κάμερα και δοκιμάστε ξανά." @@ -8913,7 +8898,7 @@ msgstr "Συνδέστε μια κάμερα και δοκιμάστε ξανά. msgid "Connect a camera or virtual capture device, then try again." msgstr "Συνδέστε μια κάμερα ή μια συσκευή εικονικής λήψης και δοκιμάστε ξανά." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Συνδέστε μια οθόνη και δοκιμάστε ξανά." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Έλεγχοι έντασης σύνδεσης" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Σύνδεση: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Αντιγράφηκαν τα στατιστικά JSON στο πρόχ #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Αντιγράφηκε στο πρόχειρο" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Αντιγραφή αναγνωριστικού συνημμένου" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Αντιγραφή ήχου" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Αντιγραφή συνδέσμου ήχου" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Αντιγραφή τελικού σημείου" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Αντιγραφή συνδέσμου αρχείου" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Αντιγραφή GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Αντιγραφή συνδέσμου GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Αντιγραφή αναγνωριστικού" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Αντιγραφή εικόνας" @@ -9448,7 +9433,7 @@ msgstr "Αντιγραφή εικόνας" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Αντιγραφή συνδέσμου εικόνας" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Αντιγραφή συνδέσμου προς την ενότητα" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Αντιγραφή πολυμέσων" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Αντιγραφή τιμής" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Αντιγραφή βίντεο" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Αντιγραφή συνδέσμου βίντεο" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Αντιγραφή URL webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Αντιγραφή εικόνας..." @@ -10588,7 +10573,7 @@ msgstr "Τρέχουσα ρύθμιση: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Προσαρμοσμένο" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Απενεργοποίηση" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Σίγαση ήχου" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Σίγαση ήχου σε όλες τις συσκευές" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Σίγαση ήχου συσκευής" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Σίγαση του ήχου άλλων μελών στα φωνητικά κανάλια, ώστε να μην μπορούν να ακούν ούτε να μιλούν." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Συντόμευση σίγασης ήχου" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Σίγαση του ήχου σας" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Σε σίγαση ήχου" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Σε σίγαση ήχου από συντονιστές" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Προεπιλογή" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Προεπιλεγμένη κάμερα" @@ -11258,8 +11243,8 @@ msgstr "Ντέλαγουερ" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Διαγραφή :{emojiName}:; Δεν μπορεί να αναιρεθ #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Διαγραφή \"{memeName}\"; Δεν μπορεί να αναιρεθεί." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Διαγραφή πρόσκλησης" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Διαγραφή πολυμέσων" @@ -11466,8 +11451,8 @@ msgstr "Διαγραφή ρόλου" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Διαγραφή αποθηκευμένων πολυμέσων" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Μακριά από υπολογιστή" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Συσκευή υπολογιστή" @@ -11849,13 +11834,13 @@ msgstr "Κατάσταση προγραμματιστή" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Εργαλεία προγραμματιστή" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Τα εργαλεία προγραμματιστή είναι διαθέσιμα από το σήμα προσωπικού στην κεφαλίδα του καναλιού." @@ -11879,6 +11864,17 @@ msgstr "Συσκευή" msgid "Device alerts" msgstr "Ειδοποιήσεις συσκευής" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Ήχος συσκευής ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Μόνο ήχος συσκευής" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Λεπτομέρειες συσκευής" @@ -11888,7 +11884,7 @@ msgstr "Λεπτομέρειες συσκευής" msgid "Device revoked" msgstr "Η συσκευή ανακλήθηκε" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Επιλογή συσκευής" @@ -11912,7 +11908,7 @@ msgstr "Συσκευή:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Συσκευές" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Αχνό διαγραμμένο κείμενο" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Απευθείας είσοδος" @@ -12020,7 +12016,7 @@ msgstr "Άμεση μεταφόρτωση ενεργή" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Απενεργοποίηση" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Απενεργοποιημένη τιμή" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Η απενεργοποίηση των προεπισκοπήσεων διακόπτει τις μελλοντικές αποστολές προεπισκοπήσεων. Οι υπάρχουσες εικόνες προεπισκόπησης ενδέχεται να παραμείνουν ορατές μέχρι το τέλος της ροής ή την ανανέωση της προεπισκόπησης." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Απόρριψη φωνητικού μηνύματος" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Αποσύνδεση" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Αποσύνδεση όλων των συσκευών" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Αποσύνδεση συσκευής" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Εμφάνιση" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Οθόνη" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification και τοποθετήστε το στον φάκελο <1>.well-known, ώστε να μπορούμε να επικυρώσουμε τον τομέα." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Λήψη ήχου" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Λήψη ενημέρωσης για υπολογιστή {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Λήψη αρχείου" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Λήψη fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Λήψη GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Λήψη εικόνας" @@ -12714,7 +12710,7 @@ msgstr "Λήψη προγράμματος εγκατάστασης" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Λήψη πολυμέσων" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Λήψη πακέτου" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Λήψη βίντεο" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Ηχώ" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Ακύρωση ηχούς" @@ -12963,7 +12959,7 @@ msgstr "Επεξεργασία πρόσβασης για {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Επεξεργασία εναλλακτικού κειμένου" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Επεξεργασία συντόμευσης πληκτρολογίου" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Επεξεργασία πολυμέσων" @@ -13102,8 +13098,8 @@ msgstr "Επεξεργασία μηχανής αντίστροφης αναζή #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Επεξεργασία αποθηκευμένων πολυμέσων" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Ενεργοποίηση ειδοποιήσεων προγράμματος περιήγησης" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Ενεργοποιήστε την πρόσβαση στην κάμερα για προεπισκόπηση καμερών και συσκευών λήψης πριν επιλέξετε μία για ροή." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Ενεργοποιήστε ή απενεργοποιήστε τους ενσωματωμένους μεταφραστές. Οι ενεργοποιημένοι μεταφραστές εμφανίζονται στο μενού περιβάλλοντος μηνύματος όταν επιλέγεται κείμενο." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Ενεργοποίηση προεπισκοπήσεων" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Τερματισμός κοινής χρήσης οθόνης" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Η κρυπτογράφηση από άκρο σε άκρο δεν είναι διαθέσιμη επειδή ένας μη υποστηριζόμενος συμμετέχων βρίσκεται σε αυτήν την κλήση." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Η κρυπτογράφηση από άκρο σε άκρο δεν είναι διαθέσιμη επειδή υπάρχει μη υποστηριζόμενος συμμετέχων σε αυτό το φωνητικό κανάλι." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Ψυχαγωγία" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Ολόκληρη η οθόνη" @@ -14095,7 +14091,7 @@ msgstr "Ολόκληρη η οθόνη" msgid "Entire system" msgstr "Ολόκληρο το σύστημα" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Ήχος ολόκληρου του συστήματος" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "εξαίρεση χρήστη" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Εξαίρεση από το σύστημα" @@ -14593,7 +14589,7 @@ msgstr "Αποτυχία αντιγραφής συνδέσμου πρόσκλη #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Αποτυχία αντιγραφής στο πρόχειρο" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Αποτυχία φόρτωσης προσκλήσεων. Δοκιμάστε ξανά." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Αποτυχία φόρτωσης πηγών κοινής χρήσης." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Εστίαση στο παράθυρο" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Εστιασμένη φωνή" @@ -15322,10 +15318,6 @@ msgstr "Ρυθμίσεις φακέλου" msgid "Follow us on {blueskyProviderName}" msgstr "Ακολουθήστε μας στο {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Ακολούθηση εισόδου φωνής" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Προώθηση" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Προώθηση κατά {defaultSeekAmount} δευτερόλεπτα" @@ -15592,14 +15584,14 @@ msgstr "Πλαίσιο παραθύρου" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Ρυθμός καρέ" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Οι ρυθμοί καρέ πάνω από 30 FPS απαιτούν {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Χειριστήριο Y / Τρίγωνο" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Παιχνίδια" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Φόρτωση επιλογέα GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Προεπισκόπηση GIF" @@ -16429,7 +16421,7 @@ msgstr "Χορηγήθηκαν {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Παρέχει όλα τα δικαιώματα και παρακάμπτει τους περιορισμούς καναλιών. Εξαιρετικά ευαίσθητο." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Λεπτομερής επιλογή" @@ -16992,7 +16984,7 @@ msgstr "Απόκρυψη κωδικού" msgid "Hide picture-in-picture popout?" msgstr "Απόκρυψη αναδυόμενου παραθύρου εικόνας-σε-εικόνα;" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Απόκρυψη μικρογραφίας προεπισκόπησης" @@ -17386,7 +17378,7 @@ msgstr "Αν θέλετε αυτά τα μέλη να έχουν πρόσβασ #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Αγνόηση" @@ -17395,11 +17387,11 @@ msgstr "Αγνόηση" msgid "Ignore friend request" msgstr "Αγνόηση αιτήματος φιλίας" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Παράβλεψη συσκευών υλικού" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Παράβλεψη μέσων εισόδου" @@ -17430,7 +17422,7 @@ msgstr "Να αγνοήσετε το αίτημα φιλίας από τον/τ msgid "Ignore this channel's slowmode cooldown." msgstr "Παράβλεψη της αργής λειτουργίας αυτού του καναλιού." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Παράβλεψη εικονικών συσκευών" @@ -17468,7 +17460,7 @@ msgstr "Ιλινόι" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Εικόνα" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Εικόνες" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Η εικόνα αντιγράφηκε στο πρόχειρο" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Επιλογές εικόνας" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Προεπισκόπηση εικόνας" @@ -17540,7 +17532,7 @@ msgstr "Ανέβασμα εικόνας" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Σε φωνητική συνομιλία" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Σε φωνητική συνομιλία" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Να συμπεριληφθούν όλα εκτός από τα επιλεγμένα" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Συμπερίληψη εφαρμογών" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Είσοδος και έξοδος" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Συσκευή εισόδου" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Προφίλ εισόδου: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Ρυθμίσεις εισόδου" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Καταστάσεις πεδίων εισαγωγής" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Ένταση εισόδου" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Ο σύνδεσμος πρόσκλησης είναι κρυφός κατά την κοινή χρήση:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Ο σύνδεσμος πρόσκλησης αποκρύφτηκε κατά την κοινή χρήση" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Μετάβαση σε {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Μετάβαση σε {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Μετάβαση στην τρέχουσα κλήση" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Μετάβαση στο συνδεδεμένο κανάλι" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Μετάβαση στο μήνυμα του συνδέσμου" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Μετάβαση στο μήνυμα του/της {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Μετάβαση στο μήνυμα στο {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Διάταξη" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Μάθετε περισσότερα για τις προεπισκοπήσεις κοινής χρήσης οθόνης" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Στιλ συνδέσμου" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Ο σύνδεσμος δεν είναι διαθέσιμος" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Εφαρμογή Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Προεπιλεγμένη συσκευή Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Φόρτωση θέματος..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Φόρτωση..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Εφαρμογή macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Προεπιλεγμένη συσκευή macOS" @@ -20289,7 +20281,7 @@ msgstr "Επόμενο κομμάτι" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Επιλογές πολυμέσων" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Αναπαραγωγή/παύση" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Προεπισκόπηση πολυμέσων" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Διάταξη μηνυμάτων" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "σύνδεσμος μηνύματος" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Δοκιμή μικροφώνου" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Το μικρόφωνο, η κάμερα και το περιεχόμενο κοινής χρήσης οθόνης είναι κρυπτογραφημένα από άκρο σε άκρο." @@ -21019,7 +21011,7 @@ msgstr "Ανήλικοι σε κίνδυνο, περιεχόμενο ενηλί #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Λάθος ορθογραφία" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Κινητό" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Σίγαση όλων" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Σίγαση όλων των συσκευών" @@ -21653,13 +21645,13 @@ msgstr "Σε σίγαση" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Το μικρόφωνο είναι σε σίγαση" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Σε σίγαση από συντονιστές" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Δεν υπάρχει δικαίωμα {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Δεν υπάρχει πρόσβαση" @@ -22282,7 +22274,7 @@ msgstr "Δεν βρέθηκαν προηγμένες ρυθμίσεις" msgid "No AFK channel" msgstr "Χωρίς κανάλι AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Δεν βρέθηκαν παράθυρα εφαρμογών" @@ -22300,6 +22292,11 @@ msgstr "Δεν υπάρχουν στοιχεία ακόμα" msgid "No audio" msgstr "Χωρίς ήχο" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Δεν υπάρχει ήχος από αυτήν τη συσκευή" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Δεν υπάρχουν εξουσιοδοτημένες εφαρμογές" @@ -22341,7 +22338,7 @@ msgstr "Χωρίς σελιδοδείκτες" msgid "No bot banner" msgstr "Χωρίς banner bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Δεν βρέθηκε κάμερα" @@ -22421,7 +22418,7 @@ msgstr "Χωρίς περιγραφή." msgid "No desktop update is available." msgstr "Δεν υπάρχει διαθέσιμη ενημέρωση για την εφαρμογή υπολογιστή." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Δεν βρέθηκαν οθόνες" @@ -22650,7 +22647,7 @@ msgstr "Δεν ελήφθη σώμα απόκρισης" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Κανένα αποτέλεσμα" @@ -22679,7 +22676,7 @@ msgstr "Δεν υπάρχουν ρόλοι ακόμα. Προσθέστε ρόλ #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Δεν υπάρχουν αποθηκευμένα πολυμέσα" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Πύλη θορύβου" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Καταστολή θορύβου" @@ -22877,7 +22874,7 @@ msgstr "Χωρίς μετατροπή" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Καμία" @@ -23286,7 +23283,7 @@ msgstr "Εφαρμόζεται μόνο σε μεγάλες οθόνες." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Γίνονται δεκτές μόνο πιστωτικές κάρτες. Οι χρεωστικές και οι προπληρωμένες κάρτες δεν μπορούν να χρησιμοποιηθούν για τον έλεγχο περιεχομένου ενηλίκων." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Μόνο προεπιλεγμένα ηχεία" @@ -23334,7 +23331,7 @@ msgstr "Εκτελέστε κώδικα εδώ μόνο αν κατανοείτ msgid "Only show message previews for DMs with unread messages" msgstr "Να εμφανίζονται προεπισκοπήσεις μηνυμάτων μόνο για DM με μη αναγνωσμένα μηνύματα" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Μόνο ηχεία" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Άνοιγμα {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Άνοιγμα {labelText} στις ρυθμίσεις" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Άνοιγμα @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Άνοιγμα προηγμένων ρυθμίσεων πολυμέσων" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Ανοίξτε ένα παράθυρο εφαρμογής και δοκιμάστε ξανά." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Άνοιγμα κινούμενου GIF σε πλήρη προβολή" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Άνοιγμα κινούμενου βίντεο GIF σε πλήρη προβολή" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Άνοιγμα ήχου σε πλήρη προβολή" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Άνοιγμα συνδέσμου ήχου" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Άνοιγμα προγράμματος περιήγησης" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Άνοιγμα επιλογέα προγράμματος περιήγησης" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Άνοιγμα μενού αγαπημένων" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Άνοιγμα συνδέσμου αρχείου" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Άνοιγμα συνδέσμου GIF" @@ -23651,7 +23648,7 @@ msgstr "Άνοιγμα εικόνας στο πρόγραμμα περιήγησ #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Άνοιγμα εικόνας σε πλήρη προβολή" @@ -23660,7 +23657,7 @@ msgstr "Άνοιγμα εικόνας σε πλήρη προβολή" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Άνοιγμα συνδέσμου εικόνας" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Άνοιγμα DM συστήματος" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Άνοιγμα επιλογέα συστήματος" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Άνοιγμα βίντεο σε πλήρη προβολή" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Άνοιγμα συνδέσμου βίντεο" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Άνοιγμα φωνητικής συνομιλίας" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Άνοιγμα ρυθμίσεων φωνής και βίντεο" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Έξοδος" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Συσκευή εξόδου" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Ρυθμίσεις εξόδου" @@ -24094,7 +24091,7 @@ msgstr "Ρυθμίσεις εξόδου" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Ένταση εξόδου" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Όριο συμμετεχόντων" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Επιλογές συμμετέχοντα για τον/την {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Η προεπισκόπηση είναι κρυφή" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Οι εικόνες προεπισκόπησης αποθηκεύονται προσωρινά από το {productName} για την αποστολή τους και δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Απενεργοποιήστε τις προεπισκοπήσεις εάν δεν θέλετε να ανεβάζονται τα καρέ κοινής χρήσης οθόνης για τη δημιουργία μικρογραφιών." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Οι εικόνες προεπισκόπησης αποθηκεύονται προσωρινά από το {productName} για την αποστολή τους και δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Τα μέλη αυτής της ομαδικής συνομιλίας δεν χρειάζεται να παρακολουθούν ενεργά τη ροή σας για να δουν τη μικρογραφία." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Οι εικόνες προεπισκόπησης αποθηκεύονται προσωρινά από το {productName} για την αποστολή τους και δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Οι χρήστες εξακολουθούν να χρειάζονται άδεια για να συνδεθούν, αλλά δεν χρειάζεται να παρακολουθούν ενεργά τη ροή σας." @@ -26269,7 +26266,7 @@ msgstr "Αντιγράφηκε η αναφορά." msgid "Referral parameters" msgstr "Παράμετροι παραπομπής" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Ανανέωση πηγών ήχου" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Πατήθηκε το κανονικό κουμπί." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Απόρριψη" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Αφαίρεση από την ομάδα" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Αφαίρεση από τα αποθηκευμένα πολυμέσα" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Αφαίρεση από την κορυφή" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Αφαίρεση από τα αγαπημένα GIF που αποθηκεύονται μόνο μέσω URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Ανακλήθηκε ο αποκλεισμός για {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Επιστροφή κατά {defaultSeekAmount} δευτερόλεπτα" @@ -28202,7 +28199,7 @@ msgstr "Αποθήκευση εικονιδίου" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Αποθηκεύστε μερικά πολυμέσα από μηνύματα για να ξεκινήσετε!" @@ -28313,7 +28310,7 @@ msgstr "Απαιτείται άδεια εγγραφής οθόνης" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Κοινή χρήση οθόνης" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Ενίσχυση ήχου κοινής χρήσης οθόνης" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Ο ήχος της κοινής χρήσης οθόνης δεν μπόρεσε να ξεκινήσει" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Έλεγχος κωδικοποιητή κοινής χρήσης οθόνης" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Η κοινή χρήση οθόνης διακόπηκε" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Συμπεριφορά προεπισκόπησης κοινής χρήσης οθόνης" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Προεπισκοπήσεις κοινής χρήσης οθόνης" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Οι προεπισκοπήσεις κοινής χρήσης οθόνης είναι απενεργοποιημένες." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Οι προεπισκοπήσεις κοινής χρήσης οθόνης είναι ενεργοποιημένες." @@ -28391,13 +28388,13 @@ msgstr "Απόρρητο κοινής χρήσης οθόνης" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Ποιότητα κοινής χρήσης οθόνης" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Ρυθμίσεις κοινής χρήσης οθόνης" @@ -28723,7 +28720,7 @@ msgstr "Αναζήτηση ρόλων ή μελών…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Αναζήτηση αποθηκευμένων πολυμέσων" @@ -28942,12 +28939,12 @@ msgstr "Προεπισκόπηση" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Επιλογή" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Επιλέξτε {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Αποστολή συνδέσμου επαναφοράς" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Αποστολή αποθηκευμένου πολυμέσου {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Ορίστηκε θέση στη λίστα μελών για τον ρόλο" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Ορίζεται από την προεπιλογή {preset}. Η επιλογή μιας τιμής εδώ θα αλλάξει σε Προσαρμοσμένη." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Ορίστε προσαρμοσμένες εντάσεις για μεμονωμένους ήχους. Οι ήχοι χωρίς παράκαμψη ακολουθούν την κύρια ένταση." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Ορισμός συντόμευσης σίγασης ήχου" @@ -29669,11 +29666,6 @@ msgstr "Αναβολή αυτού του ελέγχου" msgid "Set this check aside?" msgstr "Αναβολή αυτού του ελέγχου;" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Αποστολή σε {resolution} στα {frameRate} FPS με {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Ρυθμίσεις" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "σύνδεσμος ρυθμίσεων" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Κοινοποίηση δώρου" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Κοινοποίηση οθόνης" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Κοινοποίηση στους συντονιστές της κοινότητας." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Κοινοποίηση οθόνης" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Κοινοποιήστε την οθόνη σας σε υψηλή ευκρίνεια (1080p), quad HD (1440p) ή εγγενή ανάλυση πηγής, έως 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Κοινόχρηστο παράθυρο" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Ήχος κοινόχρηστου παραθύρου" @@ -30624,6 +30616,10 @@ msgstr "Σιωπηλές κλήσεις" msgid "Silent calls from everyone" msgstr "Σιωπηλές κλήσεις από όλους" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Σίγαση όταν η συσκευή λήψης δεν έχει δική της είσοδο ήχου" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Ομαλή κύλιση" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Ομαλότερο βίντεο" @@ -31005,11 +31001,6 @@ msgstr "Δεν ήταν δυνατή η προσθήκη ορισμένων emoj msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Ορισμένα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο όριο μεγέθους των {maxSizeFormatted} ανά αρχείο." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Ορισμένες ρυθμίσεις ροής δεν εφαρμόστηκαν στην τρέχουσα ροή σας." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Ήχοι" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Πηγή" @@ -31569,7 +31560,7 @@ msgstr "Να ξεκινήσει μια φωνητική κλήση;" msgid "Start call" msgstr "Έναρξη κλήσης" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Έναρξη δοκιμής κάμερας και διαμόρφωση εφέ" @@ -31910,7 +31901,7 @@ msgstr "Διακοπή ομιλίας" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Διακοπή ροής" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Να μην εμπιστεύεστε πλέον όλους τους συνδέσμους;" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Διακοπή παρακολούθησης" @@ -31982,7 +31973,7 @@ msgstr "Εμποδίζει τον ήχο των ηχείων σας να επι #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Ροή" @@ -32001,11 +31992,6 @@ msgstr "Η ροή έληξε" msgid "Stream hidden" msgstr "Η ροή είναι κρυφή" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Η ροή δεν προλαβαίνει" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Ποιότητα ροής" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Ρυθμίσεις ροής" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Οι ρυθμίσεις ροής προσαρμόστηκαν" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Ανακοινώσεις συστήματος από το προσωπι #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Προεπιλογή συστήματος" @@ -33036,13 +33017,8 @@ msgstr "Το bot προστέθηκε στο <0>{destinationName}." msgid "The bot has been added." msgstr "Το bot προστέθηκε." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Το πρόγραμμα περιήγησης στέλνει {deliveredResolution} αντί για {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Η προεπισκόπηση της κάμερας σταματάει ακόμη. Δοκιμάστε ξανά να ξεκινήσετε ροή σε λίγο." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Ο ρόλος παραχώρησε {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Η πηγή κοινής χρήσης οθόνης σταμάτησε να στέλνει βίντεο, επομένως η κοινή χρήση της οθόνης σας διακόπηκε." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Αυτή η κονσόλα του προγράμματος περιήγησης είναι ένα εργαλείο προγραμματιστών." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Αυτή η κλήση είναι κρυπτογραφημένη από άκρο σε άκρο." @@ -33645,11 +33621,6 @@ msgstr "Αυτή η έκδοση για υπολογιστές δεν μπορε msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Αυτή η έκδοση ανάπτυξης δεν μπορεί να ενημερωθεί αυτόματα. Κατεβάστε ένα πρόγραμμα εγκατάστασης για υπολογιστές για να δοκιμάσετε τη ροή ενημέρωσης." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Αυτή η συσκευή δεν μπόρεσε να ανταπεξέλθει στο {targetResolution} στα {targetFrameRate} FPS την τελευταία φορά, οπότε η ροή σας ξεκίνησε στα {resolution} στα {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Αυτή η εγκατάσταση ελέγχεται από το σύστημά σας. Ενημερώστε το {productName} από το κέντρο λογισμικού ή τον διαχειριστή πακέτων σας." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Αυτή η παρουσία αυτήν τη στιγμή επιτρέπει κοινή χρήση οθόνης έως 720p στα 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Αυτό το κανάλι συνδέσμου έχει επισημανθεί για περιεχόμενο ενηλίκων και ενδέχεται να ανοίξει υλικό που μπορεί να είναι ακατάλληλο για ορισμένους χρήστες." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Αυτός ο σύνδεσμος δεν είναι διαθέσιμος για τον λογαριασμό σας." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Αυτή η επιλογή είναι υποχρεωτική. Δώστε μια τιμή." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Αυτός ο συμμετέχων δεν μπορεί να μιλήσει σε αυτό το κανάλι" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Αυτός ο συμμετέχων είναι σε σίγαση ήχου" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Αυτός ο συμμετέχων τέθηκε σε σίγαση ήχου από συντονιστές" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Αυτός ο αριθμός τηλεφώνου έχει ήδη χρησιμοποιηθεί. Δοκιμάστε έναν άλλο αριθμό ή επικοινωνήστε με την υποστήριξη." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Αυτός ο επιλογέας είναι διαθέσιμος μόνο στην εφαρμογή για υπολογιστές." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Εναλλαγή στοιχείων ελέγχου" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Εναλλαγή σίγασης ήχου" @@ -34666,7 +34637,7 @@ msgstr "Οι αλλαγές στο εικονίδιο της περιοχής ε #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Δημοφιλή GIF" @@ -34760,7 +34731,7 @@ msgstr "Δοκιμάστε ένα διαφορετικό ερώτημα αναζ #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Δοκιμάστε διαφορετικό όρο αναζήτησης ή φίλτρο" @@ -34839,11 +34810,6 @@ msgstr "Δοκιμάστε διαφορετικά φίλτρα ή όρους α msgid "Try editing your message again." msgstr "Δοκιμάστε να επεξεργαστείτε ξανά το μήνυμά σας." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Δοκιμάστε ξανά την πλήρη ποιότητα" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Δοκιμάστε να αναζητήσετε κάτι όπως «θέμα», «ειδοποιήσεις» ή «απόρρητο»" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Απενεργοποιήστε ό,τι δεν σας βολεύει. Ορισμένες λειτουργίες μπορεί να σταματήσουν να δουλεύουν." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Απενεργοποιήστε την κοινή χρήση ήχου για αυτήν την πηγή ή δοκιμάστε ξανά σε λίγο." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Αυτόματη ενεργοποίηση όταν εντοπιστεί το OBS ή το XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Ενεργοποίηση κάμερας" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Μη εισπράξιμο" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Κατάργηση σίγασης ήχου" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Κατάργηση σίγασης ήχου σε όλες τις συσκευές" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Κατάργηση σίγασης του ήχου σας" @@ -35558,7 +35524,7 @@ msgstr "άγνωστος χρήστης" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Άγνωστος χρήστης" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Ξεκλειδώστε προσαρμοσμένα emoji σε DM με το {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Ξεκλειδώστε την κοινή χρήση οθόνης HD με το {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Άρση σίγασης {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Κατάργηση σίγασης όλων των συσκευών" @@ -35741,7 +35707,7 @@ msgstr "Ομάδα χωρίς όνομα" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Είσοδος χωρίς όνομα" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Ανέβασμα νέων emoji και αυτοκόλλητων και διαχείριση των δικών σας δημιουργιών." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Ανέβασμα καρέ προεπισκόπησης για την κοινή χρήση οθόνης." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "Το URL αντιγράφηκε στο πρόχειρο" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Ετικέτα χρήστη (προαιρετικό)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Ένταση χρήστη" @@ -37227,7 +37193,7 @@ msgstr "Απώλεια πακέτων βίντεο:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Προεπισκόπηση βίντεο" @@ -37283,7 +37249,7 @@ msgstr "Μεταφόρτωση βίντεο" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Φωνή και βίντεο" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Ρυθμίσεις φωνής και βίντεο" @@ -37685,7 +37651,7 @@ msgstr "Συντομεύσεις φωνής και βίντεο" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Φωνητική κλήση" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Αποσφαλμάτωση σύνδεσης φωνής" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Σίγαση ήχου" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Φωνητικό μήνυμα" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Αναπαραγωγή φωνητικού μηνύματος" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Ρυθμίσεις φωνής" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Κατάργηση σίγασης ήχου" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Περιμένετε εδώ" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Αναμονή σύνδεσης..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Όταν δημοσιεύονται ως σύνδεσμοι σε συνομιλία" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Όταν είναι ενεργοποιημένες οι προεπισκοπήσεις, το {productName} ανεβάζει κατά διαστήματα καρέ JPEG από την κοινή χρήση οθόνης σας, ώστε τα άλλα άτομα σε αυτήν την ομαδική συνομιλία να μπορούν να δουν μια μικρογραφία πριν παρακολουθήσουν." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Όταν είναι ενεργοποιημένες οι προεπισκοπήσεις, το {productName} ανεβάζει κατά διαστήματα καρέ JPEG από την κοινή χρήση οθόνης σας, ώστε τα άτομα που έχουν δικαίωμα να συνδεθούν σε αυτό το φωνητικό κανάλι να μπορούν να δουν μια μικρογραφία πριν παρακολουθήσουν." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Όταν είναι ενεργοποιημένες οι προεπισκοπήσεις, το {productName} ανεβάζει κατά διαστήματα καρέ JPEG από την κοινή χρήση οθόνης σας, ώστε το άλλο άτομο σε αυτό το DM να μπορεί να δει μια μικρογραφία πριν παρακολουθήσει." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Τα παράθυρα που είναι κομμένα στο πάνω ή κάτω μέρος της οθόνης και τα προσαρτημένα DevTools ενδέχεται να εμφανίζουν γκρι φόντο αντί να παραμένουν διαφανή." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Προεπιλεγμένη συσκευή Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Έχετε αποκλειστεί από αυτήν την κοινότητα και δεν μπορείτε να συμμετάσχετε." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Έχετε σίγαση ήχου" @@ -38833,11 +38799,6 @@ msgstr "Χρησιμοποιείτε μια έκδοση {releaseChannel} του msgid "You aren't in any communities right now." msgstr "Δεν είστε σε καμία κοινότητα αυτήν τη στιγμή." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Ζητήσατε {resolution} στα {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Δεν μπορείτε να στείλετε μηνύματα σε αυ #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Δεν μπορείτε να κάνετε κοινή χρήση οθόνης σε αυτό το κανάλι" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Δεν μπορείτε να μιλήσετε σε αυτό το κανάλι" @@ -39036,7 +38997,7 @@ msgstr "Δεν μπορείτε να μιλήσετε σε αυτό το καν #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Δεν μπορείτε να ενεργοποιήσετε την κάμερά σας σε αυτό το κανάλι" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Αλλάξατε την ετικέτα σας ενώ είχατε {PREMIUM_PRODUCT_NAME}. Θα αλλάξει τυχαία όταν λήξει το {PREMIUM_PRODUCT_NAME} σας, εκτός αν ανανεωθεί." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Δεν έχετε πρόσβαση στο κανάλι όπου στάλθηκε αυτό το μήνυμα." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Παραμένετε σε {ownedNames}. Οι ιδιοκτήτες δεν μπορούν να αποχωρήσουν από τη δική τους κοινότητα." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Είστε σε σίγαση ήχου από συντονιστές" @@ -39699,11 +39660,6 @@ msgstr "Η αίτησή σας εκκρεμεί για έλεγχο. Μπορε msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Το πρόγραμμα περιήγησής σας απαιτεί αλληλεπίδραση χρήστη για την αναπαραγωγή ήχου. Πατήστε το παρακάτω κουμπί για να ενεργοποιήσετε τη φωνητική συνομιλία." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Η συσκευή λήψης σας στέλνει {deliveredResolution} αντί για {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Ελέγχουμε την κάρτα σας για τοπικές τιμές. Αυτό συνήθως διαρκεί λίγο." @@ -39734,36 +39690,11 @@ msgstr "Η κοινότητά σας είναι καταχωρισμένη στ msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Η κοινότητά σας χρειάζεται τουλάχιστον {minMemberCount, plural, one {# μέλος} other {# μέλη}} για να μπορεί να καταχωριστεί στην Ανακάλυψη." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Η σύνδεσή σας δεν προλαβαίνει. Η ροή σας έχει οριστεί σε {frameRate} FPS στα {resolution} και οι θεατές λαμβάνουν περίπου {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Η πιστωτική σας κάρτα έχει ελεγχθεί. Εάν η κάρτα είναι έγκυρη, το περιεχόμενο ενηλίκων θα ξεκλειδωθεί σύντομα. Μπορείτε να κλείσετε αυτήν την καρτέλα και να επιστρέψετε στην εφαρμογή." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Η συσκευή σας δεν μπορεί να τα παρακολουθήσει. Η ροή σας έχει οριστεί σε {frameRate} FPS στα {resolution} και οι θεατές λαμβάνουν περίπου {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Η συσκευή σας δεν άντεξε, οπότε η ροή σας στέλνει τώρα {frameRate} FPS για να διατηρήσει την ευκρίνεια της {resolution}." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Η συσκευή σας δεν μπόρεσε να ανταποκριθεί, οπότε η ροή σας στέλνει τώρα {resolution} στα {frameRate} FPS αντί για {targetResolution} στα {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Η συσκευή σας δεν άντεξε, οπότε η ροή σας στέλνει τώρα {resolution} για να διατηρήσει ομαλά τα {frameRate} FPS." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Η εγγραφή σας χρειάζεται έναν επιπλέον έλεγχο κατά των ανεπιθύμητων μηνυμάτων πριν συνεχίσετε." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Η αποθηκευμένη ποιότητα {savedResolution} στα {savedFrameRate} FPS απαιτεί {premiumProductName}, οπότε οι κοινοποιήσεις χρησιμοποιούν {resolution} στα {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Η κοινή χρήση οθόνης σας δεν μπόρεσε να δημοσιευτεί με συμβατό κωδικοποιητή βίντεο, επομένως διακόπηκε. Δοκιμάστε να μοιραστείτε ξανά." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Η πηγή σας παράγει περίπου {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Η ροή σας είναι ακόμα ενεργή" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Η ροή σας άλλαξε σε {codec}, επειδή το {previousCodec} δεν μπορούσε να ανταποκριθεί σε αυτήν τη συσκευή. Οι θεατές ενδέχεται να δουν μια σύντομη παύση." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Η προσαρμοσμένη διεύθυνση URL έχει οριστεί σε {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Ο κωδικοποιητής βίντεο σταμάτησε να κωδικοποιεί καρέ, οπότε η κοινή χρήση οθόνης διακόπηκε. Δοκιμάστε να την μοιραστείτε ξανά." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Ο κωδικοποιητής βίντεο σταμάτησε, οπότε η ροή σας άλλαξε σε {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/en-GB/messages.po b/fluxer_app/src/features/i18n/locales/en-GB/messages.po index e059aa13e..abe4ef6fd 100644 --- a/fluxer_app/src/features/i18n/locales/en-GB/messages.po +++ b/fluxer_app/src/features/i18n/locales/en-GB/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} wants to connect" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} will use this account for this authorisation." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} is currently only accessible to {productName} staff memb msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# line left)} other {... (# lines left)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# row left)} other {... (# rows left)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Expand (# line)} other {Expand (# lines)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Expand # other device} other {Expand # other devices}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {In call} other {# in call}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Your invite link expires in # day.} other {Your invite link expires in # days.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} hours" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# override} other {# overrides}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} will first verify that your card is eligible for localised pricing, then take you to payment. Return to {productName} once you've completed it." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} is not available on this device, so your stream uses {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} needs access to your microphone. Allow microphone access in your operating system privacy settings and restart the app." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} needs camera access to list your devices." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "a URL typed in the message text" msgid "a user" msgstr "a user" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Accept" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Accept" @@ -3178,12 +3163,12 @@ msgstr "Add to group" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Add to saved media" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Add to URL-only GIF favourites" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Advanced" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Advanced video settings" @@ -3451,7 +3436,7 @@ msgstr "Alignment controls are only available on wider screens" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Allow" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Allow {everyoneMention} and {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Allow bot direct messages" msgid "Allow bots to send you direct messages?" msgstr "Allow bots to send you direct messages?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Allow camera" @@ -4014,13 +3999,13 @@ msgstr "Animated emojis, GIFs and stickers stay under your control in the Animat #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animated GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animated GIF video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animated icons require the {animatedIconFeature} community feature." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animated image" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Animated image preview" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Animated uploads require a {premiumProductName} subscription." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animated video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "App state" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "App window" @@ -4361,7 +4346,7 @@ msgstr "Application updated successfully" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Applications" @@ -4586,7 +4571,7 @@ msgstr "attachment" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Attachment {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Attachment expired" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Attachment has expired or is unavailable" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Attachment ID copied to clipboard" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Audio level" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio muted" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Audio packet loss:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Audio player" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Audio preview" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Audio processing (focused voice)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Audio progress" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Audio settings" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Audio sources: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatic ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatic gain control" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser back" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Browser default" @@ -6198,20 +6183,20 @@ msgstr "Calls" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Camera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Camera access is needed for device previews" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Camera access was not granted. Update camera permissions, then try again." @@ -6276,13 +6261,13 @@ msgstr "Camera preview" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Camera quality" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Camera settings" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha verification failed. Try again." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Capture" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Capture app audio" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Capture desktop audio" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Capture device audio" @@ -6736,12 +6721,12 @@ msgstr "Change scheduled" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Change stream" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Change stream source" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Channel access" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Channel access denied" @@ -7097,7 +7082,7 @@ msgstr "Channel ID copied to clipboard" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "channel link" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Choose payment method" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Choose something to share" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Clear trusted domains ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Clearer text" @@ -8285,7 +8270,7 @@ msgstr "Collapse channel topic" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Collapse devices" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Community creator" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Community deafen" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Community MFA requirement nagbar" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Community mute" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configure now" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configure or end screen share" @@ -8904,7 +8889,7 @@ msgstr "Confirmation or double-click for community voice joins" msgid "Conflicts with {conflictLabel}" msgstr "Conflicts with {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Connect a camera and try again." @@ -8913,7 +8898,7 @@ msgstr "Connect a camera and try again." msgid "Connect a camera or virtual capture device, then try again." msgstr "Connect a camera or virtual capture device, then try again." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Connect a display, then try again." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Connection volume controls" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Connection: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Copied stats JSON to clipboard" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copied to clipboard" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copy attachment ID" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copy audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copy audio link" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copy endpoint" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copy file link" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copy GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copy GIF link" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copy identifier" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copy image" @@ -9448,7 +9433,7 @@ msgstr "Copy image" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copy image link" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copy link to section" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copy media" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copy value" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copy video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copy video link" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copy webhook URL" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Copying image..." @@ -10588,7 +10573,7 @@ msgstr "Currently: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Custom" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deactivate" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Deafen" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Deafen all devices" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Deafen device" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Deafen other members in voice channels, so they cannot hear or speak." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Deafen shortcut" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Deafen yourself" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Deafened" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Deafened by moderators" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Default" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Default camera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Delete :{emojiName}:? Can't be undone." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Delete \"{memeName}\"? Can't be undone." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Delete invite" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Delete media" @@ -11466,8 +11451,8 @@ msgstr "Delete role" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Delete saved media" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Desktop away" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Desktop device" @@ -11849,13 +11834,13 @@ msgstr "Developer state" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Developer tools" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Developer tools are available from the staff badge in the channel header." @@ -11879,6 +11864,17 @@ msgstr "Device" msgid "Device alerts" msgstr "Device alerts" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Device audio ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Device audio only" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Device details" @@ -11888,7 +11884,7 @@ msgstr "Device details" msgid "Device revoked" msgstr "Device revoked" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Device selection" @@ -11912,7 +11908,7 @@ msgstr "Device:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Devices" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Dim strikethrough text" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Direct input" @@ -12020,7 +12016,7 @@ msgstr "Direct upload active" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Disable" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Disabled value" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Discard voice message" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Disconnect" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Disconnect all devices" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Disconnect device" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Display" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Display" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification and place it in your <1>.well-known folder so we can validate the domain." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Download audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Download desktop update {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Download file" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Download fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Download GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Download image" @@ -12714,7 +12710,7 @@ msgstr "Download installer" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Download media" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Download package" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Download video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Echo" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Echo cancellation" @@ -12963,7 +12959,7 @@ msgstr "Edit access for {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Edit alt text" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Edit keyboard shortcut" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Edit media" @@ -13102,8 +13098,8 @@ msgstr "Edit reverse image search engine" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Edit saved media" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Enable browser notifications" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Enable camera access to preview cameras and capture devices before choosing one to stream." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Enable or disable built-in translators. Enabled translators appear in the message context menu when text is selected." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Enable previews" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "End screen share" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "End-to-end encryption is unavailable because an unsupported participant is in this call." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Entertainment" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Entire screen" @@ -14095,7 +14091,7 @@ msgstr "Entire screen" msgid "Entire system" msgstr "Entire system" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Entire system audio" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "exclude a user" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Exclude from system" @@ -14593,7 +14589,7 @@ msgstr "Failed to copy invite link" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Failed to copy to clipboard" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Failed to load invites. Try again." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Failed to load shareable sources." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Focus window" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Focused voice" @@ -15322,10 +15318,6 @@ msgstr "Folder settings" msgid "Follow us on {blueskyProviderName}" msgstr "Follow us on {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Follow voice input" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Forward" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Forward {defaultSeekAmount} seconds" @@ -15592,14 +15584,14 @@ msgstr "Frame" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Frame rate" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Frame rates above 30 FPS require {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Gamepad Y / Triangle" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Gaming" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF picker loading" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF preview" @@ -16429,7 +16421,7 @@ msgstr "Granted {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Grants all permissions and bypasses channel restrictions. Highly sensitive." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Granular selection" @@ -16992,7 +16984,7 @@ msgstr "Hide password" msgid "Hide picture-in-picture popout?" msgstr "Hide picture-in-picture popout?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Hide preview thumbnail" @@ -17386,7 +17378,7 @@ msgstr "If you'd like these members to access historical messages sent after a s #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignore" @@ -17395,11 +17387,11 @@ msgstr "Ignore" msgid "Ignore friend request" msgstr "Ignore friend request" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignore hardware devices" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignore input media" @@ -17430,7 +17422,7 @@ msgstr "Ignore the friend request from {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignore this channel's slowmode cooldown." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignore virtual" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Image" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Image assets" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Image copied to clipboard" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Image options" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Image preview" @@ -17540,7 +17532,7 @@ msgstr "Image upload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "In voice" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "In voice chat" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Include all except selected" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Include apps" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Input and output" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Input device" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Input profile: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Input settings" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Input states" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Input volume" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Invite link is hidden while sharing:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Invite link masked while sharing" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Jump to {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Jump to {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Jump to the current call" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Jump to the linked channel" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Jump to the linked message" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Jump to the message from {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Jump to the message in {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Layout" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Learn about screen share previews" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Link styling" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link unavailable" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux app" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux default" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Loading theme..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Loading..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS app" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS default" @@ -20289,7 +20281,7 @@ msgstr "Media next" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Media options" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Media play/pause" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Media preview" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Message layout" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "message link" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Microphone test" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Microphone, camera, and screen share content are end-to-end encrypted." @@ -21019,7 +21011,7 @@ msgstr "Minors at risk, mature content in the wrong place, or unwanted conduct." #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Misspelled words" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobile device" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Mute all" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Mute all devices" @@ -21653,13 +21645,13 @@ msgstr "Muted" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Muted" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Muted by moderators" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "No {sendMessagesPermission} permission" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "No access" @@ -22282,7 +22274,7 @@ msgstr "No advanced settings found" msgid "No AFK channel" msgstr "No AFK channel" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "No application windows found" @@ -22300,6 +22292,12 @@ msgstr "No assets yet" msgid "No audio" msgstr "No audio" +# auto-i18n: reviewed unchanged +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "No audio from this device" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "No authorised applications" @@ -22341,7 +22339,7 @@ msgstr "No bookmarks" msgid "No bot banner" msgstr "No bot banner" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "No camera found" @@ -22421,7 +22419,7 @@ msgstr "No description." msgid "No desktop update is available." msgstr "No desktop update is available." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "No displays found" @@ -22650,7 +22648,7 @@ msgstr "No response body received" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "No results" @@ -22679,7 +22677,7 @@ msgstr "No roles yet. Add roles in {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "No saved media" @@ -22851,7 +22849,7 @@ msgid "Noise gate" msgstr "Noise gate" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Noise suppression" @@ -22877,7 +22875,7 @@ msgstr "Non-convert" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "None" @@ -23286,7 +23284,7 @@ msgstr "Only applies on wide screens." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Only default speakers" @@ -23334,7 +23332,7 @@ msgstr "Only run code here if you understand exactly what it does." msgid "Only show message previews for DMs with unread messages" msgstr "Only show message previews for DMs with unread messages" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Only speakers" @@ -23410,7 +23408,7 @@ msgid "Open {displayName}" msgstr "Open {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Open {labelText} in settings" @@ -23440,25 +23438,25 @@ msgid "Open @{displayName}" msgstr "Open @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Open advanced media settings" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Open an application window, then try again." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Open animated GIF in full view" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Open animated GIF video in full view" @@ -23468,7 +23466,7 @@ msgid "Open audio in full view" msgstr "Open audio in full view" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Open audio link" @@ -23507,7 +23505,7 @@ msgid "Open browser" msgstr "Open browser" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Open browser picker" @@ -23621,12 +23619,12 @@ msgid "Open favorites menu" msgstr "Open favourites menu" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Open file link" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Open GIF link" @@ -23651,7 +23649,7 @@ msgstr "Open image in browser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Open image in full view" @@ -23660,7 +23658,7 @@ msgstr "Open image in full view" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Open image link" @@ -23775,7 +23773,7 @@ msgid "Open system DM" msgstr "Open system DM" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Open system picker" @@ -23837,7 +23835,7 @@ msgid "Open video in full view" msgstr "Open video in full view" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Open video link" @@ -23847,7 +23845,7 @@ msgid "Open voice" msgstr "Open voice" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Open voice & video settings" @@ -24080,12 +24078,12 @@ msgid "Output" msgstr "Output" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Output device" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Output settings" @@ -24094,7 +24092,7 @@ msgstr "Output settings" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Output volume" @@ -24197,7 +24195,7 @@ msgid "Participant limit" msgstr "Participant limit" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Participant options for {participantDisplayName}" @@ -25260,17 +25258,17 @@ msgid "Preview hidden" msgstr "Preview hidden" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." @@ -26269,7 +26267,7 @@ msgstr "Reference copied." msgid "Referral parameters" msgstr "Referral parameters" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Refresh audio sources" @@ -26363,7 +26361,7 @@ msgid "Regular button clicked." msgstr "Regular button clicked." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Reject" @@ -26597,7 +26595,7 @@ msgid "Remove from group" msgstr "Remove from group" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Remove from saved media" @@ -26609,7 +26607,7 @@ msgid "Remove from top" msgstr "Remove from top" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Remove from URL-only GIF favourites" @@ -27902,7 +27900,7 @@ msgid "Revoked ban for {0}" msgstr "Revoked ban for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Rewind {defaultSeekAmount} seconds" @@ -28202,7 +28200,7 @@ msgstr "Save icon" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Save some media from messages to get started!" @@ -28313,7 +28311,7 @@ msgstr "Screen recording permission required" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Screen share" @@ -28329,7 +28327,7 @@ msgid "Screen share audio boost" msgstr "Screen share audio boost" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Screen share audio couldn't start" @@ -28344,7 +28342,7 @@ msgid "Screen share encoder controls" msgstr "Screen share encoder controls" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Screen share ended" @@ -28370,17 +28368,17 @@ msgid "Screen share preview behavior" msgstr "Screen share preview behaviour" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Screen share previews" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Screen share previews are disabled." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Screen share previews are enabled." @@ -28391,13 +28389,13 @@ msgstr "Screen share privacy" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Screen share quality" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Screen share settings" @@ -28723,7 +28721,7 @@ msgstr "Search roles or members…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Search saved media" @@ -28942,12 +28940,12 @@ msgstr "Seek preview" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Select" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Select {accessibleName}" @@ -29307,7 +29305,7 @@ msgid "Send reset link" msgstr "Send reset link" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Send saved media {memeName}" @@ -29499,7 +29497,7 @@ msgid "Set a member list position for the role" msgstr "Set a member list position for the role" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Set by the {preset} preset. Picking a value here switches to Custom." @@ -29524,7 +29522,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Set custom volumes for individual sounds. Sounds without an override follow the master volume." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Set deafen shortcut" @@ -29669,11 +29667,6 @@ msgstr "Set this check aside" msgid "Set this check aside?" msgstr "Set this check aside?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Set to send {resolution} at {frameRate} FPS with {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29719,7 @@ msgid "Settings" msgstr "Settings" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "settings link" @@ -29781,7 +29774,7 @@ msgid "Share gift" msgstr "Share gift" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Share screen" @@ -29823,11 +29816,11 @@ msgid "Share with community mods." msgstr "Share with community mods." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Share your screen" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." @@ -29856,7 +29849,7 @@ msgid "Shared window" msgstr "Shared window" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Shared window audio" @@ -30624,6 +30617,11 @@ msgstr "Silent calls" msgid "Silent calls from everyone" msgstr "Silent calls from everyone" +# auto-i18n: reviewed unchanged +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silent when the capture device has no audio input of its own" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30950,7 @@ msgid "Smooth scrolling" msgstr "Smooth scrolling" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Smoother video" @@ -31005,11 +31003,6 @@ msgstr "Some emojis couldn't be added" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Some stream settings could not be applied to your live stream." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31210,12 @@ msgstr "Sounds" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Source" @@ -31569,7 +31562,7 @@ msgstr "Start a voice call?" msgid "Start call" msgstr "Start call" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Start camera test and configure effects" @@ -31910,7 +31903,7 @@ msgstr "Stop speaking" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Stop streaming" @@ -31920,7 +31913,7 @@ msgid "Stop trusting all links?" msgstr "Stop trusting all links?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Stop watching" @@ -31982,7 +31975,7 @@ msgstr "Stops your speakers from looping back into your mic." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31994,6 @@ msgstr "Stream ended" msgid "Stream hidden" msgstr "Stream hidden" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Stream is not keeping up" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32009,10 @@ msgid "Stream quality" msgstr "Stream quality" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Stream settings" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Stream settings were adjusted" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32509,7 @@ msgstr "System announcements from {productName} staff. You can't reply here." #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "System default" @@ -33036,13 +33019,8 @@ msgstr "The bot has been added to <0>{destinationName}." msgid "The bot has been added." msgstr "The bot has been added." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "The browser is sending {deliveredResolution} instead of {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "The camera preview is still stopping. Try streaming again in a moment." @@ -33220,7 +33198,7 @@ msgid "The role granted {permissions}" msgstr "The role granted {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "The screen share source stopped sending video, so your screen share was stopped." @@ -33462,7 +33440,7 @@ msgid "This browser console is a developer tool." msgstr "This browser console is a developer tool." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "This call is end-to-end encrypted." @@ -33645,11 +33623,6 @@ msgstr "This desktop build cannot install updates inside {productName}. Download msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "This development build cannot update itself. Download a desktop installer to test the update flow." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33726,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "This install is managed by your system. Update {productName} from your software centre or package manager." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "This instance currently allows screen sharing up to 720p at 30 FPS." @@ -33866,7 +33839,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "This link channel is marked for mature content and may open material that may be inappropriate for some users." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "This link is not available for your account." @@ -33947,17 +33920,17 @@ msgid "This option is required. Please provide a value." msgstr "This option is required. Please provide a value." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "This participant can't speak in this channel" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "This participant is deafened" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "This participant was deafened by moderators" @@ -33972,7 +33945,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "This phone number has already been used. Try another number or contact support." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "This picker is only available in the desktop app." @@ -34401,7 +34374,7 @@ msgid "Toggle controls" msgstr "Toggle controls" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Toggle deafen" @@ -34666,7 +34639,7 @@ msgstr "Tray icon changes only apply after a restart on Linux because the system #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Trending GIFs" @@ -34760,7 +34733,7 @@ msgstr "Try a different search query." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Try a different search term or filter" @@ -34839,11 +34812,6 @@ msgstr "Try different filters or search terms." msgid "Try editing your message again." msgstr "Try editing your message again." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Try full quality again" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" @@ -34904,7 +34872,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Turn off anything you're not comfortable with. Some features may stop working." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Turn off audio sharing for this source or try again in a moment." @@ -34960,7 +34928,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Turn on automatically when OBS or XSplit is detected" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Turn on camera" @@ -35310,17 +35278,17 @@ msgid "Uncollectible" msgstr "Uncollectible" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Undeafen" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Undeafen all devices" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Undeafen yourself" @@ -35558,7 +35526,7 @@ msgstr "unknown user" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Unknown user" @@ -35602,7 +35570,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Unlock custom emojis in DMs with {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Unlock HD screen share with {premiumProductName}" @@ -35659,7 +35627,7 @@ msgid "Unmute {label}" msgstr "Unmute {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Unmute all devices" @@ -35741,7 +35709,7 @@ msgstr "Unnamed group" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Unnamed input" @@ -36153,7 +36121,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Upload new emoji and stickers, and manage your own creations." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Upload preview frames for screen shares." @@ -36234,7 +36202,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copied to clipboard" @@ -36739,7 +36707,7 @@ msgid "User tag (optional)" msgstr "User tag (optional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "User volume" @@ -37227,7 +37195,7 @@ msgstr "Video packet loss:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Video preview" @@ -37283,7 +37251,7 @@ msgstr "Video upload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37601,7 @@ msgid "Voice & video" msgstr "Voice & video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Voice & video settings" @@ -37685,7 +37653,7 @@ msgstr "Voice and video shortcuts" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Voice call" @@ -37753,7 +37721,7 @@ msgid "Voice connection debug" msgstr "Voice connection debug" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Voice deafen" @@ -37780,7 +37748,7 @@ msgid "Voice message" msgstr "Voice message" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Voice message player" @@ -37832,7 +37800,7 @@ msgid "Voice settings" msgstr "Voice settings" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Voice undeafen" @@ -37904,7 +37872,7 @@ msgid "Wait here" msgstr "Wait here" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Waiting for connection..." @@ -38465,17 +38433,17 @@ msgid "When posted as links in chat" msgstr "When posted as links in chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." @@ -38627,7 +38595,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Windows cut off at the top or bottom of the screen, and docked DevTools, can render a grey background instead of staying transparent." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows default" @@ -38800,7 +38768,7 @@ msgid "You are banned from this community and cannot join." msgstr "You are banned from this community and cannot join." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "You are deafened" @@ -38833,11 +38801,6 @@ msgstr "You are using a {releaseChannel} build of {productName}." msgid "You aren't in any communities right now." msgstr "You aren't in any communities right now." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "You asked for {resolution} at {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38985,13 @@ msgstr "You can't send messages in this community." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "You can't share your screen in this channel" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "You can't speak in this channel" @@ -39036,7 +38999,7 @@ msgstr "You can't speak in this channel" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "You can't turn on your camera in this channel" @@ -39109,7 +39072,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll randomly when your {PREMIUM_PRODUCT_NAME} expires, unless it renews." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "You do not have access to the channel where this message was sent." @@ -39350,7 +39313,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "You stay in {ownedNames}. Owners cannot leave their own community." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "You were deafened by moderators" @@ -39699,11 +39662,6 @@ msgstr "Your application is pending review. You can still update your listing de msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Your capture device is sending {deliveredResolution} instead of {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Your card is being checked for localised pricing. This usually takes a moment." @@ -39734,38 +39692,11 @@ msgstr "Your community is listed in Discovery. You can update your listing detai msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." -# auto-i18n: reviewed unchanged -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." -# auto-i18n: reviewed unchanged -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Your device couldn't keep up, so your stream is now sending {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39952,31 +39883,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Your registration needs an extra anti-spam check before you can continue." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Your source is producing about {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Your stream is still live" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Your stream switched to {codec} because {previousCodec} couldn't keep up on this device. Viewers may see a short pause." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40066,16 +39987,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Your video encoder stopped, so your stream switched to {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/en-US/messages.po b/fluxer_app/src/features/i18n/locales/en-US/messages.po index 673e78e0f..f77ecc3a8 100644 --- a/fluxer_app/src/features/i18n/locales/en-US/messages.po +++ b/fluxer_app/src/features/i18n/locales/en-US/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} wants to connect" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} will use this account for this authorization." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} is currently only accessible to {productName} staff memb msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# line left)} other {... (# lines left)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# row left)} other {... (# rows left)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Expand (# line)} other {Expand (# lines)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Expand # other device} other {Expand # other devices}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {In call} other {# in call}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Your invite link expires in # day.} other {Your invite link expires in # days.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} hours" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# override} other {# overrides}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} is not available on this device, so your stream uses {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} needs access to your microphone. Allow microphone access in your operating system privacy settings and restart the app." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} needs camera access to list your devices." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "a URL typed in the message text" msgid "a user" msgstr "a user" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Accept" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Accept" @@ -3178,12 +3163,12 @@ msgstr "Add to group" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Add to saved media" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Add to URL-only GIF favorites" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Advanced" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Advanced video settings" @@ -3451,7 +3436,7 @@ msgstr "Alignment controls are only available on wider screens" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Allow" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Allow {everyoneMention} and {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Allow bot direct messages" msgid "Allow bots to send you direct messages?" msgstr "Allow bots to send you direct messages?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Allow camera" @@ -4014,13 +3999,13 @@ msgstr "Animated emojis, GIFs and stickers stay under your control in the Animat #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animated GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animated GIF video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animated icons require the {animatedIconFeature} community feature." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animated image" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Animated image preview" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Animated uploads require a {premiumProductName} subscription." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animated video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "App state" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "App window" @@ -4361,7 +4346,7 @@ msgstr "Application updated successfully" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Applications" @@ -4586,7 +4571,7 @@ msgstr "attachment" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Attachment {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Attachment expired" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Attachment has expired or is unavailable" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Attachment ID copied to clipboard" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Audio level" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio muted" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Audio packet loss:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Audio player" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Audio preview" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Audio processing (focused voice)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Audio progress" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Audio settings" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Audio sources: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatic ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatic gain control" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser back" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Browser default" @@ -6198,20 +6183,20 @@ msgstr "Calls" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Camera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Camera access is needed for device previews" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Camera access was not granted. Update camera permissions, then try again." @@ -6276,13 +6261,13 @@ msgstr "Camera preview" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Camera quality" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Camera settings" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha verification failed. Try again." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Capture" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Capture app audio" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Capture desktop audio" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Capture device audio" @@ -6736,12 +6721,12 @@ msgstr "Change scheduled" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Change stream" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Change stream source" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Channel access" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Channel access denied" @@ -7097,7 +7082,7 @@ msgstr "Channel ID copied to clipboard" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "channel link" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Choose payment method" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Choose something to share" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Clear trusted domains ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Clearer text" @@ -8285,7 +8270,7 @@ msgstr "Collapse channel topic" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Collapse devices" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Community creator" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Community deafen" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Community MFA requirement nagbar" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Community mute" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configure now" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configure or end screen share" @@ -8904,7 +8889,7 @@ msgstr "Confirmation or double-click for community voice joins" msgid "Conflicts with {conflictLabel}" msgstr "Conflicts with {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Connect a camera and try again." @@ -8913,7 +8898,7 @@ msgstr "Connect a camera and try again." msgid "Connect a camera or virtual capture device, then try again." msgstr "Connect a camera or virtual capture device, then try again." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Connect a display, then try again." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Connection volume controls" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Connection: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Copied stats JSON to clipboard" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copied to clipboard" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copy attachment ID" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copy audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copy audio link" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copy endpoint" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copy file link" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copy GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copy GIF link" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copy identifier" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copy image" @@ -9448,7 +9433,7 @@ msgstr "Copy image" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copy image link" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copy link to section" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copy media" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copy value" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copy video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copy video link" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copy webhook URL" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Copying image..." @@ -10588,7 +10573,7 @@ msgstr "Currently: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Custom" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deactivate" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Deafen" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Deafen all devices" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Deafen device" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Deafen other members in voice channels, so they cannot hear or speak." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Deafen shortcut" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Deafen yourself" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Deafened" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Deafened by moderators" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Default" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Default camera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Delete :{emojiName}:? Can't be undone." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Delete \"{memeName}\"? Can't be undone." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Delete invite" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Delete media" @@ -11466,8 +11451,8 @@ msgstr "Delete role" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Delete saved media" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Desktop away" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Desktop device" @@ -11849,13 +11834,13 @@ msgstr "Developer state" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Developer tools" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Developer tools are available from the staff badge in the channel header." @@ -11879,6 +11864,17 @@ msgstr "Device" msgid "Device alerts" msgstr "Device alerts" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Device audio ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Device audio only" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Device details" @@ -11888,7 +11884,7 @@ msgstr "Device details" msgid "Device revoked" msgstr "Device revoked" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Device selection" @@ -11912,7 +11908,7 @@ msgstr "Device:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Devices" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Dim strikethrough text" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Direct input" @@ -12020,7 +12016,7 @@ msgstr "Direct upload active" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Disable" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Disabled value" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Discard voice message" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Disconnect" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Disconnect all devices" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Disconnect device" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Display" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Display" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification and place it in your <1>.well-known folder so we can validate the domain." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Download audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Download desktop update {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Download file" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Download fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Download GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Download image" @@ -12714,7 +12710,7 @@ msgstr "Download installer" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Download media" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Download package" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Download video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Echo" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Echo cancellation" @@ -12963,7 +12959,7 @@ msgstr "Edit access for {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Edit alt text" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Edit keyboard shortcut" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Edit media" @@ -13102,8 +13098,8 @@ msgstr "Edit reverse image search engine" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Edit saved media" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Enable browser notifications" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Enable camera access to preview cameras and capture devices before choosing one to stream." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Enable or disable built-in translators. Enabled translators appear in the message context menu when text is selected." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Enable previews" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "End screen share" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "End-to-end encryption is unavailable because an unsupported participant is in this call." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Entertainment" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Entire screen" @@ -14095,7 +14091,7 @@ msgstr "Entire screen" msgid "Entire system" msgstr "Entire system" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Entire system audio" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "exclude a user" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Exclude from system" @@ -14593,7 +14589,7 @@ msgstr "Failed to copy invite link" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Failed to copy to clipboard" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Failed to load invites. Try again." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Failed to load shareable sources." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Focus window" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Focused voice" @@ -15322,10 +15318,6 @@ msgstr "Folder settings" msgid "Follow us on {blueskyProviderName}" msgstr "Follow us on {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Follow voice input" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Forward" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Forward {defaultSeekAmount} seconds" @@ -15592,14 +15584,14 @@ msgstr "Frame" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Frame rate" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Frame rates above 30 FPS require {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Gamepad Y / Triangle" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Gaming" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF picker loading" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF preview" @@ -16429,7 +16421,7 @@ msgstr "Granted {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Grants all permissions and bypasses channel restrictions. Highly sensitive." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Granular selection" @@ -16992,7 +16984,7 @@ msgstr "Hide password" msgid "Hide picture-in-picture popout?" msgstr "Hide picture-in-picture popout?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Hide preview thumbnail" @@ -17386,7 +17378,7 @@ msgstr "If you'd like these members to access historical messages sent after a s #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignore" @@ -17395,11 +17387,11 @@ msgstr "Ignore" msgid "Ignore friend request" msgstr "Ignore friend request" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignore hardware devices" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignore input media" @@ -17430,7 +17422,7 @@ msgstr "Ignore the friend request from {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignore this channel's slowmode cooldown." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignore virtual" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Image" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Image assets" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Image copied to clipboard" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Image options" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Image preview" @@ -17540,7 +17532,7 @@ msgstr "Image upload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "In voice" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "In voice chat" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Include all except selected" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Include apps" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Input and output" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Input device" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Input profile: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Input settings" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Input states" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Input volume" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Invite link is hidden while sharing:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Invite link masked while sharing" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Jump to {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Jump to {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Jump to the current call" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Jump to the linked channel" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Jump to the linked message" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Jump to the message from {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Jump to the message in {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Layout" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Learn about screen share previews" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Link styling" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link unavailable" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux app" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux default" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Loading theme..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Loading..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS app" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS default" @@ -20289,7 +20281,7 @@ msgstr "Media next" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Media options" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Media play/pause" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Media preview" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Message layout" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "message link" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Microphone test" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Microphone, camera, and screen share content are end-to-end encrypted." @@ -21019,7 +21011,7 @@ msgstr "Minors at risk, mature content in the wrong place, or unwanted conduct." #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Misspelled words" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobile device" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Mute all" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Mute all devices" @@ -21653,13 +21645,13 @@ msgstr "Muted" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Muted" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Muted by moderators" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "No {sendMessagesPermission} permission" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "No access" @@ -22282,7 +22274,7 @@ msgstr "No advanced settings found" msgid "No AFK channel" msgstr "No AFK channel" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "No application windows found" @@ -22300,6 +22292,11 @@ msgstr "No assets yet" msgid "No audio" msgstr "No audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "No audio from this device" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "No authorized applications" @@ -22341,7 +22338,7 @@ msgstr "No bookmarks" msgid "No bot banner" msgstr "No bot banner" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "No camera found" @@ -22421,7 +22418,7 @@ msgstr "No description." msgid "No desktop update is available." msgstr "No desktop update is available." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "No displays found" @@ -22650,7 +22647,7 @@ msgstr "No response body received" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "No results" @@ -22679,7 +22676,7 @@ msgstr "No roles yet. Add roles in {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "No saved media" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Noise gate" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Noise suppression" @@ -22877,7 +22874,7 @@ msgstr "Non-convert" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "None" @@ -23286,7 +23283,7 @@ msgstr "Only applies on wide screens." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Only default speakers" @@ -23334,7 +23331,7 @@ msgstr "Only run code here if you understand exactly what it does." msgid "Only show message previews for DMs with unread messages" msgstr "Only show message previews for DMs with unread messages" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Only speakers" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Open {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Open {labelText} in settings" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Open @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Open advanced media settings" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Open an application window, then try again." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Open animated GIF in full view" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Open animated GIF video in full view" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Open audio in full view" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Open audio link" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Open browser" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Open browser picker" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Open favorites menu" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Open file link" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Open GIF link" @@ -23651,7 +23648,7 @@ msgstr "Open image in browser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Open image in full view" @@ -23660,7 +23657,7 @@ msgstr "Open image in full view" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Open image link" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Open system DM" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Open system picker" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Open video in full view" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Open video link" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Open voice" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Open voice & video settings" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Output" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Output device" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Output settings" @@ -24094,7 +24091,7 @@ msgstr "Output settings" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Output volume" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Participant limit" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Participant options for {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Preview hidden" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." @@ -26269,7 +26266,7 @@ msgstr "Reference copied." msgid "Referral parameters" msgstr "Referral parameters" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Refresh audio sources" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Regular button clicked." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Reject" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Remove from group" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Remove from saved media" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Remove from top" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Remove from URL-only GIF favorites" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Revoked ban for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Rewind {defaultSeekAmount} seconds" @@ -28202,7 +28199,7 @@ msgstr "Save icon" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Save some media from messages to get started!" @@ -28313,7 +28310,7 @@ msgstr "Screen recording permission required" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Screen share" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Screen share audio boost" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Screen share audio couldn't start" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Screen share encoder controls" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Screen share ended" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Screen share preview behavior" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Screen share previews" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Screen share previews are disabled." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Screen share previews are enabled." @@ -28391,13 +28388,13 @@ msgstr "Screen share privacy" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Screen share quality" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Screen share settings" @@ -28723,7 +28720,7 @@ msgstr "Search roles or members…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Search saved media" @@ -28942,12 +28939,12 @@ msgstr "Seek preview" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Select" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Select {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Send reset link" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Send saved media {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Set a member list position for the role" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Set by the {preset} preset. Picking a value here switches to Custom." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Set custom volumes for individual sounds. Sounds without an override follow the master volume." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Set deafen shortcut" @@ -29669,11 +29666,6 @@ msgstr "Set this check aside" msgid "Set this check aside?" msgstr "Set this check aside?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Set to send {resolution} at {frameRate} FPS with {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Settings" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "settings link" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Share gift" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Share screen" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Share with community mods." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Share your screen" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Shared window" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Shared window audio" @@ -30624,6 +30616,10 @@ msgstr "Silent calls" msgid "Silent calls from everyone" msgstr "Silent calls from everyone" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silent when the capture device has no audio input of its own" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Smooth scrolling" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Smoother video" @@ -31005,11 +31001,6 @@ msgstr "Some emojis couldn't be added" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Some stream settings could not be applied to your live stream." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Sounds" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Source" @@ -31569,7 +31560,7 @@ msgstr "Start a voice call?" msgid "Start call" msgstr "Start call" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Start camera test and configure effects" @@ -31910,7 +31901,7 @@ msgstr "Stop speaking" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Stop streaming" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Stop trusting all links?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Stop watching" @@ -31982,7 +31973,7 @@ msgstr "Stops your speakers from looping back into your mic." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31992,6 @@ msgstr "Stream ended" msgid "Stream hidden" msgstr "Stream hidden" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Stream is not keeping up" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Stream quality" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Stream settings" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Stream settings were adjusted" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "System announcements from {productName} staff. You can't reply here." #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "System default" @@ -33036,13 +33017,8 @@ msgstr "The bot has been added to <0>{destinationName}." msgid "The bot has been added." msgstr "The bot has been added." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "The browser is sending {deliveredResolution} instead of {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "The camera preview is still stopping. Try streaming again in a moment." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "The role granted {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "The screen share source stopped sending video, so your screen share was stopped." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "This browser console is a developer tool." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "This call is end-to-end encrypted." @@ -33645,11 +33621,6 @@ msgstr "This desktop build cannot install updates inside {productName}. Download msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "This development build cannot update itself. Download a desktop installer to test the update flow." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "This install is managed by your system. Update {productName} from your software center or package manager." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "This instance currently allows screen sharing up to 720p at 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "This link channel is marked for mature content and may open material that may be inappropriate for some users." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "This link is not available for your account." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "This option is required. Please provide a value." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "This participant can't speak in this channel" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "This participant is deafened" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "This participant was deafened by moderators" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "This phone number has already been used. Try another number or contact support." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "This picker is only available in the desktop app." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Toggle controls" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Toggle deafen" @@ -34666,7 +34637,7 @@ msgstr "Tray icon changes only apply after a restart on Linux because the system #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Trending GIFs" @@ -34760,7 +34731,7 @@ msgstr "Try a different search query." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Try a different search term or filter" @@ -34839,11 +34810,6 @@ msgstr "Try different filters or search terms." msgid "Try editing your message again." msgstr "Try editing your message again." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Try full quality again" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Turn off anything you're not comfortable with. Some features may stop working." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Turn off audio sharing for this source or try again in a moment." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Turn on automatically when OBS or XSplit is detected" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Turn on camera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Uncollectible" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Undeafen" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Undeafen all devices" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Undeafen yourself" @@ -35558,7 +35524,7 @@ msgstr "unknown user" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Unknown user" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Unlock custom emojis in DMs with {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Unlock HD screen share with {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Unmute {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Unmute all devices" @@ -35741,7 +35707,7 @@ msgstr "Unnamed group" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Unnamed input" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Upload new emoji and stickers, and manage your own creations." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Upload preview frames for screen shares." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copied to clipboard" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "User tag (optional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "User volume" @@ -37227,7 +37193,7 @@ msgstr "Video packet loss:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Video preview" @@ -37283,7 +37249,7 @@ msgstr "Video upload" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Voice & video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Voice & video settings" @@ -37685,7 +37651,7 @@ msgstr "Voice and video shortcuts" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Voice call" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Voice connection debug" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Voice deafen" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Voice message" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Voice message player" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Voice settings" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Voice undeafen" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Wait here" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Waiting for connection..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "When posted as links in chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Windows cut off at the top or bottom of the screen, and docked DevTools, can render a gray background instead of staying transparent." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows default" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "You are banned from this community and cannot join." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "You are deafened" @@ -38833,11 +38799,6 @@ msgstr "You are using a {releaseChannel} build of {productName}." msgid "You aren't in any communities right now." msgstr "You aren't in any communities right now." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "You asked for {resolution} at {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "You can't send messages in this community." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "You can't share your screen in this channel" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "You can't speak in this channel" @@ -39036,7 +38997,7 @@ msgstr "You can't speak in this channel" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "You can't turn on your camera in this channel" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll randomly when your {PREMIUM_PRODUCT_NAME} expires, unless it renews." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "You do not have access to the channel where this message was sent." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "You stay in {ownedNames}. Owners cannot leave their own community." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "You were deafened by moderators" @@ -39699,11 +39660,6 @@ msgstr "Your application is pending review. You can still update your listing de msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Your capture device is sending {deliveredResolution} instead of {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Your card is being checked for localized pricing. This usually takes a moment." @@ -39734,36 +39690,11 @@ msgstr "Your community is listed in Discovery. You can update your listing detai msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Your registration needs an extra anti-spam check before you can continue." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Your source is producing about {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Your stream is still live" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Your video encoder stopped, so your stream switched to {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/es-419/messages.po b/fluxer_app/src/features/i18n/locales/es-419/messages.po index b83f8a9d7..1003f713a 100644 --- a/fluxer_app/src/features/i18n/locales/es-419/messages.po +++ b/fluxer_app/src/features/i18n/locales/es-419/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} quiere conectarse" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} usará esta cuenta para esta autorización." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} no puede seguir el ritmo en este dispositivo. Configura el códec en Automático en la configuración Avanzada para permitir uno más rápido." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} solo es accesible para miembros del personal de {product msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Sin límite} one {# participante} other {# participantes}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# línea restante)} other {... (# líneas restantes)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# fila restante)} other {... (# filas restantes)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Expandir (# línea)} other {Expandir (# líneas)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Mostrar (# fila)} other {Mostrar (# filas)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Mostrar # dispositivo más} other {Mostrar # dispositivos más}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {En llamada} other {# en llamada}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Unirse a videollamada (# participante)} other {Unirse a videollamada (# participantes)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Seguir viendo # transmisión y agregar esta} other {Seguir viendo # transmisiones y agregar esta}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Tu enlace de invitación vence en # día.} many {Tu enlace de invitación vence en # días.} other {Tu enlace de invitación vence en # días.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} horas" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# personalización} other {# personalizacio msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} verificará primero que tu tarjeta sea elegible para precios localizados y luego te dirigirá al pago. Vuelve a {productName} cuando hayas terminado." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} no está disponible en este dispositivo, por lo que tu transmisión usa {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} necesita acceso a tu micrófono. Permite el acceso al micrófono en la configuración de privacidad de tu sistema operativo y reinicia la aplicación." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} necesita acceso a la cámara para mostrar tus dispositivos." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} en línea" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "una URL escrita en el texto del mensaje" msgid "a user" msgstr "un usuario" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Un espectador no puede reproducir {pinnedCodec}, por lo que tu transmisión usa {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Aceptar" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Contestar" @@ -3178,12 +3163,12 @@ msgstr "Agregar al grupo" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Agregar a contenido multimedia guardado" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Agregar a los GIF favoritos solo por URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avanzado" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Configuración avanzada de video" @@ -3451,7 +3436,7 @@ msgstr "Los controles de alineación solo están disponibles en pantallas más a #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Permitir" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Permitir {everyoneMention} y {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Permite que {PRODUCT_NAME} acceda a tu cámara en {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Permitir mensajes directos de bots" msgid "Allow bots to send you direct messages?" msgstr "¿Permitir que los bots te envíen mensajes directos?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Permitir acceso a la cámara" @@ -4014,13 +3999,13 @@ msgstr "Los emojis, GIF y stickers animados permanecen bajo tu control en la pes #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF animado" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Video GIF animado" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Los íconos animados requieren la función de comunidad {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Imagen animada" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Vista previa de imagen animada" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Las cargas de contenido animado requieren una suscripción a {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Video animado" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Estado de la aplicación" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Ventana de aplicación" @@ -4361,7 +4346,7 @@ msgstr "Aplicación actualizada con éxito" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplicaciones" @@ -4586,7 +4571,7 @@ msgstr "archivo adjunto" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Adjunto {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Archivo adjunto caducado" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "El archivo adjunto caducó o no está disponible" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID de archivo adjunto copiado al portapapeles" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Nivel de audio" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio silenciado" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Pérdida de paquetes de audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Reproductor de audio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Vista previa de audio" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Procesamiento de audio (voz enfocada)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Progreso del audio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Configuración de audio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Fuentes de audio: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automático ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Control automático de ganancia" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Atrás en el navegador" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Predeterminado del navegador" @@ -6198,20 +6183,20 @@ msgstr "Llamadas" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Cámara" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Se necesita acceso a la cámara para las vistas previas de dispositivos" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "No se concedió acceso a la cámara. Actualiza los permisos de la cámara e inténtalo de nuevo." @@ -6276,13 +6261,13 @@ msgstr "Vista previa de la cámara" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Calidad de la cámara" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Configuración de la cámara" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Falló la verificación del captcha. Intenta de nuevo." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Capturar" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Capturar audio de la app" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Capturar audio del escritorio" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Capturar audio del dispositivo" @@ -6736,12 +6721,12 @@ msgstr "Cambio programado" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Cambiar transmisión" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Cambiar fuente de transmisión" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Acceso al canal" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Acceso al canal denegado" @@ -7097,7 +7082,7 @@ msgstr "ID del canal copiado al portapapeles" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "enlace al canal" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Elige un método de pago" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Elige algo para compartir" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Borrar dominios de confianza ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Texto más claro" @@ -8285,7 +8270,7 @@ msgstr "Contraer tema del canal" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Contraer dispositivos" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Creador de la comunidad" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Desactivar sonido en la comunidad" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Barra de notificación de requisito de MFA de la comunidad" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Silenciar micrófono en la comunidad" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configurar ahora" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configurar o dejar de compartir pantalla" @@ -8904,7 +8889,7 @@ msgstr "Confirmación o doble clic para unirse a canales de voz de la comunidad" msgid "Conflicts with {conflictLabel}" msgstr "Conflicto con {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Conecta una cámara e inténtalo de nuevo." @@ -8913,7 +8898,7 @@ msgstr "Conecta una cámara e inténtalo de nuevo." msgid "Connect a camera or virtual capture device, then try again." msgstr "Conecta una cámara o un dispositivo de captura virtual y vuelve a intentarlo." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Conecta una pantalla y vuelve a intentarlo." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Controles de volumen de conexión" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Conexión: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Se copió el JSON de estadísticas al portapapeles" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copiado al portapapeles" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copiar ID de archivo adjunto" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copiar audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copiar enlace de audio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copiar punto de conexión" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copiar enlace del archivo" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copiar GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copiar enlace del GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copiar identificador" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copiar imagen" @@ -9448,7 +9433,7 @@ msgstr "Copiar imagen" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copiar enlace de la imagen" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copiar enlace a la sección" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copiar archivo multimedia" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copiar valor" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copiar video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copiar enlace del video" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copiar URL del webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Copiando imagen..." @@ -10588,7 +10573,7 @@ msgstr "Actualmente: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Personalizado" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Desactivar" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Desactivar sonido" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Desactivar sonido en todos los dispositivos" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Desactivar sonido en el dispositivo" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Desactivar el sonido para otros miembros en los canales de voz, de modo que no puedan oír ni hablar." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Atajo para desactivar sonido" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Desactivar mi sonido" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Sonido desactivado" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Sonido desactivado por los moderadores" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Predeterminado" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Cámara predeterminada" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "¿Eliminar :{emojiName}:? No se puede deshacer." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "¿Eliminar \"{memeName}\"? No se puede deshacer." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Eliminar invitación" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Eliminar contenido multimedia" @@ -11466,8 +11451,8 @@ msgstr "Eliminar rol" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Eliminar contenido multimedia guardado" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Ausente en la computadora" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Dispositivo de escritorio" @@ -11849,13 +11834,13 @@ msgstr "Estado de desarrollador" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Herramientas de desarrollador" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Las herramientas de desarrollador están disponibles desde la insignia de personal en el encabezado del canal." @@ -11879,6 +11864,17 @@ msgstr "Dispositivo" msgid "Device alerts" msgstr "Alertas del dispositivo" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Audio del dispositivo ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Audio del dispositivo solamente" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Detalles del dispositivo" @@ -11888,7 +11884,7 @@ msgstr "Detalles del dispositivo" msgid "Device revoked" msgstr "Dispositivo revocado" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Selección de dispositivo" @@ -11912,7 +11908,7 @@ msgstr "Dispositivo:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Dispositivos" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Atenuar texto tachado" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Entrada directa" @@ -12020,7 +12016,7 @@ msgstr "Subida directa activa" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Desactivar" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Valor deshabilitado" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Desactivar las vistas previas detendrá las cargas futuras de vistas previas. Las imágenes de vista previa existentes podrían seguir siendo visibles hasta que finalice la transmisión o se actualicen las vistas previas." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Descartar mensaje de voz" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Desconectar" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Desconectar todos los dispositivos" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Desconectar dispositivo" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Visualización" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Pantalla" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification y colócalo en tu carpeta <1>.well-known para que podamos validar el dominio." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Descargar audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Descargar actualización de escritorio {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Descargar archivo" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Descargar fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Descargar GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Descargar imagen" @@ -12714,7 +12710,7 @@ msgstr "Descargar instalador" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Descargar contenido multimedia" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Descargar paquete" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Descargar video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Eco" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Cancelación de eco" @@ -12963,7 +12959,7 @@ msgstr "Editar acceso para {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Editar texto alternativo" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Editar atajo de teclado" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Editar contenido multimedia" @@ -13102,8 +13098,8 @@ msgstr "Editar motor de búsqueda de imágenes inversas" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Editar contenido multimedia guardado" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Activar notificaciones del navegador" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Habilita el acceso a la cámara para previsualizar cámaras y dispositivos de captura antes de elegir uno para transmitir." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Activa o desactiva los traductores integrados. Los traductores activados aparecen en el menú contextual del mensaje cuando se selecciona texto." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Habilitar vistas previas" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Dejar de compartir pantalla" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "El cifrado de extremo a extremo no está disponible porque un participante de esta llamada usa un cliente que no lo admite." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "El cifrado de extremo a extremo no está disponible porque un participante de este canal de voz usa un cliente que no lo admite." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Entretenimiento" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Toda la pantalla" @@ -14095,7 +14091,7 @@ msgstr "Toda la pantalla" msgid "Entire system" msgstr "Sistema completo" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Audio de todo el sistema" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "excluir a un usuario" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Excluir del sistema" @@ -14593,7 +14589,7 @@ msgstr "No se pudo copiar el enlace de invitación" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "No se pudo copiar al portapapeles" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "No se pudieron cargar las invitaciones. Intenta de nuevo." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "No se pudieron cargar las fuentes compartibles." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Activar ventana" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Voz enfocada" @@ -15322,10 +15318,6 @@ msgstr "Configuración de la carpeta" msgid "Follow us on {blueskyProviderName}" msgstr "Síguenos en {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Seguir entrada de voz" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Reenviar" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avanzar {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -15592,14 +15584,14 @@ msgstr "Marco" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Velocidad de fotogramas" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Las velocidades de fotogramas superiores a 30 FPS requieren {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Y / triángulo (control)" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Juegos" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Cargando el selector de GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Vista previa de GIF" @@ -16429,7 +16421,7 @@ msgstr "Se otorgaron {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Otorga todos los permisos y omite las restricciones del canal. Muy delicado." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Selección detallada" @@ -16992,7 +16984,7 @@ msgstr "Ocultar contraseña" msgid "Hide picture-in-picture popout?" msgstr "¿Ocultar la ventana flotante de imagen en imagen?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Ocultar miniatura de vista previa" @@ -17386,7 +17378,7 @@ msgstr "Si quieres que estos miembros accedan a mensajes del historial posterior #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorar" @@ -17395,11 +17387,11 @@ msgstr "Ignorar" msgid "Ignore friend request" msgstr "Ignorar solicitud de amistad" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorar dispositivos de hardware" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorar contenido multimedia de entrada" @@ -17430,7 +17422,7 @@ msgstr "¿Ignorar la solicitud de amistad de {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorar el tiempo de espera de modo lento de este canal." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorar virtual" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Imagen" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Recursos de imagen" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Imagen copiada al portapapeles" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opciones de imagen" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Vista previa de la imagen" @@ -17540,7 +17532,7 @@ msgstr "Imagen subida" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "En llamada" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "En el chat de voz" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Incluir todos excepto los seleccionados" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Incluir aplicaciones" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Entrada y salida" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Dispositivo de entrada" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Perfil de entrada: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Configuración de entrada" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Estados de entrada" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Volumen de entrada" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "El enlace de invitación está oculto mientras compartes:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Enlace de invitación oculto mientras compartes pantalla" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Ir a {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Ir a {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Ir a la llamada actual" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Ir al canal enlazado" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Ir al mensaje enlazado" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Ir al mensaje de {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Ir al mensaje en {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Diseño" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Más información sobre las vistas previas del uso compartido de pantalla" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Estilo de enlaces" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Enlace no disponible" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Aplicación para Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Predeterminado de Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Cargando tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Cargando..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Aplicación para macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Predeterminado de macOS" @@ -20289,7 +20281,7 @@ msgstr "Siguiente pista" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opciones de contenido multimedia" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Reproducir/pausar" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Vista previa de contenido multimedia" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Diseño de mensajes" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "enlace del mensaje" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Prueba de micrófono" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "El audio del micrófono, la imagen de la cámara y la pantalla compartida se cifran de extremo a extremo." @@ -21019,7 +21011,7 @@ msgstr "Menores en riesgo, contenido para adultos en el lugar equivocado o condu #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Palabras mal escritas" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Dispositivo móvil" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Silenciar todo" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Silenciar todos los dispositivos" @@ -21653,13 +21645,13 @@ msgstr "Silenciado" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Micrófono silenciado" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Silenciado por los moderadores" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Sin permiso de {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Sin acceso" @@ -22282,7 +22274,7 @@ msgstr "No se encontraron configuraciones avanzadas" msgid "No AFK channel" msgstr "Sin canal de inactividad" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "No se encontraron ventanas de aplicaciones" @@ -22300,6 +22292,11 @@ msgstr "Aún no hay recursos" msgid "No audio" msgstr "Sin audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "No hay audio de este dispositivo" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "No hay aplicaciones autorizadas" @@ -22341,7 +22338,7 @@ msgstr "Sin mensajes guardados" msgid "No bot banner" msgstr "Sin banner de bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "No se encontró ninguna cámara" @@ -22421,7 +22418,7 @@ msgstr "Sin descripción." msgid "No desktop update is available." msgstr "No hay actualizaciones disponibles para la aplicación de escritorio." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "No se encontraron pantallas" @@ -22650,7 +22647,7 @@ msgstr "No se recibió el cuerpo de la respuesta" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Sin resultados" @@ -22679,7 +22676,7 @@ msgstr "Todavía no hay roles. Agrega roles en {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "No hay contenido multimedia guardado" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Puerta de ruido" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Supresión de ruido" @@ -22877,7 +22874,7 @@ msgstr "No convertir" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Ninguno" @@ -23286,7 +23283,7 @@ msgstr "Solo se aplica en pantallas anchas." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Solo se aceptan tarjetas de crédito. Las tarjetas de débito y prepago no se pueden usar para la verificación de contenido para adultos." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Solo altavoces predeterminados" @@ -23334,7 +23331,7 @@ msgstr "Solo ejecuta código aquí si entiendes exactamente lo que hace." msgid "Only show message previews for DMs with unread messages" msgstr "Mostrar vistas previas de mensajes solo en los MD con mensajes sin leer" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Solo altavoces" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Abrir {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Abrir {labelText} en la configuración" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Abrir @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Abrir configuración avanzada de contenido multimedia" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Abre la ventana de una aplicación y vuelve a intentarlo." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Abrir GIF animado en vista completa" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Abrir video GIF animado en vista completa" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Abrir audio en vista completa" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Abrir enlace de audio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Abrir navegador" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Abrir selector del navegador" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Abrir menú de favoritos" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Abrir enlace de archivo" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Abrir enlace GIF" @@ -23651,7 +23648,7 @@ msgstr "Abrir imagen en el navegador" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Abrir imagen en vista completa" @@ -23660,7 +23657,7 @@ msgstr "Abrir imagen en vista completa" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Abrir enlace de la imagen" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Abrir MD del sistema" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Abrir selector del sistema" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Abrir video en vista completa" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Abrir enlace de video" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Abrir chat de voz" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Abrir configuración de audio y video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Salida" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Dispositivo de salida" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Configuración de salida" @@ -24094,7 +24091,7 @@ msgstr "Configuración de salida" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Volumen de salida" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Límite de participantes" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opciones de participante para {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Vista previa oculta" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Las imágenes de vista previa se almacenan temporalmente en {productName} para su entrega y no están cifradas de extremo a extremo. Desactiva las vistas previas si no quieres que los fotogramas del uso compartido de pantalla se suban para crear miniaturas." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Las imágenes de vista previa se almacenan temporalmente en {productName} para su entrega y no están cifradas de extremo a extremo. Las personas en este grupo de mensajes directos no necesitan estar viendo activamente tu transmisión para ver la miniatura." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Las imágenes de vista previa se almacenan temporalmente en {productName} para su entrega y no están cifradas de extremo a extremo. Las personas aún necesitan permiso para conectarse, pero no tienen que estar viendo activamente tu transmisión." @@ -26269,7 +26266,7 @@ msgstr "Referencia copiada." msgid "Referral parameters" msgstr "Parámetros de referencia" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Actualizar fuentes de audio" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Se hizo clic en el botón normal." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Rechazar" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Eliminar del grupo" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Quitar del contenido multimedia guardado" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Quitar de la parte superior" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Quitar de los GIF favoritos guardados por URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Se revocó el baneo de {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Retroceder {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -28202,7 +28199,7 @@ msgstr "Guardar ícono" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "¡Guarda contenido multimedia de los mensajes para empezar!" @@ -28313,7 +28310,7 @@ msgstr "Se necesita permiso para grabar la pantalla" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Compartir pantalla" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Amplificación del audio de la pantalla compartida" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "No se pudo iniciar el audio de la pantalla compartida" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Controles del codificador para compartir pantalla" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Se detuvo el uso compartido de pantalla" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Comportamiento de la vista previa de la pantalla compartida" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Vistas previas de la pantalla compartida" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Las vistas previas de la pantalla compartida están desactivadas." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Las vistas previas de la pantalla compartida están activadas." @@ -28391,13 +28388,13 @@ msgstr "Privacidad de compartir pantalla" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Calidad de la pantalla compartida" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Configuración de la pantalla compartida" @@ -28723,7 +28720,7 @@ msgstr "Buscar roles o miembros…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Buscar contenido multimedia guardado" @@ -28942,12 +28939,12 @@ msgstr "Vista previa al recorrer el video" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Seleccionar" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Selecciona {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Enviar enlace para restablecer" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Enviar contenido multimedia guardado {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Se estableció una posición en la lista de miembros para el rol" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Establecido por el preset {preset}. Al elegir un valor aquí, se cambiará a Personalizado." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Establece volúmenes personalizados para cada sonido. Los sonidos sin un volumen personalizado siguen el volumen principal." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Establecer atajo para desactivar el sonido" @@ -29669,11 +29666,6 @@ msgstr "Dejar esta verificación pendiente" msgid "Set this check aside?" msgstr "¿Dejar esta verificación pendiente?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Enviado a {resolution} a {frameRate} FPS con {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Configuración" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "enlace de configuración" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Compartir regalo" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Compartir pantalla" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Compartir con los moderadores de la comunidad." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Compartir pantalla" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Comparte tu pantalla en alta definición (1080p), quad HD (1440p) o a la resolución nativa de la fuente, hasta a 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Ventana compartida" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio de la ventana compartida" @@ -30624,6 +30616,10 @@ msgstr "Llamadas silenciosas" msgid "Silent calls from everyone" msgstr "Llamadas silenciosas de todos" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silencioso cuando el dispositivo de captura no tiene entrada de audio propia" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Desplazamiento suave" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Video más fluido" @@ -31005,11 +31001,6 @@ msgstr "No se pudieron agregar algunos emojis" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Algunos archivos que intentas subir superan el límite de tamaño máximo de {maxSizeFormatted} por archivo." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "No se pudieron aplicar algunas configuraciones de transmisión a tu transmisión en vivo." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Sonidos" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Original" @@ -31569,7 +31560,7 @@ msgstr "¿Iniciar una llamada de voz?" msgid "Start call" msgstr "Iniciar llamada" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Iniciar prueba de cámara y configurar efectos" @@ -31910,7 +31901,7 @@ msgstr "Detener la lectura en voz alta" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Dejar de transmitir" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "¿Dejar de confiar en todos los enlaces?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Dejar de ver" @@ -31982,7 +31973,7 @@ msgstr "Evita que el audio de tus parlantes se escuche en tu micrófono." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Transmisión" @@ -32001,11 +31992,6 @@ msgstr "Transmisión finalizada" msgid "Stream hidden" msgstr "Transmisión oculta" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "La transmisión no sigue el ritmo" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Calidad de transmisión" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Configuración de la transmisión" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Se ajustaron la configuración de la transmisión" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Anuncios del personal de {productName}. No puedes responder aquí." #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Predeterminado del sistema" @@ -33036,13 +33017,8 @@ msgstr "El bot se agregó a <0>{destinationName}." msgid "The bot has been added." msgstr "Se añadió el bot." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "El navegador está enviando {deliveredResolution} en lugar de {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "La vista previa de la cámara aún se está deteniendo. Intenta transmitir de nuevo en un momento." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "El rol otorgaba {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "La fuente de uso compartido de pantalla dejó de enviar video, por lo que se detuvo el uso compartido de pantalla." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Esta consola del navegador es una herramienta para desarrolladores." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Esta llamada está cifrada de extremo a extremo." @@ -33645,11 +33621,6 @@ msgstr "Esta versión de escritorio no puede instalar actualizaciones dentro de msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Esta versión de desarrollo no se puede actualizar automáticamente. Descarga un instalador de escritorio para probar el flujo de actualización." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Este dispositivo no pudo seguir el ritmo de {targetResolution} a {targetFrameRate} FPS la última vez, por lo que tu transmisión comenzó a {resolution} a {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Esta instalación está gestionada por tu sistema. Actualiza {productName} desde tu centro de software o gestor de paquetes." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Esta instancia actualmente permite compartir pantalla hasta 720p a 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Este canal de enlaces está marcado para contenido para adultos y puede mostrar material que no es apropiado para algunos usuarios." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Este enlace no está disponible para tu cuenta." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Esta opción es obligatoria. Por favor, proporciona un valor." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Este participante no puede hablar en este canal" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Este participante tiene el sonido desactivado" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Los moderadores desactivaron el sonido de este participante" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Este número de teléfono ya ha sido utilizado. Prueba con otro número o contacta a soporte." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Este selector solo está disponible en la aplicación de escritorio." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Alternar controles" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Activar/desactivar sonido" @@ -34666,7 +34637,7 @@ msgstr "Los cambios en el ícono de la bandeja solo se aplican después de reini #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIFs del momento" @@ -34760,7 +34731,7 @@ msgstr "Prueba con otra búsqueda." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Prueba otro término de búsqueda o filtro" @@ -34839,11 +34810,6 @@ msgstr "Prueba con otros filtros o términos de búsqueda." msgid "Try editing your message again." msgstr "Intenta editar tu mensaje de nuevo." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Intenta de nuevo con calidad completa" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Prueba buscando algo como \"tema\", \"notificaciones\" o \"privacidad\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Desactiva lo que no te parezca bien. Es posible que algunas funciones dejen de funcionar." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Desactiva el audio compartido para esta fuente o inténtalo de nuevo en un momento." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Activar automáticamente cuando se detecte OBS o XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Activar cámara" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Incobrable" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Activar sonido" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Activar el sonido en todos los dispositivos" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Activar sonido" @@ -35558,7 +35524,7 @@ msgstr "usuario desconocido" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Usuario desconocido" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Desbloquea los emojis personalizados en los MD con {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Desbloquea la pantalla compartida en HD con {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Activar el sonido «{label}»" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Activar el micrófono en todos los dispositivos" @@ -35741,7 +35707,7 @@ msgstr "Grupo sin nombre" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Entrada sin nombre" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Sube nuevos emojis y stickers, y administra tus propias creaciones." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Subir fotogramas de vista previa de la pantalla compartida." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copiada al portapapeles" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Etiqueta de usuario (opcional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volumen del usuario" @@ -37227,7 +37193,7 @@ msgstr "Pérdida de paquetes de video:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Vista previa del video" @@ -37283,7 +37249,7 @@ msgstr "Subir video" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Audio y video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Configuración de audio y video" @@ -37685,7 +37651,7 @@ msgstr "Atajos de voz y video" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Llamada de voz" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Depurar conexión de voz" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Desactivar sonido" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Mensaje de voz" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Reproductor de mensaje de voz" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Configuración de voz" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Activar sonido" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Espera aquí" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Esperando conexión..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Cuando se publica como enlace en el chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Cuando las vistas previas están activadas, {productName} sube de vez en cuando fotogramas JPEG de tu pantalla compartida para que las otras personas de este MD de grupo puedan ver una miniatura antes de ver la transmisión." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Cuando las vistas previas están activadas, {productName} sube de vez en cuando fotogramas JPEG de tu pantalla compartida para que las personas con permiso para conectarse a este canal de voz puedan ver una miniatura antes de ver la transmisión." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Cuando las vistas previas están activadas, {productName} sube de vez en cuando fotogramas JPEG de tu pantalla compartida para que la otra persona de este MD pueda ver una miniatura antes de ver la transmisión." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Las ventanas cortadas en la parte superior o inferior de la pantalla, y las DevTools acopladas, pueden mostrar un fondo gris en lugar de permanecer transparentes." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Predeterminado de Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Te han baneado de esta comunidad y no puedes unirte." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Tienes el sonido desactivado" @@ -38833,11 +38799,6 @@ msgstr "Estás usando una compilación {releaseChannel} de {productName}." msgid "You aren't in any communities right now." msgstr "No estás en ninguna comunidad en este momento." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Pediste {resolution} a {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "No puedes enviar mensajes en esta comunidad." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "No puedes compartir tu pantalla en este canal" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "No puedes hablar en este canal" @@ -39036,7 +38997,7 @@ msgstr "No puedes hablar en este canal" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "No puedes encender tu cámara en este canal" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Cambiaste tu etiqueta mientras usabas {PREMIUM_PRODUCT_NAME}. Se volverá a generar aleatoriamente cuando venza tu {PREMIUM_PRODUCT_NAME}, a menos que se renueve." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "No tienes acceso al canal donde se envió este mensaje." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Te quedas en {ownedNames}. Los propietarios no pueden abandonar su propia comunidad." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Los moderadores desactivaron tu sonido" @@ -39699,11 +39660,6 @@ msgstr "Tu solicitud está pendiente de revisión. Aún puedes actualizar los da msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Tu navegador requiere interacción del usuario para poder reproducir audio. Haz clic en el botón de abajo para habilitar el chat de voz." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Tu dispositivo de captura está enviando {deliveredResolution} en lugar de {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Estamos comprobando si tu tarjeta cumple los requisitos para acceder a precios locales. Esto suele tardar un momento." @@ -39734,36 +39690,11 @@ msgstr "Tu comunidad aparece en Descubrir. Puedes actualizar los datos publicado msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Tu comunidad necesita al menos {minMemberCount, plural, one {# miembro} many {# miembros} other {# miembros}} para poder aparecer en Descubrir." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Tu conexión no da abasto. Tu transmisión está configurada a {frameRate} FPS en {resolution} y los espectadores están recibiendo aproximadamente {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Se ha comprobado tu tarjeta de crédito. Si la tarjeta es válida, el contenido para adultos se desbloqueará en breve. Puedes cerrar esta pestaña y volver a la aplicación." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Tu dispositivo no puede seguir el ritmo. Tu transmisión está configurada a {frameRate} FPS en {resolution} y los espectadores están recibiendo aproximadamente {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Tu dispositivo no pudo seguir el ritmo, por lo que tu transmisión ahora envía {frameRate} FPS para mantener {resolution} nítida." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Tu dispositivo no pudo seguir el ritmo, por lo que tu transmisión ahora envía {resolution} a {frameRate} FPS en lugar de {targetResolution} a {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Tu dispositivo no pudo seguir el ritmo, por lo que tu transmisión ahora envía {resolution} para mantener {frameRate} FPS fluidos." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Tu registro necesita una verificación antispam adicional antes de que puedas continuar." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Tu {savedResolution} guardado a {savedFrameRate} FPS requiere {premiumProductName}, por lo que los envíos usan {resolution} a {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "No se pudo publicar tu pantalla compartida con un códec de video compatible, por lo que se detuvo. Intenta compartir de nuevo." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Tu fuente produce aproximadamente {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Tu transmisión sigue activa" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Tu transmisión cambió a {codec} porque {previousCodec} no pudo seguir el ritmo en este dispositivo. Es posible que los espectadores vean una breve pausa." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Tu URL personalizada se estableció en {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Tu codificador de video dejó de procesar fotogramas, por lo que se detuvo tu uso compartido de pantalla. Intenta compartir de nuevo." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Tu codificador de video se detuvo, por lo que tu transmisión cambió a {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/es-ES/messages.po b/fluxer_app/src/features/i18n/locales/es-ES/messages.po index 45178165c..12af485f4 100644 --- a/fluxer_app/src/features/i18n/locales/es-ES/messages.po +++ b/fluxer_app/src/features/i18n/locales/es-ES/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} quiere conectarse" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} usará esta cuenta para esta autorización." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} no puede seguir el ritmo en este dispositivo. Selecciona el códec Automático en los ajustes Avanzados para permitir uno más rápido." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} solo es accesible para los miembros del personal de {pro msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Sin límite} one {# participante} other {# participantes}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# línea restante)} other {... (# líneas restantes)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# fila restante)} other {... (# filas restantes)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Expandir (# línea)} other {Expandir (# líneas)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Mostrar (# fila)} other {Mostrar (# filas)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Mostrar # dispositivo más} other {Mostrar # dispositivos más}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {En llamada} other {# en llamada}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Unirse a la videollamada (# participante)} other {Unirse a la videollamada (# participantes)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Seguir viendo # transmisión y añadir esta} other {Seguir viendo # transmisiones y añadir esta}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Tu enlace de invitación caduca en # día.} many {Tu enlace de invitación caduca en # días.} other {Tu enlace de invitación caduca en # días.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} horas" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# personalización} other {# personalizacio msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} primero verificará que tu tarjeta es apta para precios localizados y luego te dirigirá al pago. Vuelve a {productName} cuando hayas terminado." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} no está disponible en este dispositivo, por lo que tu transmisión usa {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} necesita acceso a tu micrófono. Permite el acceso al micrófono en los ajustes de privacidad de tu sistema operativo y reinicia la aplicación." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} necesita acceso a la cámara para mostrar tus dispositivos." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} en línea" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "una URL escrita en el texto del mensaje" msgid "a user" msgstr "un usuario" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Un espectador no puede reproducir {pinnedCodec}, por lo que tu stream usa {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Aceptar" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Contestar" @@ -3178,12 +3163,12 @@ msgstr "Añadir a grupo" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Añadir a contenido multimedia guardado" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Añadir a los GIF favoritos solo por URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avanzado" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Ajustes avanzados de vídeo" @@ -3451,7 +3436,7 @@ msgstr "Los controles de alineación solo están disponibles en pantallas más a #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Permitir" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Permitir {everyoneMention} y {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Permite que {PRODUCT_NAME} acceda a tu cámara en {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Permitir mensajes directos del bot" msgid "Allow bots to send you direct messages?" msgstr "¿Permitir que los bots te envíen mensajes directos?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Permitir acceso a la cámara" @@ -4014,13 +3999,13 @@ msgstr "Los emojis animados, los GIF y las pegatinas permanecen bajo tu control #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF animado" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Vídeo GIF animado" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Los iconos animados requieren la característica de comunidad {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Imagen animada" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Vista previa de imagen animada" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Las cargas de contenido animado requieren una suscripción a {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Vídeo animado" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Estado de la aplicación" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Ventana de la aplicación" @@ -4361,7 +4346,7 @@ msgstr "Aplicación actualizada correctamente" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplicaciones" @@ -4586,7 +4571,7 @@ msgstr "adjunto" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Adjunto {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Archivo adjunto caducado" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "El archivo adjunto ha caducado o no está disponible" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID de archivo adjunto copiado al portapapeles" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Nivel de audio" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio silenciado" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Pérdida de paquetes de audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Reproductor de audio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Previsualización de audio" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Procesamiento de audio (voz enfocada)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Progreso del audio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Ajustes de audio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Fuentes de audio: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automático ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Control automático de ganancia" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Atrás en el navegador" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Predeterminado del navegador" @@ -6198,20 +6183,20 @@ msgstr "Llamadas" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Cámara" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Se necesita acceso a la cámara para las vistas previas de dispositivos" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "No se ha concedido acceso a la cámara. Actualiza los permisos de la cámara y vuelve a intentarlo." @@ -6276,13 +6261,13 @@ msgstr "Previsualización de la cámara" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Calidad de la cámara" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Ajustes de la cámara" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Error de verificación de captcha. Inténtalo de nuevo." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Capturar" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Capturar audio de la aplicación" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Capturar audio del escritorio" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Capturar audio del dispositivo" @@ -6736,12 +6721,12 @@ msgstr "Cambio programado" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Cambiar transmisión" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Cambiar fuente de la transmisión" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Acceso al canal" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Acceso al canal denegado" @@ -7097,7 +7082,7 @@ msgstr "ID del canal copiado al portapapeles" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "enlace del canal" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Elige un método de pago" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Elige algo para compartir" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Borrar dominios de confianza ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Texto más claro" @@ -8285,7 +8270,7 @@ msgstr "Contraer tema del canal" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Contraer dispositivos" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Creador de la comunidad" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Desactivar sonido en la comunidad" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Barra de notificación de requisito de MFA de la comunidad" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Silenciar micrófono en la comunidad" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configurar ahora" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configurar o dejar de compartir pantalla" @@ -8904,7 +8889,7 @@ msgstr "Confirmación o doble clic para unirse a los canales de voz de la comuni msgid "Conflicts with {conflictLabel}" msgstr "Entra en conflicto con {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Conecta una cámara y vuelve a intentarlo." @@ -8913,7 +8898,7 @@ msgstr "Conecta una cámara y vuelve a intentarlo." msgid "Connect a camera or virtual capture device, then try again." msgstr "Conecta una cámara o un dispositivo de captura virtual y vuelve a intentarlo." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Conecta una pantalla y vuelve a intentarlo." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Controles de volumen de conexión" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Conexión: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "JSON de estadísticas copiado al portapapeles" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copiado al portapapeles" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copiar ID de archivo adjunto" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copiar audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copiar enlace de audio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copiar punto de conexión" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copiar enlace del archivo" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copiar GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copiar enlace del GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copiar identificador" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copiar imagen" @@ -9448,7 +9433,7 @@ msgstr "Copiar imagen" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copiar enlace de la imagen" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copiar enlace a la sección" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copiar archivo multimedia" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copiar valor" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copiar vídeo" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copiar enlace del vídeo" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copiar URL del webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Copiando imagen..." @@ -10588,7 +10573,7 @@ msgstr "Actualmente: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Personalizado" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Desactivar" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Desactivar sonido" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Desactivar sonido en todos los dispositivos" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Desactivar sonido en el dispositivo" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Desactivar el sonido para otros miembros en los canales de voz, de modo que no puedan oír ni hablar." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Atajo para desactivar sonido" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Desactivar mi sonido" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Sonido desactivado" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Sonido desactivado por los moderadores" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Predeterminado" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Cámara predeterminada" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "¿Eliminar :{emojiName}:? No se puede deshacer." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "¿Eliminar \"{memeName}\"? No se podrá deshacer." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Eliminar invitación" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Eliminar contenido multimedia" @@ -11466,8 +11451,8 @@ msgstr "Eliminar rol" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Eliminar contenido multimedia guardado" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Ausente en el ordenador" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Dispositivo de escritorio" @@ -11849,13 +11834,13 @@ msgstr "Estado de desarrollador" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Herramientas de desarrollador" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Las herramientas de desarrollador están disponibles desde la insignia de personal en el encabezado del canal." @@ -11879,6 +11864,17 @@ msgstr "Dispositivo" msgid "Device alerts" msgstr "Alertas del dispositivo" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Audio del dispositivo ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Solo audio del dispositivo" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Detalles del dispositivo" @@ -11888,7 +11884,7 @@ msgstr "Detalles del dispositivo" msgid "Device revoked" msgstr "Dispositivo revocado" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Selección de dispositivo" @@ -11912,7 +11908,7 @@ msgstr "Dispositivo:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Dispositivos" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Atenuar texto tachado" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Entrada directa" @@ -12020,7 +12016,7 @@ msgstr "Subida directa activa" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Desactivar" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Valor deshabilitado" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Desactivar las vistas previas detendrá las futuras cargas de imágenes de vista previa. Las imágenes de vista previa ya cargadas podrían seguir siendo visibles hasta que finalice la transmisión o se actualicen las vistas previas." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Descartar mensaje de voz" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Desconectar" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Desconectar todos los dispositivos" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Desconectar dispositivo" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Visualización" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Pantalla" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification y colócalo en tu carpeta <1>.well-known para que podamos validar el dominio." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Descargar audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Descargar actualización de escritorio {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Descargar archivo" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Descargar fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Descargar GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Descargar imagen" @@ -12714,7 +12710,7 @@ msgstr "Descargar instalador" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Descargar contenido multimedia" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Descargar paquete" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Descargar vídeo" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Eco" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Cancelación de eco" @@ -12963,7 +12959,7 @@ msgstr "Editar acceso para {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Editar texto alternativo" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Editar atajo de teclado" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Editar contenido multimedia" @@ -13102,8 +13098,8 @@ msgstr "Editar motor de búsqueda de imagen inversa" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Editar contenido multimedia guardado" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Activar las notificaciones del navegador" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Activa el acceso a la cámara para previsualizar cámaras y dispositivos de captura antes de elegir uno para transmitir." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Activa o desactiva los traductores integrados. Los traductores activados aparecen en el menú contextual del mensaje cuando se selecciona texto." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Activar previsualizaciones" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Dejar de compartir pantalla" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "El cifrado de extremo a extremo no está disponible porque un participante de esta llamada usa un cliente que no lo admite." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "El cifrado de extremo a extremo no está disponible porque un participante de este canal de voz usa un cliente que no lo admite." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Entretenimiento" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Toda la pantalla" @@ -14095,7 +14091,7 @@ msgstr "Toda la pantalla" msgid "Entire system" msgstr "Todo el sistema" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Audio de todo el sistema" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "excluir a un usuario" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Excluir del sistema" @@ -14593,7 +14589,7 @@ msgstr "No se pudo copiar el enlace de invitación" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "No se pudo copiar al portapapeles" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "No se pudieron cargar las invitaciones. Inténtalo de nuevo." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "No se han podido cargar las fuentes compartibles." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Activar ventana" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Voz enfocada" @@ -15322,10 +15318,6 @@ msgstr "Ajustes de la carpeta" msgid "Follow us on {blueskyProviderName}" msgstr "Síguenos en {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Seguir entrada de voz" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Reenviar" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avanzar {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -15592,14 +15584,14 @@ msgstr "Marco" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Velocidad de fotogramas" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Las velocidades de fotogramas superiores a 30 FPS requieren {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Y / triángulo (mando)" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Juegos" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Cargando el selector de GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Previsualización de GIF" @@ -16429,7 +16421,7 @@ msgstr "Concedido {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Concede todos los permisos y omite las restricciones del canal. Muy sensible." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Selección granular" @@ -16992,7 +16984,7 @@ msgstr "Ocultar contraseña" msgid "Hide picture-in-picture popout?" msgstr "¿Ocultar la ventana flotante de imagen en imagen?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Ocultar miniatura de previsualización" @@ -17386,7 +17378,7 @@ msgstr "Si quieres que estos miembros accedan a mensajes del historial posterior #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorar" @@ -17395,11 +17387,11 @@ msgstr "Ignorar" msgid "Ignore friend request" msgstr "Ignorar solicitud de amistad" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorar dispositivos de hardware" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorar contenido multimedia de entrada" @@ -17430,7 +17422,7 @@ msgstr "¿Ignorar la solicitud de amistad de {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorar el tiempo de espera de modo lento de este canal." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorar virtual" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Imagen" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Recursos de imagen" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Imagen copiada al portapapeles" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opciones de imagen" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Vista previa de la imagen" @@ -17540,7 +17532,7 @@ msgstr "Imagen subida" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "En llamada de voz" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "En el chat de voz" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Incluir todo excepto lo seleccionado" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Incluir aplicaciones" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Entrada y salida" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Dispositivo de entrada" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Perfil de entrada: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Ajustes de entrada" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Estados de entrada" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Volumen de entrada" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "El enlace de invitación está oculto mientras compartes:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Enlace de invitación oculto mientras compartes pantalla" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Ir a {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Ir a {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Ir a la llamada actual" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Ir al canal enlazado" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Ir al mensaje enlazado" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Ir al mensaje de {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Ir al mensaje en {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Diseño" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Más información sobre las vistas previas del uso compartido de pantalla" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Estilo de los enlaces" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Enlace no disponible" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Aplicación para Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Predeterminado de Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Cargando tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Cargando..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Aplicación para macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Predeterminado de macOS" @@ -20289,7 +20281,7 @@ msgstr "Siguiente pista" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opciones de contenido multimedia" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Reproducir/pausar" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Vista previa de contenido multimedia" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Diseño de los mensajes" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "enlace del mensaje" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Prueba de micrófono" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "El audio del micrófono, la imagen de la cámara y la pantalla compartida se cifran de extremo a extremo." @@ -21019,7 +21011,7 @@ msgstr "Menores en riesgo, contenido para adultos en el lugar equivocado o condu #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Palabras mal escritas" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Dispositivo móvil" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Silenciar todo" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Silenciar todos los dispositivos" @@ -21653,13 +21645,13 @@ msgstr "Silenciado" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Micrófono silenciado" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Silenciado por los moderadores" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Sin permiso de {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Sin acceso" @@ -22282,7 +22274,7 @@ msgstr "No se encontraron ajustes avanzados" msgid "No AFK channel" msgstr "Ningún canal AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "No se han encontrado ventanas de aplicaciones" @@ -22300,6 +22292,11 @@ msgstr "Aún no hay recursos" msgid "No audio" msgstr "Sin audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "No hay audio de este dispositivo" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "No hay aplicaciones autorizadas" @@ -22341,7 +22338,7 @@ msgstr "Sin mensajes guardados" msgid "No bot banner" msgstr "Sin banner de bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "No se ha encontrado ninguna cámara" @@ -22421,7 +22418,7 @@ msgstr "Sin descripción." msgid "No desktop update is available." msgstr "No hay actualizaciones disponibles para la aplicación de escritorio." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "No se encontraron pantallas" @@ -22650,7 +22647,7 @@ msgstr "No se ha recibido el cuerpo de la respuesta" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Sin resultados" @@ -22679,7 +22676,7 @@ msgstr "Aún no hay roles. Añade roles en {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "No hay contenido multimedia guardado" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Puerta de ruido" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Supresión de ruido" @@ -22877,7 +22874,7 @@ msgstr "No convertir" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Ninguno" @@ -23286,7 +23283,7 @@ msgstr "Solo se aplica en pantallas anchas." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Solo se aceptan tarjetas de crédito. Las tarjetas de débito y prepago no se pueden usar para la comprobación de contenido para adultos." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Solo altavoces predeterminados" @@ -23334,7 +23331,7 @@ msgstr "Ejecuta código aquí solo si entiendes exactamente lo que hace." msgid "Only show message previews for DMs with unread messages" msgstr "Mostrar vistas previas de mensajes solo en los MD con mensajes sin leer" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Solo altavoces" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Abrir {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Abrir {labelText} en los ajustes" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Abrir @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Abrir ajustes avanzados de contenido multimedia" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Abre una ventana de aplicación y vuelve a intentarlo." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Abrir GIF animado en vista completa" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Abrir vídeo GIF animado en vista completa" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Abrir audio en vista completa" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Abrir enlace de audio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Abrir navegador" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Abrir selector del navegador" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Abrir menú de favoritos" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Abrir enlace del archivo" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Abrir enlace GIF" @@ -23651,7 +23648,7 @@ msgstr "Abrir imagen en el navegador" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Abrir imagen en vista completa" @@ -23660,7 +23657,7 @@ msgstr "Abrir imagen en vista completa" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Abrir enlace de la imagen" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Abrir MD del sistema" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Abrir selector del sistema" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Abrir vídeo en vista completa" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Abrir enlace de vídeo" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Abrir chat de voz" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Abrir ajustes de audio y vídeo" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Salida" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Dispositivo de salida" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Ajustes de salida" @@ -24094,7 +24091,7 @@ msgstr "Ajustes de salida" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Volumen de salida" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Límite de participantes" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opciones de participante para {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Vista previa oculta" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Las imágenes de vista previa se almacenan temporalmente en {productName} para su entrega y no están cifradas de extremo a extremo. Desactiva las vistas previas si no quieres que se suban los fotogramas del uso compartido de pantalla para crear miniaturas." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Las imágenes de vista previa se almacenan temporalmente en {productName} para su entrega y no están cifradas de extremo a extremo. Las personas de este grupo de mensajes directos no necesitan estar viendo activamente tu transmisión para ver la miniatura." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Las imágenes de vista previa se almacenan temporalmente en {productName} para su entrega y no están cifradas de extremo a extremo. Los usuarios siguen necesitando permiso para conectarse, pero no necesitan estar viendo activamente tu transmisión." @@ -26269,7 +26266,7 @@ msgstr "Referencia copiada." msgid "Referral parameters" msgstr "Parámetros de referencia" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Actualizar fuentes de audio" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Botón normal pulsado." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Rechazar" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Eliminar del grupo" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Quitar del contenido multimedia guardado" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Quitar de la parte superior" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Eliminar de los GIF favoritos guardados por URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Se revocó el baneo de {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Retroceder {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -28202,7 +28199,7 @@ msgstr "Guardar icono" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "¡Guarda contenido multimedia de los mensajes para empezar!" @@ -28313,7 +28310,7 @@ msgstr "Se necesita permiso para grabar la pantalla" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Compartir pantalla" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Amplificación del audio de la pantalla compartida" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "No se pudo iniciar el audio de la pantalla compartida" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Controles del codificador para compartir pantalla" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Finalizó el uso compartido de pantalla" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Comportamiento de la vista previa de la pantalla compartida" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Vistas previas de la pantalla compartida" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Las vistas previas de la pantalla compartida están desactivadas." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Las vistas previas de la pantalla compartida están activadas." @@ -28391,13 +28388,13 @@ msgstr "Privacidad de compartir pantalla" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Calidad de la pantalla compartida" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Ajustes de compartir pantalla" @@ -28723,7 +28720,7 @@ msgstr "Buscar roles o miembros…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Buscar contenido multimedia guardado" @@ -28942,12 +28939,12 @@ msgstr "Vista previa al recorrer el vídeo" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Seleccionar" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Selecciona {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Enviar enlace de recuperación" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Enviar contenido multimedia guardado {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Se estableció una posición en la lista de miembros para el rol" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Establecido por el ajuste preestablecido {preset}. Seleccionar un valor aquí cambiará a Personalizado." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Establece volúmenes personalizados para cada sonido. Los sonidos sin un volumen personalizado siguen el volumen principal." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Establecer atajo para desactivar el sonido" @@ -29669,11 +29666,6 @@ msgstr "Dejar esta verificación pendiente" msgid "Set this check aside?" msgstr "¿Dejar esta verificación pendiente?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Enviar a {resolution} a {frameRate} FPS con {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Ajustes" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "enlace de ajustes" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Compartir regalo" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Compartir pantalla" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Compartir con los moderadores de la comunidad." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Compartir pantalla" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Comparte tu pantalla en alta definición (1080p), quad HD (1440p) o a la resolución nativa de la fuente, hasta a 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Ventana compartida" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio de la ventana compartida" @@ -30624,6 +30616,10 @@ msgstr "Llamadas silenciosas" msgid "Silent calls from everyone" msgstr "Llamadas silenciosas de todos" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silencioso cuando el dispositivo de captura no tiene entrada de audio propia" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Desplazamiento suave" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Vídeo más fluido" @@ -31005,11 +31001,6 @@ msgstr "No se pudieron añadir algunos emojis" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Algunos de los archivos que intentas subir superan el límite de tamaño máximo de {maxSizeFormatted} por archivo." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "No se pudieron aplicar algunas opciones de transmisión a tu transmisión en directo." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Sonidos" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Original" @@ -31569,7 +31560,7 @@ msgstr "¿Iniciar una llamada de voz?" msgid "Start call" msgstr "Iniciar llamada" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Iniciar prueba de cámara y configurar efectos" @@ -31910,7 +31901,7 @@ msgstr "Detener la lectura en voz alta" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Dejar de compartir" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "¿Dejar de confiar en todos los enlaces?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Dejar de ver" @@ -31982,7 +31973,7 @@ msgstr "Evita que el sonido de los altavoces se cuele por el micro." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Transmisión" @@ -32001,11 +31992,6 @@ msgstr "Transmisión finalizada" msgid "Stream hidden" msgstr "Transmisión oculta" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "La transmisión no sigue el ritmo" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Calidad de la transmisión" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Ajustes de la transmisión" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Se ajustaron los ajustes de la transmisión" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Anuncios del personal de {productName}. No puedes responder aquí." #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Predeterminado del sistema" @@ -33036,13 +33017,8 @@ msgstr "El bot se ha añadido a <0>{destinationName}." msgid "The bot has been added." msgstr "Se ha añadido el bot." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "El navegador está enviando {deliveredResolution} en lugar de {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "La vista previa de la cámara todavía se está deteniendo. Intenta transmitir de nuevo en un momento." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "El rol otorgaba {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "La fuente de uso compartido de pantalla dejó de enviar vídeo, por lo que se detuvo el uso compartido de pantalla." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Esta consola del navegador es una herramienta para desarrolladores." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Esta llamada está cifrada de extremo a extremo." @@ -33645,11 +33621,6 @@ msgstr "Esta versión de escritorio no puede instalar actualizaciones dentro de msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Esta versión de desarrollo no se puede actualizar automáticamente. Descarga un instalador de escritorio para probar el flujo de actualización." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Este dispositivo no pudo seguir el ritmo de {targetResolution} a {targetFrameRate} FPS la última vez, por lo que tu stream comenzó a {resolution} a {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Esta instalación está gestionada por tu sistema. Actualiza {productName} desde tu centro de software o gestor de paquetes." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Esta instancia permite actualmente compartir pantalla hasta 720p a 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Este canal de enlaces está marcado para contenido para adultos y puede abrir material que podría ser inapropiado para algunos usuarios." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Este enlace no está disponible para tu cuenta." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Esta opción es obligatoria. Por favor, proporciona un valor." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Este participante no puede hablar en este canal" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Este participante tiene el sonido desactivado" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Los moderadores desactivaron el sonido de este participante" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Este número de teléfono ya se ha usado. Prueba con otro número o contacta con el equipo de soporte." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Este selector solo está disponible en la aplicación de escritorio." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Alternar controles" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Activar/desactivar sonido" @@ -34666,7 +34637,7 @@ msgstr "Los cambios en el icono de la bandeja solo se aplican después de reinic #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF del momento" @@ -34760,7 +34731,7 @@ msgstr "Prueba con otra consulta de búsqueda." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Prueba con otro término de búsqueda o filtro" @@ -34839,11 +34810,6 @@ msgstr "Prueba con otros filtros o términos de búsqueda." msgid "Try editing your message again." msgstr "Intenta editar tu mensaje de nuevo." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Volver a intentar con calidad completa" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Prueba a buscar algo como \"tema\", \"notificaciones\" o \"privacidad\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Desactiva lo que no te parezca bien. Algunas funciones podrían dejar de funcionar." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Desactiva el uso compartido de audio para esta fuente o inténtalo de nuevo en un momento." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Activar automáticamente cuando se detecte OBS o XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Activar cámara" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Incobrable" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Activar sonido" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Activar el sonido en todos los dispositivos" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Activar sonido" @@ -35558,7 +35524,7 @@ msgstr "usuario desconocido" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Usuario desconocido" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Desbloquea los emojis personalizados en los MD con {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Desbloquea la pantalla compartida en HD con {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Activar el sonido «{label}»" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Activar el micrófono en todos los dispositivos" @@ -35741,7 +35707,7 @@ msgstr "Grupo sin nombre" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Entrada sin nombre" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Sube nuevos emojis y pegatinas, y gestiona tus propias creaciones." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Subir fotogramas de vista previa de la pantalla compartida." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copiada al portapapeles" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Etiqueta de usuario (opcional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volumen del usuario" @@ -37227,7 +37193,7 @@ msgstr "Pérdida de paquetes de vídeo:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Previsualización del vídeo" @@ -37283,7 +37249,7 @@ msgstr "Subida de vídeo" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Audio y vídeo" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Ajustes de audio y vídeo" @@ -37685,7 +37651,7 @@ msgstr "Atajos de voz y vídeo" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Llamada de voz" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Depurar conexión de voz" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Desactivar sonido" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Mensaje de voz" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Reproductor de mensaje de voz" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Ajustes de voz" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Activar sonido" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Espera aquí" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Esperando conexión..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Cuando se publican como enlaces en el chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Cuando las vistas previas están activadas, {productName} sube de vez en cuando fotogramas JPEG de tu pantalla compartida para que las otras personas de este MD de grupo puedan ver una miniatura antes de ver la transmisión." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Cuando las vistas previas están activadas, {productName} sube de vez en cuando fotogramas JPEG de tu pantalla compartida para que las personas con permiso para conectarse a este canal de voz puedan ver una miniatura antes de ver la transmisión." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Cuando las vistas previas están activadas, {productName} sube de vez en cuando fotogramas JPEG de tu pantalla compartida para que la otra persona de este MD pueda ver una miniatura antes de ver la transmisión." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Las ventanas cortadas en la parte superior o inferior de la pantalla, y las DevTools acopladas, pueden mostrar un fondo gris en lugar de permanecer transparentes." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Predeterminado de Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Te han baneado de esta comunidad y no puedes unirte." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Tienes el sonido desactivado" @@ -38833,11 +38799,6 @@ msgstr "Estás usando una compilación {releaseChannel} de {productName}." msgid "You aren't in any communities right now." msgstr "No estás en ninguna comunidad ahora mismo." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Has solicitado {resolution} a {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "No puedes enviar mensajes en esta comunidad." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "No puedes compartir tu pantalla en este canal" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "No puedes hablar en este canal" @@ -39036,7 +38997,7 @@ msgstr "No puedes hablar en este canal" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "No puedes encender la cámara en este canal" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Cambiaste tu etiqueta mientras usabas {PREMIUM_PRODUCT_NAME}. Se volverá a generar aleatoriamente cuando caduque tu {PREMIUM_PRODUCT_NAME}, a menos que se renueve." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "No tienes acceso al canal donde se envió este mensaje." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Permaneces en {ownedNames}. Los propietarios no pueden abandonar su propia comunidad." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Los moderadores desactivaron tu sonido" @@ -39699,11 +39660,6 @@ msgstr "Tu solicitud está pendiente de revisión. Aún puedes actualizar los da msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Tu navegador requiere interacción del usuario para poder reproducir audio. Haz clic en el botón de abajo para activar el chat de voz." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Tu dispositivo de captura está enviando {deliveredResolution} en lugar de {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Estamos comprobando si tu tarjeta cumple los requisitos para acceder a precios locales. Esto suele tardar un momento." @@ -39734,36 +39690,11 @@ msgstr "Tu comunidad aparece en Descubrir. Puedes actualizar los datos publicado msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Tu comunidad necesita al menos {minMemberCount, plural, one {# miembro} many {# miembros} other {# miembros}} para poder aparecer en Descubrir." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Tu conexión no puede seguir el ritmo. Tu transmisión está configurada a {frameRate} FPS en {resolution} y los espectadores están recibiendo unos {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Se ha comprobado tu tarjeta de crédito. Si la tarjeta es válida, el contenido para adultos se desbloqueará en breve. Puedes cerrar esta pestaña y volver a la aplicación." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Tu dispositivo no puede seguir el ritmo. Tu transmisión está configurada a {frameRate} FPS en {resolution} y los espectadores están recibiendo unos {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Tu dispositivo no ha podido seguir el ritmo, así que tu transmisión ahora envía {frameRate} FPS para mantener {resolution} nítida." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Tu dispositivo no ha podido seguir el ritmo, así que tu transmisión ahora envía {resolution} a {frameRate} FPS en lugar de {targetResolution} a {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Tu dispositivo no ha podido seguir el ritmo, así que tu transmisión ahora envía {resolution} para mantener {frameRate} FPS fluidos." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Tu registro necesita una comprobación antispam adicional antes de que puedas continuar." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Tu {savedResolution} a {savedFrameRate} FPS requiere {premiumProductName}, por lo que las comparticiones usan {resolution} a {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "No se ha podido publicar tu pantalla compartida con un códec de vídeo compatible, por lo que se ha detenido. Intenta compartir de nuevo." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Tu fuente produce unos {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Tu transmisión sigue activa" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Tu transmisión cambió a {codec} porque {previousCodec} no pudo seguir el ritmo en este dispositivo. Es posible que los espectadores vean una breve pausa." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Tu URL personalizada se ha establecido en {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "El codificador de vídeo dejó de codificar fotogramas, por lo que se detuvo el uso compartido de pantalla. Intenta compartir de nuevo." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Tu codificador de vídeo se detuvo, así que tu transmisión cambió a {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/fi/messages.po b/fluxer_app/src/features/i18n/locales/fi/messages.po index 5099be42e..f1d5ba7c3 100644 --- a/fluxer_app/src/features/i18n/locales/fi/messages.po +++ b/fluxer_app/src/features/i18n/locales/fi/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} haluaa muodostaa yhteyden" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} käyttää tätä tiliä tähän valtuutukseen." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} ei toimi tässä laitteessa. Valitse automaattinen koodekki Lisäasetuksista, jotta voit käyttää nopeampaa." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} on tällä hetkellä vain {productName}-henkilöstön j msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Ei rajoitusta} one {# osallistuja} other {# osallistujaa}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# rivi jäljellä)} other {... (# riviä jäljellä)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# rivi jäljellä)} other {... (# riviä jäljellä)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Laajenna (# rivi)} other {Laajenna (# riviä)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Laajenna (# rivi)} other {Laajenna (# riviä)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Laajenna # muu laite} other {Laajenna # muuta laitetta}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Puhelussa} other {# puhelussa}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Liity videopuheluun (# osallistuja)} other {Liity videopuheluun (# osallistujaa)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Jatka # striimin katsomista ja lisää tämä} other {Jatka # striimin katsomista ja lisää tämä}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Kutsulinkkisi vanhenee # päivän kuluttua.} other {Kutsulinkkisi vanhenee # päivän kuluttua.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} tuntia" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# ohitus} other {# ohitusta}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} tarkistaa ensin, että korttisi kelpaa paikalliseen hinnoitteluun, ja ohjaa sinut sitten maksamaan. Palaa palveluun {productName}, kun olet suorittanut maksun." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} ei ole käytettävissä tässä laitteessa, joten striimisi käyttää {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} tarvitsee pääsyn mikrofoniisi. Salli mikrofonin käyttö käyttöjärjestelmän tietosuoja-asetuksista ja käynnistä sovellus uudelleen." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} tarvitsee kameran käyttöoikeuden, jotta se voi näyttää laitteesi." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} paikalla" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "viestiin kirjoitettu URL-osoite" msgid "a user" msgstr "käyttäjä" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Katsoja ei voi toistaa kohdetta {pinnedCodec}, joten lähetyksesi käyttää kohdetta {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Hyväksy" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Vastaa" @@ -3178,12 +3163,12 @@ msgstr "Lisää ryhmään" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Lisää tallennettuun mediaan" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Lisää GIF-suosikkeihin pelkkänä URL-osoitteena" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Lisäasetukset" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Videon lisäasetukset" @@ -3451,7 +3436,7 @@ msgstr "Kohdistussäätimet ovat käytettävissä vain leveämmillä näytöill #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Salli" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Salli {everyoneMention} ja {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Salli {PRODUCT_NAME}-sovelluksen käyttää kameraasi kohdassa {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Salli bottien yksityisviestit" msgid "Allow bots to send you direct messages?" msgstr "Sallitaanko bottien lähettää sinulle yksityisviestejä?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Salli kameran käyttö" @@ -4014,13 +3999,13 @@ msgstr "Animoidut emojit, GIF-kuvat ja tarrat pysyvät hallinnassasi Animaatio-v #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animoitu GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animoitu GIF-video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animoidut kuvakkeet edellyttävät {animatedIconFeature} -yhteisöominaisuutta." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animoitu kuva" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Animoidun kuvan esikatselu" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Animaatioiden lataaminen vaatii {premiumProductName}-tilauksen." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animoitu video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Sovelluksen tila" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Sovellusikkuna" @@ -4361,7 +4346,7 @@ msgstr "Sovellus päivitetty" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Sovellukset" @@ -4586,7 +4571,7 @@ msgstr "liite" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Liite {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Liite vanhentunut" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Liite on vanhentunut tai ei ole saatavilla" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Liitteen tunnus kopioitu leikepöydälle" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Äänenvoimakkuus" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Ääni mykistetty" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Äänen pakettihäviö:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Äänisoitin" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Äänen esikatselu" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Äänenkäsittely (kohdennettu ääni)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Äänen toiston edistyminen" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Ääniasetukset" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Äänilähteet: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automaattinen ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automaattinen äänenvoimakkuuden säätö" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Selain: takaisin" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Selaimen oletus" @@ -6198,20 +6183,20 @@ msgstr "Puhelut" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Kameran käyttöä tarvitaan laitteiden esikatseluun" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Kameran käyttöoikeutta ei myönnetty. Päivitä kameran käyttöoikeudet ja yritä uudelleen." @@ -6276,13 +6261,13 @@ msgstr "Kameran esikatselu" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kameran laatu" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kameran asetukset" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha-varmennus epäonnistui. Yritä uudelleen." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Kaappaa" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Kaappaa sovelluksen ääni" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Kaappaa työpöydän ääni" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Kaappaa laitteen ääni" @@ -6736,12 +6721,12 @@ msgstr "Muutos ajoitettu" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Vaihda striimi" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Vaihda striimin lähdettä" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Kanavan käyttöoikeus" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Kanavan käyttö estetty" @@ -7097,7 +7082,7 @@ msgstr "Kanavan tunnus kopioitu leikepöydälle" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "kanavalinkki" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Valitse maksutapa" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Valitse jaettava sisältö" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Tyhjennä luotetut verkkotunnukset ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Selkeämpi teksti" @@ -8285,7 +8270,7 @@ msgstr "Tiivistä kanavan aihe" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Tiivistä laitteet" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Yhteisön luoja" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Mykistä äänet yhteisössä" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Yhteisön MFA-vaatimuksen ilmoituspalkki" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Mykistä mikrofoni yhteisössä" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Määritä nyt" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Määritä tai lopeta näytön jakaminen" @@ -8904,7 +8889,7 @@ msgstr "Vahvistus tai kaksoisnapsautus yhteisön äänikanaviin liittyessä" msgid "Conflicts with {conflictLabel}" msgstr "Ristiriidassa kohteen {conflictLabel} kanssa" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Liitä kamera ja yritä uudelleen." @@ -8913,7 +8898,7 @@ msgstr "Liitä kamera ja yritä uudelleen." msgid "Connect a camera or virtual capture device, then try again." msgstr "Liitä kamera tai virtuaalinen tallennuslaite ja yritä sitten uudelleen." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Liitä näyttö ja yritä uudelleen." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Yhteyden äänenvoimakkuuden säätimet" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Yhteys: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Tilastojen JSON-tiedot kopioitu leikepöydälle" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Kopioitu leikepöydälle" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopioi liitteen tunnus" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopioi ääni" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopioi äänilinkki" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopioi päätepiste" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopioi tiedoston linkki" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopioi GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopioi GIF-linkki" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopioi tunniste" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopioi kuva" @@ -9448,7 +9433,7 @@ msgstr "Kopioi kuva" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopioi kuvan linkki" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Kopioi linkki osioon" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopioi media" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopioi arvo" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopioi video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopioi videolinkki" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopioi webhook-URL" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopioidaan kuvaa..." @@ -10588,7 +10573,7 @@ msgstr "Tällä hetkellä: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Mukautettu" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deaktivointi" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Mykistä äänet" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Mykistä äänet kaikilta laitteilta" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Mykistä laitteen äänet" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Mykistä muiden jäsenten äänet äänikanavilla, jolloin he eivät kuule eivätkä puhu." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Äänten mykistyksen pikanäppäin" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Mykistä äänet itseltäsi" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Äänet mykistetty" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Moderaattorit mykistivät äänesi" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Oletus" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Oletuskamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Poistetaanko :{emojiName}:? Toimintoa ei voi kumota." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Poistetaanko \"{memeName}\"? Toimintoa ei voi kumota." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Poista kutsu" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Poista media" @@ -11466,8 +11451,8 @@ msgstr "Poista rooli" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Poista tallennettu media" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Poissa työpöydän äärestä" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Työpöytälaite" @@ -11849,13 +11834,13 @@ msgstr "Kehittäjän tila" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Kehittäjän työkalut" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Kehittäjän työkalut ovat käytettävissä kanavan otsikon henkilöstömerkistä." @@ -11879,6 +11864,17 @@ msgstr "Laite" msgid "Device alerts" msgstr "Laitteen hälytykset" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Laitteen ääni ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Laitteen ääni" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Laitteen tiedot" @@ -11888,7 +11884,7 @@ msgstr "Laitteen tiedot" msgid "Device revoked" msgstr "Laite poistettu" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Laitteen valinta" @@ -11912,7 +11908,7 @@ msgstr "Laite:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Laitteet" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Himmennä yliviivattua tekstiä" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Suora syöte" @@ -12020,7 +12016,7 @@ msgstr "Suora lataus käytössä" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Poista käytöstä" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Arvo pois käytöstä" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Esikatselujen poistaminen käytöstä estää uusien esikatselukuvien lataamisen. Aiemmin ladatut esikatselukuvat voivat edelleen näkyä, kunnes suoratoisto päättyy tai esikatselu päivittyy." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Hylkää ääniviesti" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Katkaise yhteys" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Katkaise yhteys kaikista laitteista" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Katkaise laitteen yhteys" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Näyttö" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Näyttö" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification ja siirrä se <1>.well-known-kansioosi, jotta voimme vahvistaa verkkotunnuksen." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Lataa ääni" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Lataa työpöytäsovelluksen päivitys {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Lataa tiedosto" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Lataa fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Lataa GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Lataa kuva" @@ -12714,7 +12710,7 @@ msgstr "Lataa asennusohjelma" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Lataa media" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Lataa paketti" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Lataa video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Kaiku" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Kaiunvaimennus" @@ -12963,7 +12959,7 @@ msgstr "Muokkaa kohteen {0} käyttöoikeuksia" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Muokkaa vaihtoehtoista tekstiä" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Muokkaa pikanäppäintä" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Muokkaa mediaa" @@ -13102,8 +13098,8 @@ msgstr "Muokkaa käänteisen kuvahaun hakukonetta" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Muokkaa tallennettua mediaa" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Ota selainilmoitukset käyttöön" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Salli kameran käyttö, niin voit esikatsella kameroita ja tallennuslaitteita ennen kuin valitset striimattavan." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Ota käyttöön tai poista käytöstä sisäänrakennetut kääntäjät. Käytössä olevat kääntäjät näkyvät viestin pikavalikossa, kun teksti on valittuna." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Ota esikatselut käyttöön" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Lopeta näytön jakaminen" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Päästä päähän -salaus ei ole käytettävissä, koska puhelussa on osallistuja, jota ei tueta." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Päästä päähän -salaus ei ole käytettävissä, koska tässä äänikanavassa on osallistuja, jota ei tueta." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Viihde" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Koko näyttö" @@ -14095,7 +14091,7 @@ msgstr "Koko näyttö" msgid "Entire system" msgstr "Koko järjestelmä" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Koko järjestelmän ääni" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "sulje pois käyttäjä" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Jätä pois järjestelmästä" @@ -14593,7 +14589,7 @@ msgstr "Kutsulinkin kopiointi epäonnistui" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Kopiointi leikepöydälle epäonnistui" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Kutsujen lataus epäonnistui. Yritä uudelleen." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Jaettavia lähteitä ei voitu ladata." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Siirrä ikkuna etualalle" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Kohdennettu ääni" @@ -15322,10 +15318,6 @@ msgstr "Kansion asetukset" msgid "Follow us on {blueskyProviderName}" msgstr "Seuraa meitä palvelussa {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Seuraa äänisyötettä" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Välitä" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Kelaa eteenpäin {defaultSeekAmount} sekuntia" @@ -15592,14 +15584,14 @@ msgstr "Kehys" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Kuvataajuus" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Yli 30 FPS:n kuvataajuudet edellyttävät {premiumProductName}-tilausta" @@ -15923,7 +15915,7 @@ msgstr "Ohjaimen Y / kolmio" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Pelaaminen" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF-valitsin latautuu" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF-esikatselu" @@ -16429,7 +16421,7 @@ msgstr "Myönnetty {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Myöntää kaikki käyttöoikeudet ja ohittaa kanavarajoitukset. Erittäin arkaluontoinen." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Tarkka valinta" @@ -16992,7 +16984,7 @@ msgstr "Piilota salasana" msgid "Hide picture-in-picture popout?" msgstr "Piilotetaanko kuva kuvassa -ikkuna?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Piilota esikatselukuva" @@ -17386,7 +17378,7 @@ msgstr "Jos haluat näiden jäsenten näkevän aiemmat viestit, jotka on lähete #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ohita" @@ -17395,11 +17387,11 @@ msgstr "Ohita" msgid "Ignore friend request" msgstr "Ohita kaveripyyntö" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ohita fyysiset laitteet" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ohita syötemedia" @@ -17430,7 +17422,7 @@ msgstr "Ohita kaveripyyntö käyttäjältä {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ohita tämän kanavan hitaan tilan odotusaika." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ohita virtuaaliset" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Kuva" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Kuvaresurssit" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Kuva kopioitu leikepöydälle" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Kuvan asetukset" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Kuvan esikatselu" @@ -17540,7 +17532,7 @@ msgstr "Kuvan lataus" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Puhelussa" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Äänichatissa" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Sisällytä kaikki valittuja lukuun ottamatta" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Sisällytä sovellukset" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Tulo ja lähtö" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Syöttölaite" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Syöttöprofiili: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Syöttöasetukset" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Syöttökenttien tilat" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Mikrofonin äänenvoimakkuus" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Kutsulinkki on piilotettu jakamisen aikana:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Kutsulinkki piilotettu jakamisen aikana" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Siirry kohtaan {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Siirry kohtaan {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Siirry puheluun" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Siirry linkitettyyn kanavaan" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Siirry linkitettyyn viestiin" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Siirry käyttäjän {authorNickname} viestiin" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Siirry viestiin kohteessa {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Asettelu" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Lue lisää näytönjakamisen esikatsauksista" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Linkkien tyyli" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Linkki ei ole saatavilla" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux-sovellus" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linuxin oletusarvo" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Ladataan teemaa..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Ladataan..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS-sovellus" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS:n oletusarvo" @@ -20289,7 +20281,7 @@ msgstr "Seuraava kappale" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Median asetukset" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Toista/keskeytä" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Median esikatselu" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Viestin asettelu" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "viestilinkki" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofonitesti" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Mikrofoni-, kamera- ja näytönjakosisältö on päästä päähän -salattua." @@ -21019,7 +21011,7 @@ msgstr "Alaikäiset vaarassa, aikuisille tarkoitettu sisältö väärässä paik #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Väärin kirjoitetut sanat" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobiililaite" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Mykistä kaikki" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Mykistä kaikki laitteet" @@ -21653,13 +21645,13 @@ msgstr "Mykistetty" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofoni on mykistetty" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Moderaattoreiden mykistämä" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Ei {sendMessagesPermission}-käyttöoikeutta" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Ei käyttöoikeutta" @@ -22282,7 +22274,7 @@ msgstr "Lisäasetuksia ei löytynyt" msgid "No AFK channel" msgstr "Ei poissaolokanavaa" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Sovellusikkunoita ei löytynyt" @@ -22300,6 +22292,11 @@ msgstr "Ei vielä resursseja" msgid "No audio" msgstr "Ei ääntä" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Ei ääntä tästä laitteesta" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Ei valtuutettuja sovelluksia" @@ -22341,7 +22338,7 @@ msgstr "Ei kirjanmerkkejä" msgid "No bot banner" msgstr "Ei bottibanneria" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Kameraa ei löydy" @@ -22421,7 +22418,7 @@ msgstr "Ei kuvausta." msgid "No desktop update is available." msgstr "Työpöytäversioon ei ole saatavilla päivitystä." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Näyttöjä ei löytynyt" @@ -22650,7 +22647,7 @@ msgstr "Vastauksen sisältöä ei saatu" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Ei tuloksia" @@ -22679,7 +22676,7 @@ msgstr "Ei vielä rooleja. Lisää rooleja täältä: {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Ei tallennettuja medioita" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Kohinasulku" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Melunvaimennus" @@ -22877,7 +22874,7 @@ msgstr "Ei muunnosta" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Ei mitään" @@ -23286,7 +23283,7 @@ msgstr "Näkyy vain leveillä näytöillä." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Vain luottokortit hyväksytään. Pankki- ja prepaid-kortteja ei voi käyttää aikuisille tarkoitetun sisällön tarkistukseen." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Vain oletuskaiuttimet" @@ -23334,7 +23331,7 @@ msgstr "Suorita koodia täällä vain, jos ymmärrät tarkalleen, mitä se tekee msgid "Only show message previews for DMs with unread messages" msgstr "Näytä viestien esikatselut vain yksityisviesteissä, joissa on lukemattomia viestejä" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Vain kaiuttimet" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Avaa {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Avaa {labelText} asetuksissa" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Avaa @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Avaa median lisäasetukset" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Avaa sovellusikkuna ja yritä uudelleen." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Avaa animoitu GIF koko näytöllä" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Avaa animoitu GIF-video koko näytöllä" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Avaa ääni koko näytöllä" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Avaa äänilinkki" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Avaa selain" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Avaa selainvalitsin" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Avaa suosikkivalikko" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Avaa tiedostolinkki" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Avaa GIF-linkki" @@ -23651,7 +23648,7 @@ msgstr "Avaa kuva selaimessa" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Avaa kuva koko näytöllä" @@ -23660,7 +23657,7 @@ msgstr "Avaa kuva koko näytöllä" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Avaa kuvalinkki" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Avaa järjestelmän yksityisviesti" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Avaa järjestelmän valitsin" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Avaa video koko näytöllä" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Avaa videolinkki" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Avaa äänikanava" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Avaa ääni- ja videoasetukset" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Äänilähtö" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Äänentoistolaite" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Äänilähtöasetukset" @@ -24094,7 +24091,7 @@ msgstr "Äänilähtöasetukset" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Kaiuttimen äänenvoimakkuus" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Osallistujaraja" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Osallistujan {participantDisplayName} asetukset" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Esikatselu piilotettu" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Esikatselukuvat tallennetaan väliaikaisesti palveluun {productName}, jotta ne voidaan näyttää, eikä niitä ole salattu päästä päähän. Poista esikatselut käytöstä, jos et halua, että näytön jakamisesta ladataan kuvia pikkukuvia varten." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Esikatselukuvat tallennetaan väliaikaisesti palveluun {productName}, jotta ne voidaan näyttää, eikä niitä ole salattu päästä päähän. Tämän ryhmäkeskustelun osallistujien ei tarvitse katsoa lähetystäsi nähdäkseen pikkukuvan." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Esikatselukuvat tallennetaan väliaikaisesti palveluun {productName}, jotta ne voidaan näyttää, eikä niitä ole salattu päästä päähän. Käyttäjät tarvitsevat edelleen oikeuden liittyä kanavaan, mutta heidän ei tarvitse katsoa lähetystäsi aktiivisesti." @@ -26269,7 +26266,7 @@ msgstr "Viite kopioitu." msgid "Referral parameters" msgstr "Viittausparametrit" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Päivitä äänilähteet" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Tavallista painiketta napsautettu." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Hylkää" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Poista ryhmästä" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Poista tallennetusta mediasta" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Älä pysy päällä" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Poista URL-osoitteena tallennetuista GIF-suosikeista" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Käyttäjän {0} porttikielto kumottu" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Kelaa taaksepäin {defaultSeekAmount} sekuntia" @@ -28202,7 +28199,7 @@ msgstr "Tallenna kuvake" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Aloita tallentamalla mediaa viesteistä!" @@ -28313,7 +28310,7 @@ msgstr "Näytön tallennukseen tarvitaan lupa" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Näytön jako" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Näytön jaon äänen tehostus" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Näytön jaon äänen käynnistäminen epäonnistui" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Näytönjakamisen kooderin asetukset" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Näytönjako päättyi" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Näytön jakamisen esikatselun toiminta" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Näytönjakamisen esikatselut" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Näytönjakamisen esikatselut ovat poissa käytöstä." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Näytönjakamisen esikatselut ovat käytössä." @@ -28391,13 +28388,13 @@ msgstr "Näytön jakamisen yksityisyys" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Näytön jaon laatu" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Näytön jakamisen asetukset" @@ -28723,7 +28720,7 @@ msgstr "Hae rooleja tai jäseniä…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Hae tallennettuja medioita" @@ -28942,12 +28939,12 @@ msgstr "Esikatselu" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Valitse" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Valitse {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Lähetä linkki salasanan vaihtamiseen" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Lähetä tallennettu media {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Määritettiin roolille paikka jäsenluettelossa" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Asetettu käyttämällä {preset}-esiasetusta. Arvon valitseminen tässä vaihtaa mukautettuun." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Aseta mukautetut äänenvoimakkuudet yksittäisille äänille. Äänet, joilla ei ole omaa asetusta, noudattavat pää-äänenvoimakkuutta." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Aseta äänten mykistyksen pikanäppäin" @@ -29669,11 +29666,6 @@ msgstr "Siirrä tämä tarkistus sivuun" msgid "Set this check aside?" msgstr "Siirretäänkö tämä tarkistus sivuun?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Asetettu lähettämään {resolution} nopeudella {frameRate} FPS käyttäen {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Asetukset" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "asetuslinkki" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Jaa lahja" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Jaa näyttö" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Jaa yhteisön moderaattoreille." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Jaa näyttösi" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Jaa näyttösi teräväpiirtona (1080p), Quad HD:nä (1440p) tai alkuperäisellä lähdetarkkuudella, jopa 60 FPS:n nopeudella." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Jaettu ikkuna" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Jaetun ikkunan ääni" @@ -30624,6 +30616,10 @@ msgstr "Äänettömät puhelut" msgid "Silent calls from everyone" msgstr "Äänettömät puhelut kaikilta" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Mykistää, kun tallennuslaitteessa ei ole omaa äänisyötettä" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Tasainen vieritys" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Sujuvampi video" @@ -31005,11 +31001,6 @@ msgstr "Joitakin emojeita ei voitu lisätä" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Jotkin tiedostot, joita yrität ladata, ylittävät tiedostokohtaisen enimmäiskoon {maxSizeFormatted}." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Joitakin striimin asetuksia ei voitu ottaa käyttöön live-striimissäsi." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Äänet" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Alkuperäinen" @@ -31569,7 +31560,7 @@ msgstr "Aloitetaanko äänipuhelu?" msgid "Start call" msgstr "Aloita puhelu" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Aloita kameratesti ja määritä tehosteet" @@ -31910,7 +31901,7 @@ msgstr "Lopeta kuuntelu" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Lopeta striimaus" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Lopetetaanko kaikkiin linkkeihin luottaminen?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Lopeta katselu" @@ -31982,7 +31973,7 @@ msgstr "Estää kaiuttimien äänen kiertämisen takaisin mikrofoniin." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Striimi" @@ -32001,11 +31992,6 @@ msgstr "Striimi päättyi" msgid "Stream hidden" msgstr "Striimi piilotettu" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Striimi ei pysy perässä" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Striimin laatu" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Striimin asetukset" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Striimin asetuksia muutettiin" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "{productName}-henkilökunnan järjestelmäilmoituksia. Tähän ei voi va #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Järjestelmän oletus" @@ -33036,13 +33017,8 @@ msgstr "Botti on lisätty kohteeseen <0>{destinationName}." msgid "The bot has been added." msgstr "Botti lisätty." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Selain lähettää {deliveredResolution} sijaan {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Kameran esikatselu on vielä pysähtymässä. Yritä striimata uudelleen hetken kuluttua." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Rooli myönsi {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Näytönjakolähde lopetti videon lähettämisen, joten näytönjako on lopetettu." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Tämä selaimen konsoli on kehittäjän työkalu." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Puhelu on päästä päähän -salattu." @@ -33645,11 +33621,6 @@ msgstr "Tätä työpöytäversiota ei voi päivittää suoraan {productName}-sov msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Tämä kehitysversio ei voi päivittää itseään. Lataa työpöytäasennusohjelma, jos haluat testata päivityksen kulkua." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Tämä laite ei pysynyt perässä viimeksi pyydetyllä tarkkuudella {targetResolution} ja kuvataajuudella {targetFrameRate} FPS, joten striimisi alkoi tarkkuudella {resolution} ja kuvataajuudella {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Tämä asennus on järjestelmäsi hallinnoima. Päivitä {productName} ohjelmistokeskuksesta tai pakettienhallinnasta." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Tämä instanssi sallii tällä hetkellä näytönjaon enintään 720p-laadulla ja 30 FPS:llä." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Tämä linkkikanava on merkitty aikuisille tarkoitetuksi sisällöksi, ja se voi avata materiaalia, joka voi olla sopimatonta joillekin käyttäjille." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Tämä linkki ei ole käytettävissä tililläsi." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Tämä valinta on pakollinen. Anna arvo." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Tämä osallistuja ei voi puhua tällä kanavalla" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Tämän osallistujan äänet on mykistetty" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Moderaattorit mykistivät tämän osallistujan äänet" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Tätä puhelinnumeroa on jo käytetty. Kokeile toista numeroa tai ota yhteyttä tukeen." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Tämä valitsin on käytettävissä vain työpöytäsovelluksessa." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Näytä tai piilota säätimet" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Mykistä tai palauta äänet" @@ -34666,7 +34637,7 @@ msgstr "Ilmaisinalueen kuvakkeen muutokset tulevat voimaan vasta uudelleenkäynn #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Suositut GIFit" @@ -34760,7 +34731,7 @@ msgstr "Kokeile toista hakua." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Kokeile toista hakusanaa tai suodatinta" @@ -34839,11 +34810,6 @@ msgstr "Kokeile eri suodattimia tai hakusanoja." msgid "Try editing your message again." msgstr "Yritä muokata viestiäsi uudelleen." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Kokeile täyttä laatua uudelleen" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Kokeile hakea esimerkiksi sanoilla \"teema\", \"ilmoitukset\" tai \"tietosuoja\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Poista käytöstä kaikki, mistä et pidä. Jotkin ominaisuudet eivät ehkä toimi." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Poista tämän lähteen äänen jakaminen tai yritä uudelleen hetken kuluttua." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Ota käyttöön automaattisesti, kun OBS tai XSplit havaitaan" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Käynnistä kamera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Perimätön" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Palauta äänet" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Palauta äänet kaikille laitteille" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Palauta äänet itsellesi" @@ -35558,7 +35524,7 @@ msgstr "tuntematon käyttäjä" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Tuntematon käyttäjä" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Avaa mukautetut emojit yksityisviesteissä {premiumProductName}-tilauksella" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Avaa HD-näytönjako käyttöön {premiumProductName}-tilauksella" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Poista kohteen {label} mykistys" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Poista kaikkien laitteiden mykistys" @@ -35741,7 +35707,7 @@ msgstr "Nimetön ryhmä" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Nimetön syöttölaite" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Lataa uusia emojeita ja tarroja sekä hallinnoi omia luomuksiasi." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Lataa esikatselukuvia näytönjakoja varten." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL kopioitu leikepöydälle" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Käyttäjätunniste (valinnainen)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Käyttäjän äänenvoimakkuus" @@ -37227,7 +37193,7 @@ msgstr "Videon pakettihäviö:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Videon esikatselu" @@ -37283,7 +37249,7 @@ msgstr "Videon lataus" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Ääni ja video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Ääni- ja videoasetukset" @@ -37685,7 +37651,7 @@ msgstr "Ääni- ja videopikanäppäimet" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Äänipuhelu" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Ääniyhteyden virheenkorjaus" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Äänten mykistys" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Ääniviesti" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Ääniviestisoitin" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Ääniasetukset" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Äänten mykistyksen poisto" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Odota tässä" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Odotetaan yhteyttä..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Kun media jaetaan linkkeinä keskustelussa" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Kun esikatselut on käytössä, {productName} lataa ajoittain JPEG-kuvia jaetusta näytöstäsi, jotta muut tämän ryhmäkeskustelun osallistujat voivat nähdä pienen kuvan ennen videon katsomista." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Kun esikatselut on käytössä, {productName} lataa ajoittain JPEG-kuvia näytön jaosta, jotta henkilöt, joilla on lupa yhdistää tähän äänikanavaan, voivat nähdä pienen kuvan ennen videon katsomista." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Kun esikatselut on käytössä, {productName} lataa ajoittain JPEG-kuvia näytön jaosta, jotta toinen henkilö tässä yksityisviestissä voi nähdä pienen kuvan ennen videon katsomista." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Näytön ylä- tai alareunasta leikkautuvat ikkunat ja telakoitu DevTools voivat näyttää harmaan taustan läpinäkyvän sijaan." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windowsin oletusarvo" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Sinut on porttikielletty tästä yhteisöstä, etkä voi liittyä siihen." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Äänesi on mykistetty" @@ -38833,11 +38799,6 @@ msgstr "Käytät {productName}-sovelluksen {releaseChannel}-koontiversiota." msgid "You aren't in any communities right now." msgstr "Et ole tällä hetkellä missään yhteisössä." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Pyysit {resolution} nopeudella {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Et voi lähettää viestejä tässä yhteisössä." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Et voi jakaa näyttöäsi tällä kanavalla" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Et voi puhua tällä kanavalla" @@ -39036,7 +38997,7 @@ msgstr "Et voi puhua tällä kanavalla" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Et voi laittaa kameraa päälle tällä kanavalla" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Vaihdoit tunnisteesi {PREMIUM_PRODUCT_NAME}-tilauksen aikana. Tunniste arvotaan uudelleen satunnaisesti, kun {PREMIUM_PRODUCT_NAME}-tilauksesi päättyy, ellei sitä uusita." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Sinulla ei ole pääsyä kanavalle, jolle tämä viesti lähetettiin." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Pysyt yhteisöissä {ownedNames}. Omistajat eivät voi poistua omasta yhteisöstään." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderaattorit mykistivät äänesi" @@ -39699,11 +39660,6 @@ msgstr "Hakemuksesi odottaa tarkistusta. Voit edelleen päivittää listauksesi msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Selaimesi vaatii käyttäjältä toimenpiteen, ennen kuin ääni voidaan toistaa. Ota äänichat käyttöön napsauttamalla alla olevaa painiketta." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Tallennuslaitteesi lähettää {deliveredResolution} sijaan {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Tarkistamme korttisi paikallista hinnoittelua varten. Tämä kestää yleensä hetken." @@ -39734,36 +39690,11 @@ msgstr "Yhteisösi näkyy Löydä-osiossa. Voit päivittää listauksesi tietoja msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Yhteisössäsi on oltava vähintään {minMemberCount, plural, one {# jäsen} other {# jäsentä}}, ennen kuin se voidaan listata Löydä-osioon." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Yhteytesi ei pysy perässä. Striimisi on asetettu {frameRate} FPS ja {resolution} resoluutiolle, ja katsojat saavat noin {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Luottokorttisi on tarkistettu. Jos kortti on kelvollinen, aikuisille tarkoitettu sisältö avautuu pian. Voit sulkea tämän välilehden ja palata sovellukseen." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Laitteesi ei pysy perässä. Striimisi on asetettu {frameRate} FPS, {resolution} ja katsojat saavat noin {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Laitteesi ei pysynyt perässä, joten striimisi lähettää nyt {frameRate} FPS pitääkseen {resolution} terävänä." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Laitteesi ei pysynyt mukana, joten striimisi lähettää nyt {resolution} kuvanopeudella {frameRate} FPS sen sijaan, että se lähettäisi {targetResolution} kuvanopeudella {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Laitteesi ei pysynyt perässä, joten striimisi lähettää nyt {resolution} pitääkseen {frameRate} FPS:n sulavana." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Rekisteröitymisesi vaatii ylimääräisen roskapostitarkistuksen, ennen kuin voit jatkaa." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Tallentamasi {savedResolution} ja {savedFrameRate} FPS vaativat {premiumProductName} -tilauksen, joten jaot käyttävät {resolution} ja {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Näyttösi jakamista ei voitu julkaista yhteensopivalla videokoodekilla, joten se pysäytettiin. Yritä jakaa uudelleen." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Lähteesi tuottaa noin {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Striimisi on edelleen käynnissä" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Striimisi vaihtui muotoon {codec}, koska {previousCodec} ei pysynyt perässä tässä laitteessa. Katsojat saattavat nähdä lyhyen tauon." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Mukautetuksi URL-osoitteeksi on asetettu {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Videokooderisi lopetti kuvien koodaamisen, joten näytön jakaminen pysäytettiin. Yritä jakaa uudelleen." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Videokooderisi pysähtyi, joten striimisi vaihtui muotoon {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/fr/messages.po b/fluxer_app/src/features/i18n/locales/fr/messages.po index e222b3ff6..f0766f49f 100644 --- a/fluxer_app/src/features/i18n/locales/fr/messages.po +++ b/fluxer_app/src/features/i18n/locales/fr/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} veut se connecter" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} utilisera ce compte pour cette autorisation." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "Le codec {codec} ne peut pas suivre sur cet appareil. Définissez le codec sur Automatique dans les paramètres avancés pour en autoriser un plus rapide." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} est actuellement accessible uniquement aux membres de l msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Aucune limite} one {# participant} other {# participants}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# ligne restante)} other {... (# lignes restantes)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# ligne restante)} other {... (# lignes restantes)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Développer (# ligne)} other {Développer (# lignes msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Afficher (# ligne)} other {Afficher (# lignes)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Afficher # autre appareil} other {Afficher # autres appareils}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, =1 {En appel} other {# en appel}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Rejoindre l’appel vidéo (# participant)} other {Rejoindre l’appel vidéo (# participants)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Continuer à regarder # diffusion et ajouter celle-ci} other {Continuer à regarder # diffusions et ajouter celle-ci}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Votre lien d’invitation expire dans # jour.} other {Votre lien d’invitation expire dans # jours.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} heures" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} IPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# personnalisation} other {# personnalisati msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} vérifiera d’abord si votre carte permet de bénéficier des tarifs régionaux, puis vous redirigera vers le paiement. Revenez à {productName} une fois le paiement terminé." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} n'est pas disponible sur cet appareil, votre flux utilise donc {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} a besoin d'accéder à votre microphone. Autorisez l'accès au microphone dans les paramètres de confidentialité de votre système d'exploitation et redémarrez l'application." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} a besoin d'accéder à votre caméra pour afficher vos appareils." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} en ligne" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "une URL saisie dans le texte du message" msgid "a user" msgstr "un utilisateur" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Un spectateur ne peut pas lire {pinnedCodec}, votre flux utilise donc {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Accepter" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Répondre" @@ -3178,12 +3163,12 @@ msgstr "Ajouter au groupe" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Ajouter aux médias enregistrés" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Ajouter aux GIF favoris (URL uniquement)" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avancé" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Paramètres vidéo avancés" @@ -3451,7 +3436,7 @@ msgstr "Les contrôles d'alignement ne sont disponibles que sur les écrans plus #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Autoriser" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Autoriser {everyoneMention} et {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Autorisez {PRODUCT_NAME} à accéder à votre caméra dans {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Autoriser les messages privés des bots" msgid "Allow bots to send you direct messages?" msgstr "Autoriser les bots à vous envoyer des messages privés ?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Autoriser l'accès à la caméra" @@ -4014,13 +3999,13 @@ msgstr "Vous pouvez contrôler les emojis, GIF et stickers animés dans l’ongl #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF animé" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Vidéo GIF animée" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Les icônes animées nécessitent la fonctionnalité de communauté {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Image animée" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Aperçu de l'image animée" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "L’envoi de fichiers animés nécessite un abonnement {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Vidéo animée" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "État de l’application" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Fenêtre d'application" @@ -4361,7 +4346,7 @@ msgstr "Application mise à jour avec succès" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Applications" @@ -4586,7 +4571,7 @@ msgstr "pièce jointe" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Pièce jointe {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Pièce jointe expirée" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "La pièce jointe a expiré ou n'est pas disponible" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID de la pièce jointe copié dans le presse-papiers" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Niveau audio" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio coupé" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Perte de paquets audio :" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Lecteur audio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Aperçu audio" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Traitement audio (voix isolée)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Progression audio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Paramètres audio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Sources audio : {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatique ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Contrôle automatique du gain" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Navigateur : précédent" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Paramètres par défaut du navigateur" @@ -6198,20 +6183,20 @@ msgstr "Appels" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Caméra" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "L'accès à la caméra est nécessaire pour les aperçus de périphériques" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "L'accès à la caméra n'a pas été accordé. Mettez à jour les autorisations de la caméra, puis réessayez." @@ -6276,13 +6261,13 @@ msgstr "Aperçu caméra" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Qualité de la caméra" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Paramètres de la caméra" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Échec de la vérification du CAPTCHA. Veuillez réessayer." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Capture" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Capturer le son de l’application" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Capturer le son de l’ordinateur" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Capturer l'audio de l'appareil" @@ -6736,12 +6721,12 @@ msgstr "Modification planifiée" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Changer de diffusion" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Changer la source de la diffusion" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Accès aux salons" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Accès au salon refusé" @@ -7097,7 +7082,7 @@ msgstr "ID du salon copié dans le presse-papiers" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "lien de salon" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Choisir le mode de paiement" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Choisissez ce que vous voulez partager" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Effacer les domaines de confiance ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Texte plus clair" @@ -8285,7 +8270,7 @@ msgstr "Réduire le sujet du salon" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Réduire les appareils" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Créateur de la communauté" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Désactiver le son du membre" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Bannière d’exigence MFA de la communauté" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Couper le micro du membre" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configurer maintenant" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configurer ou arrêter le partage d'écran" @@ -8904,7 +8889,7 @@ msgstr "Confirmation ou double-clic pour rejoindre les salons vocaux des communa msgid "Conflicts with {conflictLabel}" msgstr "Conflit avec {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Connectez une caméra et réessayez." @@ -8913,7 +8898,7 @@ msgstr "Connectez une caméra et réessayez." msgid "Connect a camera or virtual capture device, then try again." msgstr "Connectez une caméra ou un appareil de capture virtuel, puis réessayez." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Connectez un écran, puis réessayez." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Contrôles du volume de connexion" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Connexion : {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "JSON des statistiques copié dans le presse-papiers" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copié dans le presse-papiers" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copier l'ID de la pièce jointe" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copier l'audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copier le lien audio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copier le point de terminaison" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copier le lien du fichier" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copier le GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copier le lien du GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copier l'identifiant" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copier l'image" @@ -9448,7 +9433,7 @@ msgstr "Copier l'image" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copier le lien de l'image" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copier le lien vers la section" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copier le média" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copier la valeur" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copier la vidéo" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copier le lien de la vidéo" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copier l'URL du webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Copie de l'image…" @@ -10588,7 +10573,7 @@ msgstr "Actuellement : {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Personnalisé" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Désactiver" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Désactiver le son" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Désactiver le son sur tous les appareils" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Désactiver le son de l'appareil" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Désactiver le son des autres membres des salons vocaux pour les empêcher d’entendre et de parler." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Raccourci pour désactiver le son" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Désactiver le son pour vous-même" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Son désactivé" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Son désactivé par les modérateurs" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Par défaut" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Caméra par défaut" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Supprimer :{emojiName}: ? Cette action est irréversible." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Supprimer « {memeName} » ? Cette action est irréversible." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Supprimer l'invitation" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Supprimer le média" @@ -11466,8 +11451,8 @@ msgstr "Supprimer le rôle" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Supprimer le média enregistré" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Absent (ordinateur)" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Appareil de bureau" @@ -11849,13 +11834,13 @@ msgstr "État du développeur" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Outils de développement" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Les outils de développement sont accessibles depuis le badge du personnel dans l'en-tête du salon." @@ -11879,6 +11864,17 @@ msgstr "Appareil" msgid "Device alerts" msgstr "Alertes des appareils" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Audio de l'appareil ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Audio de l'appareil uniquement" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Détails de l’appareil" @@ -11888,7 +11884,7 @@ msgstr "Détails de l’appareil" msgid "Device revoked" msgstr "Appareil révoqué" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Sélection de l'appareil" @@ -11912,7 +11908,7 @@ msgstr "Appareil :" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Appareils" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Atténuer le texte barré" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Entrée directe" @@ -12020,7 +12016,7 @@ msgstr "Envoi direct actif" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Désactiver" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Valeur désactivée" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "La désactivation des aperçus empêche l’envoi de nouveaux aperçus. Les images déjà envoyées peuvent rester visibles jusqu’à la fin de la diffusion ou à l’actualisation de l’aperçu." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Supprimer le message vocal" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Déconnecter" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Déconnecter tous les appareils" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Déconnecter l'appareil" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Affichage" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Écran" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification et placez-le dans votre dossier <1>.well-known afin que nous puissions valider le domaine." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Télécharger l’audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Télécharger la mise à jour {version} de l’application de bureau ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Télécharger le fichier" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Télécharger fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Télécharger l’animation GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Télécharger l’image" @@ -12714,7 +12710,7 @@ msgstr "Télécharger l’installateur" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Télécharger le média" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Télécharger le paquet" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Télécharger la vidéo" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Écho" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Annulation de l’écho" @@ -12963,7 +12959,7 @@ msgstr "Modifier l'accès pour {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Modifier le texte alternatif" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Modifier le raccourci clavier" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Modifier le média" @@ -13102,8 +13098,8 @@ msgstr "Modifier le moteur de recherche d'images inversées" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Modifier le média enregistré" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Activer les notifications du navigateur" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Activez l'accès à la caméra pour prévisualiser les caméras et les périphériques de capture avant d'en choisir un à diffuser." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Activer ou désactiver les traducteurs intégrés. Les traducteurs activés apparaissent dans le menu contextuel des messages lorsque du texte est sélectionné." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Activer les aperçus" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Arrêter le partage d'écran" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Le chiffrement de bout en bout n’est pas disponible, car un participant utilise un client incompatible dans cet appel." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Le chiffrement de bout en bout n’est pas disponible, car un participant utilise un client incompatible dans ce salon vocal." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Divertissement" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Écran entier" @@ -14095,7 +14091,7 @@ msgstr "Écran entier" msgid "Entire system" msgstr "Tout le système" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Audio du système entier" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "exclure un utilisateur" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Exclure du système" @@ -14593,7 +14589,7 @@ msgstr "Échec de la copie du lien d'invitation" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Échec de la copie dans le presse-papiers" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Échec du chargement des invitations. Veuillez réessayer." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Échec du chargement des sources partageables." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Afficher la fenêtre" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Optimisé pour la voix" @@ -15322,10 +15318,6 @@ msgstr "Paramètres du dossier" msgid "Follow us on {blueskyProviderName}" msgstr "Suivez-nous sur {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Suivre l'entrée vocale" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Transférer" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avancer de {defaultSeekAmount} secondes" @@ -15592,14 +15584,14 @@ msgstr "Cadre" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Fréquence d'images" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Les fréquences d'images supérieures à 30 FPS nécessitent {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Manette Y / Triangle" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Jeux vidéo" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Chargement du sélecteur de GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Aperçu du GIF" @@ -16429,7 +16421,7 @@ msgstr "A accordé {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Accorde toutes les permissions et contourne les restrictions des salons. Permission très sensible." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Sélection granulaire" @@ -16992,7 +16984,7 @@ msgstr "Masquer le mot de passe" msgid "Hide picture-in-picture popout?" msgstr "Masquer la fenêtre incrustée (PIP) ?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Masquer la miniature d’aperçu" @@ -17386,7 +17378,7 @@ msgstr "Pour permettre à ces membres de consulter les anciens messages envoyés #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorer" @@ -17395,11 +17387,11 @@ msgstr "Ignorer" msgid "Ignore friend request" msgstr "Ignorer la demande d'ami" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorer les appareils matériels" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorer les médias entrants" @@ -17430,7 +17422,7 @@ msgstr "Ignorer la demande d'ami de {displayName} ?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorer le délai du mode lent de ce salon." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorer le virtuel" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Image" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Images" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Image copiée dans le presse-papiers" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Options de l'image" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Aperçu de l'image" @@ -17540,7 +17532,7 @@ msgstr "Envoi d’image" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "En vocal" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "En chat vocal" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Inclure tout sauf la sélection" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Inclure les applications" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Entrée et sortie" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Périphérique d'entrée" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Profil d'entrée : {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Réglages d'entrée" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "États de saisie" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Volume d'entrée" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Le lien d'invitation est masqué pendant le partage :" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Lien d’invitation masqué pendant le partage d’écran" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Aller à {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Aller à {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Afficher l’appel en cours" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Accéder au salon lié" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Aller au message lié" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Aller au message de {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Aller au message dans {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Mise en page" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "En savoir plus sur les aperçus du partage d’écran" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Style des liens" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Lien indisponible" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Application Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux (par défaut)" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Chargement du thème..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Chargement..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Application macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS (par défaut)" @@ -20289,7 +20281,7 @@ msgstr "Piste suivante" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Options des médias" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Lecture/pause" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Aperçu du média" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Disposition des messages" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "lien du message" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Test du microphone" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Le son du microphone, la vidéo de la caméra et le contenu du partage d’écran sont chiffrés de bout en bout." @@ -21019,7 +21011,7 @@ msgstr "Mineurs en danger, contenu pour adultes dans un espace inadapté ou comp #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Mots mal orthographiés" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Appareil mobile" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Désactiver toutes les notifications" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Couper le micro sur tous les appareils" @@ -21653,13 +21645,13 @@ msgstr "En sourdine" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Micro coupé" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Micro coupé par les modérateurs" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Permission {sendMessagesPermission} manquante" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Accès refusé" @@ -22282,7 +22274,7 @@ msgstr "Aucun paramètre avancé trouvé" msgid "No AFK channel" msgstr "Aucun salon AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Aucune fenêtre d'application trouvée" @@ -22300,6 +22292,11 @@ msgstr "Aucune ressource pour l’instant" msgid "No audio" msgstr "Pas d'audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Aucun audio de cet appareil" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Aucune application autorisée" @@ -22341,7 +22338,7 @@ msgstr "Aucun message enregistré" msgid "No bot banner" msgstr "Pas de bannière de bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Aucune caméra détectée" @@ -22421,7 +22418,7 @@ msgstr "Aucune description." msgid "No desktop update is available." msgstr "Aucune mise à jour de l’application de bureau n’est disponible." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Aucun écran trouvé" @@ -22650,7 +22647,7 @@ msgstr "Aucun corps de réponse reçu" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Aucun résultat" @@ -22679,7 +22676,7 @@ msgstr "Aucun rôle pour l'instant. Ajoutez des rôles dans {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Aucun média enregistré" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Réduction du bruit par seuil" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Suppression du bruit" @@ -22877,7 +22874,7 @@ msgstr "Sans conversion" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Aucun" @@ -23286,7 +23283,7 @@ msgstr "S'applique uniquement aux écrans larges." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Seules les cartes de crédit sont acceptées. Les cartes de débit et prépayées ne peuvent pas servir à la vérification d’accès aux contenus pour adultes." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Haut-parleurs par défaut uniquement" @@ -23334,7 +23331,7 @@ msgstr "N'exécutez du code ici que si vous comprenez exactement ce qu'il fait." msgid "Only show message previews for DMs with unread messages" msgstr "Afficher les aperçus de message uniquement pour les MP non lus" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Haut-parleurs seulement" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Ouvrir {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Ouvrir {labelText} dans les paramètres" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Ouvrir @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Ouvrir les paramètres multimédias avancés" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Ouvrez une fenêtre d'application, puis réessayez." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Ouvrir le GIF animé en grand" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Ouvrir la vidéo GIF animée en grand" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Ouvrir l'audio en grand" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Ouvrir le lien audio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Ouvrir le navigateur" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Ouvrir le sélecteur de navigateur" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Ouvrir le menu des favoris" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Ouvrir le lien du fichier" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Ouvrir le lien GIF" @@ -23651,7 +23648,7 @@ msgstr "Ouvrir l'image dans le navigateur" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Ouvrir l’image en grand" @@ -23660,7 +23657,7 @@ msgstr "Ouvrir l’image en grand" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Ouvrir le lien de l'image" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Ouvrir la conversation privée avec le système" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Ouvrir le sélecteur système" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Ouvrir la vidéo en grand" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Ouvrir le lien vidéo" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Ouvrir la discussion vocale" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Ouvrir les paramètres audio et vidéo" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Sortie" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Périphérique de sortie" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Paramètres de sortie" @@ -24094,7 +24091,7 @@ msgstr "Paramètres de sortie" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Volume de sortie" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Limite de participants" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Options du participant pour {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Aperçu masqué" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Les images d’aperçu sont stockées temporairement par {productName} pour leur distribution et ne sont pas chiffrées de bout en bout. Désactivez les aperçus si vous ne souhaitez pas envoyer des images de votre partage d’écran pour créer les miniatures." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Les images d’aperçu sont stockées temporairement par {productName} pour leur distribution et ne sont pas chiffrées de bout en bout. Les membres de cette conversation de groupe peuvent voir la miniature sans regarder votre diffusion." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Les images d’aperçu sont stockées temporairement par {productName} pour leur distribution et ne sont pas chiffrées de bout en bout. Les utilisateurs doivent avoir la permission de se connecter au salon, mais ils peuvent voir les aperçus sans regarder votre diffusion." @@ -26269,7 +26266,7 @@ msgstr "Référence copiée." msgid "Referral parameters" msgstr "Paramètres de parrainage" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Actualiser les sources audio" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Bouton normal cliqué." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Refuser" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Retirer du groupe" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Retirer des médias enregistrés" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Retirer de l’affichage permanent" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Supprimer des favoris GIF enregistrés par URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "A levé le bannissement de {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Rembobiner de {defaultSeekAmount} secondes" @@ -28202,7 +28199,7 @@ msgstr "Enregistrer l'icône" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Enregistrez des médias depuis vos messages pour commencer !" @@ -28313,7 +28310,7 @@ msgstr "Autorisation d'enregistrement d'écran requise" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Partage d'écran" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Amplification du son du partage d’écran" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Le partage audio de l'écran n'a pas pu démarrer" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Commandes de l’encodeur de partage d’écran" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Partage d’écran terminé" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Comportement de l’aperçu du partage d’écran" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Aperçus du partage d’écran" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Les aperçus de partage d’écran sont désactivés." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Les aperçus de partage d’écran sont activés." @@ -28391,13 +28388,13 @@ msgstr "Confidentialité du partage d'écran" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Qualité du partage d'écran" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Paramètres de partage d'écran" @@ -28723,7 +28720,7 @@ msgstr "Rechercher des rôles ou des membres…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Rechercher des médias enregistrés" @@ -28942,12 +28939,12 @@ msgstr "Aperçu lors du déplacement dans la vidéo" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Sélectionner" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Sélectionner {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Envoyer le lien de réinitialisation" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Envoyer le média enregistré {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "A défini une position dans la liste des membres pour ce rôle" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Défini par le préréglage {preset}. Choisir une valeur ici passe en mode Personnalisé." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Définissez des volumes personnalisés pour chaque son. Les sons sans réglage spécifique suivent le volume principal." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Définir le raccourci pour désactiver le son" @@ -29669,11 +29666,6 @@ msgstr "Mettre cette vérification de côté" msgid "Set this check aside?" msgstr "Mettre cette vérification de côté ?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Défini pour envoyer {resolution} à {frameRate} FPS avec {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Réglages" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "lien vers les paramètres" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Partager un cadeau" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Partager l'écran" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Partager avec les modérateurs de la communauté." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Partager votre écran" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Partagez votre écran en haute définition (1080p), en Quad HD (1440p) ou dans la résolution source native, jusqu'à 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Fenêtre partagée" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio de la fenêtre partagée" @@ -30624,6 +30616,10 @@ msgstr "Appels silencieux" msgid "Silent calls from everyone" msgstr "Appels silencieux de tout le monde" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silencieux lorsque l’appareil de capture n’a pas sa propre entrée audio" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Défilement fluide" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Vidéo plus fluide" @@ -31005,11 +31001,6 @@ msgstr "Certains emojis n’ont pas pu être ajoutés" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Certains fichiers que vous essayez d'envoyer dépassent la limite de taille maximale de {maxSizeFormatted} par fichier." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Certains paramètres de flux n'ont pas pu être appliqués à votre flux en direct." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Sons" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Source" @@ -31569,7 +31560,7 @@ msgstr "Démarrer un appel vocal ?" msgid "Start call" msgstr "Démarrer l'appel" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Lancer le test de la caméra et configurer les effets" @@ -31910,7 +31901,7 @@ msgstr "Arrêter la lecture vocale" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Arrêter le partage" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Arrêter de faire confiance à tous les liens ?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Arrêter de regarder" @@ -31982,7 +31973,7 @@ msgstr "Empêche le son de vos haut-parleurs de revenir dans votre micro." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Diffusion" @@ -32001,11 +31992,6 @@ msgstr "Diffusion terminée" msgid "Stream hidden" msgstr "Diffusion masquée" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "La diffusion ne tient pas la cadence" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Qualité de la diffusion" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Paramètres de diffusion" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Les paramètres du flux ont été ajustés" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Annonces système de l'équipe {productName}. Vous ne pouvez pas répond #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Par défaut du système" @@ -33036,13 +33017,8 @@ msgstr "Le bot a été ajouté à <0>{destinationName}." msgid "The bot has been added." msgstr "Le bot a été ajouté." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Le navigateur envoie {deliveredResolution} au lieu de {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "L'aperçu de la caméra est toujours en cours d'arrêt. Essayez de diffuser à nouveau dans un moment." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Le rôle accordait {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "La source de partage d’écran a cessé d’envoyer des vidéos, votre partage d’écran a donc été arrêté." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Cette console de navigateur est un outil de développement." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Cet appel est chiffré de bout en bout." @@ -33645,11 +33621,6 @@ msgstr "Cette version de bureau ne peut pas installer les mises à jour directem msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Cette version de développement ne peut pas se mettre à jour. Téléchargez un programme d’installation pour tester le processus de mise à jour." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Cet appareil n'a pas pu suivre {targetResolution} à {targetFrameRate} images/s la dernière fois, votre flux a donc démarré à {resolution} à {frameRate} images/s." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Cette installation est gérée par votre système. Mettez à jour {productName} via votre centre logiciel ou votre gestionnaire de paquets." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Cette instance autorise actuellement le partage d'écran jusqu'à 720p à 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Ce salon de lien est réservé aux adultes et peut ouvrir du contenu inapproprié pour certains utilisateurs." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Ce lien n'est pas disponible pour votre compte." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Cette option est requise. Veuillez fournir une valeur." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Ce participant ne peut pas parler dans ce salon" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Le son est désactivé pour ce participant" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Les modérateurs ont désactivé le son de ce participant" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Ce numéro de téléphone a déjà été utilisé. Essayez un autre numéro ou contactez l'assistance." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Ce sélecteur est uniquement disponible dans l'application de bureau." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Afficher/masquer les commandes" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Désactiver/réactiver le son" @@ -34666,7 +34637,7 @@ msgstr "Sous Linux, les modifications de l’icône de la zone de notification s #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF tendance" @@ -34760,7 +34731,7 @@ msgstr "Essayez une autre requête de recherche." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Essayez un autre terme de recherche ou filtre" @@ -34839,11 +34810,6 @@ msgstr "Essayez d'autres filtres ou termes de recherche." msgid "Try editing your message again." msgstr "Réessayez de modifier votre message." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Réessayer en qualité optimale" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Essayez de rechercher « thème », « notifications » ou « confidentialité »" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Désactivez tout ce qui vous met mal à l'aise. Certaines fonctionnalités pourraient ne plus fonctionner." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Désactivez le partage audio pour cette source ou réessayez dans un instant." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Activer automatiquement lorsque OBS ou XSplit est détecté" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Activer la caméra" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Non recouvrable" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Réactiver le son" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Réactiver le son sur tous les appareils" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Réactiver le son" @@ -35558,7 +35524,7 @@ msgstr "utilisateur inconnu" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Utilisateur inconnu" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Débloquez les emojis personnalisés dans les MP avec {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Débloquez le partage d'écran HD avec {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Réactiver le son de {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Réactiver le micro sur tous les appareils" @@ -35741,7 +35707,7 @@ msgstr "Groupe sans nom" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Entrée sans nom" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Importer de nouveaux emojis et stickers et gérer vos propres créations." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Envoyer des images d’aperçu pour les partages d’écran." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copiée dans le presse-papiers" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Tag utilisateur (facultatif)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volume de l'utilisateur" @@ -37227,7 +37193,7 @@ msgstr "Perte de paquets vidéo :" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Aperçu vidéo" @@ -37283,7 +37249,7 @@ msgstr "Envoi de vidéo" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Audio et vidéo" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Paramètres audio et vidéo" @@ -37685,7 +37651,7 @@ msgstr "Raccourcis d'appel vocal et vidéo" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Appel vocal" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Débogage de la connexion vocale" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Son désactivé" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Message vocal" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Lecteur de message vocal" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Paramètres vocaux" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Son réactivé" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Veuillez patienter" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "En attente de connexion…" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Lorsque les liens sont publiés dans le chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Lorsque les aperçus sont activés, {productName} envoie de temps en temps des images JPEG de votre partage d’écran. Les autres membres de cette conversation de groupe peuvent ainsi voir une miniature avant de regarder la diffusion." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Lorsque les aperçus sont activés, {productName} envoie de temps en temps des images JPEG de votre partage d’écran. Les personnes autorisées à se connecter à ce salon vocal peuvent ainsi voir une miniature avant de regarder la diffusion." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Lorsque les aperçus sont activés, {productName} envoie de temps en temps des images JPEG de votre partage d’écran. Votre correspondant dans ce MP peut ainsi voir une miniature avant de regarder la diffusion." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Les fenêtres coupées en haut ou en bas de l'écran, et les outils de développement ancrés, peuvent afficher un arrière-plan gris au lieu de rester transparentes." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Paramètres par défaut de Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Vous avez été banni de cette communauté et ne pouvez pas la rejoindre." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Le son est désactivé pour vous" @@ -38833,11 +38799,6 @@ msgstr "Vous utilisez une version {releaseChannel} de {productName}." msgid "You aren't in any communities right now." msgstr "Vous ne faites partie d'aucune communauté pour le moment." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Vous avez demandé {resolution} à {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Vous ne pouvez pas envoyer de messages dans cette communauté." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Vous ne pouvez pas partager votre écran dans ce salon" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Vous ne pouvez pas parler dans ce salon" @@ -39036,7 +38997,7 @@ msgstr "Vous ne pouvez pas parler dans ce salon" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Vous ne pouvez pas activer votre caméra dans ce salon" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Vous avez changé votre tag alors que vous étiez abonné à {PREMIUM_PRODUCT_NAME}. Il sera modifié aléatoirement à l'expiration de votre abonnement {PREMIUM_PRODUCT_NAME}, sauf s'il est renouvelé." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Vous n'avez pas accès au salon où ce message a été envoyé." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Vous restez dans {ownedNames}. Les propriétaires ne peuvent pas quitter leur propre communauté." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Les modérateurs ont désactivé le son pour vous" @@ -39699,11 +39660,6 @@ msgstr "Votre candidature est en attente d’examen. Vous pouvez encore modifier msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Votre navigateur nécessite une interaction de l'utilisateur avant de pouvoir lire l'audio. Cliquez sur le bouton ci-dessous pour activer le chat vocal." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Votre appareil de capture envoie {deliveredResolution} au lieu de {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Nous vérifions l’éligibilité de votre carte aux tarifs régionaux. Cela prend généralement un instant." @@ -39734,36 +39690,11 @@ msgstr "Votre communauté figure dans Découverte. Vous pouvez modifier sa fiche msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Votre communauté doit compter au moins {minMemberCount, plural, one {# membre} other {# membres}} pour figurer dans Découverte." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Votre connexion ne suit pas. Votre flux est configuré sur {frameRate} FPS en {resolution} et les spectateurs reçoivent environ {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Votre carte de crédit a été vérifiée. Si elle est valide, les contenus pour adultes seront bientôt débloqués. Vous pouvez fermer cet onglet et revenir dans l’application." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Votre appareil ne suit pas. Votre flux est configuré sur {frameRate} IPS en {resolution} et les spectateurs reçoivent environ {deliveredFrameRate} IPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Votre appareil n'a pas pu suivre, votre flux envoie donc {frameRate} FPS pour garder {resolution} net." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Votre appareil n'a pas pu suivre, votre flux envoie donc {resolution} à {frameRate} IPS au lieu de {targetResolution} à {targetFrameRate} IPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Votre appareil n'a pas pu suivre, votre flux envoie donc {resolution} pour maintenir {frameRate} FPS fluides." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Votre inscription nécessite une vérification anti-spam supplémentaire avant de pouvoir continuer." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Votre {savedResolution} à {savedFrameRate} FPS nécessite {premiumProductName}, les partages utilisent donc {resolution} à {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Votre partage d'écran n'a pas pu être publié avec un codec vidéo compatible, il a donc été arrêté. Essayez de partager à nouveau." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Votre source produit environ {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Votre diffusion est toujours en direct" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Votre flux est passé à {codec} car {previousCodec} n'a pas pu suivre sur cet appareil. Les spectateurs pourraient voir une courte pause." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Votre URL personnalisée a été définie sur {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Votre encodeur vidéo a cessé d'encoder des images, votre partage d'écran a donc été arrêté. Essayez de partager à nouveau." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Votre encodeur vidéo s'est arrêté, votre flux est donc passé à {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/he/messages.po b/fluxer_app/src/features/i18n/locales/he/messages.po index b51c8a55b..0c0f9d312 100644 --- a/fluxer_app/src/features/i18n/locales/he/messages.po +++ b/fluxer_app/src/features/i18n/locales/he/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} רוצה להתחבר" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} ישתמש בחשבון זה לצורך הרשאה זו." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} לא מצליח לעמוד בקצב במכשיר הזה. הגדר את ה-codec ל'אוטומטי' בהגדרות מתקדמות כדי לאפשר אחד מהיר יותר." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} נגישה כרגע רק לחברי צוות של {produ msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ ללא הגבלה} one {# משתתף} other {# משתתפים}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (נותרה שורה אחת)} other {... (נותרו # שורות)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (נותרה שורה אחת)} other {... (נותרו # שורות)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {הרחב (שורה אחת)} other {הרחב (# שו msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {הרחב (שורה אחת)} other {הרחב (# שורות)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {הרחב מכשיר אחד נוסף} other {הרחב # מכשירים נוספים}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {בשיחה} other {# בשיחה}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {הצטרף לשיחת וידאו (משתתף אחד)} other {הצטרף לשיחת וידאו (# משתתפים)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {המשך לצפות בשידור אחד והוסף גם את זה} other {המשך לצפות ב-# שידורים והוסף גם את זה}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {תוקף קישור ההזמנה שלך יפוג בעוד יום אחד.} two {תוקף קישור ההזמנה שלך יפוג בעוד יומיים.} other {תוקף קישור ההזמנה שלך יפוג בעוד # ימים.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} שעות" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# עקיפה} other {# עקיפות}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} יאמת תחילה שהכרטיס שלך זכאי לתמחור מקומי, ולאחר מכן יעביר אותך לתשלום. חזור ל-{productName} לאחר שתסיים את התהליך." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} אינו זמין במכשיר זה, לכן הזרם שלך משתמש ב-{codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} זקוק לגישה למיקרופון שלך. אפשר גישה למיקרופון בהגדרות הפרטיות של מערכת ההפעלה שלך והפעל מחדש את האפליקציה." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} זקוק לגישה למצלמה כדי להציג את המכשירים שלך." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} מחוברים" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "כתובת אתר שהוקלדה בטקסט ההודעה" msgid "a user" msgstr "משתמש" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "צופה לא יכול להפעיל את {pinnedCodec}, לכן הזרם שלך משתמש ב-{codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "קבל" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "ענה" @@ -3178,12 +3163,12 @@ msgstr "הוספה לקבוצה" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "הוספה למדיה השמורה" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "הוספה לקובצי GIF מועדפים לפי כתובת URL בלבד" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "מתקדם" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "הגדרות וידאו מתקדמות" @@ -3451,7 +3436,7 @@ msgstr "פקדי יישור זמינים רק במסכים רחבים יותר" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "אפשר" msgid "Allow {everyoneMention} and {hereMention}" msgstr "אפשר {everyoneMention} ו-{hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "אפשר ל-{PRODUCT_NAME} לגשת למצלמה שלך ב-{MACOS_SYSTEM_SETTINGS_NAME} ← {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} ← {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "אפשר הודעות פרטיות מבוטים" msgid "Allow bots to send you direct messages?" msgstr "לאפשר לבוטים לשלוח לך הודעות פרטיות?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "אפשר מצלמה" @@ -4014,13 +3999,13 @@ msgstr "אימוג'י, קובצי GIF ומדבקות מונפשים נשארים #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF מונפש" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "סרטון GIF מונפש" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "אייקונים מונפשים דורשים את תכונת הקהילה {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "תמונה מונפשת" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "תצוגה מקדימה של תמונה מונפשת" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "העלאת קבצים מונפשים דורשת מנוי {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "וידאו מונפש" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "מצב האפליקציה" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "חלון אפליקציה" @@ -4361,7 +4346,7 @@ msgstr "האפליקציה עודכנה בהצלחה" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "אפליקציות" @@ -4586,7 +4571,7 @@ msgstr "קובץ מצורף" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "קובץ מצורף {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "הקובץ המצורף פג תוקף" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "הקובץ המצורף פג תוקף או אינו זמין" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "מזהה הקובץ המצורף הועתק ללוח" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "עוצמת שמע" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "השמע מושתק" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "איבוד מנות שמע:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "נגן שמע" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "תצוגה מקדימה של שמע" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "עיבוד שמע (קול ממוקד)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "התקדמות שמע" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "הגדרות שמע" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "מקורות שמע: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "אוטומטי ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "בקרת הגברה אוטומטית" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "דפדפן: אחורה" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "ברירת מחדל של הדפדפן" @@ -6198,20 +6183,20 @@ msgstr "שיחות" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "מצלמה" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "נדרשת גישה למצלמה לתצוגה מקדימה של המכשיר" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "הגישה למצלמה לא הוענקה. עדכן את הרשאות המצלמה, ואז נסה שוב." @@ -6276,13 +6261,13 @@ msgstr "תצוגה מקדימה של המצלמה" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "איכות מצלמה" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "הגדרות מצלמה" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "אימות הקאפצ'ה נכשל. יש לנסות שוב." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "לכידה" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "לכידת שמע מהאפליקציה" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "לכידת שמע מהמחשב" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "לכידת שמע מהמכשיר" @@ -6736,12 +6721,12 @@ msgstr "שינוי מתוזמן" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "שינוי השידור" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "שינוי מקור השידור" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "גישה לערוץ" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "הגישה לערוץ נדחתה" @@ -7097,7 +7082,7 @@ msgstr "מזהה הערוץ הועתק ללוח הגזירים" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "קישור לערוץ" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "בחירת אמצעי תשלום" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "בחר מה לשתף" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "נקה דומיינים מהימנים ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "טקסט ברור יותר" @@ -8285,7 +8270,7 @@ msgstr "כיווץ נושא הערוץ" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "כיווץ מכשירים" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "יוצר הקהילה" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "השתקת שמע בקהילה" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "שורת התראה על דרישת אימות דו-שלבי בקהילה" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "השתקת מיקרופון בקהילה" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "הגדר כעת" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "הגדר או סיים שיתוף מסך" @@ -8904,7 +8889,7 @@ msgstr "אישור או לחיצה כפולה להצטרפות לערוץ קול msgid "Conflicts with {conflictLabel}" msgstr "מתנגש עם {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "חבר מצלמה ונסה שוב." @@ -8913,7 +8898,7 @@ msgstr "חבר מצלמה ונסה שוב." msgid "Connect a camera or virtual capture device, then try again." msgstr "חבר מצלמה או התקן לכידה וירטואלי, ואז נסה שוב." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "חבר צג, ואז נסה שוב." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "בקרות עוצמת הקול של החיבור" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "חיבור: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "נתוני JSON הועתקו ללוח הגזירים" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "הועתק ללוח הגזירים" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "העתקת מזהה קובץ מצורף" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "העתקת שמע" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "העתקת קישור לשמע" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "העתקת נקודת קצה" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "העתקת קישור לקובץ" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "העתקת GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "העתקת קישור ל-GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "העתקת מזהה" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "העתקת תמונה" @@ -9448,7 +9433,7 @@ msgstr "העתקת תמונה" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "העתקת קישור לתמונה" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "העתקת קישור למקטע" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "העתקת מדיה" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "העתקת הערך" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "העתקת סרטון" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "העתקת קישור לסרטון" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "העתקת כתובת ה-URL של ה-webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "מעתיק תמונה..." @@ -10588,7 +10573,7 @@ msgstr "נוכחי: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "מותאם אישית" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "השבתה" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "השתק שמע" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "השתק את השמע בכל המכשירים" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "השתק את השמע במכשיר" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "השתק את השמע של חברים אחרים בערוצי קול, כך שהם לא יוכלו לשמוע או לדבר." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "קיצור דרך להשתקת שמע" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "השתק את השמע שלך" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "השמע מושתק" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "השמע הושתק על ידי מנהלים" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "ברירת מחדל" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "מצלמת ברירת מחדל" @@ -11258,8 +11243,8 @@ msgstr "דלאוור" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "למחוק את :{emojiName}:? לא ניתן לבטל פעולה זו." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "למחוק את \"{memeName}\"? לא ניתן לבטל פעולה זו." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "מחיקת הזמנה" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "מחיקת מדיה" @@ -11466,8 +11451,8 @@ msgstr "מחיקת תפקיד" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "מחיקת מדיה שמורה" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "לא פעיל במחשב" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "מחשב שולחני" @@ -11849,13 +11834,13 @@ msgstr "מצב מפתח" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "כלי מפתחים" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "כלי מפתחים זמינים דרך תג הצוות בכותרת הערוץ." @@ -11879,6 +11864,17 @@ msgstr "מכשיר" msgid "Device alerts" msgstr "התראות מכשיר" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "שמע של שיתוף מסך במכשיר וידאו. {deviceLabel} הוא שם קלט השמע המשויך למכשיר הלכידה." + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "שמע מהמכשיר בלבד" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "פרטי מכשיר" @@ -11888,7 +11884,7 @@ msgstr "פרטי מכשיר" msgid "Device revoked" msgstr "המכשיר נותק" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "בחירת מכשיר" @@ -11912,7 +11908,7 @@ msgstr "מכשיר:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "מכשירים" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "עמעום טקסט עם קו חוצה" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "קלט ישיר" @@ -12020,7 +12016,7 @@ msgstr "העלאה ישירה פעילה" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "השבתה" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "ערך מושבת" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "השבתת התצוגות המקדימות תמנע העלאות עתידיות של תמונות מקדימות. ייתכן שתמונות מקדימות שהועלו בעבר עדיין יהיו גלויות עד לסיום הסטרימינג או עד לרענון התצוגה המקדימה." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "מחיקת ההודעה הקולית" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "התנתק" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "נתק את כל המכשירים" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "נתק מכשיר" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "תצוגה" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "מסך" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification והנח אותו בתיקיית <1>.well-known כדי שנוכל לאמת את הדומיין." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "הורד את האודיו" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "הורד עדכון למחשב {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "הורד את הקובץ" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "הורד את fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "הורד את ה-GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "הורד את התמונה" @@ -12714,7 +12710,7 @@ msgstr "הורדת קובץ ההתקנה" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "הורדת מדיה" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "הורדת חבילה" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "הורד את הסרטון" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "הד" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "ביטול הד" @@ -12963,7 +12959,7 @@ msgstr "עריכת גישה עבור {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "עריכת טקסט אלטרנטיבי" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "עריכת קיצור מקלדת" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "עריכת מדיה" @@ -13102,8 +13098,8 @@ msgstr "עריכת מנוע חיפוש תמונה הפוך" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "עריכת מדיה שמורה" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "הפעלת התראות בדפדפן" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "אפשר גישה למצלמה כדי להציג תצוגה מקדימה של מצלמות והתקני לכידה לפני שתבחר אחד לשידור." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "הפעלה או השבתה של מתרגמים מובנים. מתרגמים מופעלים יופיעו בתפריט ההקשר של ההודעה בעת בחירת טקסט." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "אפשר תצוגות מקדימות" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "הפסקת שיתוף מסך" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "הצפנה מקצה לקצה אינה זמינה מכיוון שמשתתף לא נתמך נמצא בשיחה זו." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "הצפנה מקצה לקצה אינה זמינה מכיוון שמשתתף לא נתמך נמצא בערוץ הקולי הזה." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "בידור" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "כל המסך" @@ -14095,7 +14091,7 @@ msgstr "כל המסך" msgid "Entire system" msgstr "כל המערכת" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "כל צלילי המערכת" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "לא לכלול משתמש" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "אל תכלול במערכת" @@ -14593,7 +14589,7 @@ msgstr "העתקת קישור ההזמנה נכשלה" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "ההעתקה ללוח נכשלה" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "טעינת ההזמנות נכשלה. יש לנסות שוב." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "טעינת המקורות הניתנים לשיתוף נכשלה." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "הבא חלון לחזית" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "קול ממוקד" @@ -15322,10 +15318,6 @@ msgstr "הגדרות תיקייה" msgid "Follow us on {blueskyProviderName}" msgstr "עקבו אחרינו ב-{blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "מעקב אחר קלט קולי" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "העברה" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "קדימה ב-{defaultSeekAmount} שניות" @@ -15592,14 +15584,14 @@ msgstr "מסגרת" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "קצב פריימים" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "קצב פריימים מעל 30 FPS דורש {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "לחצן בקר Y / משולש" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "גיימינג" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "טוען בורר GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "תצוגה מקדימה של GIF" @@ -16429,7 +16421,7 @@ msgstr "הוענקו {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "מעניק את כל ההרשאות ועוקף הגבלות ערוץ. רגיש במיוחד." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "בחירה פרטנית" @@ -16992,7 +16984,7 @@ msgstr "הסתר סיסמה" msgid "Hide picture-in-picture popout?" msgstr "להסתיר את החלון הקופץ של תמונה בתוך תמונה?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "הסתר תצוגה מקדימה ממוזערת" @@ -17386,7 +17378,7 @@ msgstr "אם ברצונך לאפשר לחברים האלה לגשת להודעו #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "התעלם" @@ -17395,11 +17387,11 @@ msgstr "התעלם" msgid "Ignore friend request" msgstr "התעלם מבקשת חברות" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "התעלם מהתקני חומרה" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "התעלם מקלט מדיה" @@ -17430,7 +17422,7 @@ msgstr "להתעלם מבקשת החברות מ-{displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "התעלם מהשהיית המצב האיטי של הערוץ הזה." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "התעלם מהתקנים וירטואליים" @@ -17468,7 +17460,7 @@ msgstr "אילינוי" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "תמונה" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "נכסי תמונה" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "התמונה הועתקה ללוח הגזירים" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "אפשרויות תמונה" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "תצוגה מקדימה של תמונה" @@ -17540,7 +17532,7 @@ msgstr "העלאת תמונה" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "בשיחה קולית" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "בצ'אט קולי" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "כלול הכל מלבד הנבחרים" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "כלול אפליקציות" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "קלט ופלט" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "התקן קלט" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "פרופיל קלט: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "הגדרות קלט" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "מצבי קלט" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "עוצמת קלט" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "קישור ההזמנה מוסתר בזמן שיתוף:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "קישור ההזמנה מוסתר בזמן שיתוף" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "קפוץ אל {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "קפוץ אל {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "קפיצה לשיחה הנוכחית" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "קפוץ לערוץ המקושר" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "קפוץ להודעה המקושרת" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "קפוץ להודעה של {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "קפוץ להודעה ב-{labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "פריסה" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "למידע נוסף על תצוגות מקדימות של שיתוף מסך" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "עיצוב קישורים" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "הקישור אינו זמין" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "אפליקציית לינוקס" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "ברירת מחדל של לינוקס" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "טוען ערכת נושא..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "טוען..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "אפליקציית macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "ברירת מחדל של macOS" @@ -20289,7 +20281,7 @@ msgstr "הרצועה הבאה" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "אפשרויות מדיה" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "ניגון/השהיה" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "תצוגה מקדימה של המדיה" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "פריסת הודעות" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "קישור להודעה" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "בדיקת מיקרופון" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "המיקרופון, המצלמה ותוכן שיתוף המסך מוצפנים מקצה לקצה." @@ -21019,7 +21011,7 @@ msgstr "קטינים בסיכון, תוכן למבוגרים במקום הלא #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "שגיאות כתיב" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "מכשיר נייד" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "השתק הכל" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "השתק את כל המכשירים" @@ -21653,13 +21645,13 @@ msgstr "מושתק" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "המיקרופון מושתק" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "הושתק על ידי מנהלים" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "אין הרשאת {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "אין גישה" @@ -22282,7 +22274,7 @@ msgstr "לא נמצאו הגדרות מתקדמות" msgid "No AFK channel" msgstr "אין ערוץ AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "לא נמצאו חלונות של אפליקציות" @@ -22300,6 +22292,11 @@ msgstr "אין נכסים עדיין" msgid "No audio" msgstr "אין שמע" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "אין שמע ממכשיר זה" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "אין אפליקציות מורשות" @@ -22341,7 +22338,7 @@ msgstr "אין סימניות" msgid "No bot banner" msgstr "אין באנר לבוט" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "לא נמצאה מצלמה" @@ -22421,7 +22418,7 @@ msgstr "אין תיאור." msgid "No desktop update is available." msgstr "אין עדכון זמין לאפליקציית המחשב." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "לא נמצאו תצוגות" @@ -22650,7 +22647,7 @@ msgstr "לא התקבל גוף תגובה" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "אין תוצאות" @@ -22679,7 +22676,7 @@ msgstr "אין עדיין תפקידים. הוסף תפקידים ב{rolesSettin #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "אין מדיה שמורה" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "שער רעש" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "דיכוי רעשים" @@ -22877,7 +22874,7 @@ msgstr "ללא המרה" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "ללא" @@ -23286,7 +23283,7 @@ msgstr "חל רק על מסכים רחבים." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "מתקבלים כרטיסי אשראי בלבד. לא ניתן להשתמש בכרטיסי חיוב או בכרטיסים נטענים לצורך אימות התוכן למבוגרים." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "רמקולי ברירת המחדל בלבד" @@ -23334,7 +23331,7 @@ msgstr "יש להריץ כאן קוד רק אם אתה מבין בדיוק מה msgid "Only show message previews for DMs with unread messages" msgstr "הצג תצוגה מקדימה של הודעות רק בצ'אטים פרטיים עם הודעות שלא נקראו" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "רמקולים בלבד" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "פתח את {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "פתח את {labelText} בהגדרות" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "פתח את @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "פתח הגדרות מדיה מתקדמות" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "פתח חלון של אפליקציה, ואז נסה שוב." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "פתח GIF מונפש בתצוגה מלאה" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "פתח סרטון GIF מונפש בתצוגה מלאה" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "פתח אודיו בתצוגה מלאה" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "פתח קישור שמע" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "פתח דפדפן" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "פתיחת בורר דפדפנים" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "פתיחת תפריט מועדפים" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "פתח קישור לקובץ" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "פתח קישור GIF" @@ -23651,7 +23648,7 @@ msgstr "פתח תמונה בדפדפן" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "פתח תמונה בתצוגה מלאה" @@ -23660,7 +23657,7 @@ msgstr "פתח תמונה בתצוגה מלאה" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "פתח קישור לתמונה" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "פתח את צ'אט המערכת" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "פתיחת בורר המערכת" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "פתח סרטון בתצוגה מלאה" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "פתח קישור וידאו" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "פתח שיחה קולית" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "פתיחת הגדרות שמע ווידאו" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "פלט" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "התקן פלט" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "הגדרות פלט" @@ -24094,7 +24091,7 @@ msgstr "הגדרות פלט" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "עוצמת פלט" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "מגבלת משתתפים" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "אפשרויות משתתף עבור {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "תצוגה מקדימה מוסתרת" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "תמונות התצוגה המקדימה מאוחסנות באופן זמני על ידי {productName} לצורך העברתן ואינן מוצפנות מקצה לקצה. השבת תמונות תצוגה מקדימה אם אינך רוצה שהפריימים של שיתוף המסך יועלו ליצירת תמונות ממוזערות." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "תמונות התצוגה המקדימה מאוחסנות באופן זמני על ידי {productName} לצורך העברתן ואינן מוצפנות מקצה לקצה. אנשים בצ'אט הקבוצתי הזה לא צריכים לצפות בשידור שלך כדי לראות את התמונה הממוזערת." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "תמונות התצוגה המקדימה מאוחסנות באופן זמני על ידי {productName} לצורך העברה ואינן מוצפנות מקצה לקצה. עדיין נדרשת הרשאה כדי להתחבר, אך אין צורך שהמשתמשים יצפו בשידור שלך בזמן אמת." @@ -26269,7 +26266,7 @@ msgstr "ההפניה הועתקה." msgid "Referral parameters" msgstr "פרמטרים של הפניה" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "רענון מקורות שמע" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "כפתור רגיל נלחץ." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "דחה" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "הסר מהקבוצה" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "הסרה מהמדיה השמורה" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "בטל הישארות בחלון עליון" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "הסרה מקובצי GIF מועדפים לפי כתובת URL בלבד" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "החסימה של {0} בוטלה" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "הרץ אחורה ב-{defaultSeekAmount} שניות" @@ -28202,7 +28199,7 @@ msgstr "שמירת אייקון" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "שמור מדיה מההודעות כדי להתחיל!" @@ -28313,7 +28310,7 @@ msgstr "נדרשת הרשאת הקלטת מסך" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "שיתוף מסך" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "הגברת שמע בשיתוף מסך" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "לא ניתן היה להתחיל את שיתוף המסך עם שמע" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "בקרות מקודד שיתוף מסך" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "שיתוף מסך הסתיים" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "התנהגות תצוגה מקדימה של שיתוף מסך" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "תצוגות מקדימות של שיתוף מסך" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "תצוגות מקדימות של שיתוף מסך מושבתות." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "תצוגות מקדימות של שיתוף מסך מופעלות." @@ -28391,13 +28388,13 @@ msgstr "פרטיות שיתוף מסך" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "איכות שיתוף מסך" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "הגדרות שיתוף מסך" @@ -28723,7 +28720,7 @@ msgstr "חיפוש תפקידים או חברים…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "חיפוש מדיה שמורה" @@ -28942,12 +28939,12 @@ msgstr "תצוגה מקדימה" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "בחר" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "בחר {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "שלח קישור איפוס" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "שליחת מדיה שמורה {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "הגדרת מיקום לתפקיד ברשימת החברים" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "מוגדר על ידי קביעת התצורה של {preset}. בחירת ערך כאן תעבור ל'מותאם אישית'." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "הגדר עוצמת קול מותאמת אישית לצלילים ספציפיים. צלילים ללא הגדרה מותאמת פועלים לפי עוצמת הקול הראשית." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "הגדר קיצור דרך להשתקת שמע" @@ -29669,11 +29666,6 @@ msgstr "הנח לבדיקה זו בצד" msgid "Set this check aside?" msgstr "להניח לבדיקה זו בצד?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "מוגדר לשליחה ב-{resolution} ב-{frameRate} FPS עם {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "הגדרות" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "קישור להגדרות" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "שיתוף מתנה" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "שתף מסך" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "שתף עם מנהלי הקהילה." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "שתף את המסך שלך" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "שתף את המסך שלך באיכות HD (1080p), ב-Quad HD (1440p) או ברזולוציית מקור טבעית, עד 60 פריימים לשנייה." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "חלון משותף" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "שמע החלון המשותף" @@ -30624,6 +30616,10 @@ msgstr "שיחות שקטות" msgid "Silent calls from everyone" msgstr "שיחות שקטות מכולם" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "השתק כאשר למכשיר הלכידה אין קלט שמע משלו" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "גלילה חלקה" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "וידאו חלק יותר" @@ -31005,11 +31001,6 @@ msgstr "לא ניתן היה להוסיף חלק מהאימוג'י" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "חלק מהקבצים שאתה מנסה להעלות חורגים ממגבלת הגודל המקסימלית של {maxSizeFormatted} לקובץ." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "לא ניתן היה להחיל חלק מהגדרות הזרם על הזרם החי שלך." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "צלילים" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "מקור" @@ -31569,7 +31560,7 @@ msgstr "להתחיל שיחת קול?" msgid "Start call" msgstr "התחלת שיחה" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "התחל בדיקת מצלמה והגדר אפקטים" @@ -31910,7 +31901,7 @@ msgstr "הפסקת ההשמעה" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "הפסק שידור" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "להפסיק לבטוח בכל הקישורים?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "הפסק צפייה" @@ -31982,7 +31973,7 @@ msgstr "מונע מקול הרמקולים לחזור אל המיקרופון ש #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "שידור" @@ -32001,11 +31992,6 @@ msgstr "השידור הסתיים" msgid "Stream hidden" msgstr "השידור מוסתר" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "השידור לא עומד בקצב" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "איכות השידור" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "הגדרות שידור" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "הגדרות הזרם הותאמו" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "הודעות מערכת מצוות {productName}. לא ניתן להשי #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "ברירת מחדל של המערכת" @@ -33036,13 +33017,8 @@ msgstr "הבוט נוסף אל <0>{destinationName}." msgid "The bot has been added." msgstr "הבוט נוסף." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "הדפדפן שולח {deliveredResolution} במקום {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "התצוגה המקדימה של המצלמה עדיין נעצרת. יש לנסות לשדר שוב בעוד רגע." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "התפקיד העניק את ההרשאות {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "מקור שיתוף המסך הפסיק לשלוח וידאו, ולכן שיתוף המסך שלך הופסק." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "מסוף הדפדפן הזה הוא כלי למפתחים." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "שיחה זו מוצפנת מקצה לקצה." @@ -33645,11 +33621,6 @@ msgstr "גרסת שולחן העבודה הזו לא יכולה להתקין ע msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "גרסת פיתוח זו אינה יכולה לעדכן את עצמה. הורד תוכנת התקנה למחשב כדי לבדוק את תהליך העדכון." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "המכשיר הזה לא הצליח לעמוד בקצב של {targetResolution} ב- {targetFrameRate} FPS בפעם האחרונה, לכן הסטרים שלך התחיל ב- {resolution} ב- {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "ההתקנה הזו מנוהלת על ידי המערכת שלך. עדכן את {productName} דרך מרכז התוכנה או מנהל החבילות שלך." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "המופע הזה מאפשר כרגע שיתוף מסך עד 720p ב-30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "ערוץ קישור זה מסומן ככולל תוכן למבוגרים ועשוי להכיל חומר שאינו הולם עבור חלק מהמשתמשים." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "הקישור הזה אינו זמין לחשבון שלך." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "אפשרות זו נדרשת. יש לספק ערך." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "משתתף זה אינו יכול לדבר בערוץ זה" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "השמע של משתתף זה מושתק" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "השמע של משתתף זה הושתק על ידי מנהלים" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "מספר הטלפון הזה כבר נמצא בשימוש. נסה מספר אחר או צור קשר עם התמיכה." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "בורר זה זמין רק באפליקציית המחשב." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "הצגת/הסתרת הפקדים" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "החלפת מצב השתקת השמע" @@ -34666,7 +34637,7 @@ msgstr "שינויים בסמל מגש המערכת יחולו רק לאחר ה #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "קובצי GIF פופולריים" @@ -34760,7 +34731,7 @@ msgstr "נסה שאילתת חיפוש אחרת." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "נסה מונח חיפוש או מסנן אחר" @@ -34839,11 +34810,6 @@ msgstr "נסה מסננים או מונחי חיפוש אחרים." msgid "Try editing your message again." msgstr "נסה לערוך את ההודעה שוב." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "נסה שוב באיכות מלאה" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "נסה לחפש משהו כמו \"עיצוב\", \"התראות\" או \"פרטיות\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "כבה כל מה שלא נוח לך איתו. ייתכן שחלק מהתכונות יפסיקו לפעול." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "כבה את שיתוף השמע עבור מקור זה או נסה שוב בעוד רגע." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "הפעלה אוטומטית כשמזוהה OBS או XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "הפעל מצלמה" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "לא ניתן לגבייה" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "בטל השתקת שמע" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "בטל את השתקת השמע בכל המכשירים" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "בטל את השתקת השמע שלך" @@ -35558,7 +35524,7 @@ msgstr "משתמש לא ידוע" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "משתמש לא ידוע" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "קבל גישה לאימוג'ים מותאמים אישית בהודעות פרטיות עם {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "קבל גישה לשיתוף מסך באיכות HD עם {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "בטל השתקה של {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "בטל השתקה בכל המכשירים" @@ -35741,7 +35707,7 @@ msgstr "קבוצה ללא שם" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "קלט ללא שם" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "העלה אימוג'י ומדבקות חדשים, ונהל את היצירות שלך." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "העלה פריימים לתצוגה מקדימה עבור שיתופי מסך." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "כתובת ה-URL הועתקה ללוח הגזירים" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "תגית משתמש (אופציונלי)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "עוצמת שמע של משתמש" @@ -37227,7 +37193,7 @@ msgstr "איבוד מנות וידאו:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "תצוגה מקדימה של וידאו" @@ -37283,7 +37249,7 @@ msgstr "העלאת סרטון" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "שמע ווידאו" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "הגדרות שמע ווידאו" @@ -37685,7 +37651,7 @@ msgstr "קיצורי דרך לקול ווידאו" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "שיחה קולית" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "ניפוי באגים בחיבור קולי" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "השתקת שמע" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "הודעה קולית" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "נגן הודעה קולית" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "הגדרות קול" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "ביטול השתקת שמע" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "המתן כאן" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "ממתין לחיבור..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "כאשר נשלח כקישור בצ'אט" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "כאשר התצוגות המקדימות מופעלות, {productName} מעלה מדי פעם פריימים בפורמט JPEG משיתוף המסך שלך, כך שאנשים אחרים בצ'אט הקבוצתי הזה יוכלו לראות תמונה ממוזערת לפני שהם צופים." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "כאשר התצוגות המקדימות מופעלות, {productName} מעלה מדי פעם פריימים בפורמט JPEG משיתוף המסך שלך, כך שאנשים בעלי הרשאה להתחבר לערוץ הקולי הזה יוכלו לראות תמונה ממוזערת לפני שהם צופים." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "כאשר התצוגות המקדימות מופעלות, {productName} מעלה מדי פעם פריימים בפורמט JPEG משיתוף המסך שלך, כך שהמשתמש השני בצ'אט הפרטי הזה יוכל לראות תמונה ממוזערת לפני שהוא צופה." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "חלונות שנחתכים בחלק העליון או התחתון של המסך, וכלי פיתוח מעוגנים, עלולים להציג רקע אפור במקום להישאר שקופים." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "ברירת מחדל של Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "נחסמת מהקהילה הזו ואינך יכול להצטרף אליה." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "השמע שלך מושתק" @@ -38833,11 +38799,6 @@ msgstr "אתה משתמש בגרסת {releaseChannel} של {productName}." msgid "You aren't in any communities right now." msgstr "אינך חבר באף קהילה כרגע." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "ביקשת {resolution} ב- {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "אינך יכול לשלוח הודעות בקהילה זו." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "אינך יכול לשתף את המסך שלך בערוץ זה" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "אינך יכול לדבר בערוץ זה" @@ -39036,7 +38997,7 @@ msgstr "אינך יכול לדבר בערוץ זה" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "אינך יכול להפעיל את המצלמה שלך בערוץ זה" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "שינית את התג שלך בזמן שהיית ב-{PREMIUM_PRODUCT_NAME}. הוא ישתנה באופן אקראי כשתוקף ה-{PREMIUM_PRODUCT_NAME} שלך יפוג, אלא אם כן הוא יתחדש." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "אין לך גישה לערוץ שבו נשלחה ההודעה הזו." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "אתה נשאר ב-{ownedNames}. בעלים לא יכולים לעזוב את הקהילה שלהם." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "השמע שלך הושתק על ידי מנהלים" @@ -39699,11 +39660,6 @@ msgstr "הבקשה שלך ממתינה לבדיקה. עדיין באפשרותך msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "הדפדפן שלך דורש אינטראקציה של המשתמש לפני שניתן להשמיע אודיו. לחץ על הכפתור למטה כדי לאפשר צ'אט קולי." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "מכשיר הלכידה שלך שולח {deliveredResolution} במקום {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "הכרטיס שלך נבדק להתאמת מחיר מקומי. זה בדרך כלל לוקח רגע." @@ -39734,36 +39690,11 @@ msgstr "הקהילה שלך מופיעה בגילוי. ניתן לעדכן את msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "הקהילה שלך צריכה לפחות {minMemberCount, plural, one {חבר אחד} two {# חברים} other {# חברים}} כדי שתוכל להופיע בגילוי." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "החיבור שלך לא מספיק מהיר. הסטרים שלך מוגדר ל- {frameRate} FPS ברזולוציית {resolution}, והצופים מקבלים בערך {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "כרטיס האשראי שלך נבדק. אם הכרטיס תקף, תוכן למבוגרים ייפתח בקרוב. באפשרותך לסגור את הכרטיסייה הזו ולחזור לאפליקציה." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "המכשיר שלך לא עומד בקצב. הסטרים שלך מוגדר ל- {frameRate} FPS ברזולוציית {resolution}, והצופים מקבלים בערך {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "המכשיר שלך לא עמד בקצב, לכן הסטרים שלך שולח כעת {frameRate} FPS כדי לשמור על חדות של {resolution}." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "המכשיר שלך לא הצליח לעמוד בקצב, ולכן הסטרים שלך שולח כעת {resolution} ב-{frameRate} FPS במקום {targetResolution} ב-{targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "המכשיר שלך לא עמד בקצב, לכן הסטרים שלך שולח כעת {resolution} כדי לשמור על {frameRate} FPS חלק." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "ההרשמה שלך דורשת בדיקה נוספת למניעת ספאם לפני שתוכל להמשיך." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "האיכות ששמרת של {savedResolution} ב- {savedFrameRate} FPS דורשת {premiumProductName}, לכן השיתופים משתמשים ב- {resolution} ב- {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "לא ניתן היה לפרסם את שיתוף המסך שלך בקודק וידאו תואם, ולכן הוא הופסק. נסה לשתף שוב." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "המקור שלך מפיק כ-{sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "השידור שלך עדיין פעיל" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "השידור שלך הוחלף ל-{codec} מכיוון ש-{previousCodec} לא הצליח לעמוד בקצב במכשיר זה. הצופים עשויים לראות הפסקה קצרה." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "כתובת ה-URL המותאמת אישית שלך הוגדרה ל-{inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "מקודד הווידאו שלך הפסיק לקודד פריימים, ולכן שיתוף המסך שלך הופסק. נסה לשתף שוב." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "מקודד הווידאו שלך הפסיק לפעול, ולכן הזרם שלך עבר ל-{codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/hi/messages.po b/fluxer_app/src/features/i18n/locales/hi/messages.po index 189ea6633..379f8c561 100644 --- a/fluxer_app/src/features/i18n/locales/hi/messages.po +++ b/fluxer_app/src/features/i18n/locales/hi/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} कनेक्ट करना चाहता है" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} इस अनुमति के लिए इस अकाउंट का इस्तेमाल करेगा।" -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} इस डिवाइस पर ठीक से काम नहीं कर पा रहा है। तेज़ कोडेक की अनुमति देने के लिए एडवांस्ड सेटिंग्स में कोडेक को ऑटोमैटिक पर सेट करें।" - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} अभी केवल {productName} स्टाफ़ msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ कोई सीमा नहीं} one {# प्रतिभागी} other {# प्रतिभागी}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# लाइन बची)} other {... (# लाइनें बचीं)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# पंक्ति बची)} other {... (# पंक्तियाँ बचीं)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {विस्तार करें (# लाइन) msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {विस्तार करें (# पंक्ति)} other {विस्तार करें (# पंक्तियाँ)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {# अन्य डिवाइस दिखाएँ} other {# अन्य डिवाइस दिखाएँ}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {कॉल पर} other {# लोग कॉल प msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {वीडियो कॉल में शामिल हों (# प्रतिभागी)} other {वीडियो कॉल में शामिल हों (# प्रतिभागी)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {# स्ट्रीम देखना जारी रखें और इसे जोड़ें} other {# स्ट्रीम देखना जारी रखें और इसे जोड़ें}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {आपका इनवाइट लिंक # दिन में समाप्त हो जाएगा।} other {आपका इनवाइट लिंक # दिनों में समाप्त हो जाएगा।}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} घंटे" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} एफपीएस" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# ओवरराइड} other {# ओवर msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} पहले यह सत्यापित करेगा कि आपका कार्ड स्थानीयकृत मूल्य निर्धारण के लिए योग्य है, फिर आपको भुगतान के लिए आगे बढ़ाएगा। इसे पूरा करने के बाद {productName} पर वापस आएं।" -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} इस डिवाइस पर उपलब्ध नहीं है, इसलिए आपकी स्ट्रीम {codec} का उपयोग करती है।" - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} को आपके माइक्रोफ़ोन का एक्सेस चाहिए। अपने ऑपरेटिंग सिस्टम की गोपनीयता सेटिंग्स में माइक्रोफ़ोन का एक्सेस दें और ऐप को रीस्टार्ट करें।" #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} को आपके डिवाइस दिखाने के लिए कैमरे का एक्सेस चाहिए।" @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} ऑनलाइन" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "मैसेज टेक्स्ट में टाइप किय msgid "a user" msgstr "कोई यूज़र" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "एक दर्शक {pinnedCodec} नहीं चला सकता, इसलिए आपकी स्ट्रीम {codec} का उपयोग करती है।" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "स्वीकार करें" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "जवाब दें" @@ -3178,12 +3163,12 @@ msgstr "ग्रुप में जोड़ें" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "सेव किए गए मीडिया में जोड़ें" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "सिर्फ़ URL वाले पसंदीदा GIF में जोड़ें" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "एडवांस" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "एडवांस वीडियो सेटिंग्स" @@ -3451,7 +3436,7 @@ msgstr "अलाइनमेंट कंट्रोल केवल चौड #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "अनुमति दें" msgid "Allow {everyoneMention} and {hereMention}" msgstr "{everyoneMention} और {hereMention} की अनुमति दें" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "{PRODUCT_NAME} को {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME} में अपने कैमरे का उपयोग करने की अनुमति दें।" @@ -3618,7 +3603,7 @@ msgstr "बॉट से डायरेक्ट मैसेज की अन msgid "Allow bots to send you direct messages?" msgstr "क्या बॉट आपको डायरेक्ट मैसेज भेज सकते हैं?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "कैमरे की अनुमति दें" @@ -4014,13 +3999,13 @@ msgstr "एनिमेटेड इमोजी, GIF और स्टिकर #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "एनिमेटेड GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "एनिमेटेड GIF वीडियो" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "एनिमेटेड आइकॉन के लिए {animatedIconFeature} कम्युनिटी फ़ीचर की ज़रूरत होती है।" #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "एनिमेटेड इमेज" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "एनिमेटेड इमेज का प्रीव्यू" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "एनिमेटेड अपलोड के लिए {premiumProductName} सदस्यता की आवश्यकता होती है।" #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "एनिमेटेड वीडियो" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "ऐप की स्थिति" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "ऐप विंडो" @@ -4361,7 +4346,7 @@ msgstr "ऐप्लिकेशन सफलतापूर्वक अपड #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "ऐप्लिकेशन" @@ -4586,7 +4571,7 @@ msgstr "अटैचमेंट" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "अटैचमेंट {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "अटैचमेंट की समय-सीमा खत्म हो गई है" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "अटैचमेंट की समय-सीमा समाप्त हो गई है या उपलब्ध नहीं है" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "अटैचमेंट आईडी क्लिपबोर्ड पर कॉपी हो गई" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "ऑडियो लेवल" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "ऑडियो म्यूट है" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "ऑडियो पैकेट लॉस:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "ऑडियो प्लेयर" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "ऑडियो प्रीव्यू" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "ऑडियो प्रोसेसिंग (फ़ोकस्ड वॉइस)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "ऑडियो प्रगति" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "ऑडियो सेटिंग्स" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "ऑडियो स्रोत: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "ऑटोमैटिक ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "ऑटोमैटिक गेन कंट्रोल" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "ब्राउज़र: पीछे जाएँ" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "ब्राउज़र डिफ़ॉल्ट" @@ -6198,20 +6183,20 @@ msgstr "कॉल" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "कैमरा" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "डिवाइस प्रीव्यू के लिए कैमरा एक्सेस की ज़रूरत है" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "कैमरा एक्सेस नहीं दिया गया। कैमरा अनुमतियाँ अपडेट करें, फिर से कोशिश करें।" @@ -6276,13 +6261,13 @@ msgstr "कैमरा प्रीव्यू" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "कैमरा क्वालिटी" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "कैमरा सेटिंग्स" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "कैप्चा वेरिफ़िकेशन विफल रहा। फिर से कोशिश करें।" #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "कैप्चर करें" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "ऐप ऑडियो कैप्चर करें" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "डेस्कटॉप ऑडियो कैप्चर करें" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "डिवाइस ऑडियो कैप्चर करें" @@ -6736,12 +6721,12 @@ msgstr "बदलाव शेड्यूल किया गया है" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "स्ट्रीम बदलें" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "स्ट्रीम स्रोत बदलें" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "चैनल एक्सेस" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "चैनल का एक्सेस नहीं है" @@ -7097,7 +7082,7 @@ msgstr "चैनल आईडी क्लिपबोर्ड पर कॉ #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "चैनल लिंक" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "भुगतान का तरीका चुनें" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "शेयर करने के लिए कुछ चुनें" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "भरोसेमंद डोमेन मिटाएँ ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "ज़्यादा स्पष्ट टेक्स्ट" @@ -8285,7 +8270,7 @@ msgstr "चैनल विषय छोटा करें" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "डिवाइसों को छोटा करें" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "कम्युनिटी बनाने वाला" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "कम्युनिटी डीफ़ेन" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "कम्युनिटी MFA आवश्यकता नागबार" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "कम्युनिटी म्यूट" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "अभी कॉन्फ़िगर करें" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "स्क्रीन शेयर कॉन्फ़िगर करें या खत्म करें" @@ -8904,7 +8889,7 @@ msgstr "कम्युनिटी वॉइस जॉइन के लिए msgid "Conflicts with {conflictLabel}" msgstr "{conflictLabel} से टकराता है" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "कैमरा कनेक्ट करें और फिर से प्रयास करें।" @@ -8913,7 +8898,7 @@ msgstr "कैमरा कनेक्ट करें और फिर से msgid "Connect a camera or virtual capture device, then try again." msgstr "कैमरा या वर्चुअल कैप्चर डिवाइस कनेक्ट करें, फिर दोबारा कोशिश करें।" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "एक डिस्प्ले कनेक्ट करें, फिर दोबारा प्रयास करें।" @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "कनेक्शन वॉल्यूम नियंत्रण" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "कनेक्शन: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "आँकड़ों का JSON क्लिपबोर्ड पर #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "क्लिपबोर्ड पर कॉपी किया गया" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "अटैचमेंट आईडी कॉपी करें" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "ऑडियो कॉपी करें" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "ऑडियो लिंक कॉपी करें" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "एंडपॉइंट कॉपी करें" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "फ़ाइल लिंक कॉपी करें" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "GIF कॉपी करें" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "GIF लिंक कॉपी करें" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "आइडेंटिफ़ायर कॉपी करें" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "इमेज कॉपी करें" @@ -9448,7 +9433,7 @@ msgstr "इमेज कॉपी करें" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "इमेज लिंक कॉपी करें" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "अनुभाग का लिंक कॉपी करें" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "मीडिया कॉपी करें" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "वैल्यू कॉपी करें" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "वीडियो कॉपी करें" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "वीडियो लिंक कॉपी करें" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "वेबहुक यूआरएल कॉपी करें" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "इमेज कॉपी हो रही है..." @@ -10588,7 +10573,7 @@ msgstr "अभी: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "कस्टम" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "निष्क्रिय करें" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "डीफ़ेन करें" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "सभी डिवाइस को डीफ़ेन करें" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "डिवाइस को डीफ़ेन करें" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "वॉइस चैनल में दूसरे सदस्यों को डीफ़ेन करें, ताकि वे न सुन सकें और न बोल सकें।" #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "डीफ़ेन शॉर्टकट" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "खुद को डीफ़ेन करें" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "डीफ़ेन किया गया" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "मॉडरेटर ने डीफ़ेन किया" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "डिफ़ॉल्ट" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "डिफ़ॉल्ट कैमरा" @@ -11258,8 +11243,8 @@ msgstr "डेलावेयर" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr ":{emojiName}: को मिटाएँ? इसे पूर्ववत #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "\"{memeName}\" को मिटाएँ? इसे पूर्ववत नहीं किया जा सकता।" @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "इनवाइट मिटाएँ" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "मीडिया मिटाएँ" @@ -11466,8 +11451,8 @@ msgstr "रोल मिटाएँ" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "सेव किया गया मीडिया मिटाएँ" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "डेस्कटॉप से दूर" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "डेस्कटॉप डिवाइस" @@ -11849,13 +11834,13 @@ msgstr "डेवलपर स्थिति" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "डेवलपर टूल" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "चैनल हेडर में स्टाफ़ बैज से डेवलपर टूल उपलब्ध हैं।" @@ -11879,6 +11864,17 @@ msgstr "डिवाइस" msgid "Device alerts" msgstr "डिवाइस अलर्ट" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "डिवाइस ऑडियो ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "डिवाइस ऑडियो ही" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "डिवाइस विवरण" @@ -11888,7 +11884,7 @@ msgstr "डिवाइस विवरण" msgid "Device revoked" msgstr "डिवाइस हटा दिया गया" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "डिवाइस चयन" @@ -11912,7 +11908,7 @@ msgstr "डिवाइस:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "डिवाइस" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "स्ट्राइकथ्रू टेक्स्ट को हल्का करें" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "सीधा इनपुट" @@ -12020,7 +12016,7 @@ msgstr "सीधा अपलोड चालू है" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "बंद करें" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "अक्षम किया गया मान" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "प्रीव्यू बंद करने से आगे प्रीव्यू अपलोड नहीं होंगे। स्ट्रीम समाप्त होने या प्रीव्यू रीफ्रेश होने तक पहले से अपलोड की गई प्रीव्यू इमेज दिखाई देती रह सकती हैं।" @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "वॉइस मैसेज हटाएँ" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "डिस्कनेक्ट करें" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "सभी डिवाइस डिस्कनेक्ट करें" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "डिवाइस डिस्कनेक्ट करें" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "डिस्प्ले" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "स्क्रीन" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification डाउनलोड करें और इसे अपने <1>.well-known फ़ोल्डर में रखें।" #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "ऑडियो डाउनलोड करें" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "डेस्कटॉप अपडेट {version} ({formatBytes}) डाउनलोड करें" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "फ़ाइल डाउनलोड करें" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "fluxer-verification डाउनलोड करें" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "GIF डाउनलोड करें" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "इमेज डाउनलोड करें" @@ -12714,7 +12710,7 @@ msgstr "इंस्टॉलर डाउनलोड करें" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "मीडिया डाउनलोड करें" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "पैकेज डाउनलोड करें" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "वीडियो डाउनलोड करें" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "इको" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "इको कैंसलेशन" @@ -12963,7 +12959,7 @@ msgstr "{0} के लिए एक्सेस एडिट करें" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "ऑल्ट टेक्स्ट एडिट करें" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "कीबोर्ड शॉर्टकट एडिट करें" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "मीडिया एडिट करें" @@ -13102,8 +13098,8 @@ msgstr "रिवर्स इमेज सर्च इंजन एडिट #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "सेव किया गया मीडिया एडिट करें" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "ब्राउज़र नोटिफ़िकेशन चालू करें" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "स्ट्रीम के लिए कोई एक चुनने से पहले कैमरा और कैप्चर डिवाइस का प्रीव्यू देखने के लिए कैमरा एक्सेस चालू करें।" @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "बिल्ट-इन ट्रांसलेटर चालू या बंद करें। टेक्स्ट चुने जाने पर चालू ट्रांसलेटर मैसेज कॉन्टेक्स्ट मेन्यू में दिखते हैं।" #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "प्रीव्यू चालू करें" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "स्क्रीन शेयर बंद करें" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "एंड-टू-एंड एन्क्रिप्शन उपलब्ध नहीं है क्योंकि इस कॉल में एक असमर्थित प्रतिभागी है।" #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "एंड-टू-एंड एन्क्रिप्शन उपलब्ध नहीं है क्योंकि इस वॉइस चैनल में एक असमर्थित प्रतिभागी है।" @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "मनोरंजन" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "पूरी स्क्रीन" @@ -14095,7 +14091,7 @@ msgstr "पूरी स्क्रीन" msgid "Entire system" msgstr "पूरा सिस्टम" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "पूरे सिस्टम का ऑडियो" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "किसी यूज़र को बाहर रखें" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "सिस्टम से बाहर रखें" @@ -14593,7 +14589,7 @@ msgstr "इनवाइट लिंक कॉपी नहीं हो पा #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "क्लिपबोर्ड पर कॉपी नहीं किया जा सका" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "इनवाइट लोड नहीं हो पाए। फिर से कोशिश करें।" #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "शेयर करने लायक स्रोत लोड नहीं हो पाए।" @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "विंडो को फ़ोकस करें" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "फ़ोकस्ड वॉइस" @@ -15322,10 +15318,6 @@ msgstr "फ़ोल्डर सेटिंग्स" msgid "Follow us on {blueskyProviderName}" msgstr "हमें {blueskyProviderName} पर फ़ॉलो करें" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "वॉइस इनपुट को फ़ॉलो करें" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "फ़ॉरवर्ड करें" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} सेकंड आगे बढ़ाएं" @@ -15592,14 +15584,14 @@ msgstr "फ़्रेम" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "फ़्रेम रेट" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "30 FPS से ज़्यादा फ़्रेम रेट के लिए {premiumProductName} की ज़रूरत होगी" @@ -15923,7 +15915,7 @@ msgstr "गेमपैड Y / ट्राएंगल" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "गेमिंग" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF पिकर लोड हो रहा है" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF का प्रीव्यू" @@ -16429,7 +16421,7 @@ msgstr "{permissions} प्रदान किए गए" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "सभी अनुमतियाँ देता है और चैनल प्रतिबंधों को बायपास करता है। अत्यधिक संवेदनशील।" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "बारीक चयन" @@ -16992,7 +16984,7 @@ msgstr "पासवर्ड छिपाएं" msgid "Hide picture-in-picture popout?" msgstr "पिक्चर-इन-पिक्चर पॉपआउट छिपाएँ?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "पूर्वावलोकन थंबनेल छिपाएँ" @@ -17386,7 +17378,7 @@ msgstr "अगर आप चाहते हैं कि ये सदस्य #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "अनदेखा करें" @@ -17395,11 +17387,11 @@ msgstr "अनदेखा करें" msgid "Ignore friend request" msgstr "फ्रेंड रिक्वेस्ट अनदेखा करें" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "हार्डवेयर डिवाइस को अनदेखा करें" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "इनपुट मीडिया को अनदेखा करें" @@ -17430,7 +17422,7 @@ msgstr "क्या आप {displayName} की फ्रेंड रिक् msgid "Ignore this channel's slowmode cooldown." msgstr "इस चैनल के स्लोमोड कूलडाउन को अनदेखा करें।" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "वर्चुअल को अनदेखा करें" @@ -17468,7 +17460,7 @@ msgstr "इलिनॉय" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "इमेज" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "इमेज एसेट" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "इमेज क्लिपबोर्ड पर कॉपी की गई" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "इमेज विकल्प" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "इमेज प्रीव्यू" @@ -17540,7 +17532,7 @@ msgstr "इमेज अपलोड" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "वॉइस में" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "वॉइस चैट में" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "चुने गए को छोड़कर सभी शामिल करें" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "ऐप शामिल करें" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "इनपुट और आउटपुट" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "इनपुट डिवाइस" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "इनपुट प्रोफ़ाइल: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "इनपुट सेटिंग्स" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "इनपुट स्थितियाँ" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "इनपुट वॉल्यूम" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "शेयर करते समय इनवाइट लिंक छिपा हुआ है:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "शेयर करते समय इनवाइट लिंक छिपाया गया" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "{displayName} पर जाएं" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "{labelText} पर जाएं" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "मौजूदा कॉल पर जाएं" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "लिंक किए गए चैनल पर जाएं" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "लिंक किए गए मैसेज पर जाएं" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "{authorNickname} के मैसेज पर जाएँ" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "{labelText} में मैसेज पर जाएं" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "लेआउट" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "स्क्रीन शेयर पूर्वावलोकन के बारे में जानें" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "लिंक स्टाइल" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "लिंक उपलब्ध नहीं है" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "लिनक्स ऐप" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "लिनक्स डिफ़ॉल्ट" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "थीम लोड हो रही है..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "लोड हो रहा है..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS ऐप" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS डिफ़ॉल्ट" @@ -20289,7 +20281,7 @@ msgstr "अगला ट्रैक" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "मीडिया विकल्प" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "चलाएँ/पॉज़ करें" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "मीडिया का पूर्वावलोकन" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "मैसेज लेआउट" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "मैसेज लिंक" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "माइक टेस्ट" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "माइक्रोफ़ोन, कैमरा और स्क्रीन शेयर की सामग्री एंड-टू-एंड एन्क्रिप्टेड है।" @@ -21019,7 +21011,7 @@ msgstr "नाबालिगों के लिए जोखिम, गलत #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "गलत वर्तनी वाले शब्द" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "मोबाइल डिवाइस" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "सभी को म्यूट करें" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "सभी डिवाइस म्यूट करें" @@ -21653,13 +21645,13 @@ msgstr "म्यूट किया गया" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "माइक्रोफ़ोन म्यूट है" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "मॉडरेटर ने म्यूट किया" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} की अनुमति नहीं है" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "कोई एक्सेस नहीं" @@ -22282,7 +22274,7 @@ msgstr "कोई एडवांस सेटिंग्स नहीं म msgid "No AFK channel" msgstr "कोई AFK चैनल नहीं" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "कोई ऐप्लिकेशन विंडो नहीं मिली" @@ -22300,6 +22292,11 @@ msgstr "अभी तक कोई एसेट नहीं" msgid "No audio" msgstr "कोई ऑडियो नहीं" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "इस डिवाइस से कोई ऑडियो नहीं" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "कोई अधिकृत ऐप्लिकेशन नहीं" @@ -22341,7 +22338,7 @@ msgstr "कोई बुकमार्क नहीं" msgid "No bot banner" msgstr "कोई बॉट बैनर नहीं" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "कोई कैमरा नहीं मिला" @@ -22421,7 +22418,7 @@ msgstr "कोई विवरण नहीं।" msgid "No desktop update is available." msgstr "कोई डेस्कटॉप अपडेट उपलब्ध नहीं है।" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "कोई डिस्प्ले नहीं मिला" @@ -22650,7 +22647,7 @@ msgstr "कोई रिस्पॉन्स बॉडी नहीं मि #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "कोई परिणाम नहीं" @@ -22679,7 +22676,7 @@ msgstr "अभी कोई रोल नहीं है। {rolesSettingsPath} #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "कोई सेव किया गया मीडिया नहीं" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "नॉइज़ गेट" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "शोर दबाना" @@ -22877,7 +22874,7 @@ msgstr "रूपांतरण नहीं" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "कोई नहीं" @@ -23286,7 +23283,7 @@ msgstr "केवल चौड़ी स्क्रीन पर लागू msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "केवल क्रेडिट कार्ड स्वीकार किए जाते हैं। वयस्क सामग्री की जाँच के लिए डेबिट और प्रीपेड कार्ड इस्तेमाल नहीं किए जा सकते।" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "केवल डिफ़ॉल्ट स्पीकर" @@ -23334,7 +23331,7 @@ msgstr "यहां कोड तभी चलाएं जब आप ठीक msgid "Only show message previews for DMs with unread messages" msgstr "केवल बिना पढ़े मैसेज वाले DM के लिए मैसेज प्रीव्यू दिखाएं" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "केवल स्पीकर" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "{displayName} खोलें" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "सेटिंग्स में {labelText} खोलें" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "@{displayName} खोलें" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "एडवांस मीडिया सेटिंग्स खोलें" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "कोई ऐप्लिकेशन विंडो खोलें, फिर दोबारा कोशिश करें।" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "एनिमेटेड GIF को फ़ुल व्यू में खोलें" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "एनिमेटेड GIF वीडियो को फ़ुल व्यू में खोलें" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "ऑडियो को फ़ुल व्यू में खोलें" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "ऑडियो लिंक खोलें" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "ब्राउज़र खोलें" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "ब्राउज़र पिकर खोलें" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "पसंदीदा मेन्यू खोलें" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "फ़ाइल लिंक खोलें" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "GIF लिंक खोलें" @@ -23651,7 +23648,7 @@ msgstr "ब्राउज़र में इमेज खोलें" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "इमेज को फ़ुल व्यू में खोलें" @@ -23660,7 +23657,7 @@ msgstr "इमेज को फ़ुल व्यू में खोलें" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "इमेज लिंक खोलें" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "सिस्टम DM खोलें" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "सिस्टम पिकर खोलें" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "वीडियो को फ़ुल व्यू में खोलें" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "वीडियो लिंक खोलें" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "वॉइस खोलें" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "वॉइस और वीडियो सेटिंग्स खोलें" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "आउटपुट" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "आउटपुट डिवाइस" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "आउटपुट सेटिंग्स" @@ -24094,7 +24091,7 @@ msgstr "आउटपुट सेटिंग्स" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "आउटपुट वॉल्यूम" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "प्रतिभागी सीमा" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "{participantDisplayName} के लिए प्रतिभागी विकल्प" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "प्रीव्यू छिपा है" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "प्रीव्यू इमेज को डिलीवरी के लिए {productName} कुछ समय तक स्टोर करता है और ये एंड-टू-एंड एन्क्रिप्टेड नहीं होतीं। अगर आप नहीं चाहते कि थंबनेल के लिए स्क्रीन शेयर फ़्रेम अपलोड हों, तो प्रीव्यू बंद कर दें।" #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "प्रीव्यू इमेज को डिलीवरी के लिए {productName} कुछ समय तक स्टोर करता है और ये एंड-टू-एंड एन्क्रिप्टेड नहीं होतीं। इस ग्रुप DM के लोगों को थंबनेल देखने के लिए आपकी स्ट्रीम सक्रिय रूप से देखने की ज़रूरत नहीं है।" #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "प्रीव्यू इमेज को डिलीवरी के लिए {productName} कुछ समय तक स्टोर करता है और ये एंड-टू-एंड एन्क्रिप्टेड नहीं होतीं। लोगों को कनेक्ट होने के लिए अनुमति फिर भी चाहिए, लेकिन उन्हें आपकी स्ट्रीम सक्रिय रूप से देखने की ज़रूरत नहीं है।" @@ -26269,7 +26266,7 @@ msgstr "रेफ़रेंस कॉपी किया गया।" msgid "Referral parameters" msgstr "रेफरल पैरामीटर" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "ऑडियो स्रोत रीफ़्रेश करें" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "सामान्य बटन पर क्लिक किया गया।" #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "अस्वीकार करें" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "ग्रुप से हटाएँ" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "सेव किए गए मीडिया से हटाएँ" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "सबसे ऊपर रखना बंद करें" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "सिर्फ़ URL वाले पसंदीदा GIF से हटाएँ" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "{0} का बैन हटा दिया गया" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} सेकंड रिवाइंड करें" @@ -28202,7 +28199,7 @@ msgstr "आइकॉन सेव करें" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "शुरू करने के लिए मैसेज से कुछ मीडिया सेव करें!" @@ -28313,7 +28310,7 @@ msgstr "स्क्रीन रिकॉर्डिंग की अनुम #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "स्क्रीन शेयर" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "स्क्रीन शेयर ऑडियो बूस्ट" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "स्क्रीन शेयर ऑडियो शुरू नहीं हो सका" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "स्क्रीन शेयर एन्कोडर कंट्रोल" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "स्क्रीन शेयर समाप्त हो गया" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "स्क्रीन शेयर प्रीव्यू का तरीका" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "स्क्रीन शेयर प्रीव्यू" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "स्क्रीन शेयर प्रीव्यू बंद हैं।" #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "स्क्रीन शेयर प्रीव्यू चालू हैं।" @@ -28391,13 +28388,13 @@ msgstr "स्क्रीन शेयर गोपनीयता" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "स्क्रीन शेयर क्वालिटी" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "स्क्रीन शेयर सेटिंग्स" @@ -28723,7 +28720,7 @@ msgstr "रोल या सदस्य खोजें…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "सेव किया गया मीडिया खोजें" @@ -28942,12 +28939,12 @@ msgstr "सीक प्रीव्यू" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "चुनें" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "{accessibleName} चुनें" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "रीसेट लिंक भेजें" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "सेव किया गया मीडिया {memeName} भेजें" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "रोल के लिए सदस्य सूची में एक स्थान सेट किया गया" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "{preset} प्रीसेट द्वारा सेट किया गया। यहाँ कोई मान चुनने पर कस्टम पर स्विच हो जाएगा।" @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "अलग-अलग आवाज़ों के लिए कस्टम वॉल्यूम सेट करें। जिन आवाज़ों में ओवरराइड नहीं है, वे मास्टर वॉल्यूम के अनुसार होंगी।" #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "डीफ़ेन शॉर्टकट सेट करें" @@ -29669,11 +29666,6 @@ msgstr "इस जाँच को अलग रखें" msgid "Set this check aside?" msgstr "इस जाँच को अलग रख दें?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "{resolution} पर {frameRate} FPS के साथ {codec} पर भेजने के लिए सेट करें" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "सेटिंग्स" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "सेटिंग्स लिंक" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "उपहार शेयर करें" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "स्क्रीन शेयर करें" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "कम्युनिटी मॉडरेटर के साथ शेयर करें।" #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "अपनी स्क्रीन शेयर करें" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "अपनी स्क्रीन को हाई डेफ़िनिशन (1080p), क्वाड HD (1440p) या नेटिव सोर्स रिज़ॉल्यूशन में, 60 FPS तक शेयर करें।" @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "शेयर की गई विंडो" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "शेयर की गई विंडो का ऑडियो" @@ -30624,6 +30616,10 @@ msgstr "साइलेंट कॉल" msgid "Silent calls from everyone" msgstr "सभी से साइलेंट कॉल" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "जब कैप्चर डिवाइस में अपना कोई ऑडियो इनपुट न हो तो साइलेंट रहें" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "स्मूद स्क्रॉलिंग" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "ज़्यादा स्मूद वीडियो" @@ -31005,11 +31001,6 @@ msgstr "कुछ इमोजी जोड़े नहीं जा सके" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "आप जो फ़ाइलें अपलोड करने की कोशिश कर रहे हैं, उनमें से कुछ प्रति फ़ाइल {maxSizeFormatted} की अधिकतम साइज़ सीमा से बड़ी हैं।" -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "आपके लाइव स्ट्रीम पर कुछ स्ट्रीम सेटिंग्स लागू नहीं की जा सकीं।" - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "साउंड" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "सोर्स" @@ -31569,7 +31560,7 @@ msgstr "वॉइस कॉल शुरू करें?" msgid "Start call" msgstr "कॉल शुरू करें" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "कैमरा टेस्ट शुरू करें और इफ़ेक्ट कॉन्फ़िगर करें" @@ -31910,7 +31901,7 @@ msgstr "बोलना बंद करें" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "स्ट्रीमिंग बंद करें" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "सभी लिंक पर भरोसा करना बंद करें?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "देखना बंद करें" @@ -31982,7 +31973,7 @@ msgstr "आपके स्पीकर को आपके माइक मे #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "स्ट्रीम" @@ -32001,11 +31992,6 @@ msgstr "स्ट्रीम समाप्त हो गई" msgid "Stream hidden" msgstr "स्ट्रीम छिपी हुई है" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "स्ट्रीम तालमेल नहीं बिठा पा रही है" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "स्ट्रीम क्वालिटी" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "स्ट्रीम सेटिंग्स" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "स्ट्रीम सेटिंग्स को समायोजित किया गया" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "{productName} स्टाफ़ की सिस्टम घोषण #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "सिस्टम डिफ़ॉल्ट" @@ -33036,13 +33017,8 @@ msgstr "बॉट को <0>{destinationName} में जोड़ दि msgid "The bot has been added." msgstr "बॉट जोड़ दिया गया है।" -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "ब्राउज़र {deliveredResolution} भेज रहा है, {resolution} के बजाय।" - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "कैमरा प्रीव्यू अभी भी बंद हो रहा है। थोड़ी देर में फिर से स्ट्रीम करने की कोशिश करें।" @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "रोल ने {permissions} प्रदान कीं" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "स्क्रीन शेयर स्रोत ने वीडियो भेजना बंद कर दिया है, इसलिए आपका स्क्रीन शेयर रोक दिया गया।" @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "यह ब्राउज़र कंसोल एक डेवलपर टूल है।" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "यह कॉल एंड-टू-एंड एन्क्रिप्टेड है।" @@ -33645,11 +33621,6 @@ msgstr "यह डेस्कटॉप बिल्ड {productName} के अ msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "यह डेवलपमेंट बिल्ड खुद को अपडेट नहीं कर सकता है। अपडेट फ़्लो का परीक्षण करने के लिए डेस्कटॉप इंस्टॉलर डाउनलोड करें।" -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "पिछली बार यह डिवाइस {targetResolution} को {targetFrameRate} FPS पर बनाए नहीं रख सका, इसलिए आपकी स्ट्रीम {resolution} को {frameRate} FPS पर शुरू हुई।" - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "यह इंस्टॉलेशन आपके सिस्टम द्वारा प्रबंधित किया जाता है। अपने सॉफ़्टवेयर सेंटर या पैकेज मैनेजर से {productName} को अपडेट करें।" #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "यह इंस्टेंस वर्तमान में 30 FPS पर 720p तक स्क्रीन शेयर की अनुमति देता है।" @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "यह लिंक चैनल वयस्क सामग्री के लिए चिह्नित है और ऐसी सामग्री खोल सकता है जो कुछ यूज़र के लिए अनुपयुक्त हो सकती है।" #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "यह लिंक आपके अकाउंट के लिए उपलब्ध नहीं है।" @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "यह विकल्प आवश्यक है। कृपया कोई मान दें।" #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "यह प्रतिभागी इस चैनल में बोल नहीं सकता" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "इस प्रतिभागी को डीफ़ेन किया गया है" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "इस प्रतिभागी को मॉडरेटर ने डीफ़ेन किया है" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "यह फ़ोन नंबर पहले ही इस्तेमाल किया जा चुका है। कोई दूसरा नंबर आज़माएँ या सहायता से संपर्क करें।" #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "यह पिकर सिर्फ़ डेस्कटॉप ऐप में उपलब्ध है।" @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "कंट्रोल टॉगल करें" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "डीफ़ेन टॉगल करें" @@ -34666,7 +34637,7 @@ msgstr "ट्रे आइकॉन में बदलाव Linux पर र #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "ट्रेंडिंग GIF" @@ -34760,7 +34731,7 @@ msgstr "कोई अलग खोज क्वेरी आज़माएँ #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "कोई दूसरा सर्च टर्म या फ़िल्टर आज़माएँ" @@ -34839,11 +34810,6 @@ msgstr "अलग-अलग फ़िल्टर या सर्च टर् msgid "Try editing your message again." msgstr "अपना मैसेज फिर से एडिट करने की कोशिश करें।" -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "पूरी क्वालिटी में फिर से आज़माएँ" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "\"थीम\", \"सूचनाएं\" या \"गोपनीयता\" जैसा कुछ खोजकर देखें" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "जो भी आपको ठीक न लगे, उसे बंद कर दें। कुछ फ़ीचर काम करना बंद कर सकते हैं।" #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "इस स्रोत के लिए ऑडियो शेयरिंग बंद करें या थोड़ी देर बाद फिर से प्रयास करें।" @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "OBS या XSplit का पता चलने पर अपने आप चालू करें" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "कैमरा चालू करें" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "वसूली योग्य नहीं" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "अनडीफ़ेन करें" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "सभी डिवाइस अनडीफ़ेन करें" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "खुद को अनडीफ़ेन करें" @@ -35558,7 +35524,7 @@ msgstr "अज्ञात यूज़र" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "अज्ञात यूज़र" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "{premiumProductName} के साथ DM में कस्टम इमोजी अनलॉक करें" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "{premiumProductName} के साथ HD स्क्रीन शेयर अनलॉक करें" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "{label} को अनम्यूट करें" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "सभी डिवाइस अनम्यूट करें" @@ -35741,7 +35707,7 @@ msgstr "बिना नाम का ग्रुप" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "अनाम इनपुट" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "नए इमोजी और स्टिकर अपलोड करें, और अपनी बनाई चीज़ें मैनेज करें।" #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "स्क्रीन शेयर के लिए प्रीव्यू फ़्रेम अपलोड करें।" @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "यूआरएल" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "यूआरएल क्लिपबोर्ड पर कॉपी हो गया" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "यूज़र टैग (वैकल्पिक)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "यूज़र का वॉल्यूम" @@ -37227,7 +37193,7 @@ msgstr "वीडियो पैकेट लॉस:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "वीडियो प्रीव्यू" @@ -37283,7 +37249,7 @@ msgstr "वीडियो अपलोड" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "वॉइस और वीडियो" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "वॉइस और वीडियो सेटिंग्स" @@ -37685,7 +37651,7 @@ msgstr "वॉइस और वीडियो शॉर्टकट" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "वॉइस कॉल" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "वॉइस कनेक्शन डीबग करें" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "वॉइस डीफ़ेन" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "वॉइस मैसेज" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "वॉइस मैसेज प्लेयर" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "वॉइस सेटिंग्स" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "वॉइस अनडीफ़ेन" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "यहां इंतज़ार करें" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "कनेक्शन का इंतज़ार हो रहा है..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "जब चैट पर लिंक के तौर पर पोस्ट किया जाए" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "जब प्रीव्यू चालू होते हैं, तो {productName} आपके स्क्रीन शेयर से समय-समय पर JPEG फ़्रेम अपलोड करता है, ताकि इस ग्रुप DM में मौजूद दूसरे लोग देखने से पहले थंबनेल देख सकें।" #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "जब प्रीव्यू चालू होते हैं, तो {productName} आपके स्क्रीन शेयर से समय-समय पर JPEG फ़्रेम अपलोड करता है, ताकि इस वॉइस चैनल से कनेक्ट करने की अनुमति रखने वाले लोग देखने से पहले थंबनेल देख सकें।" #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "जब प्रीव्यू चालू होते हैं, तो {productName} आपके स्क्रीन शेयर से समय-समय पर JPEG फ़्रेम अपलोड करता है, ताकि इस DM में मौजूद दूसरा व्यक्ति देखने से पहले थंबनेल देख सके।" @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "स्क्रीन के ऊपर या नीचे से कटी हुई विंडो और डॉक किए गए DevTools पारदर्शी रहने के बजाय ग्रे बैकग्राउंड दिखा सकते हैं।" #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "विंडोज डिफ़ॉल्ट" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "आपको इस कम्युनिटी से बैन कर दिया गया है और आप इसमें शामिल नहीं हो सकते।" #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "आप डीफ़ेन किए गए हैं" @@ -38833,11 +38799,6 @@ msgstr "आप {productName} का {releaseChannel} बिल्ड इस् msgid "You aren't in any communities right now." msgstr "आप अभी किसी भी कम्युनिटी में नहीं हैं।" -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "आपने {resolution} {frameRate} FPS पर मांगा" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "आप इस कम्युनिटी में मैसेज न #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "आप इस चैनल में अपनी स्क्रीन शेयर नहीं कर सकते" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "आप इस चैनल में बोल नहीं सकते" @@ -39036,7 +38997,7 @@ msgstr "आप इस चैनल में बोल नहीं सकते #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "आप इस चैनल में अपना कैमरा चालू नहीं कर सकते" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "आपने {PREMIUM_PRODUCT_NAME} पर रहते हुए अपना टैग बदल दिया है। जब आपकी {PREMIUM_PRODUCT_NAME} की अवधि खत्म हो जाएगी, तो यह अपने आप बदल जाएगा, बशर्ते कि इसका रिन्यूअल न हो।" #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "आपके पास उस चैनल का एक्सेस नहीं है जहाँ यह मैसेज भेजा गया था।" @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "आप {ownedNames} में रहेंगे। मालिक अपनी कम्युनिटी नहीं छोड़ सकते।" #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "आपको मॉडरेटर ने डीफ़ेन किया है" @@ -39699,11 +39660,6 @@ msgstr "आपका आवेदन समीक्षा के लिए ल msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "ऑडियो चलाने से पहले आपके ब्राउज़र को यूज़र इंटरैक्शन की ज़रूरत है। वॉइस चैट चालू करने के लिए नीचे दिए गए बटन पर क्लिक करें।" -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "आपका कैप्चर डिवाइस {resolution} के बजाय {deliveredResolution} भेज रहा है।" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "स्थानीय मूल्य निर्धारण के लिए आपके कार्ड की जाँच की जा रही है। इसमें आमतौर पर कुछ पल लगते हैं।" @@ -39734,36 +39690,11 @@ msgstr "आपकी कम्युनिटी डिस्कवरी मे msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "डिस्कवरी में लिस्ट होने के लिए आपकी कम्युनिटी में कम से कम {minMemberCount, plural, one {# सदस्य} other {# सदस्य}} होने चाहिए।" -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "आपका कनेक्शन साथ नहीं दे पा रहा है। आपकी स्ट्रीम {frameRate} FPS पर {resolution} पर सेट है और दर्शकों को लगभग {deliveredFrameRate} FPS मिल रहा है।" - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "आपके क्रेडिट कार्ड की जाँच कर ली गई है। अगर कार्ड मान्य है, तो जल्द ही वयस्क सामग्री अनलॉक हो जाएगी। आप इस टैब को बंद करके ऐप पर वापस जा सकते हैं।" -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "आपका डिवाइस साथ नहीं दे पा रहा है। आपकी स्ट्रीम {frameRate} FPS पर {resolution} पर सेट है और दर्शकों को लगभग {deliveredFrameRate} FPS मिल रहे हैं।" - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "आपका डिवाइस साथ नहीं दे सका, इसलिए आपकी स्ट्रीम अब {resolution} को शार्प रखने के लिए {frameRate} FPS भेज रही है।" - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "आपका डिवाइस साथ नहीं दे सका, इसलिए आपकी स्ट्रीम अब {targetResolution} पर {targetFrameRate} FPS के बजाय {resolution} पर {frameRate} FPS भेज रही है।" - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "आपका डिवाइस तालमेल नहीं बिठा सका, इसलिए आपका स्ट्रीम अब {resolution} भेज रहा है ताकि {frameRate} FPS स्मूथ रहे।" - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "जारी रखने से पहले आपके रजिस्ट्रेशन के लिए एक अतिरिक्त एंटी-स्पैम जाँच की ज़रूरत है।" #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "आपका सहेजा गया {savedResolution} {savedFrameRate} FPS पर {premiumProductName} की आवश्यकता है, इसलिए शेयर {resolution} {frameRate} FPS पर उपयोग करते हैं।" #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "आपका स्क्रीन शेयर किसी कम्पैटिबल वीडियो कोडेक के साथ पब्लिश नहीं हो सका, इसलिए इसे रोक दिया गया। फिर से शेयर करने की कोशिश करें।" -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "आपका स्रोत लगभग {sourceFrameRate} FPS दे रहा है" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "आपकी स्ट्रीम अभी भी लाइव है" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "आपका स्ट्रीम {codec} पर स्विच हो गया क्योंकि इस डिवाइस पर {previousCodec} ठीक से काम नहीं कर पा रहा था। दर्शकों को एक छोटा सा पॉज़ दिख सकता है।" - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "आपका वैनिटी यूआरएल {inviteEndpoint}/{vanitySlug} पर सेट कर दिया गया है" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "आपके वीडियो एन्कोडर ने फ़्रेम एन्कोड करना बंद कर दिया, इसलिए आपकी स्क्रीन शेयरिंग रोक दी गई। फिर से शेयर करने की कोशिश करें।" -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "आपका वीडियो एन्कोडर बंद हो गया, इसलिए आपकी स्ट्रीम {codec} पर स्विच हो गई।" - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/hr/messages.po b/fluxer_app/src/features/i18n/locales/hr/messages.po index 223b3c2c2..75f3e3d1b 100644 --- a/fluxer_app/src/features/i18n/locales/hr/messages.po +++ b/fluxer_app/src/features/i18n/locales/hr/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} se želi povezati" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} će koristiti ovaj račun za ovo ovlaštenje." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} ne može pratiti na ovom uređaju. Postavite kodek na Automatski u Naprednim postavkama kako biste omogućili brži." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Zajednica {communityName} trenutačno je dostupna samo članovima osoblj msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Bez ograničenja} one {# sudionik} few {# sudionika} other {# sudionika}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (još # redak)} few {... (još # retka)} other {... (još # redaka)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (još # redak)} few {... (još # retka)} other {... (još # redaka)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Proširi (# redak)} few {Proširi (# retka)} other msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Proširi (# redak)} few {Proširi (# retka)} other {Proširi (# redaka)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Proširi # drugi uređaj} few {Proširi # druga uređaja} other {Proširi # drugih uređaja}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, =1 {U pozivu} one {# u pozivu} few {# u pozivu} other {# msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Pridruži se videopozivu (# sudionik)} few {Pridruži se videopozivu (# sudionika)} other {Pridruži se videopozivu (# sudionika)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Nastavi gledati # prijenos i dodaj ovaj} few {Nastavi gledati # prijenosa i dodaj ovaj} other {Nastavi gledati # prijenosa i dodaj ovaj}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Vaša poveznica za pozivnicu istječe za # dan.} few {Vaša poveznica za pozivnicu istječe za # dana.} other {Vaša poveznica za pozivnicu istječe za # dana.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} sata" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# izmjena} few {# izmjene} other {# izmjena msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} će prvo provjeriti ispunjava li vaša kartica uvjete za lokalizirane cijene, a zatim će vas preusmjeriti na plaćanje. Vratite se na {productName} nakon što to dovršite." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} nije dostupan na ovom uređaju, pa vaš prijenos koristi {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "Aplikaciji {productName} potreban je pristup vašem mikrofonu. Omogućite pristup mikrofonu u postavkama privatnosti operativnog sustava i ponovno pokrenite aplikaciju." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "Aplikacija {productName} treba pristup kameri za prikaz vaših uređaja." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} na mreži" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "URL upisan u tekst poruke" msgid "a user" msgstr "korisnik" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Gledatelj ne može reproducirati {pinnedCodec}, stoga vaš prijenos koristi {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Prihvati" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Javi se" @@ -3178,12 +3163,12 @@ msgstr "Dodaj u grupu" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Dodaj u spremljene medije" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Dodaj u favorite GIF-ova pohranjenih putem URL-a" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Napredno" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Napredne video postavke" @@ -3451,7 +3436,7 @@ msgstr "Kontrole poravnanja dostupne su samo na širim zaslonima" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Dopusti" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Dopusti {everyoneMention} i {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Dopustite aplikaciji {PRODUCT_NAME} pristup vašoj kameri u {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Dopusti izravne poruke botova" msgid "Allow bots to send you direct messages?" msgstr "Dopustiti botovima da vam šalju izravne poruke?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Dopusti pristup kameri" @@ -4014,13 +3999,13 @@ msgstr "Animirani emojiji, GIF-ovi i naljepnice ostaju pod vašom kontrolom na k #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animirani GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animirani GIF videozapis" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animirane ikone zahtijevaju značajku zajednice {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animirana slika" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Pregled animirane slike" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Za učitavanje animiranih datoteka potrebna je pretplata na {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animirani videozapis" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Stanje aplikacije" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Prozor aplikacije" @@ -4361,7 +4346,7 @@ msgstr "Aplikacija je uspješno ažurirana" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplikacije" @@ -4586,7 +4571,7 @@ msgstr "privitak" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Privitak {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Privitak je istekao" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Privitak je istekao ili nije dostupan" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID privitka kopiran u međuspremnik" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Razina zvuka" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Zvuk isključen" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Gubitak audio paketa:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Reproduktor zvuka" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Pretpregled zvuka" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Obrada zvuka (fokusirani glas)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Napredak reprodukcije" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Postavke zvuka" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Izvori zvuka: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatski ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatska kontrola pojačanja" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Preglednik: natrag" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Zadana postavka preglednika" @@ -6198,20 +6183,20 @@ msgstr "Pozivi" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Potreban je pristup kameri za pretpreglede uređaja" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Pristup kameri nije odobren. Ažurirajte dopuštenja za kameru, a zatim pokušajte ponovno." @@ -6276,13 +6261,13 @@ msgstr "Pregled kamere" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kvaliteta kamere" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Postavke kamere" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Provjera Captche nije uspjela. Pokušajte ponovno." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Snimanje" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Snimanje zvuka aplikacije" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Snimanje zvuka s radne površine" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Snimanje zvuka uređaja" @@ -6736,12 +6721,12 @@ msgstr "Promjena zakazana" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Promijeni stream" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Promijeni izvor prijenosa" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Pristup kanalu" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Pristup kanalu odbijen" @@ -7097,7 +7082,7 @@ msgstr "ID kanala kopiran u međuspremnik" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "poveznica kanala" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Odaberite način plaćanja" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Odaberite što želite podijeliti" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Očisti pouzdane domene ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Jasniji tekst" @@ -8285,7 +8270,7 @@ msgstr "Sažmi temu kanala" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Sažmi uređaje" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Osnivač zajednice" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Isključi zvuk u zajednici" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Traka za obveznu MFA u zajednici" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Isključi mikrofon u zajednici" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Konfiguriraj sada" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Konfigurirajte ili prekinite dijeljenje zaslona" @@ -8904,7 +8889,7 @@ msgstr "Potvrda ili dvostruki klik za pridruživanje glasovnim kanalima zajednic msgid "Conflicts with {conflictLabel}" msgstr "U sukobu s {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Povežite kameru i pokušajte ponovno." @@ -8913,7 +8898,7 @@ msgstr "Povežite kameru i pokušajte ponovno." msgid "Connect a camera or virtual capture device, then try again." msgstr "Povežite kameru ili virtualni uređaj za snimanje, pa pokušajte ponovno." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Povežite zaslon, a zatim pokušajte ponovno." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Kontrole glasnoće veze" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Veza: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "JSON statistike kopiran u međuspremnik" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Kopirano u međuspremnik" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopiraj ID privitka" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopiraj zvuk" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopiraj poveznicu zvuka" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopiraj krajnju točku" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopiraj poveznicu datoteke" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopiraj GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopiraj poveznicu GIF-a" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopiraj identifikator" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopiraj sliku" @@ -9448,7 +9433,7 @@ msgstr "Kopiraj sliku" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopiraj poveznicu slike" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Kopiraj poveznicu na odjeljak" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopiraj medij" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopiraj vrijednost" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopiraj videozapis" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopiraj poveznicu videozapisa" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopiraj URL webhooka" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopiranje slike..." @@ -10588,7 +10573,7 @@ msgstr "Trenutačno: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Prilagođeno" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deaktiviraj" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Isključi zvuk" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Isključi zvuk na svim uređajima" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Isključi zvuk na uređaju" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Isključi zvuk ostalim članovima u glasovnim kanalima kako ne bi mogli čuti ni govoriti." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Prečac za isključivanje zvuka" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Isključi zvuk za sebe" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Bez zvuka" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Moderatori su vam isključili zvuk" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Zadano" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Zadana kamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Izbrisati :{emojiName}:? Ne može se poništiti." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Izbrisati \"{memeName}\"? Ne može se poništiti." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Izbriši pozivnicu" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Izbriši medij" @@ -11466,8 +11451,8 @@ msgstr "Izbriši ulogu" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Izbriši spremljene medije" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Odsutan na računalu" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Stolno računalo" @@ -11849,13 +11834,13 @@ msgstr "Stanje za razvojne programere" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Alati za razvojne programere" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Alati za razvojne programere dostupni su putem značke osoblja u zaglavlju kanala." @@ -11879,6 +11864,17 @@ msgstr "Uređaj" msgid "Device alerts" msgstr "Upozorenja za uređaje" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Zvuk uređaja ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Samo zvuk uređaja" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Detalji uređaja" @@ -11888,7 +11884,7 @@ msgstr "Detalji uređaja" msgid "Device revoked" msgstr "Uređaj opozvan" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Odabir uređaja" @@ -11912,7 +11908,7 @@ msgstr "Uređaj:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Uređaji" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Priguši precrtani tekst" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Izravan unos" @@ -12020,7 +12016,7 @@ msgstr "Izravan prijenos aktivan" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Onemogući" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Onemogućena vrijednost" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Isključivanje pregleda zaustavlja buduće prijenose slika pregleda. Postojeće slike pregleda mogu ostati vidljive dok prijenos uživo ne završi ili dok se pregled ne osvježi." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Odbaci glasovnu poruku" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Prekini vezu" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Prekini vezu sa svim uređajima" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Prekini vezu s uređajem" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Prikaz" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Zaslon" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification i smjestite ga u mapu <1>.well-known kako bismo mogli potvrditi domenu." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Preuzmi audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Preuzmi ažuriranje za stolno računalo {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Preuzmi datoteku" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Preuzmi fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Preuzmi GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Preuzmi sliku" @@ -12714,7 +12710,7 @@ msgstr "Preuzmi instalacijski program" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Preuzmi medij" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Preuzmi paket" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Preuzmi video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Jeka" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Poništavanje jeke" @@ -12963,7 +12959,7 @@ msgstr "Uredi pristup za {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Uredi zamjenski tekst" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Uredi prečac na tipkovnici" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Uredi medij" @@ -13102,8 +13098,8 @@ msgstr "Uredi tražilicu za obrnuto pretraživanje slika" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Uredi spremljene medije" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Omogući obavijesti preglednika" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Omogućite pristup kameri kako biste pregledali kamere i uređaje za snimanje prije nego što odaberete onaj za prijenos." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Omogućite ili onemogućite ugrađene prevoditelje. Omogućeni prevoditelji pojavljuju se u kontekstnom izborniku poruke kada je tekst odabran." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Omogući pretpreglede" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Zaustavi dijeljenje zaslona" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Šifriranje od kraja do kraja nije dostupno jer je u pozivu sudionik koji nije podržan." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Šifriranje od kraja do kraja nije dostupno jer se u ovom glasovnom kanalu nalazi sudionik koji nije podržan." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Zabava" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Cijeli zaslon" @@ -14095,7 +14091,7 @@ msgstr "Cijeli zaslon" msgid "Entire system" msgstr "Cijeli sustav" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Zvuk cijelog sustava" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "izuzmi korisnika" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Izuzmi iz sustava" @@ -14593,7 +14589,7 @@ msgstr "Kopiranje poveznice za pozivnicu nije uspjelo" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Kopiranje u međuspremnik nije uspjelo" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Učitavanje pozivnica nije uspjelo. Pokušajte ponovno." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Učitavanje izvora za dijeljenje nije uspjelo." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Fokusiraj prozor" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Fokusirani glas" @@ -15322,10 +15318,6 @@ msgstr "Postavke mape" msgid "Follow us on {blueskyProviderName}" msgstr "Pratite nas na {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Prati glasovni unos" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Proslijedi" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Premotaj naprijed {defaultSeekAmount} sekundi" @@ -15592,14 +15584,14 @@ msgstr "Okvir" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Broj sličica u sekundi" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Broj sličica u sekundi iznad 30 zahtijeva {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Kontroler Y / Trokut" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Igranje" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Učitavanje birača GIF-ova" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Pregled GIF-a" @@ -16429,7 +16421,7 @@ msgstr "Dodijeljena {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Daje sva dopuštenja i zaobilazi ograničenja kanala. Vrlo osjetljivo." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Detaljan odabir" @@ -16992,7 +16984,7 @@ msgstr "Sakrij lozinku" msgid "Hide picture-in-picture popout?" msgstr "Sakriti skočni prozor slike u slici?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Sakrij sličicu pretpregleda" @@ -17386,7 +17378,7 @@ msgstr "Ako želite da ovi članovi mogu pristupiti starijim porukama poslanima #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Zanemari" @@ -17395,11 +17387,11 @@ msgstr "Zanemari" msgid "Ignore friend request" msgstr "Zanemari zahtjev za prijateljstvo" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Zanemari hardverske uređaje" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Zanemari ulazne medije" @@ -17430,7 +17422,7 @@ msgstr "Zanemariti zahtjev za prijateljstvo od {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Zaobiđi ograničenje usporenog načina rada ovog kanala." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Zanemari virtualne uređaje" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Slika" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Datoteke sa slikama" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Slika kopirana u međuspremnik" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opcije slike" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Pregled slike" @@ -17540,7 +17532,7 @@ msgstr "Prijenos slike" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "U glasovnom razgovoru" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "U glasovnom razgovoru" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Uključi sve osim odabranih" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Uključi aplikacije" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Ulaz i izlaz" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Ulazni uređaj" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Ulazni profil: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Postavke unosa" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Stanja unosa" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Glasnoća ulaza" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Poveznica za pozivnicu skrivena je tijekom dijeljenja:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Poveznica za pozivnicu maskirana tijekom dijeljenja" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Skoči na {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Skoči na {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Skoči na trenutačni poziv" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Skoči na povezani kanal" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Skoči na povezanu poruku" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Skoči na poruku od {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Skoči na poruku u {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Raspored" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Saznajte više o pregledima dijeljenja zaslona" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Stil poveznica" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Poveznica nije dostupna" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux aplikacija" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux – zadani uređaj" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Učitavanje teme..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Učitavanje..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS aplikacija" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS – zadani uređaj" @@ -20289,7 +20281,7 @@ msgstr "Sljedeća pjesma" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opcije medija" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Reprodukcija/pauza" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Pregled medija" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Izgled poruka" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "poveznica poruke" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Test mikrofona" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Mikrofon, kamera i sadržaj dijeljenja zaslona šifrirani su od kraja do kraja." @@ -21019,7 +21011,7 @@ msgstr "Maloljetnici u opasnosti, sadržaj za odrasle na pogrešnom mjestu ili n #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Pogrešno napisane riječi" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobilni uređaj" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Isključi sve obavijesti" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Isključi mikrofon na svim uređajima" @@ -21653,13 +21645,13 @@ msgstr "Utišano" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofon je isključen" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Moderatori su vam isključili mikrofon" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Nema dopuštenja {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Nema pristupa" @@ -22282,7 +22274,7 @@ msgstr "Nema pronađenih naprednih postavki" msgid "No AFK channel" msgstr "Nema AFK kanala" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Nema pronađenih prozora aplikacija" @@ -22300,6 +22292,11 @@ msgstr "Još nema resursa" msgid "No audio" msgstr "Nema zvuka" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Nema zvuka s ovog uređaja" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Nema autoriziranih aplikacija" @@ -22341,7 +22338,7 @@ msgstr "Nema oznaka" msgid "No bot banner" msgstr "Nema naslovne slike bota" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Kamera nije pronađena" @@ -22421,7 +22418,7 @@ msgstr "Nema opisa." msgid "No desktop update is available." msgstr "Nema dostupnih ažuriranja za stolno računalo." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Nema pronađenih zaslona" @@ -22650,7 +22647,7 @@ msgstr "Nije primljen sadržaj odgovora" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Nema rezultata" @@ -22679,7 +22676,7 @@ msgstr "Još nema uloga. Dodajte uloge u {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Nema spremljenih medija" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Prag šuma" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Suzbijanje buke" @@ -22877,7 +22874,7 @@ msgstr "Bez pretvorbe" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Ništa" @@ -23286,7 +23283,7 @@ msgstr "Primjenjuje se samo na širokim zaslonima." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Prihvaćaju se samo kreditne kartice. Debitne i prepaid kartice ne mogu se koristiti za provjeru sadržaja za odrasle." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Samo zadani zvučnici" @@ -23334,7 +23331,7 @@ msgstr "Ovdje pokrećite kod samo ako točno razumijete što radi." msgid "Only show message previews for DMs with unread messages" msgstr "Prikazuj pretpreglede poruka samo za izravne poruke s nepročitanim porukama" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Samo zvučnici" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Otvori {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Otvori {labelText} u postavkama" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Otvori @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Otvori napredne postavke medija" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Otvorite prozor aplikacije, a zatim pokušajte ponovno." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Otvori animirani GIF u punom prikazu" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Otvori animirani GIF video u punom prikazu" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Otvori audiozapis u punom prikazu" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Otvori audiopoveznicu" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Otvori preglednik" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Otvori birač preglednika" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Otvori izbornik favorita" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Otvori poveznicu datoteke" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Otvori GIF poveznicu" @@ -23651,7 +23648,7 @@ msgstr "Otvori sliku u pregledniku" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Otvori sliku u punom prikazu" @@ -23660,7 +23657,7 @@ msgstr "Otvori sliku u punom prikazu" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Otvori poveznicu slike" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Otvori izravnu poruku sustava" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Otvori sistemski birač" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Otvori video u punom prikazu" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Otvori videopoveznicu" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Otvori glasovni chat" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Otvori postavke zvuka i videa" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Izlaz" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Izlazni uređaj" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Postavke izlaza" @@ -24094,7 +24091,7 @@ msgstr "Postavke izlaza" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Glasnoća izlaza" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Ograničenje broja sudionika" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opcije sudionika za {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Pretpregled skriven" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Slike pregleda privremeno pohranjuje {productName} radi isporuke i nisu šifrirane od kraja do kraja. Isključite preglede ako ne želite da se kadrovi dijeljenja zaslona prenose radi izrade sličica." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Slike pregleda privremeno pohranjuje {productName} radi isporuke i nisu šifrirane od kraja do kraja. Osobe u ovoj grupnoj izravnoj poruci ne moraju aktivno gledati vaš stream da bi vidjele sličicu." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Slike pregleda privremeno pohranjuje {productName} radi isporuke i nisu šifrirane od kraja do kraja. Osobama je i dalje potrebno dopuštenje za povezivanje, ali ne moraju aktivno gledati vaš stream." @@ -26269,7 +26266,7 @@ msgstr "Referenca kopirana." msgid "Referral parameters" msgstr "Parametri preporuke" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Osvježi izvore zvuka" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Kliknut je običan gumb." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Odbij" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Ukloni iz grupe" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Ukloni iz spremljenih medija" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Ukloni s vrha" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Ukloni iz favorita GIF-ova pohranjenih putem URL-a" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Opozvana zabrana za {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Premotaj unatrag {defaultSeekAmount} sekundi" @@ -28202,7 +28199,7 @@ msgstr "Spremi ikonu" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Spremite neke medije iz poruka da biste započeli!" @@ -28313,7 +28310,7 @@ msgstr "Potrebno je dopuštenje za snimanje zaslona" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Dijeljenje zaslona" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Pojačavanje zvuka dijeljenja zaslona" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Zvuk dijeljenja zaslona nije se mogao pokrenuti" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Kontrole za enkoder dijeljenja zaslona" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Dijeljenje zaslona završeno" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Ponašanje pregleda dijeljenja zaslona" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Pregledi dijeljenja zaslona" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Pregledi dijeljenja zaslona su onemogućeni." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Pregledi dijeljenja zaslona su omogućeni." @@ -28391,13 +28388,13 @@ msgstr "Privatnost dijeljenja zaslona" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Kvaliteta dijeljenja zaslona" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Postavke dijeljenja zaslona" @@ -28723,7 +28720,7 @@ msgstr "Pretražite uloge ili članove…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Pretražite spremljene medije" @@ -28942,12 +28939,12 @@ msgstr "Pregled pri premotavanju" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Odaberi" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Odaberite {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Pošalji poveznicu za ponovno postavljanje" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Pošalji spremljeni medij {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Postavljena je pozicija na popisu članova za ulogu" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Postavljeno pomoću predmemorije {preset}. Odabir vrijednosti ovdje prebacuje na Prilagođeno." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Postavite prilagođene glasnoće za pojedinačne zvukove. Zvukovi bez nadjačavanja prate glavnu glasnoću." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Postavi prečac za isključivanje zvuka" @@ -29669,11 +29666,6 @@ msgstr "Odloži ovu provjeru" msgid "Set this check aside?" msgstr "Odložiti ovu provjeru?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Postavljeno za slanje {resolution} pri {frameRate} FPS s {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Postavke" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "poveznica postavki" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Podijeli poklon" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Podijeli zaslon" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Podijeli s moderatorima zajednice." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Podijeli zaslon" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Dijelite zaslon u visokoj razlučivosti (1080p), Quad HD (1440p) ili izvornoj razlučivosti, do 60 FPS-a." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Podijeljeni prozor" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Zvuk podijeljenog prozora" @@ -30624,6 +30616,10 @@ msgstr "Tihi pozivi" msgid "Silent calls from everyone" msgstr "Tihi pozivi od svih" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Tiho kada uređaj za snimanje nema vlastiti audio ulaz" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Glatko pomicanje" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Glađi videozapis" @@ -31005,11 +31001,6 @@ msgstr "Neki emojiji nisu mogli biti dodani" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Neke datoteke koje pokušavate prenijeti premašuju maksimalnu veličinu od {maxSizeFormatted} po datoteci." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Neke postavke strujanja nisu se mogle primijeniti na vaš prijenos uživo." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Zvukovi" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Izvorno" @@ -31569,7 +31560,7 @@ msgstr "Započeti glasovni poziv?" msgid "Start call" msgstr "Započni poziv" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Pokreni test kamere i konfiguriraj efekte" @@ -31910,7 +31901,7 @@ msgstr "Zaustavi čitanje" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Zaustavi dijeljenje" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Prestati vjerovati svim poveznicama?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Zaustavi gledanje" @@ -31982,7 +31973,7 @@ msgstr "Sprječava vraćanje zvuka zvučnika u mikrofon." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Prijenos uživo" @@ -32001,11 +31992,6 @@ msgstr "Prijenos završen" msgid "Stream hidden" msgstr "Prijenos skriven" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Prijenos zaostaje" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Kvaliteta prijenosa" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Postavke prijenosa" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Postavke streama su prilagođene" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Sustavne obavijesti osoblja {productName}a. Ovdje ne možete odgovoriti. #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Zadano sustavom" @@ -33036,13 +33017,8 @@ msgstr "Bot je dodan u <0>{destinationName}." msgid "The bot has been added." msgstr "Bot je dodan." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Preglednik šalje {deliveredResolution} umjesto {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Pregled kamere još se zaustavlja. Pokušajte ponovno pokrenuti prijenos za trenutak." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Uloga je dodijelila {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Izvor dijeljenja zaslona prestao je slati video, pa je dijeljenje zaslona zaustavljeno." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Ova je konzola preglednika alat za razvojne programere." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Ovaj je poziv šifriran od kraja do kraja." @@ -33645,11 +33621,6 @@ msgstr "Ova verzija za stolno računalo ne može instalirati ažuriranja unutar msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ova razvojna verzija ne može se sama ažurirati. Preuzmite instalacijski program za stolna računala kako biste testirali tijek ažuriranja." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Ovaj uređaj prošli put nije mogao pratiti {targetResolution} pri {targetFrameRate} FPS, pa je vaš prijenos započeo na {resolution} pri {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Ovom instalacijom upravlja vaš sustav. Ažurirajte {productName} putem centra za softver ili upravitelja paketa." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Ova instanca trenutačno dopušta dijeljenje zaslona do 720p pri 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Ovaj kanal s poveznicama označen je kao sadržaj za odrasle i može otvoriti materijal koji možda nije prikladan za neke korisnike." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Ova poveznica nije dostupna za vaš račun." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Ova je opcija obavezna. Molimo unesite vrijednost." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Ovaj sudionik ne može govoriti na ovom kanalu" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Ovaj je sudionik bez zvuka" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Moderatori su ovom sudioniku isključili zvuk" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Ovaj je telefonski broj već korišten. Pokušajte s drugim brojem ili se obratite podršci." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Ovaj je birač dostupan samo u aplikaciji za stolna računala." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Prikaži ili sakrij kontrole" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Uključi/isključi zvuk" @@ -34666,7 +34637,7 @@ msgstr "Promjene ikone u paleti sustava primjenjuju se tek nakon ponovnog pokret #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF-ovi u trendu" @@ -34760,7 +34731,7 @@ msgstr "Pokušajte s drugim pojmom za pretraživanje." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Pokušajte s drugim pojmom za pretraživanje ili filtrom" @@ -34839,11 +34810,6 @@ msgstr "Pokušajte s drugim filtrima ili pojmovima za pretraživanje." msgid "Try editing your message again." msgstr "Pokušajte ponovno urediti poruku." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Pokušaj ponovno s punom kvalitetom" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Pokušajte potražiti nešto poput \"tema\", \"obavijesti\" ili \"privatnost\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Isključite sve s čime vam nije ugodno. Neke značajke možda neće raditi." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Isključite dijeljenje zvuka za ovaj izvor ili pokušajte ponovno za trenutak." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Uključi automatski kada se otkrije OBS ili XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Uključi kameru" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Nenaplativo" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Uključi zvuk" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Uključi zvuk na svim uređajima" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Uključi zvuk za sebe" @@ -35558,7 +35524,7 @@ msgstr "nepoznat korisnik" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Nepoznat korisnik" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Otključajte prilagođene emojije u izravnim porukama uz {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Otključajte HD dijeljenje zaslona uz {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Uključi zvuk za {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Uključi mikrofon na svim uređajima" @@ -35741,7 +35707,7 @@ msgstr "Neimenovana grupa" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Neimenovani ulaz" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Prenesite nove emojije i naljepnice te upravljajte vlastitim kreacijama." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Prenosi slike pregleda za dijeljenje zaslona." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL kopiran u međuspremnik" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Korisnička oznaka (neobavezno)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Glasnoća korisnika" @@ -37227,7 +37193,7 @@ msgstr "Gubitak video paketa:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Pregled videozapisa" @@ -37283,7 +37249,7 @@ msgstr "Prijenos videozapisa" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Zvuk i video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Postavke zvuka i videa" @@ -37685,7 +37651,7 @@ msgstr "Prečaci za glasovne i video pozive" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Glasovni poziv" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Otklanjanje pogrešaka glasovne veze" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Isključivanje zvuka" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Glasovna poruka" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Reproduktor glasovnih poruka" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Postavke glasa" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Uključivanje zvuka" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Pričekajte ovdje" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Čekanje veze..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Kada se objavi kao poveznica u čavrljanju" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Kada su uključeni pregledi, {productName} povremeno prenosi JPEG slike s vašeg dijeljenog zaslona kako bi ostali korisnici u ovoj grupnoj izravnoj poruci mogli vidjeti sličicu prije gledanja." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Kada su uključeni pregledi, {productName} povremeno prenosi JPEG slike s vašeg dijeljenog zaslona kako bi osobe s dopuštenjem za povezivanje s ovim glasovnim kanalom mogle vidjeti sličicu prije gledanja." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Kada su uključeni pregledi, {productName} povremeno prenosi JPEG slike s vašeg dijeljenog zaslona kako bi druga osoba u ovoj izravnoj poruci mogla vidjeti sličicu prije gledanja." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Prozori odrezani pri vrhu ili dnu zaslona te usidreni DevTools mogu prikazati sivu pozadinu umjesto da ostanu prozirni." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows – zadani uređaj" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Zabranjen vam je pristup ovoj zajednici i ne možete se pridružiti." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Isključili ste zvuk" @@ -38833,11 +38799,6 @@ msgstr "Koristite {releaseChannel} međuverziju aplikacije {productName}." msgid "You aren't in any communities right now." msgstr "Trenutno niste ni u jednoj zajednici." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Tražili ste {resolution} pri {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Ne možete slati poruke u ovoj zajednici." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Ne možete dijeliti zaslon u ovom kanalu" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Ne možete govoriti u ovom kanalu" @@ -39036,7 +38997,7 @@ msgstr "Ne možete govoriti u ovom kanalu" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Ne možete uključiti kameru u ovom kanalu" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Promijenili ste svoju oznaku dok ste imali pretplatu na {PREMIUM_PRODUCT_NAME}. Nasumično će se ponovno dodijeliti kada vam istekne {PREMIUM_PRODUCT_NAME}, osim ako se ne obnovi." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Nemate pristup kanalu u kojem je poslana ova poruka." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Ostajete u {ownedNames}. Vlasnici ne mogu napustiti vlastitu zajednicu." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderatori su vam isključili zvuk" @@ -39699,11 +39660,6 @@ msgstr "Vaša prijava čeka pregled. I dalje možete ažurirati pojedinosti unos msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Vaš preglednik zahtijeva interakciju korisnika prije nego što se zvuk može reproducirati. Kliknite gumb u nastavku da biste omogućili glasovni chat." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Vaš uređaj za snimanje šalje {deliveredResolution} umjesto {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Provjeravamo vašu karticu radi lokaliziranih cijena. Ovo obično traje kratko." @@ -39734,36 +39690,11 @@ msgstr "Vaša je zajednica navedena u Otkrivanju. Pojedinosti unosa možete ažu msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Vaša zajednica treba imati najmanje {minMemberCount, plural, one {# člana} few {# člana} other {# članova}} prije nego što se može uvrstiti u Otkrivanje." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Vaša veza ne može podnijeti. Vaš je prijenos postavljen na {frameRate} FPS pri {resolution}, a gledatelji dobivaju oko {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Vaša je kreditna kartica provjerena. Ako je kartica valjana, sadržaj za odrasle uskoro će biti otključan. Možete zatvoriti ovu karticu preglednika i vratiti se u aplikaciju." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Vaš uređaj ne može pratiti. Vaš je prijenos postavljen na {frameRate} FPS pri {resolution}, a gledatelji dobivaju oko {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Vaš uređaj nije mogao pratiti, stoga vaš stream sada šalje {frameRate} FPS kako bi {resolution} ostao oštar." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Vaš uređaj nije mogao pratiti, pa vaš stream sada šalje {resolution} pri {frameRate} FPS umjesto {targetResolution} pri {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Vaš uređaj nije mogao pratiti, pa vaš stream sada šalje {resolution} kako bi zadržao {frameRate} FPS glatkim." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Vaša registracija zahtijeva dodatnu provjeru radi zaštite od neželjene pošte prije nego što možete nastaviti." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Tvoja spremljena kvaliteta od {savedResolution} pri {savedFrameRate} FPS zahtijeva {premiumProductName}, stoga dijeljenje koristi {resolution} pri {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Vaše dijeljenje zaslona nije se moglo objaviti s kompatibilnim video kodekom pa je zaustavljeno. Pokušajte ponovno dijeliti." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Tvoj izvor proizvodi oko {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Vaš prijenos je i dalje aktivan" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Vaš prijenos prebačen je na {codec} jer {previousCodec} nije mogao pratiti na ovom uređaju. Gledatelji mogu vidjeti kratku pauzu." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Vaš prilagođeni URL postavljen je na {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Vaš video enkoder prestao je kodirati sličice, stoga je dijeljenje zaslona zaustavljeno. Pokušajte ponovno dijeliti." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Vaš video enkoder se zaustavio, pa je vaš prijenos prebačen na {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/hu/messages.po b/fluxer_app/src/features/i18n/locales/hu/messages.po index ad5930d62..6d9dd4d4b 100644 --- a/fluxer_app/src/features/i18n/locales/hu/messages.po +++ b/fluxer_app/src/features/i18n/locales/hu/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} csatlakozni szeretne" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} ezt a fiókot fogja használni az engedélyezéshez." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "A(z) {codec} nem tud lépést tartani ezen az eszközön. Állítsd az alapértelmezett kodeket a Gyorsbeállításokban egy gyorsabb opcióra." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "A(z) {communityName} jelenleg csak a(z) {productName} munkatársai szám msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Nincs korlát} one {# résztvevő} other {# résztvevő}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# sor maradt)} other {... (# sor maradt)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# sor maradt)} other {... (# sor maradt)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Kibontás (# sor)} other {Kibontás (# sor)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Kibontás (# sor)} other {Kibontás (# sor)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Kibontás: # további eszköz} other {Kibontás: # további eszköz}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Hívásban} other {# résztvevő hívásban}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Csatlakozás videóhíváshoz (# résztvevő)} other {Csatlakozás videóhíváshoz (# résztvevő)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Folytasd a(z) # stream nézését, és add hozzá ezt} other {Folytasd a(z) # stream nézését, és add hozzá ezt}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {A meghívólinked # nap múlva jár le.} other {A meghívólinked # nap múlva jár le.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} óra" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} képkocka/mp" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# felülbírálás} other {# felülbírál msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} először ellenőrzi, hogy a kártyád alkalmas-e a helyi árakra, majd továbbít a fizetéshez. Ha elkészültél, térj vissza a(z) {productName} alkalmazásba." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "A(z) {pinnedCodec} nem érhető el ezen az eszközön, ezért a stream a(z) {codec} használja." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "A(z) {productName} hozzáférést kér a mikrofonodhoz. Engedélyezd a mikrofonhoz való hozzáférést az operációs rendszered adatvédelmi beállításaiban, majd indítsd újra az alkalmazást." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "A(z) {productName} alkalmazásnak kamera-hozzáférésre van szüksége az eszközök listázásához." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "egy URL, ami az üzenet szövegébe van beírva" msgid "a user" msgstr "egy felhasználó" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Egy néző nem tudja lejátszani a(z) {pinnedCodec} kodeket, ezért a stream a(z) {codec} kodeket használja." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Elfogadás" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Fogadás" @@ -3178,12 +3163,12 @@ msgstr "Hozzáadás csoporthoz" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Hozzáadás a mentett médiához" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Hozzáadás az URL-alapú GIF-kedvencekhez" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Speciális" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Speciális videobeállítások" @@ -3451,7 +3436,7 @@ msgstr "Az igazítási vezérlők csak szélesebb képernyőkön érhetők el" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Engedélyezés" msgid "Allow {everyoneMention} and {hereMention}" msgstr "{everyoneMention} és {hereMention} engedélyezése" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Engedélyezd a(z) {PRODUCT_NAME} számára a kamera használatát itt: {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Botok közvetlen üzeneteinek engedélyezése" msgid "Allow bots to send you direct messages?" msgstr "Engedélyezed, hogy a botok közvetlen üzeneteket küldjenek neked?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Kamera engedélyezése" @@ -4014,13 +3999,13 @@ msgstr "Az animált emojik, GIF-ek és matricák működését az Animáció lap #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animált GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animált GIF videó" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Az animált ikonokhoz szükséges a(z) {animatedIconFeature} közösségi funkció." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animált kép" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Animált kép előnézete" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Az animált fájlok feltöltéséhez {premiumProductName} előfizetés szükséges." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animált videó" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Alkalmazás állapota" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Alkalmazásablak" @@ -4361,7 +4346,7 @@ msgstr "Alkalmazás sikeresen frissítve" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Alkalmazások" @@ -4586,7 +4571,7 @@ msgstr "melléklet" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "{index1}. melléklet" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "A melléklet lejárt" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "A melléklet lejárt vagy nem elérhető" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "A melléklet azonosítója a vágólapra másolva" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Hangszint" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Hang kikapcsolva" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Hangcsomagvesztés:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Hanglejátszó" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Hang előnézete" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Hangfeldolgozás (beszédkiemelés)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Lejátszási pozíció" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Hangbeállítások" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Hangforrások: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatikus ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatikus erősítésszabályozás" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Böngésző: vissza" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Böngésző alapértelmezett beállítása" @@ -6198,20 +6183,20 @@ msgstr "Hívások" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "A kamerához való hozzáférésre van szükség az eszközök előnézetéhez" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "A kamera hozzáférését nem engedélyezted. Frissítsd a kamera engedélyeit, majd próbáld újra." @@ -6276,13 +6261,13 @@ msgstr "Kamera előnézete" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kamera minősége" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kamerabeállítások" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "A CAPTCHA-ellenőrzés sikertelen. Próbáld újra." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Rögzítés" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Alkalmazáshang rögzítése" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Asztali hang rögzítése" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Eszköz hangjának rögzítése" @@ -6736,12 +6721,12 @@ msgstr "Módosítás ütemezve" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Streamváltás" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Stream forrásának módosítása" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Csatorna-hozzáférés" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Csatorna-hozzáférés megtagadva" @@ -7097,7 +7082,7 @@ msgstr "Csatornaazonosító a vágólapra másolva" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "csatornalink" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Fizetési mód kiválasztása" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Válassz megosztandó tartalmat" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Megbízható domainek törlése ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Élesebb szöveg" @@ -8285,7 +8270,7 @@ msgstr "Csatornatéma összecsukása" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Eszközök összecsukása" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Közösség létrehozója" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Hang kikapcsolása közösségi szinten" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Közösségi kétlépcsős azonosítást kérő sáv" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Mikrofon némítása közösségi szinten" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Beállítás most" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Képernyőmegosztás beállítása vagy befejezése" @@ -8904,7 +8889,7 @@ msgstr "Megerősítés vagy dupla kattintás a közösségi hangcsatornákhoz va msgid "Conflicts with {conflictLabel}" msgstr "Ütközik a(z) {conflictLabel} billentyűkombinációval" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Csatlakoztass egy kamerát, és próbáld újra." @@ -8913,7 +8898,7 @@ msgstr "Csatlakoztass egy kamerát, és próbáld újra." msgid "Connect a camera or virtual capture device, then try again." msgstr "Csatlakoztass egy kamerát vagy virtuális rögzítőeszközt, majd próbáld újra." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Csatlakoztass egy kijelzőt, majd próbáld újra." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Kapcsolati hangerőszabályzók" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Kapcsolat: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "A statisztikai JSON kimásolva a vágólapra" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Vágólapra másolva" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Mellékletazonosító másolása" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Hang másolása" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Hanghivatkozás másolása" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Végpont másolása" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Fájlhivatkozás másolása" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "GIF másolása" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "GIF linkjének másolása" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Azonosító másolása" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kép másolása" @@ -9448,7 +9433,7 @@ msgstr "Kép másolása" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kép linkjének másolása" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "A szakasz hivatkozásának másolása" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Média másolása" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Érték másolása" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Videó másolása" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Videólink másolása" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Webhook URL-jének másolása" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kép másolása..." @@ -10588,7 +10573,7 @@ msgstr "Jelenleg: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Egyéni" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Fiók inaktiválása" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Hang kikapcsolása" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Hang kikapcsolása az összes eszközön" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Hang kikapcsolása az eszközön" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Más tagok hangjának kikapcsolása a hangcsatornákban, hogy ne halljanak és ne tudjanak beszélni." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Hang kikapcsolásának billentyűparancsa" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Saját hang kikapcsolása" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Hang kikapcsolva" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "A moderátorok kikapcsolták a hangot" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Alapértelmezett" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Alapértelmezett kamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Törlöd a(z) :{emojiName}: emojit? Ez a művelet nem vonható vissza." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Törlöd a(z) „{memeName}” nevű elemet? Ez nem vonható vissza." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Meghívó törlése" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Média törlése" @@ -11466,8 +11451,8 @@ msgstr "Szerepkör törlése" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Mentett média törlése" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Távollét a számítógéptől" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Asztali eszköz" @@ -11849,13 +11834,13 @@ msgstr "Fejlesztői állapot" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Fejlesztői eszközök" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "A fejlesztői eszközök a csatornafejlécben található személyzeti jelvényről érhetők el." @@ -11879,6 +11864,17 @@ msgstr "Eszköz" msgid "Device alerts" msgstr "Eszközértesítések" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Eszköz hangja ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Csak az eszköz hangja" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Eszköz részletei" @@ -11888,7 +11884,7 @@ msgstr "Eszköz részletei" msgid "Device revoked" msgstr "Az eszköz hozzáférése visszavonva" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Eszközválasztás" @@ -11912,7 +11908,7 @@ msgstr "Eszköz:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Eszközök" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Áthúzott szöveg halványítása" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Közvetlen bemenet" @@ -12020,7 +12016,7 @@ msgstr "Közvetlen feltöltés aktív" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Kikapcsolás" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Letiltott érték" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "A képek előnézeteinek letiltása megakadályozza a jövőbeli előnézeti feltöltéseket. A már feltöltött előnézeti képek továbbra is láthatók lehetnek, amíg a közvetítés be nem fejeződik vagy az előnézet frissül." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Hangüzenet elvetése" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Kapcsolat bontása" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Összes eszköz leválasztása" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Eszköz leválasztása" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Megjelenítés" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Képernyő" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification fájlt, és helyezd el a <1>.well-known mappádba, hogy érvényesíteni tudjuk a domaint." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Hangfájl letöltése" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Asztali frissítés letöltése: {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Fájl letöltése" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "fluxer-verification letöltése" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "GIF-fájl letöltése" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Kép letöltése" @@ -12714,7 +12710,7 @@ msgstr "Telepítő letöltése" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Média letöltése" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Csomag letöltése" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Videó letöltése" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Visszhang" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Visszhangszűrés" @@ -12963,7 +12959,7 @@ msgstr "Hozzáférés szerkesztése ehhez: {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Alternatív szöveg szerkesztése" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Billentyűparancs szerkesztése" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Média szerkesztése" @@ -13102,8 +13098,8 @@ msgstr "Fordított képkereső szerkesztése" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Mentett média szerkesztése" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Böngészőértesítések engedélyezése" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Engedélyezd a kamera használatát, hogy a kamerák és rögzítőeszközök előnézete alapján választhasd ki a streamelni kívánt eszközt." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Beépített fordítók engedélyezése vagy letiltása. Az engedélyezett fordítók megjelennek az üzenet helyi menüjében, amikor szöveget jelölsz ki." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Előnézetek engedélyezése" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Képernyőmegosztás befejezése" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "A végpontok közötti titkosítás nem érhető el, mert a hívás egyik résztvevőjének kliense nem támogatja." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "A végpontok közötti titkosítás nem érhető el, mert a hangcsatorna egyik résztvevőjének kliense nem támogatja." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Szórakozás" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Teljes képernyő" @@ -14095,7 +14091,7 @@ msgstr "Teljes képernyő" msgid "Entire system" msgstr "Teljes rendszer" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Teljes rendszerhang" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "felhasználó kizárása" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Kizárás a rendszerhangból" @@ -14593,7 +14589,7 @@ msgstr "Nem sikerült kimásolni a meghívólinket" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Nem sikerült vágólapra másolni" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Nem sikerült betölteni a meghívókat. Próbáld újra." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Nem sikerült betölteni a megosztható forrásokat." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Ablak fókuszba helyezése" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Beszédkiemelés" @@ -15322,10 +15318,6 @@ msgstr "Mappa beállításai" msgid "Follow us on {blueskyProviderName}" msgstr "Kövess minket a {blueskyProviderName} oldalon" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Hangbemenet követése" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Továbbítás" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Előre {defaultSeekAmount} másodperccel" @@ -15592,14 +15584,14 @@ msgstr "Keret" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Képkockasebesség" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "A 30 FPS feletti képkockasebességhez {premiumProductName} szükséges" @@ -15923,7 +15915,7 @@ msgstr "Kontroller Y / Háromszög" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Játék" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF-választó betöltése" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF-előnézet" @@ -16429,7 +16421,7 @@ msgstr "Megadva: {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Minden jogosultságot megad, és megkerüli a csatornakorlátozásokat. Különösen érzékeny jogosultság." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Részletes kiválasztás" @@ -16992,7 +16984,7 @@ msgstr "Jelszó elrejtése" msgid "Hide picture-in-picture popout?" msgstr "Elrejted a kép a képben ablakot?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Előnézeti bélyegkép elrejtése" @@ -17386,7 +17378,7 @@ msgstr "Ha szeretnéd, hogy ezek a tagok hozzáférjenek egy adott dátum után #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Elutasítás" @@ -17395,11 +17387,11 @@ msgstr "Elutasítás" msgid "Ignore friend request" msgstr "Ismerősjelölés mellőzése" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Hardvereszközök figyelmen kívül hagyása" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Bemeneti média mellőzése" @@ -17430,7 +17422,7 @@ msgstr "{displayName} ismerősjelölésének mellőzése?" msgid "Ignore this channel's slowmode cooldown." msgstr "A csatorna lassú módjához tartozó várakozási idő figyelmen kívül hagyása." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Virtuális eszközök figyelmen kívül hagyása" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Kép" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Képi erőforrások" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Kép a vágólapra másolva" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Képbeállítások" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Kép előnézete" @@ -17540,7 +17532,7 @@ msgstr "Képfeltöltés" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Hanghívásban" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Hangcsevegésben" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Minden, kivéve a kijelölteket" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Alkalmazások felvétele" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Bemenet és kimenet" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Bemeneti eszköz" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Bemeneti profil: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Bemeneti beállítások" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Bemeneti állapotok" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Bemeneti hangerő" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "A meghívólink megosztás közben rejtve van:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Meghívólink elrejtve megosztás közben" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Ugrás ide: {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Ugrás ide: {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Ugrás az aktuális híváshoz" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Ugrás a hivatkozott csatornára" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Ugrás a hivatkozott üzenetre" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Ugrás a {authorNickname} üzenetéhez" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Ugrás az üzenethez itt: {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Elrendezés" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "További információ a képernyőmegosztás előnézeteiről" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Linkstílus" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "A hivatkozás nem érhető el" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux-alkalmazás" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux alapértelmezett" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Téma betöltése..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Betöltés..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS-alkalmazás" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS alapértelmezett" @@ -20289,7 +20281,7 @@ msgstr "Következő szám" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Médiaopciók" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Lejátszás/szünet" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Média előnézete" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Üzenetelrendezés" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "üzenet linkje" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofonteszt" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "A mikrofon-, kamera- és képernyőmegosztás során továbbított adatok végpontok közötti titkosítással vannak védve." @@ -21019,7 +21011,7 @@ msgstr "Kiskorúak veszélyeztetése, nem megfelelő helyen megjelenő felnőtt #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Elgépelt szavak" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobileszköz" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Összes némítása" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Összes eszköz némítása" @@ -21653,13 +21645,13 @@ msgstr "Némítva" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofon némítva" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "A moderátorok némították a mikrofont" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Nincs {sendMessagesPermission} jogosultság" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Nincs hozzáférés" @@ -22282,7 +22274,7 @@ msgstr "Nem található speciális beállítás" msgid "No AFK channel" msgstr "Nincs AFK-csatorna" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Nem található alkalmazásablak" @@ -22300,6 +22292,11 @@ msgstr "Még nincsenek erőforrások" msgid "No audio" msgstr "Nincs hang" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Nincs hang ezen az eszközön" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Nincsenek engedélyezett alkalmazások" @@ -22341,7 +22338,7 @@ msgstr "Nincsenek mentett üzenetek" msgid "No bot banner" msgstr "A botnak nincs borítóképe" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Nem található kamera" @@ -22421,7 +22418,7 @@ msgstr "Nincs leírás." msgid "No desktop update is available." msgstr "Nem érhető el asztali frissítés." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Nincs megjelenítő eszköz" @@ -22650,7 +22647,7 @@ msgstr "Nem érkezett választörzs" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Nincs találat" @@ -22679,7 +22676,7 @@ msgstr "Még nincsenek szerepkörök. Szerepkörök hozzáadása itt: {rolesSett #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Nincs mentett média" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Zajkapu" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Zajszűrés" @@ -22877,7 +22874,7 @@ msgstr "Nincs átalakítás" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Nincs" @@ -23286,7 +23283,7 @@ msgstr "Csak széles képernyőn jelenik meg." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Csak hitelkártyát fogadunk el. Betéti és előre feltöltött kártya nem használható a felnőtt tartalomhoz való hozzáférés ellenőrzéséhez." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Csak az alapértelmezett hangszórók" @@ -23334,7 +23331,7 @@ msgstr "Csak akkor futtass itt kódot, ha pontosan érted, mit csinál." msgid "Only show message previews for DMs with unread messages" msgstr "Üzenetelőnézetek megjelenítése csak az olvasatlan üzeneteket tartalmazó közvetlen beszélgetéseknél" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Csak hangszórók" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "{displayName} megnyitása" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "A(z) {labelText} megnyitása a beállításokban" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "@{displayName} megnyitása" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Speciális médiabeállítások megnyitása" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Nyiss meg egy alkalmazásablakot, majd próbáld újra." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Animált GIF megnyitása teljes nézetben" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Animált GIF-videó megnyitása teljes nézetben" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Hanganyag megnyitása teljes nézetben" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Hangfájl linkjének megnyitása" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Böngésző megnyitása" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Böngészőválasztó megnyitása" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Kedvencek menü megnyitása" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Fájl linkjének megnyitása" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "GIF-link megnyitása" @@ -23651,7 +23648,7 @@ msgstr "Kép megnyitása böngészőben" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Kép megnyitása teljes nézetben" @@ -23660,7 +23657,7 @@ msgstr "Kép megnyitása teljes nézetben" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Kép linkjének megnyitása" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Rendszerrel folytatott közvetlen beszélgetés megnyitása" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Rendszer választóablakának megnyitása" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Videó megnyitása teljes nézetben" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Videólink megnyitása" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Hangbeszélgetés megnyitása" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Hang és videó beállítások megnyitása" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Kimenet" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Kimeneti eszköz" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Kimeneti beállítások" @@ -24094,7 +24091,7 @@ msgstr "Kimeneti beállítások" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Kimeneti hangerő" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Résztvevők korlátja" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Résztvevő beállításai – {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Előnézet elrejtve" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "A(z) {productName} ideiglenesen tárolja az előnézeti képeket a továbbításhoz; ezeket nem védi végpontok közötti titkosítás. Kapcsold ki az előnézeteket, ha nem szeretnéd, hogy a képernyőmegosztásod képkockái feltöltődjenek a bélyegképekhez." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "A(z) {productName} ideiglenesen tárolja az előnézeti képeket a továbbításhoz; ezeket nem védi végpontok közötti titkosítás. A csoportos beszélgetés tagjai akkor is láthatják a bélyegképet, ha éppen nem nézik a streamedet." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "A(z) {productName} ideiglenesen tárolja az előnézeti képeket a továbbításhoz; ezeket nem védi végpontok közötti titkosítás. A felhasználóknak továbbra is rendelkezniük kell csatlakozási jogosultsággal, de nem kell éppen nézniük a streamedet." @@ -26269,7 +26266,7 @@ msgstr "Hivatkozás másolva." msgid "Referral parameters" msgstr "Ajánlási paraméterek" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Hangforrások frissítése" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Normál gombra kattintva." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Elutasítás" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Eltávolítás a csoportból" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Eltávolítás a mentett média közül" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Mindig felül beállítás kikapcsolása" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Eltávolítás az URL-en alapuló GIF-kedvencek közül" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Visszavont kitiltás: {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Visszatekerés {defaultSeekAmount} másodperccel" @@ -28202,7 +28199,7 @@ msgstr "Ikon mentése" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Ments el néhány médiafájlt az üzenetekből a kezdéshez!" @@ -28313,7 +28310,7 @@ msgstr "Képernyőfelvételi engedély szükséges" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Képernyőmegosztás" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Képernyőmegosztás hangerejének növelése" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "A képernyőmegosztás hangja nem indult el" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Képernyőmegosztás-kódoló beállításai" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "A képernyőmegosztás befejeződött" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Képernyőmegosztás előnézetének viselkedése" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Képernyőmegosztás előnézetei" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "A képernyőmegosztás előnézetei letiltva." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "A képernyőmegosztás előnézetei engedélyezve vannak." @@ -28391,13 +28388,13 @@ msgstr "Képernyőmegosztás adatvédelme" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Képernyőmegosztás minősége" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Képernyőmegosztás beállításai" @@ -28723,7 +28720,7 @@ msgstr "Szerepkörök vagy tagok keresése…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Mentett média keresése" @@ -28942,12 +28939,12 @@ msgstr "Előnézet tekerés közben" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Kiválasztás" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "{accessibleName} kiválasztása" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Jelszó-visszaállító link küldése" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Mentett média küldése: {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Beállította a szerepkör taglistabeli pozícióját" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "A(z) {preset} előbeállítás állította be. Az itt kiválasztott értékre váltás egyénire kapcsol." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Egyéni hangerő beállítása az egyes hangokhoz. Egyéni beállítás nélkül a hangok a fő hangerőt követik." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Hang kikapcsolására szolgáló billentyűparancs beállítása" @@ -29669,11 +29666,6 @@ msgstr "Tedd félre ezt az ellenőrzést" msgid "Set this check aside?" msgstr "Elhalasztod ezt az ellenőrzést?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Küldés beállítva: {resolution}, {frameRate} FPS, {codec} formátumban" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Beállítások" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "beállítási hivatkozás" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Ajándék megosztása" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Képernyő megosztása" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Megosztás a közösségi moderátorokkal." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Képernyő megosztása" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Képernyőmegosztás nagy felbontásban (1080p), QHD (1440p) vagy natív forrásfelbontásban, akár 60 FPS-sel." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Megosztott ablak" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Megosztott ablak hangja" @@ -30624,6 +30616,10 @@ msgstr "Csengetés nélküli hívások" msgid "Silent calls from everyone" msgstr "Csengetés nélküli hívások mindenkitől" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Némítva, ha a rögzítőeszköznek nincs saját hangbemenete" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Gördülékeny görgetés" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Folyamatosabb videó" @@ -31005,11 +31001,6 @@ msgstr "Néhány emojit nem sikerült hozzáadni" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Néhány fájl, amit fel szeretnél tölteni, meghaladja a fájlonkénti {maxSizeFormatted} maximális méretkorlátot." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Néhány stream beállítás nem alkalmazható az élő streame-re." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Hangok" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Forrás" @@ -31569,7 +31560,7 @@ msgstr "Hanghívás indítása?" msgid "Start call" msgstr "Hívás indítása" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Kamera tesztelése és effektek beállítása" @@ -31910,7 +31901,7 @@ msgstr "Felolvasás leállítása" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Streamelés leállítása" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Minden link megbízhatóságának megszüntetése?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Nézés leállítása" @@ -31982,7 +31973,7 @@ msgstr "Megakadályozza, hogy a hangszórókból érkező hang visszajusson a mi #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31992,6 @@ msgstr "Az adás befejeződött" msgid "Stream hidden" msgstr "Stream elrejtve" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "A stream nem tartja a lépést" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Stream minősége" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Stream beállításai" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "A streambeállítások módosultak" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Rendszerüzenetek a(z) {productName} munkatársaitól. Itt nem válaszol #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Rendszer alapértelmezett" @@ -33036,13 +33017,8 @@ msgstr "A bot hozzáadva ide: <0>{destinationName}." msgid "The bot has been added." msgstr "A bot hozzáadva." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "A böngésző a(z) {resolution} helyett a(z) {deliveredResolution} értéket küldi." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "A kamera előnézete még leáll. Próbáld meg újra streamelni egy pillanat múlva." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "A szerepkör a következőket biztosította: {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "A képernyőmegosztás forrása nem küldött tovább videót, ezért a képernyőmegosztásod leállt." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Ez a böngészőkonzol egy fejlesztői eszköz." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Ez a hívás végpontok közötti titkosítással védett." @@ -33645,11 +33621,6 @@ msgstr "Ebben az asztali kiadásban a(z) {productName} alkalmazáson belül nem msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ez a fejlesztői kiadás nem tudja frissíteni magát. Tölts le egy asztali telepítőt a frissítési folyamat kipróbálásához." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Ez az eszköz nem tudta tartani a(z) {targetResolution} értéket {targetFrameRate} FPS sebességgel utoljára, ezért a stream {resolution} értéken indult, {frameRate} FPS sebességgel." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Ezt a telepítést a rendszered kezeli. Frissítsd a(z) {productName} alkalmazást a szoftverközpontból vagy a csomagkezelőből." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Ez a példány jelenleg legfeljebb 720p felbontású, 30 FPS-es képernyőmegosztást engedélyez." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Ez a linkcsatorna felnőtt tartalomként van megjelölve, és olyan anyagokat nyithat meg, amelyek egyes felhasználók számára nem megfelelőek." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Ez a hivatkozás nem érhető el a fiókod számára." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Ez az opció kötelező. Kérlek, adj meg egy értéket." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Ez a résztvevő nem beszélhet ebben a csatornában" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Ennél a résztvevőnél ki van kapcsolva a hang" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "A moderátorok kikapcsolták a hangot ennél a résztvevőnél" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Ezt a telefonszámot már használták. Próbálj másik számot, vagy fordulj az ügyfélszolgálathoz." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Ez a választó csak az asztali alkalmazásban érhető el." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Vezérlők megjelenítése/elrejtése" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Hang ki-/bekapcsolása" @@ -34666,7 +34637,7 @@ msgstr "Linuxon az értesítési terület ikonjának módosítása csak újraind #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Felkapott GIF-ek" @@ -34760,7 +34731,7 @@ msgstr "Próbálj másik keresőkifejezést." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Próbálj meg más keresési kifejezést vagy szűrőt használni" @@ -34839,11 +34810,6 @@ msgstr "Próbálj más szűrőket vagy keresőkifejezéseket." msgid "Try editing your message again." msgstr "Próbáld meg újra szerkeszteni az üzenetedet." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Próbáld újra teljes minőségben" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Próbálj meg rákeresni például a „téma”, „értesítések” vagy „adatvédelem” kifejezésekre" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Kapcsolj ki minden hozzáférést, amelyet nem szeretnél megadni. Egyes funkciók emiatt leállhatnak." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Kapcsold ki a hangmegosztást ennél a forrásnál, vagy próbáld újra egy kis idő múlva." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Automatikus bekapcsolás OBS vagy XSplit észlelésekor" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Kamera bekapcsolása" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Behajthatatlan" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Hang visszakapcsolása" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Hang visszakapcsolása minden eszközön" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Saját hang visszakapcsolása" @@ -35558,7 +35524,7 @@ msgstr "ismeretlen felhasználó" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Ismeretlen felhasználó" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Egyéni emojik feloldása közvetlen beszélgetésekben a(z) {premiumProductName} csomaggal" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "HD-képernyőmegosztás feloldása a(z) {premiumProductName} csomaggal" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "{label} némításának feloldása" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Összes eszköz némításának feloldása" @@ -35741,7 +35707,7 @@ msgstr "Névtelen csoport" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Névtelen bemenet" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Új emojik és matricák feltöltése, valamint saját alkotások kezelése." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Előnézeti képkockák feltöltése képernyőmegosztáshoz." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL vágólapra másolva" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Felhasználói címke (opcionális)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Felhasználó hangereje" @@ -37227,7 +37193,7 @@ msgstr "Videócsomag-veszteség:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Videó előnézet" @@ -37283,7 +37249,7 @@ msgstr "Videófeltöltés" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Hang és videó" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Hang és videó beállítások" @@ -37685,7 +37651,7 @@ msgstr "Hang- és videó-billentyűparancsok" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Hanghívás" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Hangkapcsolat hibakeresése" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Bejövő hang kikapcsolása" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Hangüzenet" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Hangüzenet-lejátszó" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Hangbeállítások" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Bejövő hang visszakapcsolása" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Várj itt" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Kapcsolódásra vár..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Amikor linkként osztod meg a csevegésben" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Ha az előnézetek be vannak kapcsolva, a(z) {productName} időnként JPEG-képkockákat tölt fel a képernyőmegosztásodból. Így a csoportos beszélgetés többi tagja már a stream megnyitása előtt láthat egy bélyegképet." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Ha az előnézetek be vannak kapcsolva, a(z) {productName} időnként JPEG-képkockákat tölt fel a képernyőmegosztásodból. Így a hangcsatornához csatlakozásra jogosult felhasználók már a stream megnyitása előtt láthatnak egy bélyegképet." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Ha az előnézetek be vannak kapcsolva, a(z) {productName} időnként JPEG-képkockákat tölt fel a képernyőmegosztásodból. Így a közvetlen beszélgetés másik résztvevője már a stream megnyitása előtt láthat egy bélyegképet." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "A képernyő tetején vagy alján levágott, illetve dokkolt fejlesztői eszközökkel rendelkező Windows-ablakok szürke hátteret jeleníthetnek meg az átlátszó helyett." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows alapértelmezett" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Ki lettél tiltva ebből a közösségből, és nem csatlakozhatsz." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Ki van kapcsolva nálad a hang" @@ -38833,11 +38799,6 @@ msgstr "A(z) {productName} következő kiadási csatornáját használod: {relea msgid "You aren't in any communities right now." msgstr "Jelenleg nem vagy tagja egyetlen közösségnek sem." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Kérted: {resolution} {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Ebben a közösségben nem küldhetsz üzeneteket." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Ebben a csatornában nem oszthatod meg a képernyődet" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Ebben a csatornában nem beszélhetsz" @@ -39036,7 +38997,7 @@ msgstr "Ebben a csatornában nem beszélhetsz" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Ebben a csatornában nem kapcsolhatod be a kamerádat" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "A(z) {PREMIUM_PRODUCT_NAME} használata közben megváltoztattad a címkédet. Ha a(z) {PREMIUM_PRODUCT_NAME} nem újul meg, a lejáratakor véletlenszerű új címkét kapsz." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Nincs hozzáférésed ahhoz a csatornához, ahová ezt az üzenetet küldték." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Itt maradsz: {ownedNames}. A tulajdonosok nem hagyhatják el a saját közösségüket." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "A moderátorok kikapcsolták nálad a hangot" @@ -39699,11 +39660,6 @@ msgstr "A jelentkezésed felülvizsgálatra vár. Addig is frissítheted a bejeg msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "A böngésződ felhasználói interakciót igényel a hang lejátszása előtt. Kattints az alábbi gombra a hangcsevegés engedélyezéséhez." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "A rögzítőeszközöd a(z) {resolution} helyett {deliveredResolution} küld." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Ellenőrizzük a kártyádat a helyi árazáshoz. Ez általában csak egy pillanat." @@ -39734,36 +39690,11 @@ msgstr "A közösséged szerepel a Felfedezésben. Alább frissítheted a bejegy msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "A közösségednek legalább {minMemberCount, plural, one {# tagra} other {# tagra}} van szüksége ahhoz, hogy megjelenhessen a Felfedezésben." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Kapcsolatod nem bírja a terhelést. A streamet {frameRate} FPS-re állítottad {resolution} felbontáson, és a nézők körülbelül {deliveredFrameRate} FPS-t kapnak." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Ellenőriztük a hitelkártyádat. Ha a kártya érvényes, a felnőtt tartalom hamarosan elérhetővé válik. Bezárhatod ezt a lapot, és visszatérhetsz az alkalmazásba." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Eszközöd nem bírja. A stream beállítása {frameRate} FPS és {resolution} felbontás, a nézők pedig körülbelül {deliveredFrameRate} FPS-t kapnak." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Eszközöd nem tudta tartani a lépést, ezért a stream most {frameRate} FPS-t küld, hogy éles maradjon a(z) {resolution} felbontás." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Eszközöd nem bírta a tempót, ezért a streamed most {resolution} képkocka/mp sebességgel küld {frameRate} FPS helyett, {targetResolution} {targetFrameRate} FPS helyett." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Eszközöd nem tudta tartani a lépést, ezért a stream most {resolution} küld, hogy a(z) {frameRate} FPS akadásmentes maradjon." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "A regisztrációdhoz még egy spamellenőrzés szükséges, mielőtt folytathatnád." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "A mentett {savedResolution} {savedFrameRate} FPS minőséghez {premiumProductName} szükséges, ezért a megosztások {resolution} minőségben, {frameRate} FPS sebességgel történnek." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "A képernyőmegosztásodat nem sikerült kompatibilis videokodekkel közzétenni, ezért leállt. Próbáld meg újra megosztani." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "A forrásod körülbelül {sourceFrameRate} FPS-t állít elő" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "A streamed továbbra is élőben megy" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "A streamod {codec} formátumra váltott, mert az eszközöd nem tudta tartani a lépést a {previousCodec} formátummal. Előfordulhat, hogy a nézők rövid szünetet tapasztalnak." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Az egyéni meghívólinked beállítva: {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "A videokódolód nem kódolt több képkockát, ezért a képernyőmegosztásod leállt. Próbáld meg újra megosztani." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Videokódolód leállt, ezért a stream átváltott erre: {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/id/messages.po b/fluxer_app/src/features/i18n/locales/id/messages.po index e87eb11be..b706f6ec2 100644 --- a/fluxer_app/src/features/i18n/locales/id/messages.po +++ b/fluxer_app/src/features/i18n/locales/id/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} ingin terhubung" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} akan menggunakan akun ini untuk otorisasi ini." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} tidak dapat mengimbangi di perangkat ini. Atur codec ke Otomatis di pengaturan Lanjutan untuk mengizinkan yang lebih cepat." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} saat ini hanya dapat diakses oleh staf {productName}" msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Tanpa batas} one {# peserta} other {# peserta}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# baris tersisa)} other {... (# baris tersisa)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# baris tersisa)} other {... (# baris tersisa)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Perluas (# baris)} other {Perluas (# baris)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Perluas (# baris)} other {Perluas (# baris)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Perluas # perangkat lain} other {Perluas # perangkat lain}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Dalam panggilan} other {# dalam panggilan}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Gabung panggilan video (# peserta)} other {Gabung panggilan video (# peserta)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Tetap tonton # stream dan tambahkan yang ini} other {Tetap tonton # stream dan tambahkan yang ini}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, other {Tautan undanganmu akan kedaluwarsa dalam # hari.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} jam" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# penggantian} other {# penggantian}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} akan memverifikasi dulu bahwa kartumu memenuhi syarat untuk harga lokal, lalu membawamu ke pembayaran. Kembali ke {productName} setelah kamu menyelesaikannya." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} tidak tersedia di perangkat ini, jadi streaming Anda menggunakan {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} memerlukan akses ke mikrofonmu. Izinkan akses mikrofon di pengaturan privasi sistem operasimu dan mulai ulang aplikasi." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} memerlukan akses kamera untuk menampilkan daftar perangkatmu." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "URL yang diketik dalam teks pesan" msgid "a user" msgstr "pengguna" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Penonton tidak dapat memutar {pinnedCodec}, jadi streaming Anda menggunakan {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Terima" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Jawab" @@ -3178,12 +3163,12 @@ msgstr "Tambahkan ke grup" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Tambahkan ke media tersimpan" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Tambahkan ke GIF favorit khusus URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Lanjutan" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Pengaturan video lanjutan" @@ -3451,7 +3436,7 @@ msgstr "Kontrol perataan hanya tersedia di layar yang lebih lebar" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Izinkan" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Izinkan {everyoneMention} dan {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Izinkan {PRODUCT_NAME} mengakses kameramu di {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Izinkan pesan langsung dari bot" msgid "Allow bots to send you direct messages?" msgstr "Izinkan bot mengirimimu pesan langsung?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Izinkan kamera" @@ -4014,13 +3999,13 @@ msgstr "Emoji animasi, GIF, dan stiker tetap dalam kendalimu di tab Animasi." #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF animasi" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Video GIF animasi" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Ikon animasi memerlukan fitur komunitas {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Gambar animasi" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Pratinjau gambar animasi" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Unggahan animasi memerlukan langganan {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Video animasi" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Status aplikasi" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Jendela aplikasi" @@ -4361,7 +4346,7 @@ msgstr "Aplikasi berhasil diperbarui" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplikasi" @@ -4586,7 +4571,7 @@ msgstr "lampiran" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Lampiran {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Lampiran kedaluwarsa" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Lampiran kedaluwarsa atau tidak tersedia" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID lampiran disalin ke papan klip" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Level audio" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio dibisukan" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Kehilangan paket audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Pemutar audio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Pratinjau audio" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Pemrosesan audio (suara terfokus)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Progres audio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Pengaturan audio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Sumber audio: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Otomatis ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Kontrol penguatan otomatis" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser: kembali" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Default browser" @@ -6198,20 +6183,20 @@ msgstr "Panggilan" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Akses kamera diperlukan untuk pratinjau perangkat" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Akses kamera tidak diberikan. Perbarui izin kamera, lalu coba lagi." @@ -6276,13 +6261,13 @@ msgstr "Pratinjau kamera" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kualitas kamera" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Pengaturan kamera" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Verifikasi Captcha gagal. Coba lagi." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Rekam" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Rekam audio aplikasi" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Rekam audio desktop" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Rekam audio perangkat" @@ -6736,12 +6721,12 @@ msgstr "Perubahan terjadwal" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Ganti streaming" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Ganti sumber streaming" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Akses saluran" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Akses saluran ditolak" @@ -7097,7 +7082,7 @@ msgstr "ID saluran disalin ke papan klip" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "tautan saluran" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Pilih metode pembayaran" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Pilih sesuatu untuk dibagikan" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Hapus domain tepercaya ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Teks lebih jelas" @@ -8285,7 +8270,7 @@ msgstr "Ciutkan topik saluran" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Ciutkan perangkat" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Pembuat komunitas" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Bisukan suara masuk di komunitas" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Bilah notifikasi persyaratan MFA komunitas" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Bisukan di komunitas" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Konfigurasi sekarang" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Konfigurasi atau akhiri berbagi layar" @@ -8904,7 +8889,7 @@ msgstr "Konfirmasi atau klik dua kali untuk bergabung dengan saluran suara komun msgid "Conflicts with {conflictLabel}" msgstr "Berbenturan dengan {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Hubungkan kamera dan coba lagi." @@ -8913,7 +8898,7 @@ msgstr "Hubungkan kamera dan coba lagi." msgid "Connect a camera or virtual capture device, then try again." msgstr "Hubungkan kamera atau perangkat perekam virtual, lalu coba lagi." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Sambungkan layar, lalu coba lagi." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Kontrol volume koneksi" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Koneksi: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistik JSON disalin ke papan klip" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Disalin ke papan klip" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Salin ID lampiran" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Salin audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Salin tautan audio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Salin endpoint" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Salin tautan file" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Salin GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Salin tautan GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Salin pengenal" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Salin gambar" @@ -9448,7 +9433,7 @@ msgstr "Salin gambar" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Salin tautan gambar" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Salin tautan ke bagian" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Salin media" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Salin nilai" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Salin video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Salin tautan video" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Salin URL webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Menyalin gambar..." @@ -10588,7 +10573,7 @@ msgstr "Saat ini: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Kustom" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Nonaktifkan" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Bisukan suara masuk" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Bisukan suara masuk di semua perangkat" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Bisukan suara masuk di perangkat" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Bisukan suara masuk anggota lain di saluran suara, sehingga mereka tidak dapat mendengar atau berbicara." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Pintasan bisukan suara masuk" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Bisukan suara masukmu" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Suara masuk dibisukan" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Suara masuk dibisukan oleh moderator" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Default" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Kamera default" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Hapus :{emojiName}:? Tidak dapat dibatalkan." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Hapus \"{memeName}\"? Tidak dapat dibatalkan." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Hapus undangan" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Hapus media" @@ -11466,8 +11451,8 @@ msgstr "Hapus peran" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Hapus media tersimpan" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Desktop tidak aktif" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Perangkat desktop" @@ -11849,13 +11834,13 @@ msgstr "Status pengembang" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Alat pengembang" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Alat pengembang tersedia dari lencana staf di header saluran." @@ -11879,6 +11864,17 @@ msgstr "Perangkat" msgid "Device alerts" msgstr "Peringatan perangkat" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Audio perangkat ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Audio perangkat saja" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Detail perangkat" @@ -11888,7 +11884,7 @@ msgstr "Detail perangkat" msgid "Device revoked" msgstr "Akses perangkat dicabut" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Pilihan perangkat" @@ -11912,7 +11908,7 @@ msgstr "Perangkat:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Perangkat" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Redupkan teks coret" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Input langsung" @@ -12020,7 +12016,7 @@ msgstr "Unggahan langsung aktif" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Nonaktifkan" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Nilai dinonaktifkan" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Menonaktifkan pratinjau akan menghentikan pengunggahan pratinjau di masa mendatang. Gambar pratinjau yang sudah ada mungkin masih terlihat hingga streaming berakhir atau pratinjau disegarkan." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Buang pesan suara" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Putuskan sambungan" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Putuskan semua perangkat" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Putuskan perangkat" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Tampilan" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Layar" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification dan letakkan di folder <1>.well-known agar kami dapat memvalidasi domainnya." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Unduh audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Unduh pembaruan desktop {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Unduh file" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Unduh fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Unduh GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Unduh gambar" @@ -12714,7 +12710,7 @@ msgstr "Unduh penginstal" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Unduh media" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Unduh paket" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Unduh video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Gema" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Pembatalan gema" @@ -12963,7 +12959,7 @@ msgstr "Edit akses untuk {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Edit teks alternatif" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Edit pintasan keyboard" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Edit media" @@ -13102,8 +13098,8 @@ msgstr "Edit mesin pencari gambar terbalik" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Edit media tersimpan" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Aktifkan notifikasi browser" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Aktifkan akses kamera untuk melihat pratinjau kamera dan perangkat tangkapan sebelum memilih salah satu untuk di-stream." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Aktifkan atau nonaktifkan penerjemah bawaan. Penerjemah yang diaktifkan akan muncul di menu konteks pesan saat teks dipilih." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Aktifkan pratinjau" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Berhenti berbagi layar" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Enkripsi end-to-end tidak tersedia karena ada peserta yang tidak didukung dalam panggilan ini." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Enkripsi end-to-end tidak tersedia karena ada peserta yang tidak didukung di saluran suara ini." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Hiburan" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Seluruh layar" @@ -14095,7 +14091,7 @@ msgstr "Seluruh layar" msgid "Entire system" msgstr "Seluruh sistem" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Seluruh audio sistem" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "kecualikan pengguna" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Kecualikan dari sistem" @@ -14593,7 +14589,7 @@ msgstr "Gagal menyalin tautan undangan" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Gagal menyalin ke papan klip" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Gagal memuat undangan. Coba lagi." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Gagal memuat sumber yang dapat dibagikan." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Fokuskan jendela" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Suara terfokus" @@ -15322,10 +15318,6 @@ msgstr "Pengaturan folder" msgid "Follow us on {blueskyProviderName}" msgstr "Ikuti kami di {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Ikuti input suara" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Teruskan" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Maju {defaultSeekAmount} detik" @@ -15592,14 +15584,14 @@ msgstr "Bingkai" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Laju bingkai" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Frame rate di atas 30 FPS memerlukan {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Gamepad Y / Segitiga" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Game" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Pemilih GIF sedang memuat" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Pratinjau GIF" @@ -16429,7 +16421,7 @@ msgstr "Diberikan {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Memberikan semua izin dan melewati pembatasan saluran. Sangat sensitif." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Pilihan terperinci" @@ -16992,7 +16984,7 @@ msgstr "Sembunyikan kata sandi" msgid "Hide picture-in-picture popout?" msgstr "Sembunyikan pop-out gambar-dalam-gambar?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Sembunyikan gambar mini pratinjau" @@ -17386,7 +17378,7 @@ msgstr "Jika kamu ingin anggota ini dapat mengakses pesan lama yang dikirim sete #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Abaikan" @@ -17395,11 +17387,11 @@ msgstr "Abaikan" msgid "Ignore friend request" msgstr "Abaikan permintaan pertemanan" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Abaikan perangkat keras" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Abaikan media masukan" @@ -17430,7 +17422,7 @@ msgstr "Abaikan permintaan pertemanan dari {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Abaikan jeda mode lambat saluran ini." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Abaikan virtual" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Gambar" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Aset gambar" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Gambar disalin ke papan klip" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opsi gambar" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Pratinjau gambar" @@ -17540,7 +17532,7 @@ msgstr "Unggah gambar" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Dalam panggilan suara" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Dalam obrolan suara" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Sertakan semua kecuali yang dipilih" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Sertakan aplikasi" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Input dan output" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Perangkat input" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Profil input: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Pengaturan input" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Status input" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Volume input" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Tautan undangan disembunyikan saat berbagi:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Tautan undangan disamarkan saat berbagi" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Lompat ke {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Lompat ke {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Lompat ke panggilan saat ini" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Lompat ke saluran tertaut" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Lompat ke pesan tertaut" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Lompat ke pesan dari {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Lompat ke pesan di {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Tata letak" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Pelajari tentang pratinjau berbagi layar" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Gaya tautan" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Tautan tidak tersedia" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Aplikasi Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Default Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Memuat tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Memuat..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Aplikasi macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Default macOS" @@ -20289,7 +20281,7 @@ msgstr "Trek berikutnya" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opsi media" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Putar/jeda" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Pratinjau media" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Tata letak pesan" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "tautan pesan" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Tes mikrofon" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Mikrofon, kamera, dan konten berbagi layar dienkripsi ujung ke ujung." @@ -21019,7 +21011,7 @@ msgstr "Anak di bawah umur berisiko, konten dewasa di tempat yang salah, atau pe #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Kata salah eja" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Perangkat seluler" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Bisukan semua" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Bisukan semua perangkat" @@ -21653,13 +21645,13 @@ msgstr "Dibisukan" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofon dibisukan" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Dibisukan oleh moderator" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Tidak ada izin {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Tidak ada akses" @@ -22282,7 +22274,7 @@ msgstr "Tidak ada pengaturan lanjutan yang ditemukan" msgid "No AFK channel" msgstr "Tidak ada saluran AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Tidak ada jendela aplikasi yang ditemukan" @@ -22300,6 +22292,11 @@ msgstr "Belum ada aset" msgid "No audio" msgstr "Tidak ada audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Tidak ada audio dari perangkat ini" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Tidak ada aplikasi yang diotorisasi" @@ -22341,7 +22338,7 @@ msgstr "Tidak ada bookmark" msgid "No bot banner" msgstr "Tidak ada banner bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Tidak ada kamera yang ditemukan" @@ -22421,7 +22418,7 @@ msgstr "Tidak ada deskripsi." msgid "No desktop update is available." msgstr "Tidak ada pembaruan desktop yang tersedia." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Tidak ada layar yang ditemukan" @@ -22650,7 +22647,7 @@ msgstr "Tidak ada isi respons yang diterima" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Tidak ada hasil" @@ -22679,7 +22676,7 @@ msgstr "Belum ada peran. Tambahkan peran di {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Tidak ada media tersimpan" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Noise gate" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Peredam bising" @@ -22877,7 +22874,7 @@ msgstr "Tanpa konversi" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Tidak ada" @@ -23286,7 +23283,7 @@ msgstr "Hanya berlaku di layar lebar." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Hanya kartu kredit yang diterima. Kartu debit dan prabayar tidak dapat digunakan untuk pemeriksaan konten dewasa." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Hanya speaker default" @@ -23334,7 +23331,7 @@ msgstr "Jalankan kode di sini hanya jika kamu benar-benar paham apa fungsinya." msgid "Only show message previews for DMs with unread messages" msgstr "Hanya tampilkan pratinjau pesan untuk DM dengan pesan yang belum dibaca" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Hanya speaker" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Buka {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Buka {labelText} di pengaturan" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Buka @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Buka pengaturan media lanjutan" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Buka jendela aplikasi, lalu coba lagi." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Buka GIF animasi dalam tampilan penuh" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Buka video GIF animasi dalam tampilan penuh" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Buka audio dalam tampilan penuh" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Buka tautan audio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Buka browser" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Buka pemilih browser" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Buka menu favorit" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Buka tautan file" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Buka tautan GIF" @@ -23651,7 +23648,7 @@ msgstr "Buka gambar di browser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Buka gambar dalam tampilan penuh" @@ -23660,7 +23657,7 @@ msgstr "Buka gambar dalam tampilan penuh" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Buka tautan gambar" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Buka DM sistem" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Buka pemilih sistem" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Buka video dalam tampilan penuh" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Buka tautan video" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Buka obrolan suara" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Buka pengaturan suara & video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Output" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Perangkat output" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Pengaturan output" @@ -24094,7 +24091,7 @@ msgstr "Pengaturan output" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Volume output" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Batas peserta" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opsi peserta untuk {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Pratinjau disembunyikan" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Gambar pratinjau disimpan sementara oleh {productName} untuk pengiriman dan tidak dienkripsi secara end-to-end. Nonaktifkan pratinjau jika kamu tidak ingin bingkai berbagi layar diunggah untuk membuat gambar mini." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Gambar pratinjau disimpan sementara oleh {productName} untuk pengiriman dan tidak dienkripsi secara end-to-end. Orang-orang di DM grup ini tidak perlu menonton streaming kamu secara aktif untuk melihat gambar mini." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Gambar pratinjau disimpan sementara oleh {productName} untuk pengiriman dan tidak dienkripsi secara end-to-end. Orang tetap memerlukan izin untuk terhubung, tetapi mereka tidak perlu menonton streaming kamu secara aktif." @@ -26269,7 +26266,7 @@ msgstr "Referensi disalin." msgid "Referral parameters" msgstr "Parameter rujukan" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Segarkan sumber audio" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Tombol biasa diklik." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Tolak" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Keluarkan dari grup" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Hapus dari media tersimpan" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Jangan tetap di atas" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Hapus dari GIF favorit khusus URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Pemblokiran untuk {0} dicabut" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Mundur {defaultSeekAmount} detik" @@ -28202,7 +28199,7 @@ msgstr "Simpan ikon" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Simpan beberapa media dari pesan untuk memulai!" @@ -28313,7 +28310,7 @@ msgstr "Izin perekaman layar diperlukan" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Berbagi layar" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Peningkatan audio berbagi layar" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Audio berbagi layar tidak dapat dimulai" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Kontrol encoder berbagi layar" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Berbagi layar berakhir" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Perilaku pratinjau berbagi layar" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Pratinjau berbagi layar" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Pratinjau berbagi layar dinonaktifkan." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Pratinjau berbagi layar diaktifkan." @@ -28391,13 +28388,13 @@ msgstr "Privasi berbagi layar" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Kualitas berbagi layar" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Pengaturan berbagi layar" @@ -28723,7 +28720,7 @@ msgstr "Cari peran atau anggota…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Cari media tersimpan" @@ -28942,12 +28939,12 @@ msgstr "Pratinjau" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Pilih" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Pilih {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Kirim tautan reset" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Kirim media tersimpan {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Mengatur posisi daftar anggota untuk peran tersebut" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Disetel oleh preset {preset}. Memilih nilai di sini akan beralih ke Kustom." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Atur volume khusus untuk masing-masing suara. Suara yang tidak memiliki pengaturan khusus akan mengikuti volume utama." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Atur pintasan bisukan suara masuk" @@ -29669,11 +29666,6 @@ msgstr "Kesampingkan pemeriksaan ini" msgid "Set this check aside?" msgstr "Kesampingkan pemeriksaan ini?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Siap mengirim {resolution} pada {frameRate} FPS dengan {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Pengaturan" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "tautan pengaturan" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Bagikan hadiah" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Bagikan layar" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Bagikan ke moderator komunitas." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Bagikan layarmu" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Bagikan layarmu dalam definisi tinggi (1080p), quad HD (1440p), atau resolusi asli sumber, hingga 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Jendela yang dibagikan" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio jendela yang dibagikan" @@ -30624,6 +30616,10 @@ msgstr "Panggilan senyap" msgid "Silent calls from everyone" msgstr "Panggilan senyap dari semua orang" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Senyap saat perangkat penangkap tidak memiliki input audio sendiri" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Gulir mulus" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Video lebih lancar" @@ -31005,11 +31001,6 @@ msgstr "Beberapa emoji tidak dapat ditambahkan" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Beberapa file yang kamu coba unggah melebihi batas ukuran maksimum {maxSizeFormatted} per file." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Beberapa pengaturan stream tidak dapat diterapkan ke siaran langsung Anda." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Suara" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Sumber" @@ -31569,7 +31560,7 @@ msgstr "Mulai panggilan suara?" msgid "Start call" msgstr "Mulai panggilan" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Mulai tes kamera dan atur efek" @@ -31910,7 +31901,7 @@ msgstr "Hentikan pembacaan" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Hentikan streaming" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Berhenti memercayai semua tautan?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Berhenti menonton" @@ -31982,7 +31973,7 @@ msgstr "Mencegah suara speaker terekam kembali oleh mikrofonmu." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Streaming" @@ -32001,11 +31992,6 @@ msgstr "Streaming berakhir" msgid "Stream hidden" msgstr "Streaming disembunyikan" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Streaming tidak lancar" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Kualitas streaming" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Pengaturan streaming" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Pengaturan stream disesuaikan" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Pengumuman sistem dari staf {productName}. Kamu tidak bisa membalas di s #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Default sistem" @@ -33036,13 +33017,8 @@ msgstr "Bot telah ditambahkan ke <0>{destinationName}." msgid "The bot has been added." msgstr "Bot telah ditambahkan." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Peramban mengirimkan {deliveredResolution} alih-alih {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Pratinjau kamera masih dalam proses berhenti. Coba streaming lagi sebentar lagi." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Peran tersebut memberikan {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Sumber berbagi layar berhenti mengirim video, jadi berbagi layarmu dihentikan." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Konsol browser ini adalah alat pengembang." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Panggilan ini dienkripsi secara end-to-end." @@ -33645,11 +33621,6 @@ msgstr "Versi desktop ini tidak dapat menginstal pembaruan di dalam {productName msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Versi pengembangan ini tidak dapat memperbarui dirinya sendiri. Unduh penginstal desktop untuk menguji alur pembaruan." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Perangkat ini tidak dapat mengimbangi {targetResolution} pada {targetFrameRate} FPS terakhir kali, jadi streaming Anda dimulai pada {resolution} pada {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Instalasi ini dikelola oleh sistemmu. Perbarui {productName} lewat pusat perangkat lunak atau manajer paket sistemmu." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Instance ini saat ini mengizinkan berbagi layar hingga 720p pada 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Saluran tautan ini ditandai untuk konten dewasa dan mungkin membuka materi yang tidak pantas untuk sebagian pengguna." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Tautan ini tidak tersedia untuk akunmu." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Opsi ini wajib diisi. Masukkan nilainya." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Peserta ini tidak dapat berbicara di saluran ini" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Suara masuk peserta ini dibisukan" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Suara masuk peserta ini dibisukan oleh moderator" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Nomor telepon ini sudah digunakan. Coba nomor lain atau hubungi dukungan." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Pemilih ini hanya tersedia di aplikasi desktop." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Alihkan kontrol" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Alihkan bisu suara masuk" @@ -34666,7 +34637,7 @@ msgstr "Perubahan ikon baki hanya berlaku setelah memulai ulang di Linux karena #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF populer" @@ -34760,7 +34731,7 @@ msgstr "Coba kata kunci pencarian lain." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Coba istilah pencarian atau filter lain" @@ -34839,11 +34810,6 @@ msgstr "Coba filter atau istilah pencarian yang berbeda." msgid "Try editing your message again." msgstr "Coba edit pesanmu lagi." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Coba kualitas penuh lagi" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Coba cari sesuatu seperti \"tema\", \"notifikasi\", atau \"privasi\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Nonaktifkan apa pun yang membuatmu tidak nyaman. Beberapa fitur mungkin berhenti berfungsi." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Matikan berbagi audio untuk sumber ini atau coba lagi sebentar lagi." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Aktifkan otomatis saat OBS atau XSplit terdeteksi" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Nyalakan kamera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Tidak dapat ditagih" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Aktifkan suara masuk" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Aktifkan suara masuk di semua perangkat" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Aktifkan suara masukmu" @@ -35558,7 +35524,7 @@ msgstr "pengguna tidak dikenal" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Pengguna tidak dikenal" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Buka emoji kustom di DM dengan {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Buka berbagi layar HD dengan {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Bunyikan {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Aktifkan mikrofon di semua perangkat" @@ -35741,7 +35707,7 @@ msgstr "Grup tanpa nama" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Input tanpa nama" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Unggah emoji dan stiker baru, serta kelola kreasimu sendiri." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Unggah bingkai pratinjau untuk berbagi layar." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL disalin ke papan klip" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Tag pengguna (opsional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volume pengguna" @@ -37227,7 +37193,7 @@ msgstr "Kehilangan paket video:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Pratinjau video" @@ -37283,7 +37249,7 @@ msgstr "Unggahan video" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Suara & video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Pengaturan suara & video" @@ -37685,7 +37651,7 @@ msgstr "Pintasan suara dan video" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Panggilan suara" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Debug koneksi suara" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Bisukan suara masuk" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Pesan suara" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Pemutar pesan suara" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Pengaturan suara" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Aktifkan suara masuk" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Tunggu di sini" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Menunggu koneksi..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Saat diposting sebagai tautan di obrolan" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Saat pratinjau diaktifkan, {productName} sesekali mengunggah bingkai JPEG dari berbagi layarmu agar orang lain di DM grup ini bisa melihat gambar mini sebelum menonton." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Saat pratinjau diaktifkan, {productName} sesekali mengunggah bingkai JPEG dari berbagi layarmu agar orang yang punya izin untuk terhubung ke saluran suara ini bisa melihat gambar mini sebelum menonton." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Saat pratinjau diaktifkan, {productName} sesekali mengunggah bingkai JPEG dari berbagi layarmu agar lawan bicaramu di DM ini bisa melihat gambar mini sebelum menonton." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Jendela yang terpotong di bagian atas atau bawah layar, dan DevTools yang ditambatkan, dapat menampilkan latar belakang abu-abu alih-alih tetap transparan." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows (default)" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Kamu diblokir dari komunitas ini dan tidak dapat bergabung." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Suara masukmu dibisukan" @@ -38833,11 +38799,6 @@ msgstr "Kamu menggunakan build {releaseChannel} dari {productName}." msgid "You aren't in any communities right now." msgstr "Kamu belum bergabung dengan komunitas mana pun." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Anda meminta {resolution} pada {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Kamu tidak dapat mengirim pesan di komunitas ini." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Kamu tidak dapat berbagi layar di saluran ini" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Kamu tidak dapat berbicara di saluran ini" @@ -39036,7 +38997,7 @@ msgstr "Kamu tidak dapat berbicara di saluran ini" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Kamu tidak dapat menyalakan kamera di saluran ini" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Kamu mengubah tag saat menggunakan {PREMIUM_PRODUCT_NAME}. Tag akan diacak ulang secara otomatis saat {PREMIUM_PRODUCT_NAME} kamu berakhir, kecuali jika diperpanjang." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Kamu tidak memiliki akses ke saluran tempat pesan ini dikirim." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Kamu tetap berada di {ownedNames}. Pemilik tidak bisa keluar dari komunitasnya sendiri." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Suara masukmu dibisukan oleh moderator" @@ -39699,11 +39660,6 @@ msgstr "Pengajuanmu sedang ditinjau. Kamu masih bisa memperbarui detail pendafta msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Browsermu memerlukan interaksi pengguna sebelum audio dapat diputar. Klik tombol di bawah untuk mengaktifkan obrolan suara." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Perangkat penangkap Anda mengirimkan {deliveredResolution} alih-alih {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Kartumu sedang diperiksa untuk harga lokal. Ini biasanya hanya sebentar." @@ -39734,36 +39690,11 @@ msgstr "Komunitasmu terdaftar di Discovery. Kamu bisa memperbarui detail pendaft msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Komunitasmu perlu memiliki setidaknya {minMemberCount, plural, other {# anggota}} sebelum bisa terdaftar di Discovery." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Koneksi Anda tidak mampu. Streaming Anda diatur ke {frameRate} FPS pada {resolution} dan penonton mendapatkan sekitar {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Kartu kreditmu sudah diperiksa. Jika kartunya valid, konten dewasa akan segera terbuka. Kamu bisa menutup tab ini dan kembali ke aplikasi." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Perangkat Anda tidak mampu mengikutinya. Streaming Anda diatur ke {frameRate} FPS pada {resolution} dan penonton mendapatkan sekitar {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Perangkat Anda tidak mampu mengikutinya, jadi streaming Anda sekarang mengirimkan {frameRate} FPS agar {resolution} tetap tajam." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Perangkat Anda tidak mampu, jadi streaming Anda sekarang mengirimkan {resolution} pada {frameRate} FPS, bukan {targetResolution} pada {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Perangkat Anda tidak dapat mengimbangi, jadi streaming Anda sekarang mengirimkan {resolution} untuk menjaga kelancaran {frameRate} FPS." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Pendaftaranmu memerlukan pemeriksaan anti-spam tambahan sebelum kamu bisa melanjutkan." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Kualitas {savedResolution} yang tersimpan pada {savedFrameRate} FPS memerlukan {premiumProductName}, jadi berbagi menggunakan {resolution} pada {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Berbagi layarmu tidak dapat dipublikasikan dengan codec video yang kompatibel, jadi dihentikan. Coba bagikan lagi." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Sumber Anda menghasilkan sekitar {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Streamingmu masih aktif" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Streaming Anda dialihkan ke {codec} karena {previousCodec} tidak dapat mengimbangi di perangkat ini. Penonton mungkin melihat jeda singkat." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "URL kustommu telah diatur ke {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Encoder videomu berhenti mengenkode frame, jadi berbagi layarmu dihentikan. Coba bagikan lagi." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Encoder video Anda berhenti, jadi streaming Anda beralih ke {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/it/messages.po b/fluxer_app/src/features/i18n/locales/it/messages.po index e93b8b861..bc8d5e258 100644 --- a/fluxer_app/src/features/i18n/locales/it/messages.po +++ b/fluxer_app/src/features/i18n/locales/it/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} vuole connettersi" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} userà questo account per l'autorizzazione." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} non è al passo su questo dispositivo. Imposta il codec su Automatico nelle impostazioni Avanzate per consentirne uno più veloce." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} è attualmente accessibile solo ai membri dello staff di msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Nessun limite} one {# partecipante} other {# partecipanti}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# riga rimanente)} other {... (# righe rimanenti)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# riga rimanente)} other {... (# righe rimanenti)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Espandi (# riga)} other {Espandi (# righe)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Espandi (# riga)} other {Espandi (# righe)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Espandi # altro dispositivo} other {Espandi # altri dispositivi}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {In chiamata} other {# in chiamata}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Partecipa alla videochiamata (# partecipante)} other {Partecipa alla videochiamata (# partecipanti)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Continua a guardare # stream e aggiungi questo} other {Continua a guardare # stream e aggiungi questo}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Il tuo link d'invito scade tra # giorno.} many {Il tuo link d'invito scade tra # giorni.} other {Il tuo link d'invito scade tra # giorni.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} ore" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# modifica} other {# modifiche}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} verificherà prima che la tua carta sia idonea ai prezzi locali, poi ti porterà al pagamento. Torna a {productName} dopo averlo completato." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} non è disponibile su questo dispositivo, quindi il tuo stream utilizza {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} ha bisogno di accedere al microfono. Consenti l'accesso al microfono nelle impostazioni sulla privacy del sistema operativo e riavvia l'app." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} ha bisogno dell'accesso alla fotocamera per elencare i tuoi dispositivi." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "un URL digitato nel testo del messaggio" msgid "a user" msgstr "un utente" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Uno spettatore non può riprodurre {pinnedCodec}, quindi il tuo stream utilizza {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Accetta" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Rispondi" @@ -3178,12 +3163,12 @@ msgstr "Aggiungi al gruppo" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Aggiungi ai media salvati" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Aggiungi alle GIF preferite salvate solo tramite URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avanzate" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Impostazioni video avanzate" @@ -3451,7 +3436,7 @@ msgstr "I controlli di allineamento sono disponibili solo su schermi più ampi" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Consenti" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Consenti {everyoneMention} e {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Consenti a {PRODUCT_NAME} di accedere alla tua fotocamera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Consenti messaggi diretti dai bot" msgid "Allow bots to send you direct messages?" msgstr "Consentire ai bot di inviarti messaggi diretti?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Consenti accesso alla fotocamera" @@ -4014,13 +3999,13 @@ msgstr "Le emoji animate, le GIF e gli sticker restano sotto il tuo controllo ne #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF animata" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Video GIF animato" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Le icone animate richiedono la funzionalità della community {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Immagine animata" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Anteprima immagine animata" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Gli upload di immagini animate richiedono un abbonamento a {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Video animato" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Stato dell'app" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Finestra app" @@ -4361,7 +4346,7 @@ msgstr "Applicazione aggiornata" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Applicazioni" @@ -4586,7 +4571,7 @@ msgstr "allegato" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Allegato {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Allegato scaduto" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Allegato scaduto o non disponibile" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID allegato copiato negli appunti" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Livello audio" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio disattivato" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Perdita pacchetti audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Lettore audio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Anteprima audio" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Elaborazione audio (voce in evidenza)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Avanzamento audio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Impostazioni audio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Sorgenti audio: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatico ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Controllo automatico del guadagno" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser: indietro" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Dispositivo audio predefinito del browser" @@ -6198,20 +6183,20 @@ msgstr "Chiamate" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Fotocamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "È necessario l'accesso alla fotocamera per le anteprime dei dispositivi" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Accesso alla fotocamera non concesso. Aggiorna le autorizzazioni della fotocamera, quindi riprova." @@ -6276,13 +6261,13 @@ msgstr "Anteprima fotocamera" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Qualità fotocamera" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Impostazioni fotocamera" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Verifica Captcha non riuscita. Riprova." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Acquisisci" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Acquisisci audio app" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Acquisisci audio desktop" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Acquisisci audio del dispositivo" @@ -6736,12 +6721,12 @@ msgstr "Modifica pianificata" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Cambia stream" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Cambia sorgente stream" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Accesso al canale" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Accesso al canale negato" @@ -7097,7 +7082,7 @@ msgstr "ID canale copiato negli appunti" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "link al canale" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Scegli un metodo di pagamento" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Scegli cosa condividere" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Cancella domini attendibili ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Testo più chiaro" @@ -8285,7 +8270,7 @@ msgstr "Comprimi l'argomento del canale" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Comprimi dispositivi" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Creatore della community" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Disattiva l’audio nella community" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Banner requisito MFA della community" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Silenzia nella community" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configura ora" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configura o termina la condivisione schermo" @@ -8904,7 +8889,7 @@ msgstr "Conferma o doppio clic per partecipare alle chat vocali" msgid "Conflicts with {conflictLabel}" msgstr "In conflitto con {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Connetti una fotocamera e riprova." @@ -8913,7 +8898,7 @@ msgstr "Connetti una fotocamera e riprova." msgid "Connect a camera or virtual capture device, then try again." msgstr "Collega una fotocamera o un dispositivo di acquisizione virtuale, quindi riprova." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Collega un display, poi riprova." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Controlli del volume della connessione" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Connessione: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistiche JSON copiate negli appunti" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copiato negli appunti" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copia ID allegato" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copia audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copia link audio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copia endpoint" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copia link file" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copia GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copia link GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copia identificativo" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copia immagine" @@ -9448,7 +9433,7 @@ msgstr "Copia immagine" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copia link immagine" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copia il collegamento alla sezione" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copia contenuto multimediale" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copia valore" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copia video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copia link video" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copia URL webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Copia immagine..." @@ -10588,7 +10573,7 @@ msgstr "Attualmente: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Personalizzato" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Disattiva" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Disattiva audio" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Disattiva audio su tutti i dispositivi" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Disattiva audio dispositivo" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Disattiva l'audio degli altri membri nei canali vocali, in modo che non possano né sentire né parlare." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Scorciatoia disattiva audio" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Disattiva audio per te" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Audio disattivato" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Audio disattivato dai moderatori" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Predefinito" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Fotocamera predefinita" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Eliminare :{emojiName}:? Non si potrà annullare." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Eliminare \"{memeName}\"? Non sarà possibile annullare." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Elimina invito" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Elimina media" @@ -11466,8 +11451,8 @@ msgstr "Elimina ruolo" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Elimina elemento multimediale salvato" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Assente dal desktop" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Dispositivo desktop" @@ -11849,13 +11834,13 @@ msgstr "Stato sviluppatore" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Strumenti per sviluppatori" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Gli strumenti per sviluppatori sono disponibili dal badge dello staff nell'intestazione del canale." @@ -11879,6 +11864,17 @@ msgstr "Dispositivo" msgid "Device alerts" msgstr "Avvisi dispositivo" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Audio del dispositivo ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Solo audio del dispositivo" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Dettagli del dispositivo" @@ -11888,7 +11884,7 @@ msgstr "Dettagli del dispositivo" msgid "Device revoked" msgstr "Accesso del dispositivo revocato" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Selezione dispositivo" @@ -11912,7 +11908,7 @@ msgstr "Dispositivo:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Dispositivi" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Attenua il testo barrato" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Input diretto" @@ -12020,7 +12016,7 @@ msgstr "Caricamento diretto attivo" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Disattiva" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Valore disabilitato" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Disattivando le anteprime, si interromperanno i caricamenti futuri delle anteprime. Le immagini di anteprima già caricate potrebbero rimanere visibili fino alla fine dello streaming o al refresh dell'anteprima." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Elimina messaggio vocale" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Disconnetti" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Disconnetti tutti i dispositivi" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Disconnetti dispositivo" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Visualizzazione" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Schermo" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification e posizionalo nella tua cartella <1>.well-known per consentirci di convalidare il dominio." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Scarica audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Scarica l'aggiornamento desktop {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Scarica file" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Scarica fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Scarica GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Scarica immagine" @@ -12714,7 +12710,7 @@ msgstr "Scarica programma di installazione" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Scarica media" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Scarica pacchetto" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Scarica video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Eco" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Cancellazione dell'eco" @@ -12963,7 +12959,7 @@ msgstr "Modifica accesso per {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Modifica testo alternativo" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Modifica scorciatoia da tastiera" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Modifica media" @@ -13102,8 +13098,8 @@ msgstr "Modifica motore di ricerca immagini inverso" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Modifica elemento multimediale salvato" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Abilita le notifiche del browser" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Abilita l’accesso alla fotocamera per visualizzare in anteprima le fotocamere e i dispositivi di acquisizione prima di scegliere la sorgente dello stream." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Attiva o disattiva i traduttori integrati. I traduttori attivati appaiono nel menu contestuale del messaggio quando il testo è selezionato." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Abilita anteprime" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Interrompi condivisione schermo" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "La crittografia end-to-end non è disponibile perché uno dei partecipanti alla chiamata utilizza un client non supportato." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "La crittografia end-to-end non è disponibile perché uno dei partecipanti al canale vocale utilizza un client non supportato." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Intrattenimento" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Schermo intero" @@ -14095,7 +14091,7 @@ msgstr "Schermo intero" msgid "Entire system" msgstr "Intero sistema" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Audio dell’intero sistema" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "escludi un utente" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Escludi dal sistema" @@ -14593,7 +14589,7 @@ msgstr "Impossibile copiare il link d'invito" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Copia negli appunti non riuscita" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Impossibile caricare gli inviti. Riprova." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Impossibile caricare le sorgenti condivisibili." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Porta la finestra in primo piano" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Voce isolata" @@ -15322,10 +15318,6 @@ msgstr "Impostazioni cartella" msgid "Follow us on {blueskyProviderName}" msgstr "Seguici su {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Segui input vocale" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Inoltra" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avanti di {defaultSeekAmount} secondi" @@ -15592,14 +15584,14 @@ msgstr "Cornice" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Frequenza fotogrammi" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "I frame rate superiori a 30 FPS richiedono {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Controller Y / Triangolo" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Giochi" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Caricamento del selettore GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Anteprima GIF" @@ -16429,7 +16421,7 @@ msgstr "Concesso {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Concede tutti i permessi e ignora le restrizioni del canale. Molto sensibile." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Selezione dettagliata" @@ -16992,7 +16984,7 @@ msgstr "Nascondi password" msgid "Hide picture-in-picture popout?" msgstr "Nascondere la finestra picture-in-picture?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Nascondi miniatura di anteprima" @@ -17386,7 +17378,7 @@ msgstr "Se vuoi che questi membri possano accedere ai messaggi precedenti inviat #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignora" @@ -17395,11 +17387,11 @@ msgstr "Ignora" msgid "Ignore friend request" msgstr "Ignora richiesta di amicizia" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignora dispositivi hardware" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignora i media in entrata" @@ -17430,7 +17422,7 @@ msgstr "Ignorare la richiesta di amicizia da {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignora l’intervallo di attesa della modalità lenta di questo canale." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignora virtuale" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Immagine" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Immagini" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Immagine copiata negli appunti" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opzioni immagine" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Anteprima immagine" @@ -17540,7 +17532,7 @@ msgstr "Caricamento immagine" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "In chiamata" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "In chat vocale" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Includi tutti tranne i selezionati" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Includi app" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Input e output" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Dispositivo di input" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Profilo di input: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Impostazioni input" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Stati input" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Volume ingresso" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Il link d'invito è nascosto durante la condivisione:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Link d'invito mascherato durante la condivisione" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Vai a {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Vai a {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Vai alla chiamata attuale" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Vai al canale collegato" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Vai al messaggio collegato" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Vai al messaggio di {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Vai al messaggio in {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Layout" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Scopri di più sulle anteprime della condivisione schermo" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Stile link" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link non disponibile" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "App Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux (predefinito)" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Caricamento tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Caricamento..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "App macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS (predefinito)" @@ -20289,7 +20281,7 @@ msgstr "Traccia successiva" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opzioni media" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Riproduci/pausa" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Anteprima media" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Layout messaggi" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "link del messaggio" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Test microfono" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "I contenuti del microfono, della fotocamera e della condivisione schermo sono crittografati end-to-end." @@ -21019,7 +21011,7 @@ msgstr "Minori a rischio, contenuti per adulti fuori luogo o condotta indesidera #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Parole con errori di battitura" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Dispositivo mobile" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Disattiva tutte le notifiche" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Disattiva il microfono su tutti i dispositivi" @@ -21653,13 +21645,13 @@ msgstr "Silenziato" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Microfono disattivato" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Microfono disattivato dai moderatori" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Nessun permesso {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Nessun accesso" @@ -22282,7 +22274,7 @@ msgstr "Nessuna impostazione avanzata trovata" msgid "No AFK channel" msgstr "Nessun canale AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Nessuna finestra dell'applicazione trovata" @@ -22300,6 +22292,11 @@ msgstr "Ancora nessuna risorsa" msgid "No audio" msgstr "Nessun audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Nessun audio da questo dispositivo" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Nessuna app autorizzata" @@ -22341,7 +22338,7 @@ msgstr "Nessun messaggio salvato" msgid "No bot banner" msgstr "Nessun banner bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Nessuna fotocamera trovata" @@ -22421,7 +22418,7 @@ msgstr "Nessuna descrizione." msgid "No desktop update is available." msgstr "Nessun aggiornamento desktop disponibile." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Nessun display trovato" @@ -22650,7 +22647,7 @@ msgstr "Nessun corpo della risposta ricevuto" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Nessun risultato" @@ -22679,7 +22676,7 @@ msgstr "Ancora nessun ruolo. Aggiungi ruoli in {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Nessun media salvato" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Noise gate" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Soppressione rumore" @@ -22877,7 +22874,7 @@ msgstr "Nessuna conversione" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Nessuno" @@ -23286,7 +23283,7 @@ msgstr "Si applica solo su schermi ampi." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Sono accettate solo carte di credito. Le carte di debito e prepagate non possono essere utilizzate per la verifica dei contenuti per adulti." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Solo altoparlanti predefiniti" @@ -23334,7 +23331,7 @@ msgstr "Esegui codice qui solo se comprendi esattamente cosa fa." msgid "Only show message previews for DMs with unread messages" msgstr "Mostra anteprime messaggi solo per i DM con messaggi non letti" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Solo altoparlanti" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Apri {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Apri {labelText} nelle impostazioni" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Apri @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Apri impostazioni multimediali avanzate" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Apri una finestra dell'applicazione, poi riprova." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Apri la GIF animata nel visualizzatore multimediale" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Apri il video GIF animato nel visualizzatore multimediale" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Apri l’audio nel visualizzatore multimediale" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Apri link audio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Apri il browser" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Apri selettore browser" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Apri il menu dei preferiti" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Apri link file" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Apri link GIF" @@ -23651,7 +23648,7 @@ msgstr "Apri immagine nel browser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Apri l’immagine nel visualizzatore multimediale" @@ -23660,7 +23657,7 @@ msgstr "Apri l’immagine nel visualizzatore multimediale" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Apri link immagine" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Apri DM di sistema" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Apri selettore di sistema" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Apri il video nel visualizzatore multimediale" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Apri link video" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Apri la chat vocale" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Apri le impostazioni audio e video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Output" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Dispositivo di output" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Impostazioni output" @@ -24094,7 +24091,7 @@ msgstr "Impostazioni output" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Volume d'uscita" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Limite partecipanti" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opzioni partecipante per {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Anteprima nascosta" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Le immagini di anteprima vengono archiviate temporaneamente da {productName} per la trasmissione e non sono crittografate end-to-end. Disattiva le anteprime se non vuoi che i fotogrammi della condivisione dello schermo vengano caricati per creare le miniature." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Le immagini di anteprima vengono memorizzate temporaneamente da {productName} per la trasmissione e non sono crittografate end-to-end. Le persone in questo DM di gruppo possono vedere la miniatura anche senza guardare attivamente il tuo stream." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Le immagini di anteprima vengono memorizzate temporaneamente da {productName} per la trasmissione e non sono crittografate end-to-end. Gli utenti devono comunque avere il permesso di connettersi, ma non è necessario che stiano attivamente guardando lo streaming." @@ -26269,7 +26266,7 @@ msgstr "Riferimento copiato." msgid "Referral parameters" msgstr "Parametri di riferimento" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Aggiorna sorgenti audio" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Pulsante normale cliccato." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Rifiuta" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Rimuovi dal gruppo" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Rimuovi dai media salvati" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Disattiva sempre in primo piano" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Rimuovi dalle GIF preferite salvate solo tramite URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Ban revocato per {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Riavvolgi di {defaultSeekAmount} secondi" @@ -28202,7 +28199,7 @@ msgstr "Salva icona" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Salva dei media dai messaggi per iniziare!" @@ -28313,7 +28310,7 @@ msgstr "Autorizzazione registrazione schermo richiesta" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Condivisione schermo" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Potenziamento audio della condivisione schermo" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "L'audio della condivisione schermo non è stato avviato" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Controlli dell'encoder per la condivisione dello schermo" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Condivisione schermo terminata" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Comportamento delle anteprime della condivisione schermo" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Anteprime della condivisione schermo" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Le anteprime della condivisione dello schermo sono disabilitate." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Le anteprime della condivisione dello schermo sono attive." @@ -28391,13 +28388,13 @@ msgstr "Privacy condivisione schermo" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Qualità della condivisione schermo" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Impostazioni condivisione schermo" @@ -28723,7 +28720,7 @@ msgstr "Cerca ruoli o membri…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Cerca nei media salvati" @@ -28942,12 +28939,12 @@ msgstr "Anteprima durante la ricerca nel video" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Seleziona" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Seleziona {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Invia link di reimpostazione" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Invia elemento multimediale salvato {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Impostata una posizione nell'elenco membri per il ruolo" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Impostato dalla preselezione {preset}. La scelta di un valore qui passa a Personalizzato." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Imposta volumi personalizzati per i singoli suoni. I suoni senza un'impostazione personalizzata seguono il volume principale." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Imposta scorciatoia per disattivare l’audio" @@ -29669,11 +29666,6 @@ msgstr "Rimanda questo controllo" msgid "Set this check aside?" msgstr "Rimandare questo controllo?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Invia a {resolution} a {frameRate} FPS con {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Impostazioni" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "link alle impostazioni" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Condividi regalo" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Condividi schermo" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Condividi con i moderatori della community." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Condividi il tuo schermo" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Condividi il tuo schermo in alta definizione (1080p), Quad HD (1440p) o risoluzione nativa, fino a 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Finestra condivisa" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio della finestra condivisa" @@ -30624,6 +30616,10 @@ msgstr "Chiamate silenziose" msgid "Silent calls from everyone" msgstr "Chiamate silenziose da tutti" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silenzioso quando il dispositivo di acquisizione non ha un proprio input audio" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Scorrimento fluido" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Video più fluido" @@ -31005,11 +31001,6 @@ msgstr "Non è stato possibile aggiungere alcune emoji" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Alcuni file che stai cercando di caricare superano la dimensione massima consentita di {maxSizeFormatted} per file." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Impostazioni dello streaming non applicate" - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Suoni" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Sorgente" @@ -31569,7 +31560,7 @@ msgstr "Avviare una chiamata vocale?" msgid "Start call" msgstr "Avvia chiamata" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Avvia il test della fotocamera e configura gli effetti" @@ -31910,7 +31901,7 @@ msgstr "Interrompi la riproduzione" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Smetti di trasmettere" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Smettere di considerare attendibili tutti i link?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Interrompi la visione" @@ -31982,7 +31973,7 @@ msgstr "Impedisce all'audio degli altoparlanti di rientrare nel microfono." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Streaming" @@ -32001,11 +31992,6 @@ msgstr "Stream terminato" msgid "Stream hidden" msgstr "Stream nascosto" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Lo stream non tiene il passo" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Qualità dello stream" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Impostazioni dello stream" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Impostazioni dello stream modificate" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Annunci di sistema dallo staff di {productName}. Non puoi rispondere qui #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Predefinito di sistema" @@ -33036,13 +33017,8 @@ msgstr "Il bot è stato aggiunto a <0>{destinationName}." msgid "The bot has been added." msgstr "Il bot è stato aggiunto." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Il browser sta inviando {deliveredResolution} invece di {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "L'anteprima della fotocamera è ancora in fase di arresto. Riprova a trasmettere tra un momento." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Il ruolo concedeva {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "La sorgente della condivisione dello schermo ha smesso di inviare video, quindi la condivisione dello schermo è stata interrotta." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Questa console del browser è uno strumento per sviluppatori." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Questa chiamata è crittografata end-to-end." @@ -33645,11 +33621,6 @@ msgstr "Questa versione per desktop non può installare gli aggiornamenti all'in msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Questa build di sviluppo non può aggiornarsi automaticamente. Scarica un programma di installazione desktop per testare il flusso di aggiornamento." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Questo dispositivo non è riuscito a gestire {targetResolution} a {targetFrameRate} FPS l'ultima volta, quindi lo streaming è iniziato a {resolution} a {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Questa installazione è gestita dal tuo sistema. Aggiorna {productName} tramite il tuo store di applicazioni o gestore pacchetti." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Questa istanza attualmente consente la condivisione dello schermo fino a 720p a 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Questo canale link è contrassegnato per contenuti per adulti e potrebbe aprire materiale non adatto ad alcuni utenti." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Questo link non è disponibile per il tuo account." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Questa opzione è obbligatoria. Fornisci un valore." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Questo partecipante non può parlare in questo canale" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Questo partecipante ha l’audio disattivato" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "I moderatori hanno disattivato l’audio di questo partecipante" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Questo numero di telefono è già stato utilizzato. Prova un altro numero o contatta l'assistenza." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Questo selettore è disponibile solo nell’app desktop." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Mostra/nascondi controlli" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Attiva/disattiva audio" @@ -34666,7 +34637,7 @@ msgstr "Su Linux, le modifiche all’icona dell’area di notifica vengono appli #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF di tendenza" @@ -34760,7 +34731,7 @@ msgstr "Prova un'altra query di ricerca." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Prova un termine di ricerca o un filtro diverso" @@ -34839,11 +34810,6 @@ msgstr "Prova filtri o termini di ricerca diversi." msgid "Try editing your message again." msgstr "Prova a modificare di nuovo il messaggio." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Riprova con la qualità originale" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Prova a cercare qualcosa come \"tema\", \"notifiche\" o \"privacy\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Disattiva ciò che non ti convince. Alcune funzionalità potrebbero smettere di funzionare." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Disattiva la condivisione audio per questa origine o riprova tra un momento." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Attiva automaticamente quando OBS o XSplit vengono rilevati" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Attiva fotocamera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Inesigibile" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Riattiva audio" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Riattiva l'audio su tutti i dispositivi" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Riattiva l'audio" @@ -35558,7 +35524,7 @@ msgstr "utente sconosciuto" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Utente sconosciuto" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Sblocca le emoji personalizzate nei DM con {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Sblocca la condivisione schermo HD con {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Riattiva il suono {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Riattiva il microfono su tutti i dispositivi" @@ -35741,7 +35707,7 @@ msgstr "Gruppo senza nome" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Input senza nome" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Carica nuove emoji e sticker e gestisci le tue creazioni." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Carica le anteprime dei fotogrammi per la condivisione dello schermo." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copiato negli appunti" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Tag utente (facoltativo)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volume utente" @@ -37227,7 +37193,7 @@ msgstr "Perdita pacchetti video:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Anteprima video" @@ -37283,7 +37249,7 @@ msgstr "Caricamento video" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Audio e video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Impostazioni audio e video" @@ -37685,7 +37651,7 @@ msgstr "Scorciatoie per chiamate e videochiamate" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Chiamata vocale" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Debug connessione vocale" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Audio disattivato" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Messaggio vocale" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Lettore messaggio vocale" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Impostazioni voce" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Audio riattivato" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Attendi qui" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "In attesa di connessione..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Quando pubblicato come link in chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Quando le anteprime sono attive, {productName} carica occasionalmente fotogrammi JPEG della tua condivisione schermo, così le altre persone in questo DM di gruppo possono vedere una miniatura prima di guardarla." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Quando le anteprime sono attive, {productName} carica occasionalmente fotogrammi JPEG della tua condivisione schermo, così le persone autorizzate a connettersi a questo canale vocale possono vedere una miniatura prima di guardarla." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Quando le anteprime sono attive, {productName} carica occasionalmente fotogrammi JPEG della tua condivisione schermo, così l’altra persona in questo DM può vedere una miniatura prima di guardarla." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Le finestre tagliate nella parte superiore o inferiore dello schermo e i DevTools ancorati possono mostrare uno sfondo grigio invece di rimanere trasparenti." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Predefinito di Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Sei stato bannato da questa community e non puoi unirti." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Hai disattivato l'audio" @@ -38833,11 +38799,6 @@ msgstr "Stai utilizzando una build {releaseChannel} di {productName}." msgid "You aren't in any communities right now." msgstr "Al momento non fai parte di alcuna community." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Hai richiesto {resolution} a {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Non puoi inviare messaggi in questa community." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Non puoi condividere il tuo schermo in questo canale" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Non puoi parlare in questo canale" @@ -39036,7 +38997,7 @@ msgstr "Non puoi parlare in questo canale" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Non puoi attivare la fotocamera in questo canale" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Hai cambiato il tuo tag mentre avevi {PREMIUM_PRODUCT_NAME}. Verrà rigenerato casualmente alla scadenza di {PREMIUM_PRODUCT_NAME}, a meno che non venga rinnovato." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Non hai accesso al canale in cui è stato inviato questo messaggio." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Rimani in {ownedNames}. I proprietari non possono abbandonare la propria community." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "I moderatori hanno disattivato il tuo audio" @@ -39699,11 +39660,6 @@ msgstr "La tua candidatura è in attesa di valutazione. Puoi comunque aggiornare msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Il tuo browser richiede un'interazione prima di poter riprodurre l'audio. Clicca il pulsante qui sotto per abilitare la chat vocale." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Il tuo dispositivo di acquisizione sta inviando {deliveredResolution} invece di {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Stiamo verificando la tua carta per i prezzi localizzati. Di solito ci vuole un attimo." @@ -39734,36 +39690,11 @@ msgstr "La tua community è elencata in Scopri. Puoi aggiornare i dettagli della msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "La tua community deve avere almeno {minMemberCount, plural, one {# membro} many {# membri} other {# membri}} per poter essere elencata in Scopri." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "La tua connessione non regge. Il tuo streaming è impostato su {frameRate} FPS a {resolution} e gli spettatori ricevono circa {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "La tua carta di credito è stata verificata. Se la carta è valida, i contenuti per adulti saranno sbloccati a breve. Puoi chiudere questa scheda e tornare all'app." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Il tuo dispositivo non ce la fa. Lo streaming è impostato su {frameRate} FPS a {resolution} e gli spettatori ricevono circa {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Il tuo dispositivo non è riuscito a tenere il passo, quindi il tuo streaming ora invia {frameRate} FPS per mantenere nitida la risoluzione {resolution}." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Il tuo dispositivo non è riuscito a tenere il passo, quindi il tuo stream ora invia {resolution} a {frameRate} FPS invece di {targetResolution} a {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Il tuo dispositivo non è riuscito a tenere il passo, quindi il tuo stream ora invia {resolution} per mantenere {frameRate} FPS fluidi." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "La tua registrazione richiede un controllo anti-spam aggiuntivo prima di poter continuare." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "La tua impostazione salvata {savedResolution} a {savedFrameRate} FPS richiede {premiumProductName}, quindi le condivisioni usano {resolution} a {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "La condivisione dello schermo non è stata pubblicata con un codec video compatibile, quindi è stata interrotta. Riprova a condividere." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "La tua sorgente sta producendo circa {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Il tuo stream è ancora attivo" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Lo streaming è passato a {codec} perché {previousCodec} non riusciva a tenere il passo su questo dispositivo. I visualizzatori potrebbero vedere una breve pausa." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "L'URL personalizzato è stato impostato su {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Il tuo codificatore video ha smesso di codificare i frame, quindi la condivisione dello schermo è stata interrotta. Riprova a condividere." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Il tuo codificatore video si è arrestato, quindi lo streaming è passato a {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/ja/messages.po b/fluxer_app/src/features/i18n/locales/ja/messages.po index 02c0daef1..af7caa82c 100644 --- a/fluxer_app/src/features/i18n/locales/ja/messages.po +++ b/fluxer_app/src/features/i18n/locales/ja/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel}が連携をリクエストしています" msgid "{clientName} will use this account for this authorization." msgstr "{clientName}は、この認証にこのアカウントを使用します。" -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec}は、このデバイスでは追いつけません。より高速なコーデックを使用するには、詳細設定でコーデックを自動に設定してください。" - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName}は現在、{productName}のスタッフメンバーの msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ 制限なし} one {#人の参加者} other {#人の参加者}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {…(残り#行)} other {…(残り#行)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {…(残り#行)} other {…(残り#行)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {展開(#行)} other {展開(#行)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {展開(#行)} other {展開(#行)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {他#台のデバイスを展開} other {他#台のデバイスを展開}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, =1 {通話中} other {#人が通話中}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {ビデオ通話に参加(#人)} other {ビデオ通話に参加(#人)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {#件のストリームを視聴し続け、これを追加} other {#件のストリームを視聴し続け、これを追加}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {招待リンクは#日後に期限切れになります。} other {招待リンクは#日後に期限切れになります。}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours}時間" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {#件のオーバーライド} other {#件 msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName}で、まずお使いのカードが地域別価格の対象であるかを確認します。その後、お支払い手続きに進みます。完了したら{productName}に戻ってください。" -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} はこのデバイスで利用できないため、ストリームでは {codec} が使用されます。" - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName}にはマイクへのアクセスが必要です。OSのプライバシー設定でマイクへのアクセスを許可し、アプリを再起動してください。" #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName}がデバイスを一覧表示するには、カメラへのアクセスが必要です。" @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount}人がオンライン" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "メッセージ本文に入力されたURL" msgid "a user" msgstr "ユーザー" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "視聴者は {pinnedCodec} を再生できないため、ストリームでは {codec} を使用しています。" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "承認" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "応答" @@ -3178,12 +3163,12 @@ msgstr "グループに追加" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "保存済みメディアに追加" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "URLのみのお気に入りGIFに追加" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "詳細設定" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "高度なビデオ設定" @@ -3451,7 +3436,7 @@ msgstr "配置調整は、画面幅が広い場合のみ利用できます" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "許可" msgid "Allow {everyoneMention} and {hereMention}" msgstr "{everyoneMention}と{hereMention}を許可する" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "{MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME} で、{PRODUCT_NAME}がカメラにアクセスすることを許可してください。" @@ -3618,7 +3603,7 @@ msgstr "ボットからのダイレクトメッセージを許可" msgid "Allow bots to send you direct messages?" msgstr "ボットからのダイレクトメッセージを許可しますか?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "カメラを許可" @@ -4014,13 +3999,13 @@ msgstr "アニメーションタブで、アニメーション絵文字、GIF、 #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "アニメーションGIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "GIF動画" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "アニメーションアイコンには、コミュニティ機能の{animatedIconFeature}が必要です。" #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "アニメーション画像" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "アニメーション画像のプレビュー" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "アニメーションのアップロードには{premiumProductName}のサブスクリプションが必要です。" #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "アニメーション動画" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "アプリの状態" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "アプリウィンドウ" @@ -4361,7 +4346,7 @@ msgstr "アプリを更新しました" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "アプリ" @@ -4586,7 +4571,7 @@ msgstr "添付ファイル" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "添付ファイル {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "添付ファイルの有効期限が切れました" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "添付ファイルの有効期限が切れたか、利用できません" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "添付ファイルのIDをクリップボードにコピーしました" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "音声レベル" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "音声ミュート中" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "音声パケット損失:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "音声プレーヤー" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "音声プレビュー" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "音声処理(話者にフォーカス)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "音声の再生状況" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "オーディオ設定" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "音声ソース: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "自動 ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "自動音量調整" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "ブラウザ: 戻る" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "ブラウザのデフォルト" @@ -6198,20 +6183,20 @@ msgstr "通話" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "カメラ" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "デバイスプレビューにはカメラへのアクセスが必要です" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "カメラへのアクセスが許可されていません。カメラのアクセス許可を更新してから、もう一度お試しください。" @@ -6276,13 +6261,13 @@ msgstr "カメラプレビュー" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "カメラの品質" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "カメラ設定" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "CAPTCHA認証に失敗しました。もう一度お試しください。" #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "キャプチャ" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "アプリの音声をキャプチャ" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "デスクトップ音声をキャプチャ" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "デバイスの音声をキャプチャ" @@ -6736,12 +6721,12 @@ msgstr "変更を予約済み" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "ストリームを変更" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "配信元を変更" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "チャンネルアクセス" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "チャンネルへのアクセスが拒否されました" @@ -7097,7 +7082,7 @@ msgstr "チャンネルIDをクリップボードにコピーしました" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "チャンネルリンク" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "支払い方法を選択" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "共有するものを選んでください" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "信頼済みドメインをクリア ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "より鮮明なテキスト" @@ -8285,7 +8270,7 @@ msgstr "チャンネルのトピックを折りたたむ" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "デバイスを折りたたむ" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "コミュニティ作成者" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "コミュニティスピーカーミュート" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "コミュニティのMFA必須設定ナグバー" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "コミュニティミュート" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "今すぐ設定" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "画面共有を設定または終了" @@ -8904,7 +8889,7 @@ msgstr "コミュニティボイスへの参加時の確認またはダブルク msgid "Conflicts with {conflictLabel}" msgstr "{conflictLabel}と競合しています" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "カメラを接続して、もう一度お試しください。" @@ -8913,7 +8898,7 @@ msgstr "カメラを接続して、もう一度お試しください。" msgid "Connect a camera or virtual capture device, then try again." msgstr "カメラまたは仮想キャプチャデバイスを接続してから、もう一度お試しください。" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "ディスプレイを接続してから、もう一度お試しください。" @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "接続音量コントロール" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "接続: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "統計情報JSONをクリップボードにコピーしました" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "クリップボードにコピーしました" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "添付ファイルのIDをコピー" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "音声をコピー" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "音声リンクをコピー" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "エンドポイントをコピー" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "ファイルリンクをコピー" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "GIFをコピー" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "GIFリンクをコピー" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "識別子をコピー" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "画像をコピー" @@ -9448,7 +9433,7 @@ msgstr "画像をコピー" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "画像リンクをコピー" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "セクションへのリンクをコピー" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "メディアをコピー" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "値をコピー" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "動画をコピー" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "動画リンクをコピー" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "ウェブフックURLをコピー" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "画像をコピー中…" @@ -10588,7 +10573,7 @@ msgstr "現在: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "カスタム" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "アカウントを停止" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "スピーカーミュート" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "すべてのデバイスをスピーカーミュート" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "デバイスをスピーカーミュート" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "ボイスチャンネルで他のメンバーをスピーカーミュートにして、音声を聞けない、話せない状態にします。" #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "スピーカーミュートのショートカット" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "自分をスピーカーミュート" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "スピーカーミュート中" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "モデレーターによりスピーカーミュートされています" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "デフォルト" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "デフォルトのカメラ" @@ -11258,8 +11243,8 @@ msgstr "デラウェア州" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "「:{emojiName}:」を削除しますか?この操作は元に戻せ #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "「{memeName}」を削除しますか?この操作は元に戻せません。" @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "招待を削除" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "メディアを削除" @@ -11466,8 +11451,8 @@ msgstr "ロールを削除" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "保存済みメディアを削除" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "デスクトップ離席中" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "デスクトップ" @@ -11849,13 +11834,13 @@ msgstr "開発者向けステータス" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "開発者ツール" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "開発者ツールは、チャンネルヘッダーのスタッフバッジから利用できます。" @@ -11879,6 +11864,17 @@ msgstr "デバイス" msgid "Device alerts" msgstr "デバイスの通知" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "デバイスの音声 ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "デバイスの音声のみ" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "デバイスの詳細" @@ -11888,7 +11884,7 @@ msgstr "デバイスの詳細" msgid "Device revoked" msgstr "デバイスを取り消しました" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "デバイス選択" @@ -11912,7 +11908,7 @@ msgstr "デバイス:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "デバイス" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "取り消し線のテキストを薄く表示する" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "ダイレクト入力" @@ -12020,7 +12016,7 @@ msgstr "直接アップロードが有効です" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "無効にする" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "無効な値" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "プレビューを無効にすると、今後のプレビューのアップロードは停止します。既存のプレビュー画像は、ストリームが終了するか、プレビューが更新されるまで表示されたままになる場合があります。" @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "ボイスメッセージを破棄" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "切断" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "すべてのデバイスを切断" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "デバイスを切断" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "表示" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "ディスプレイ" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification をダウンロードして <1>.well-known フォルダーに配置してください。ドメインの検証に使用します。" #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "オーディオをダウンロード" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "デスクトップ版アップデート {version} をダウンロード ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "ファイルをダウンロード" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "fluxer-verificationをダウンロード" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "GIFをダウンロード" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "画像をダウンロード" @@ -12714,7 +12710,7 @@ msgstr "インストーラーをダウンロード" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "メディアをダウンロード" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "パッケージをダウンロード" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "動画をダウンロード" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "エコー" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "エコーキャンセレーション" @@ -12963,7 +12959,7 @@ msgstr "{0}のアクセス権を編集" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "代替テキストを編集" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "キーボードショートカットを編集" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "メディアを編集" @@ -13102,8 +13098,8 @@ msgstr "画像検索エンジンを編集" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "保存済みメディアを編集" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "ブラウザ通知を有効にする" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "ストリーミングするカメラやキャプチャデバイスを選択する前に、カメラへのアクセスを有効にしてプレビューを表示します。" @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "内蔵の翻訳ツールを有効または無効にします。有効にした翻訳ツールは、テキストを選択したときにメッセージのコンテキストメニューに表示されます。" #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "プレビューを有効にする" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "画面共有を終了" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "サポートされていない参加者がいるため、この通話ではエンドツーエンド暗号化を利用できません。" #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "サポートされていない参加者がこのボイスチャンネルにいるため、エンドツーエンド暗号化は利用できません。" @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "エンターテインメント" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "画面全体" @@ -14095,7 +14091,7 @@ msgstr "画面全体" msgid "Entire system" msgstr "システム全体" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "システム全体の音声" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "ユーザーを除外" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "システムから除外" @@ -14593,7 +14589,7 @@ msgstr "招待リンクのコピーに失敗しました" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "クリップボードへのコピーに失敗しました" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "招待の読み込みに失敗しました。もう一度お試しください。" #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "共有可能なソースの読み込みに失敗しました。" @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "ウィンドウを前面に表示" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "音声にフォーカス" @@ -15322,10 +15318,6 @@ msgstr "フォルダー設定" msgid "Follow us on {blueskyProviderName}" msgstr "{blueskyProviderName}でフォローする" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "音声入力に従う" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "転送" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}秒早送り" @@ -15592,14 +15584,14 @@ msgstr "ウィンドウ枠" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "フレームレート" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "30 FPSを超えるフレームレートには{premiumProductName}が必要です" @@ -15923,7 +15915,7 @@ msgstr "ゲームパッド Y / サンカク" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "ゲーム" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIFピッカーを読み込み中" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIFプレビュー" @@ -16429,7 +16421,7 @@ msgstr "{permissions} を付与しました" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "すべての権限を付与し、チャンネルごとの制限を無視します。非常に強力な権限です。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "詳細選択" @@ -16992,7 +16984,7 @@ msgstr "パスワードを非表示" msgid "Hide picture-in-picture popout?" msgstr "ピクチャーインピクチャーを非表示にしますか?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "プレビューサムネイルを非表示" @@ -17386,7 +17378,7 @@ msgstr "特定の日付以降に送信された過去のメッセージをこれ #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "無視" @@ -17395,11 +17387,11 @@ msgstr "無視" msgid "Ignore friend request" msgstr "友達リクエストを無視" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "ハードウェアデバイスを無視" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "入力メディアを無視" @@ -17430,7 +17422,7 @@ msgstr "{displayName}からの友達リクエストを無視しますか?" msgid "Ignore this channel's slowmode cooldown." msgstr "このチャンネルのスローモードのクールダウンを無視します。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "仮想デバイスを無視" @@ -17468,7 +17460,7 @@ msgstr "イリノイ州" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "画像" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "画像アセット" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "画像をクリップボードにコピーしました" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "画像オプション" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "画像プレビュー" @@ -17540,7 +17532,7 @@ msgstr "画像アップロード" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "通話中" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "ボイスチャットに参加中" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "選択したものを除くすべてを含める" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "アプリを含める" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "入力と出力" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "入力デバイス" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "入力プロファイル: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "入力設定" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "入力状態" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "入力音量" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "共有中は招待リンクが非表示になります:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "共有中は招待リンクがマスクされます" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "{displayName}へ移動" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "{labelText}へ移動" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "通話に移動" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "リンク先のチャンネルに移動" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "リンクされたメッセージに移動" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "{authorNickname}からのメッセージに移動" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "{labelText}のメッセージに移動" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "レイアウト" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "画面共有プレビューについて" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "リンクのスタイル" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "リンクを利用できません" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linuxアプリ" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux デフォルト" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "テーマを読み込み中…" #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "読み込み中..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOSアプリ" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS デフォルト" @@ -20289,7 +20281,7 @@ msgstr "次のトラック" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "メディアオプション" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "再生/一時停止" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "メディアプレビュー" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "メッセージレイアウト" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "メッセージリンク" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "マイクテスト" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "マイク、カメラ、画面共有のコンテンツはエンドツーエンドで暗号化されています。" @@ -21019,7 +21011,7 @@ msgstr "未成年者を危険にさらす行為、不適切な場所での成人 #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "スペルミス" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "モバイル端末" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "すべてミュート" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "すべてのデバイスをミュート" @@ -21653,13 +21645,13 @@ msgstr "ミュート中" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "マイクはミュート中" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "モデレーターによりミュート中" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission}の権限がありません" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "アクセス権がありません" @@ -22282,7 +22274,7 @@ msgstr "詳細設定が見つかりませんでした" msgid "No AFK channel" msgstr "AFKチャンネルなし" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "アプリケーションウィンドウが見つかりません" @@ -22300,6 +22292,11 @@ msgstr "まだアセットがありません" msgid "No audio" msgstr "音声なし" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "このデバイスから音声はありません" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "承認済みアプリはありません" @@ -22341,7 +22338,7 @@ msgstr "ブックマークなし" msgid "No bot banner" msgstr "ボットバナーなし" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "カメラが見つかりません" @@ -22421,7 +22418,7 @@ msgstr "説明はありません。" msgid "No desktop update is available." msgstr "デスクトップ版のアップデートはありません。" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "ディスプレイが見つかりません" @@ -22650,7 +22647,7 @@ msgstr "応答の本文を受信できませんでした" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "結果なし" @@ -22679,7 +22676,7 @@ msgstr "まだロールがありません。{rolesSettingsPath}でロールを #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "保存済みメディアはありません" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "ノイズゲート" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "ノイズ抑制" @@ -22877,7 +22874,7 @@ msgstr "無変換" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "なし" @@ -23286,7 +23283,7 @@ msgstr "ワイド画面にのみ適用されます。" msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "クレジットカードのみご利用いただけます。デビットカードやプリペイドカードは、成人向けコンテンツの確認にはご利用いただけません。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "デフォルトスピーカーのみ" @@ -23334,7 +23331,7 @@ msgstr "内容を正確に理解している場合にのみ、ここでコード msgid "Only show message previews for DMs with unread messages" msgstr "未読メッセージがあるDMのメッセージプレビューのみ表示" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "スピーカーのみ" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "{displayName}を開く" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "設定で{labelText}を開く" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "@{displayName}を開く" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "高度なメディア設定を開く" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "アプリケーションウィンドウを開いてから、もう一度お試しください。" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "アニメーションGIFを全画面で開く" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "GIF動画を全画面で開く" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "オーディオを全画面で開く" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "音声リンクを開く" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "ブラウザを開く" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "ブラウザ選択を開く" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "お気に入りメニューを開く" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "ファイルリンクを開く" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "GIFリンクを開く" @@ -23651,7 +23648,7 @@ msgstr "ブラウザで画像を開く" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "画像を全画面で開く" @@ -23660,7 +23657,7 @@ msgstr "画像を全画面で開く" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "画像リンクを開く" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "システムDMを開く" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "システムピッカーを開く" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "動画を全画面で開く" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "動画リンクを開く" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "ボイスを開く" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "音声とビデオの設定を開く" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "出力" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "出力デバイス" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "出力設定" @@ -24094,7 +24091,7 @@ msgstr "出力設定" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "出力音量" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "参加者上限" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "{participantDisplayName}の参加者オプション" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "プレビュー非表示" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "プレビュー画像は配信のために{productName}が一時的に保存します。エンドツーエンドの暗号化は行われません。サムネイル用に画面共有のフレームをアップロードしたくない場合は、プレビューを無効にしてください。" #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "プレビュー画像は配信のために{productName}が一時的に保存します。エンドツーエンドの暗号化は行われません。このグループDMのメンバーは、あなたのストリームを視聴していなくてもサムネイルを見ることができます。" #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "プレビュー画像は配信のために{productName}が一時的に保存します。エンドツーエンドの暗号化は行われません。接続するには権限が必要ですが、あなたのストリームを実際に視聴している必要はありません。" @@ -26269,7 +26266,7 @@ msgstr "参照をコピーしました。" msgid "Referral parameters" msgstr "リファラルパラメーター" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "音声ソースを更新" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "通常ボタンがクリックされました。" #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "拒否" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "グループから削除" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "保存済みメディアから削除" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "最前面表示を解除" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "URLのみで保存されたGIFをお気に入りから削除" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "{0}のBANを解除しました" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}秒巻き戻し" @@ -28202,7 +28199,7 @@ msgstr "アイコンを保存" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "メッセージからメディアを保存して始めましょう!" @@ -28313,7 +28310,7 @@ msgstr "画面収録の許可が必要です" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "画面共有" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "画面共有の音量ブースト" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "画面共有の音声を開始できませんでした" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "画面共有エンコーダー設定" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "画面共有が終了しました" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "画面共有プレビューの動作" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "画面共有プレビュー" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "画面共有のプレビューは無効になっています。" #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "画面共有のプレビューが有効になっています。" @@ -28391,13 +28388,13 @@ msgstr "画面共有のプライバシー" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "画面共有の品質" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "画面共有設定" @@ -28723,7 +28720,7 @@ msgstr "ロールまたはメンバーを検索…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "保存済みメディアを検索" @@ -28942,12 +28939,12 @@ msgstr "シークプレビュー" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "選択" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "{accessibleName}を選択" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "再設定リンクを送信" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "保存済みメディア「{memeName}」を送信" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "ロールのメンバーリストでの位置を設定しました" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "{preset} プリセットによって設定されています。ここで値を選択すると、カスタムに切り替わります。" @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "個別のサウンドにカスタム音量を設定できます。設定されていないサウンドはマスター音量に従います。" #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "スピーカーミュートのショートカットを設定" @@ -29669,11 +29666,6 @@ msgstr "このチェックを後回しにする" msgid "Set this check aside?" msgstr "このチェックを後回しにしますか?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "{resolution} を {frameRate} FPS、{codec} で送信するように設定" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "設定" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "設定へのリンク" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "ギフトを贈る" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "画面を共有" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "コミュニティのモデレーターに共有できます。" #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "画面を共有" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "画面を最大60FPSで、高画質(1080p)、クアッドHD(1440p)、またはネイティブソース解像度で共有できます。" @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "共有ウィンドウ" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "共有ウィンドウの音声" @@ -30624,6 +30616,10 @@ msgstr "サイレント着信" msgid "Silent calls from everyone" msgstr "全員からの着信をサイレントにする" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "音声入力がない場合はミュート" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "スムーズスクロール" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "よりスムーズなビデオ" @@ -31005,11 +31001,6 @@ msgstr "一部の絵文字を追加できませんでした" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "アップロードしようとしているファイルの一部は、1ファイルあたりの最大サイズ制限である{maxSizeFormatted}を超えています。" -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "ストリームの設定の一部をライブストリームに適用できませんでした。" - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "サウンド" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "ソース" @@ -31569,7 +31560,7 @@ msgstr "音声通話を開始しますか?" msgid "Start call" msgstr "通話を開始" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "カメラテストを開始してエフェクトを設定" @@ -31910,7 +31901,7 @@ msgstr "読み上げを停止" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "ストリーミングを停止" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "すべてのリンクの信頼を解除しますか?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "視聴を停止" @@ -31982,7 +31973,7 @@ msgstr "スピーカーの音がマイクに入り込むのを防ぎます。" #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "ストリーム" @@ -32001,11 +31992,6 @@ msgstr "配信が終了しました" msgid "Stream hidden" msgstr "ストリームを非表示にしました" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "ストリームが追いついていません" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "ストリームの画質" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "配信設定" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "ストリーム設定を調整しました" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "{productName}スタッフからのシステムアナウンスです。 #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "システムのデフォルト" @@ -33036,13 +33017,8 @@ msgstr "ボットが<0>{destinationName}に追加されました。" msgid "The bot has been added." msgstr "ボットが追加されました。" -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "ブラウザが {resolution} の代わりに {deliveredResolution} を送信しています。" - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "カメラのプレビューがまだ停止中です。しばらくしてから、もう一度ストリーミングを試してください。" @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "ロールは{permissions}を付与していました" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "画面共有のソースがビデオの送信を停止したため、画面共有は停止されました。" @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "このブラウザのコンソールは開発者ツールです。" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "この通話はエンドツーエンドで暗号化されています。" @@ -33645,11 +33621,6 @@ msgstr "このデスクトップ版では、{productName} 内にアップデー msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "この開発ビルドは自動更新できません。更新フローをテストするには、デスクトップインストーラーをダウンロードしてください。" -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "このデバイスは前回、{targetResolution} ({targetFrameRate} FPS) に対応できなかったため、ストリームは {resolution} ({frameRate} FPS) で開始されました。" - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "このインストールはシステムによって管理されています。ソフトウェアセンターまたはパッケージマネージャーから{productName}を更新してください。" #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "このインスタンスでは現在、最大720p、30FPSで画面共有が可能です。" @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "このリンクチャンネルは成人向けコンテンツとして指定されており、一部のユーザーには不適切と思われる内容が表示される可能性があります。" #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "このリンクはあなたのアカウントでは利用できません。" @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "このオプションは必須です。値を入力してください。" #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "この参加者はこのチャンネルで発言できません" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "この参加者はスピーカーミュート中です" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "この参加者はモデレーターによりスピーカーミュートされています" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "この電話番号はすでに使用されています。別の番号を試すか、サポートにお問い合わせください。" #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "このピッカーはデスクトップ版アプリでのみ利用できます。" @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "コントロールを切り替える" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "スピーカーミュートを切り替え" @@ -34666,7 +34637,7 @@ msgstr "Linuxでは、システムトレイプロトコルが実行時にアプ #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "トレンドGIF" @@ -34760,7 +34731,7 @@ msgstr "別の検索クエリを試してください。" #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "別の検索語句またはフィルターをお試しください" @@ -34839,11 +34810,6 @@ msgstr "別のフィルターまたは検索ワードをお試しください。 msgid "Try editing your message again." msgstr "もう一度メッセージを編集してください。" -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "もう一度フルクオリティで試す" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "「テーマ」「通知」「プライバシー」などを検索してみてください" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "同意できない項目はオフにしてください。一部の機能が利用できなくなる場合があります。" #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "このソースのオーディオ共有をオフにするか、しばらくしてからもう一度お試しください。" @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "OBSまたはXSplitを検出したら自動的にオンにする" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "カメラをオンにする" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "回収不能" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "スピーカーミュートを解除" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "すべてのデバイスのスピーカーミュートを解除" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "自分のスピーカーミュートを解除" @@ -35558,7 +35524,7 @@ msgstr "不明なユーザー" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "不明なユーザー" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "{premiumProductName}でDMのカスタム絵文字をアンロック" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "{premiumProductName}でHD画面共有をアンロック" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "{label}をミュート解除" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "すべてのデバイスのミュートを解除" @@ -35741,7 +35707,7 @@ msgstr "名前のないグループ" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "名前のない入力" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "新しい絵文字やスタンプをアップロードしたり、自分で作成したものを管理できます。" #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "画面共有のプレビューフレームをアップロードします。" @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URLをクリップボードにコピーしました" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "ユーザーのタグ(任意)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "ユーザーの音量" @@ -37227,7 +37193,7 @@ msgstr "ビデオパケット損失:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "動画プレビュー" @@ -37283,7 +37249,7 @@ msgstr "動画アップロード" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "音声とビデオ" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "音声とビデオの設定" @@ -37685,7 +37651,7 @@ msgstr "音声・ビデオショートカット" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "音声通話" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "音声接続デバッグ" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "スピーカーミュート" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "音声メッセージ" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "音声メッセージプレーヤー" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "音声設定" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "スピーカーミュート解除" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "そのままお待ちください" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "接続待機中…" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "チャットにリンクとして投稿する際" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "プレビューが有効な場合、{productName}は画面共有から時々JPEG形式のフレームをアップロードし、このグループDMの他のメンバーが視聴する前にサムネイルを確認できるようにします。" #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "プレビューが有効な場合、{productName}は画面共有から時々JPEG形式のフレームをアップロードし、このボイスチャンネルに接続する権限を持つユーザーが視聴する前にサムネイルを確認できるようにします。" #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "プレビューが有効な場合、{productName}は画面共有から時々JPEG形式のフレームをアップロードし、このDMの相手が視聴する前にサムネイルを確認できるようにします。" @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "画面の上下で途切れたり、ドッキングされたDevToolsがあるウィンドウは、透明度を維持できず、灰色の背景で表示されることがあります。" #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windowsのデフォルト" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "このコミュニティからBANされているため、参加できません。" #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "スピーカーミュート中です" @@ -38833,11 +38799,6 @@ msgstr "{productName}の{releaseChannel}ビルドを使用しています。" msgid "You aren't in any communities right now." msgstr "現在、コミュニティに参加していません。" -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "{resolution} で {frameRate} FPS をリクエストしました" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "このコミュニティではメッセージを送信できません。 #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "このチャンネルでは画面共有できません" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "このチャンネルでは発言できません" @@ -39036,7 +38997,7 @@ msgstr "このチャンネルでは発言できません" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "このチャンネルではカメラをオンにできません" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "{PREMIUM_PRODUCT_NAME}の利用中にタグを変更しました。{PREMIUM_PRODUCT_NAME}の有効期限が切れると、更新されない限りタグはランダムに再設定されます。" #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "このメッセージが送信されたチャンネルにアクセスできません。" @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "{ownedNames}には残ります。コミュニティのオーナーは、自分のコミュニティから退出できません。" #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "モデレーターによりスピーカーミュートされました" @@ -39699,11 +39660,6 @@ msgstr "現在、申請内容を審査中です。引き続き掲載内容を更 msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "お使いのブラウザでは、音声の再生にユーザー操作が必要です。音声チャットを有効にするには、下のボタンをクリックしてください。" -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "キャプチャデバイスが {resolution} ではなく {deliveredResolution} を送信しています。" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "お使いのカードで地域別価格を確認しています。通常、これには少し時間がかかります。" @@ -39734,36 +39690,11 @@ msgstr "コミュニティは「見つける」に掲載されています。掲 msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "コミュニティを「見つける」に掲載するには、メンバーが{minMemberCount, plural, one {#人} other {#人}}以上必要です。" -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "接続が追いついていません。ストリームは {frameRate} FPS、{resolution} で設定されていますが、視聴者には約 {deliveredFrameRate} FPS しか届いていません。" - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "クレジットカードの確認が完了しました。カードが有効な場合、まもなく成人向けコンテンツが利用可能になります。このタブを閉じてアプリに戻ることができます。" -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "お使いのデバイスでは処理しきれません。ストリームは {frameRate} FPS、{resolution} で設定されていますが、視聴者には約 {deliveredFrameRate} FPS でしか届いていません。" - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "お使いのデバイスの処理能力が追いつかなかったため、ストリームは {frameRate} FPS で送信され、{resolution} が鮮明に表示されるようになりました。" - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "お使いのデバイスが追いつけなかったため、ストリームは {targetResolution} で {targetFrameRate} FPS の代わりに、{resolution} で {frameRate} FPS で送信されます。" - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "お使いのデバイスが追いつけなかったため、ストリームは {resolution} を送信して {frameRate} FPS をスムーズに保つようになりました。" - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "引き続きご利用いただくには、追加のスパム対策認証が必要です。" #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "保存された {savedResolution} ({savedFrameRate} FPS) は {premiumProductName} が必要です。そのため、共有は {resolution} ({frameRate} FPS) で行われます。" #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "互換性のあるビデオコーデックで画面共有を公開できなかったため、停止しました。もう一度共有してみてください。" -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "ソースのフレームレートは約 {sourceFrameRate} FPS です" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "配信は継続中です" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "ストリームが {codec} に切り替わりました。これは、このデバイスで {previousCodec} が追いつけなかったためです。視聴者には短い一時停止が見られる場合があります。" - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "カスタムURLを{inviteEndpoint}/{vanitySlug}に設定しました" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "ビデオエンコーダーがフレームのエンコードを停止したため、画面共有が停止しました。もう一度共有してみてください。" -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "動画エンコーダーが停止したため、ストリームが {codec} に切り替わりました。" - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/ko/messages.po b/fluxer_app/src/features/i18n/locales/ko/messages.po index 8e2983f5e..b13c3c0f4 100644 --- a/fluxer_app/src/features/i18n/locales/ko/messages.po +++ b/fluxer_app/src/features/i18n/locales/ko/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} 연결 요청" msgid "{clientName} will use this account for this authorization." msgstr "{clientName}에서 이 계정을 사용하여 인증합니다." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} 기기에서 따라가지 못합니다. 더 빠른 코덱을 사용하려면 고급 설정에서 자동 코덱으로 설정하세요." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName}은(는) 현재 {productName} 직원만 이용할 수 있 msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ 무제한} one {참여자 #명} other {참여자 #명}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (#줄 남음)} other {... (#줄 남음)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (#행 남음)} other {... (#행 남음)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {펼치기 (#줄)} other {펼치기 (#줄)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {펼치기 (#행)} other {펼치기 (#행)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {다른 기기 #개 펼치기} other {다른 기기 #개 펼치기}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {통화 중} other {#명 통화 중}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {영상 통화 참여 (참여자 #명)} other {영상 통화 참여 (참여자 #명)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {#개의 스트림을 계속 시청하고 이 스트림을 추가합니다} other {#개의 스트림을 계속 시청하고 이 스트림을 추가합니다}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {초대 링크는 #일 후에 만료됩니다.} other {초대 링크는 #일 후에 만료됩니다.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours}시간" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {#개 재정의} other {#개 재정의}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName}에서 먼저 현지 가격 책정에 카드 사용이 가능한지 확인한 다음 결제를 진행합니다. 완료되면 {productName}(으)로 돌아와 주세요." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec}을(를) 이 기기에서 사용할 수 없어 스트림에 {codec}을(를) 사용합니다." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName}이(가) 마이크에 접근해야 합니다. 운영체제 개인 정보 보호 설정에서 마이크 접근을 허용하고 앱을 다시 시작하세요." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName}에서 기기 목록을 보려면 카메라 접근 권한이 필요합니다." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "온라인 {renderedPresenceCount}명" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "메시지 텍스트에 입력된 URL" msgid "a user" msgstr "사용자" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "시청자가 {pinnedCodec}을(를) 재생할 수 없어 스트림에서 {codec}을(를) 사용합니다." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "수락" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "받기" @@ -3178,12 +3163,12 @@ msgstr "그룹에 추가" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "저장된 미디어에 추가" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "URL 전용 GIF 즐겨찾기에 추가" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "고급" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "고급 비디오 설정" @@ -3451,7 +3436,7 @@ msgstr "정렬 컨트롤은 더 넓은 화면에서만 사용할 수 있습니 #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "허용" msgid "Allow {everyoneMention} and {hereMention}" msgstr "{everyoneMention} 및 {hereMention} 허용" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "{PRODUCT_NAME}이(가) {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}에서 카메라에 접근하도록 허용하세요." @@ -3618,7 +3603,7 @@ msgstr "봇 DM 허용" msgid "Allow bots to send you direct messages?" msgstr "봇이 DM을 보내도록 허용하시겠어요?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "카메라 허용" @@ -4014,13 +3999,13 @@ msgstr "움직이는 이모티콘, GIF, 스티커는 애니메이션 탭에서 #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "움직이는 GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "움직이는 GIF 동영상" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "움직이는 아이콘을 사용하려면 {animatedIconFeature} 커뮤니티 기능이 필요합니다." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "움직이는 이미지" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "움직이는 이미지 미리보기" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "움직이는 파일을 업로드하려면 {premiumProductName} 구독이 필요합니다." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "움직이는 동영상" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "앱 상태" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "앱 창" @@ -4361,7 +4346,7 @@ msgstr "애플리케이션이 업데이트되었습니다" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "앱" @@ -4586,7 +4571,7 @@ msgstr "첨부 파일" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "첨부 파일 {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "첨부 파일 만료됨" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "첨부 파일이 만료되었거나 사용할 수 없습니다" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "첨부 파일 ID가 클립보드에 복사되었습니다" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "오디오 레벨" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "오디오 음소거됨" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "오디오 패킷 손실률:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "오디오 플레이어" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "오디오 미리보기" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "오디오 처리(음성 포커스)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "오디오 진행률" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "오디오 설정" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "오디오 소스: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "자동 ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "자동 게인 제어" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "브라우저: 뒤로" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "브라우저 기본값" @@ -6198,20 +6183,20 @@ msgstr "통화" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "카메라" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "카메라 접근 권한이 있어야 기기 미리보기를 할 수 있습니다" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "카메라 접근 권한이 부여되지 않았습니다. 카메라 권한을 업데이트한 후 다시 시도하세요." @@ -6276,13 +6261,13 @@ msgstr "카메라 미리보기" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "카메라 화질" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "카메라 설정" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "캡차 인증에 실패했습니다. 다시 시도해 주세요." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "캡처" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "앱 오디오 캡처" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "데스크톱 오디오 캡처" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "기기 오디오 캡처" @@ -6736,12 +6721,12 @@ msgstr "변경 예정" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "스트림 변경" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "스트림 소스 변경" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "채널 접근" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "채널 접근이 거부되었습니다" @@ -7097,7 +7082,7 @@ msgstr "채널 ID가 클립보드에 복사되었습니다" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "채널 링크" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "결제 수단 선택" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "공유할 항목 선택" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "신뢰하는 도메인 지우기 ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "더 선명한 텍스트" @@ -8285,7 +8270,7 @@ msgstr "채널 주제 접기" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "기기 접기" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "커뮤니티 개설자" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "커뮤니티 소리 끄기" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "커뮤니티 MFA 필수 알림 표시줄" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "커뮤니티 음소거" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "지금 설정" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "화면 공유 설정 또는 종료" @@ -8904,7 +8889,7 @@ msgstr "커뮤니티 음성 채널 참여 시 확인 또는 더블 클릭" msgid "Conflicts with {conflictLabel}" msgstr "{conflictLabel}과(와) 충돌" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "카메라를 연결하고 다시 시도하세요." @@ -8913,7 +8898,7 @@ msgstr "카메라를 연결하고 다시 시도하세요." msgid "Connect a camera or virtual capture device, then try again." msgstr "카메라 또는 가상 캡처 장치를 연결한 후 다시 시도하세요." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "디스플레이를 연결한 다음 다시 시도하세요." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "연결 볼륨 컨트롤" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "연결: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "통계 JSON이 클립보드에 복사되었습니다" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "클립보드에 복사됨" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "첨부파일 ID 복사" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "오디오 복사" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "오디오 링크 복사" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "엔드포인트 복사" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "파일 링크 복사" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "GIF 복사" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "GIF 링크 복사" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "식별자 복사" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "이미지 복사" @@ -9448,7 +9433,7 @@ msgstr "이미지 복사" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "이미지 링크 복사" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "섹션 링크 복사" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "미디어 복사" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "값 복사" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "동영상 복사" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "동영상 링크 복사" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "웹훅 URL 복사" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "이미지 복사 중..." @@ -10588,7 +10573,7 @@ msgstr "현재: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "사용자 지정" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "비활성화" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "소리 끄기" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "모든 기기 소리 끄기" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "기기 소리 끄기" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "음성 채널에서 다른 멤버의 소리를 꺼서 듣지도 말하지도 못하게 합니다." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "소리 끄기 단축키" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "내 소리 끄기" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "소리 꺼짐" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "모더레이터에 의해 소리 꺼짐" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "기본" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "기본 카메라" @@ -11258,8 +11243,8 @@ msgstr "델라웨어" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr ":{emojiName}:을(를) 삭제하시겠어요? 이 작업은 되돌릴 수 #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "\"{memeName}\"을(를) 삭제하시겠어요? 이 작업은 되돌릴 수 없습니다." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "초대 삭제" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "미디어 삭제" @@ -11466,8 +11451,8 @@ msgstr "역할 삭제" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "저장된 미디어 삭제" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "데스크톱 자리 비움" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "데스크톱 기기" @@ -11849,13 +11834,13 @@ msgstr "개발자 상태" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "개발자 도구" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "채널 헤더의 스태프 배지에서 개발자 도구를 사용할 수 있습니다." @@ -11879,6 +11864,17 @@ msgstr "기기" msgid "Device alerts" msgstr "기기 알림" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "기기 오디오({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "기기 오디오만" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "기기 정보" @@ -11888,7 +11884,7 @@ msgstr "기기 정보" msgid "Device revoked" msgstr "기기 연결 해제됨" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "기기 선택" @@ -11912,7 +11908,7 @@ msgstr "기기:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "기기" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "취소선 텍스트 흐리게 표시" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "원본 입력" @@ -12020,7 +12016,7 @@ msgstr "바로 업로드 활성화됨" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "비활성화" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "비활성화된 값" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "미리보기 기능을 사용 중지하면 이후 미리보기 업로드가 중단됩니다. 기존 미리보기 이미지는 스트림이 종료되거나 미리보기가 새로 고쳐질 때까지 계속 표시될 수 있습니다." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "음성 메시지 삭제" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "연결 끊기" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "모든 기기 연결 해제" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "기기 연결 해제" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "표시" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "화면" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification을 다운로드하여 <1>.well-known 폴더에 넣어주세요." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "오디오 다운로드" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "데스크톱 업데이트 {version} 다운로드({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "파일 다운로드" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "fluxer-verification 다운로드" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "GIF 다운로드" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "이미지 다운로드" @@ -12714,7 +12710,7 @@ msgstr "설치 프로그램 다운로드" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "미디어 다운로드" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "패키지 다운로드" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "비디오 다운로드" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "에코" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "에코 제거" @@ -12963,7 +12959,7 @@ msgstr "{0}의 접근 권한 편집" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "대체 텍스트 편집" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "단축키 편집" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "미디어 편집" @@ -13102,8 +13098,8 @@ msgstr "역방향 이미지 검색 엔진 편집" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "저장된 미디어 편집" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "브라우저 알림 켜기" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "스트리밍할 카메라 및 캡처 장치를 선택하기 전에 미리 보려면 카메라 액세스를 허용하세요." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "내장 번역기를 켜거나 끌 수 있습니다. 번역기를 켜면 텍스트 선택 시 메시지 상황별 메뉴에 표시됩니다." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "미리보기 사용" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "화면 공유 중단" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "지원되지 않는 참여자가 통화에 참여 중이므로 종단 간 암호화를 사용할 수 없습니다." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "지원되지 않는 참여자가 이 음성 채널에 있어 종단 간 암호화를 사용할 수 없습니다." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "엔터테인먼트" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "전체 화면" @@ -14095,7 +14091,7 @@ msgstr "전체 화면" msgid "Entire system" msgstr "시스템 전체" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "시스템 오디오 전체" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "사용자 제외" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "시스템에서 제외" @@ -14593,7 +14589,7 @@ msgstr "초대 링크 복사 실패" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "클립보드에 복사하지 못했습니다" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "초대를 불러오지 못했습니다. 다시 시도해 주세요." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "공유 가능한 소스를 불러오지 못했습니다." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "창 앞으로 가져오기" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "음성 포커스" @@ -15322,10 +15318,6 @@ msgstr "폴더 설정" msgid "Follow us on {blueskyProviderName}" msgstr "{blueskyProviderName}에서 팔로우하세요" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "음성 입력 따라가기" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "전달" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}초 앞으로 감기" @@ -15592,14 +15584,14 @@ msgstr "프레임" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "프레임 속도" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "30FPS를 초과하는 프레임 속도에는 {premiumProductName}이(가) 필요합니다" @@ -15923,7 +15915,7 @@ msgstr "게임패드 Y / △" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "게임" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF 선택기 로드 중" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF 미리보기" @@ -16429,7 +16421,7 @@ msgstr "{permissions} 권한을 부여했습니다" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "모든 권한을 부여하고 채널 제한을 우회합니다. 매우 민감한 권한입니다." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "세부 선택" @@ -16992,7 +16984,7 @@ msgstr "비밀번호 숨기기" msgid "Hide picture-in-picture popout?" msgstr "PIP 팝업을 숨길까요?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "미리보기 썸네일 숨기기" @@ -17386,7 +17378,7 @@ msgstr "이 멤버들이 특정 날짜 이후에 전송된 지난 메시지를 #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "무시" @@ -17395,11 +17387,11 @@ msgstr "무시" msgid "Ignore friend request" msgstr "친구 요청 무시하기" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "하드웨어 기기 무시" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "입력 미디어 무시" @@ -17430,7 +17422,7 @@ msgstr "{displayName}님의 친구 요청을 무시하시겠어요?" msgid "Ignore this channel's slowmode cooldown." msgstr "이 채널의 슬로우 모드 제한을 무시합니다." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "가상 기기 무시" @@ -17468,7 +17460,7 @@ msgstr "일리노이" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "이미지" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "이미지 에셋" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "이미지가 클립보드에 복사되었습니다" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "이미지 옵션" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "이미지 미리보기" @@ -17540,7 +17532,7 @@ msgstr "이미지 업로드" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "음성 채팅 중" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "음성 채팅 중" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "선택된 항목 제외 모두 포함" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "앱 포함" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "입력 및 출력" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "입력 장치" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "입력 프로필: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "입력 설정" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "입력 상태" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "입력 볼륨" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "공유 중에는 초대 링크가 숨겨집니다:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "공유 중에는 초대 링크가 가려집니다" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "{displayName}(으)로 이동" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "{labelText}(으)로 이동" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "현재 통화로 이동" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "연결된 채널로 이동" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "연결된 메시지로 이동" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "{authorNickname}의 메시지로 이동" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "{labelText}에서 메시지로 이동" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "레이아웃" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "화면 공유 미리보기에 대해 자세히 알아보세요" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "링크 스타일" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "링크를 사용할 수 없습니다" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux 앱" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux 기본값" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "테마 불러오는 중..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "불러오는 중..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS 앱" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS 기본값" @@ -20289,7 +20281,7 @@ msgstr "다음 트랙" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "미디어 옵션" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "재생/일시 정지" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "미디어 미리보기" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "메시지 레이아웃" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "메시지 링크" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "마이크 테스트" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "마이크, 카메라 및 화면 공유 콘텐츠는 종단 간 암호화됩니다." @@ -21019,7 +21011,7 @@ msgstr "위험에 처한 미성년자, 부적절한 장소의 성인 콘텐츠, #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "오타" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "모바일 기기" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "모두 음소거" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "모든 기기 음소거" @@ -21653,13 +21645,13 @@ msgstr "알림 꺼짐" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "마이크 음소거됨" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "모더레이터에 의해 음소거됨" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} 권한 없음" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "액세스 권한 없음" @@ -22282,7 +22274,7 @@ msgstr "고급 설정이 없습니다" msgid "No AFK channel" msgstr "AFK 채널 없음" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "애플리케이션 창을 찾을 수 없습니다" @@ -22300,6 +22292,11 @@ msgstr "아직 에셋이 없습니다" msgid "No audio" msgstr "오디오 없음" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "이 기기에서 오디오를 사용할 수 없습니다" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "승인된 앱 없음" @@ -22341,7 +22338,7 @@ msgstr "북마크 없음" msgid "No bot banner" msgstr "봇 배너 없음" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "카메라를 찾을 수 없습니다" @@ -22421,7 +22418,7 @@ msgstr "설명 없음." msgid "No desktop update is available." msgstr "사용 가능한 데스크톱 업데이트가 없습니다." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "디스플레이를 찾을 수 없습니다" @@ -22650,7 +22647,7 @@ msgstr "응답 본문을 받지 못했습니다" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "결과 없음" @@ -22679,7 +22676,7 @@ msgstr "아직 역할이 없습니다. {rolesSettingsPath}에서 역할을 추 #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "저장된 미디어 없음" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "노이즈 게이트" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "노이즈 억제" @@ -22877,7 +22874,7 @@ msgstr "무변환" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "없음" @@ -23286,7 +23283,7 @@ msgstr "넓은 화면에서만 적용됩니다." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "신용카드만 사용할 수 있습니다. 성인 콘텐츠 확인을 위해 직불카드 및 선불카드는 사용할 수 없습니다." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "기본 스피커만" @@ -23334,7 +23331,7 @@ msgstr "여기에서 실행하는 코드가 어떤 동작을 하는지 정확히 msgid "Only show message previews for DMs with unread messages" msgstr "읽지 않은 메시지가 있는 DM에 대해서만 메시지 미리보기 표시" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "스피커만" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "{displayName} 열기" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "설정에서 {labelText} 열기" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "@{displayName} 열기" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "고급 미디어 설정 열기" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "애플리케이션 창을 열고 다시 시도하세요." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "GIF 애니메이션 전체 화면으로 보기" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "움직이는 GIF 동영상 전체 화면으로 보기" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "오디오 전체 화면으로 보기" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "오디오 링크 열기" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "브라우저 열기" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "브라우저 선택기 열기" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "즐겨찾기 메뉴 열기" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "파일 링크 열기" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "GIF 링크 열기" @@ -23651,7 +23648,7 @@ msgstr "브라우저에서 이미지 열기" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "이미지 전체 화면으로 보기" @@ -23660,7 +23657,7 @@ msgstr "이미지 전체 화면으로 보기" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "이미지 링크 열기" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "시스템 DM 열기" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "시스템 선택기 열기" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "전체 화면으로 동영상 보기" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "동영상 링크 열기" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "음성 대화 열기" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "오디오 및 비디오 설정 열기" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "출력" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "출력 장치" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "출력 설정" @@ -24094,7 +24091,7 @@ msgstr "출력 설정" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "출력 볼륨" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "참여 인원 제한" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "{participantDisplayName}님에 대한 참여자 옵션" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "미리보기 숨김" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "미리보기 이미지는 전송을 위해 {productName}에 일시적으로 저장되며, 종단 간 암호화되지는 않습니다. 화면 공유 프레임이 썸네일로 업로드되지 않게 하려면 미리보기를 비활성화하세요." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "미리보기 이미지는 전송을 위해 {productName}에 일시적으로 저장되며, 종단 간 암호화되지는 않습니다. 이 그룹 DM의 사용자는 스트림을 보고 있지 않아도 썸네일을 볼 수 있습니다." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "미리보기 이미지는 전송을 위해 {productName}에 일시적으로 저장되며, 종단 간 암호화되지는 않습니다. 연결 권한은 여전히 필요하지만, 스트림을 보고 있지 않아도 됩니다." @@ -26269,7 +26266,7 @@ msgstr "참조가 복사되었습니다." msgid "Referral parameters" msgstr "추천 매개변수" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "오디오 소스 새로고침" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "일반 버튼을 클릭했습니다." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "거절" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "그룹에서 내보내기" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "저장된 미디어에서 제거" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "항상 위에 표시 해제" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "URL 전용 GIF 즐겨찾기에서 제거" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "{0}님에 대한 차단이 해제되었습니다" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}초 뒤로 감기" @@ -28202,7 +28199,7 @@ msgstr "아이콘 저장" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "메시지에서 미디어를 저장해 보세요!" @@ -28313,7 +28310,7 @@ msgstr "화면 녹화 권한 필요" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "화면 공유" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "화면 공유 오디오 증폭" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "화면 공유 오디오를 시작할 수 없습니다" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "화면 공유 인코더 컨트롤" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "화면 공유가 종료되었습니다" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "화면 공유 미리보기 동작" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "화면 공유 미리보기" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "화면 공유 미리보기가 비활성화되었습니다." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "화면 공유 미리보기가 활성화되었습니다." @@ -28391,13 +28388,13 @@ msgstr "화면 공유 개인 정보 보호" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "화면 공유 품질" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "화면 공유 설정" @@ -28723,7 +28720,7 @@ msgstr "역할 또는 멤버 검색…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "저장된 미디어 검색" @@ -28942,12 +28939,12 @@ msgstr "탐색 미리보기" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "선택" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "{accessibleName} 선택" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "재설정 링크 보내기" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "저장된 미디어 {memeName} 보내기" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "역할의 멤버 목록 위치를 설정했습니다" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "{preset} 사전 설정으로 설정됩니다. 여기서 값을 선택하면 사용자 지정으로 전환됩니다." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "개별 사운드에 대한 맞춤 볼륨을 설정합니다. 재정의되지 않은 사운드는 마스터 볼륨을 따릅니다." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "소리 끄기 단축키 설정" @@ -29669,11 +29666,6 @@ msgstr "이 확인을 나중으로 미루기" msgid "Set this check aside?" msgstr "이 확인을 나중으로 미룰까요?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "{resolution}으로 {frameRate} FPS, {codec}으로 전송하도록 설정" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "설정" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "설정 링크" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "선물 공유" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "화면 공유" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "커뮤니티 모더레이터와 공유합니다." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "화면 공유" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "최대 60FPS로 고화질(1080p), QHD(1440p) 또는 기본 소스 해상도로 화면을 공유하세요." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "공유된 창" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "공유된 창 오디오" @@ -30624,6 +30616,10 @@ msgstr "무음 통화" msgid "Silent calls from everyone" msgstr "모든 사람의 통화 무음 처리" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "오디오 입력이 없는 캡처 장치는 음소거됩니다" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "부드러운 스크롤" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "더 부드러운 영상" @@ -31005,11 +31001,6 @@ msgstr "일부 이모티콘을 추가할 수 없습니다" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "업로드하려는 일부 파일이 파일당 최대 크기 제한인 {maxSizeFormatted}을(를) 초과합니다." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "일부 스트림 설정을 라이브 스트림에 적용할 수 없습니다." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "소리" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "원본" @@ -31569,7 +31560,7 @@ msgstr "음성 통화를 시작할까요?" msgid "Start call" msgstr "통화 시작" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "카메라 테스트 시작 및 효과 설정" @@ -31910,7 +31901,7 @@ msgstr "말하기 중지" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "스트리밍 중지" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "모든 링크 신뢰를 중단할까요?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "시청 중지" @@ -31982,7 +31973,7 @@ msgstr "스피커 소리가 마이크로 다시 들어가는 것을 방지합니 #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "스트리밍 시작" @@ -32001,11 +31992,6 @@ msgstr "스트림 종료됨" msgid "Stream hidden" msgstr "화면 공유 숨김" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "스트림이 따라가지 못하고 있습니다" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "스트림 품질" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "스트림 설정" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "스트림 설정을 조정했습니다." - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "{productName} 직원의 시스템 공지입니다. 여기에 답장할 #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "시스템 기본값" @@ -33036,13 +33017,8 @@ msgstr "봇이 <0>{destinationName}에 추가되었습니다." msgid "The bot has been added." msgstr "봇이 추가되었습니다." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "브라우저에서 {resolution} 대신 {deliveredResolution}을(를) 보내고 있습니다." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "카메라 미리보기가 아직 중지 중입니다. 잠시 후 다시 스트리밍해 보세요." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "역할이 {permissions} 권한을 부여했습니다" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "화면 공유 소스가 더 이상 비디오를 보내지 않아 화면 공유가 중단되었습니다." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "이 브라우저 콘솔은 개발자 도구입니다." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "이 통화는 종단 간 암호화됩니다." @@ -33645,11 +33621,6 @@ msgstr "이 데스크톱 빌드는 {productName}에서 업데이트를 설치할 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "이 개발 빌드는 자체적으로 업데이트할 수 없습니다. 업데이트 흐름을 테스트하려면 데스크톱 설치 프로그램을 다운로드하세요." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "이 기기가 지난번 {targetResolution}(으)로 {targetFrameRate} FPS를 처리하지 못해, 스트림이 {resolution}(으)로 {frameRate} FPS에서 시작되었습니다." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "이 설치는 시스템에서 관리됩니다. 소프트웨어 센터 또는 패키지 관리자를 통해 {productName}을(를) 업데이트하세요." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "이 인스턴스에서는 현재 최대 720p, 30 FPS로 화면 공유가 가능합니다." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "이 링크 채널은 성인 콘텐츠로 표시되어 있으며 일부 사용자에게 부적절할 수 있는 자료가 열릴 수 있습니다." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "회원님의 계정에서는 이 링크를 사용할 수 없습니다." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "이 옵션은 필수입니다. 값을 입력해 주세요." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "이 참가자는 이 채널에서 말할 수 없습니다" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "이 참가자는 소리 꺼짐 상태입니다" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "이 참가자는 모더레이터가 소리를 껐습니다" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "이 전화번호는 이미 사용 중입니다. 다른 번호를 사용해 보거나 고객지원팀에 문의하세요." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "이 선택 도구는 데스크톱 앱에서만 사용할 수 있습니다." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "컨트롤 표시/숨기기" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "소리 끄기/켜기" @@ -34666,7 +34637,7 @@ msgstr "시스템 트레이 프로토콜은 런타임에 앱이 아이콘을 추 #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "인기 GIF" @@ -34760,7 +34731,7 @@ msgstr "다른 검색어를 입력해 보세요." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "다른 검색어 또는 필터를 사용해 보세요" @@ -34839,11 +34810,6 @@ msgstr "다른 필터나 검색어를 사용해 보세요." msgid "Try editing your message again." msgstr "메시지 수정을 다시 시도해 주세요." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "전체 품질로 다시 시도" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "\"테마\", \"알림\", \"개인정보 보호\" 등으로 검색해 보세요" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "원하지 않는 항목은 꺼 주세요. 일부 기능이 작동하지 않을 수 있습니다." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "이 소스의 오디오 공유를 끄거나 잠시 후 다시 시도하세요." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "OBS 또는 XSplit 감지 시 자동으로 켜기" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "카메라 켜기" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "회수 불가" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "소리 켜기" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "모든 기기 소리 켜기" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "내 소리 켜기" @@ -35558,7 +35524,7 @@ msgstr "알 수 없는 사용자" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "알 수 없는 사용자" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "{premiumProductName}으로 DM에서 맞춤 이모티콘을 잠금 해제하세요" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "{premiumProductName}으로 HD 화면 공유를 잠금 해제하세요" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "{label} 음소거 해제" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "모든 기기 음소거 해제" @@ -35741,7 +35707,7 @@ msgstr "이름 없는 그룹" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "이름 없는 입력" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "새로운 이모티콘과 스티커를 업로드하고 직접 만든 콘텐츠를 관리하세요." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "화면 공유 미리보기 프레임을 업로드합니다." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL이 클립보드에 복사되었습니다" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "사용자 태그 (선택 사항)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "사용자 볼륨" @@ -37227,7 +37193,7 @@ msgstr "비디오 패킷 손실:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "동영상 미리보기" @@ -37283,7 +37249,7 @@ msgstr "동영상 업로드" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "오디오 및 비디오" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "오디오 및 비디오 설정" @@ -37685,7 +37651,7 @@ msgstr "음성 및 영상 단축키" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "음성 통화" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "음성 연결 디버그" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "음성 소리 끄기" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "음성 메시지" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "음성 메시지 플레이어" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "음성 설정" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "음성 소리 켜기" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "잠시만 기다려 주세요" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "연결 대기 중..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "채팅방에 링크로 공유할 때" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "미리보기를 켜면 {productName}에서 화면 공유 중 JPEG 프레임을 가끔 업로드하여, 이 그룹 DM에 있는 다른 사람들이 시청 전에 미리보기 이미지를 볼 수 있습니다." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "미리보기를 켜면 {productName}에서 화면 공유 중 JPEG 프레임을 가끔 업로드하여, 이 음성 채널에 접속할 권한이 있는 사람들이 시청 전에 미리보기 이미지를 볼 수 있습니다." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "미리보기를 켜면 {productName}에서 화면 공유 중 JPEG 프레임을 가끔 업로드하여, 이 DM의 상대방이 시청 전에 미리보기 이미지를 볼 수 있습니다." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "화면 위아래가 잘린 창이나 도킹된 DevTools는 투명하게 유지되지 않고 회색 배경으로 표시될 수 있습니다." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows 기본값" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "이 커뮤니티에서 차단되어 참여할 수 없습니다." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "소리 꺼짐 상태입니다" @@ -38833,11 +38799,6 @@ msgstr "{productName}의 {releaseChannel} 빌드를 사용 중입니다." msgid "You aren't in any communities right now." msgstr "현재 참여 중인 커뮤니티가 없습니다." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "{resolution}에서 {frameRate} FPS로 요청하셨습니다." - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "이 커뮤니티에서는 메시지를 보낼 수 없습니다." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "이 채널에서는 화면을 공유할 수 없습니다" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "이 채널에서는 말할 수 없습니다" @@ -39036,7 +38997,7 @@ msgstr "이 채널에서는 말할 수 없습니다" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "이 채널에서는 카메라를 켤 수 없습니다" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "{PREMIUM_PRODUCT_NAME} 사용 중에 태그를 변경했습니다. 구독이 갱신되지 않고 {PREMIUM_PRODUCT_NAME}이(가) 만료되면 태그가 무작위로 다시 지정됩니다." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "이 메시지가 전송된 채널에 접근할 수 없습니다." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "{ownedNames}에는 그대로 남습니다. 소유자는 자신의 커뮤니티를 나갈 수 없습니다." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "모더레이터가 소리를 껐습니다" @@ -39699,11 +39660,6 @@ msgstr "신청이 검토 대기 중입니다. 등록 정보를 업데이트하 msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "오디오를 재생하려면 브라우저에서 사용자 작업이 필요합니다. 음성 채팅을 활성화하려면 아래 버튼을 클릭하세요." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "캡처 기기에서 {resolution} 대신 {deliveredResolution}을(를) 보내고 있습니다." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "카드 정보를 확인하여 현지 가격을 적용하고 있습니다. 잠시만 기다려 주세요." @@ -39734,36 +39690,11 @@ msgstr "회원님의 커뮤니티가 디스커버리에 등록되어 있습니 msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "커뮤니티를 디스커버리에 등록하려면 멤버가 최소 {minMemberCount, plural, one {#명} other {#명}} 필요합니다." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "연결 속도가 충분하지 않습니다. 스트림이 {frameRate} FPS, {resolution}으로 설정되었지만 시청자에게는 약 {deliveredFrameRate} FPS만 전송됩니다." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "신용카드 확인이 완료되었습니다. 유효한 카드인 경우, 성인 콘텐츠가 곧 잠금 해제됩니다. 이 탭을 닫고 앱으로 돌아가세요." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "기기 성능이 부족합니다. 스트림이 {frameRate} FPS, {resolution}으로 설정되었지만 시청자에게는 약 {deliveredFrameRate} FPS만 전달되고 있습니다." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "기기가 따라가지 못해, {resolution}을 선명하게 유지하기 위해 스트림이 이제 {frameRate} FPS를 전송합니다." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "기기 성능이 부족하여 스트림이 {targetResolution} at {targetFrameRate} FPS 대신 {resolution} at {frameRate} FPS로 전송됩니다." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "기기 성능이 부족하여 {resolution}으로 스트리밍하여 {frameRate} FPS를 부드럽게 유지합니다." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "가입을 계속하려면 추가 스팸 방지 확인이 필요합니다." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "저장된 {savedResolution} ({savedFrameRate} FPS)를 사용하려면 {premiumProductName}이 필요합니다. 대신 {resolution} ({frameRate} FPS)으로 공유됩니다." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "호환되는 비디오 코덱으로 화면 공유를 게시할 수 없어 중지되었습니다. 다시 공유해 보세요." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "소스에서 초당 약 {sourceFrameRate} FPS를 생성하고 있습니다" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "회원님의 스트림은 계속 라이브 상태입니다" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "이 기기에서 {previousCodec}을(를) 따라가지 못해 스트림이 {codec}(으)로 전환되었습니다. 시청자에게 잠시 끊김이 보일 수 있습니다." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "맞춤 URL이 {inviteEndpoint}/{vanitySlug}(으)로 설정되었습니다" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "비디오 인코더에서 프레임을 더 이상 인코딩하지 않아 화면 공유가 중지되었습니다. 다시 공유해 보세요." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "동영상 인코더가 중지되어 스트림이 {codec}(으)로 전환되었습니다." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/lt/messages.po b/fluxer_app/src/features/i18n/locales/lt/messages.po index 31b5abbc5..b4237a01e 100644 --- a/fluxer_app/src/features/i18n/locales/lt/messages.po +++ b/fluxer_app/src/features/i18n/locales/lt/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} nori prisijungti" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} naudos šią paskyrą šiam autorizavimui." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} negali veikti šiame įrenginyje. Nustatykite kodeką į Automatinis\" „Išplėstinių nustatymų“ skiltyje, kad būtų galima naudoti greitesnį." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} šiuo metu prieinama tik {productName} darbuotojams" msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Neribota} one {# dalyvis} few {# dalyviai} other {# dalyvių}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (liko # eilutė)} few {... (liko # eilutės)} other {... (liko # eilučių)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (liko # eilutė)} few {... (liko # eilutės)} other {... (liko # eilučių)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Išskleisti (# eilutė)} few {Išskleisti (# eilut msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Išskleisti (# eilutė)} few {Išskleisti (# eilutės)} other {Išskleisti (# eilučių)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Išskleisti # kitą įrenginį} few {Išskleisti # kitus įrenginius} other {Išskleisti # kitų įrenginių}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Skambutyje: #} few {Skambutyje: #} other {Skambutyj msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Prisijungti prie vaizdo skambučio (# dalyvis)} few {Prisijungti prie vaizdo skambučio (# dalyviai)} other {Prisijungti prie vaizdo skambučio (# dalyvių)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Toliau žiūrėti # srautą ir pridėti šį} few {Toliau žiūrėti # srautus ir pridėti šį} other {Toliau žiūrėti # srautų ir pridėti šį}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Jūsų kvietimo nuoroda baigs galioti po # dienos.} few {Jūsų kvietimo nuoroda baigs galioti po # dienų.} other {Jūsų kvietimo nuoroda baigs galioti po # dienų.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} valandos" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# pakeitimas} few {# pakeitimai} other {# p msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} pirmiausia patikrins, ar jūsų kortelė tinka vietinei kainodarai, tada nukreips jus į mokėjimą. Grįžkite į {productName}, kai baigsite." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "Šis įrenginys nepalaiko {pinnedCodec}, todėl jūsų transliacija naudoja {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} reikia prieigos prie jūsų mikrofono. Leiskite naudoti mikrofoną operacinės sistemos privatumo nustatymuose ir iš naujo paleiskite programą." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} reikia prieigos prie kameros, kad būtų galima parodyti jūsų įrenginius." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} prisijungę" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "URL, įrašytas žinutės tekste" msgid "a user" msgstr "naudotojas" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Žiūrintysis negali paleisti {pinnedCodec}, todėl jūsų transliacija naudoja {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Priimti" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Atsiliepti" @@ -3178,12 +3163,12 @@ msgstr "Pridėti į grupę" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Įtraukti į išsaugotą mediją" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Pridėti prie mėgstamiausių GIF (tik URL)" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Išplėstiniai" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Išplėstiniai vaizdo nustatymai" @@ -3451,7 +3436,7 @@ msgstr "Lygiavimo valdikliai pasiekiami tik platesniuose ekranuose" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Leisti" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Leisti {everyoneMention} ir {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Leiskite {PRODUCT_NAME} pasiekti jūsų kamerą: {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Leisti botų tiesiogines žinutes" msgid "Allow bots to send you direct messages?" msgstr "Leisti botams siųsti jums tiesiogines žinutes?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Leisti naudoti kamerą" @@ -4014,13 +3999,13 @@ msgstr "Animuoti jaustukai, GIF ir lipdukai lieka jūsų valioje animacijos skir #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animuotas GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animuotas GIF vaizdo įrašas" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animuotoms piktogramoms reikalinga {animatedIconFeature} bendruomenės funkcija." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animuotas paveikslėlis" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Animuoto paveikslėlio peržiūra" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Norint įkelti animuotus failus, reikia {premiumProductName} prenumeratos." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animuotas vaizdo įrašas" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Programos būsena" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Programos langas" @@ -4361,7 +4346,7 @@ msgstr "Programa sėkmingai atnaujinta" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Programos" @@ -4586,7 +4571,7 @@ msgstr "priedas" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Priedas {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Priedo galiojimas baigėsi" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Priedo galiojimas baigėsi arba jis nepasiekiamas" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Priedo ID nukopijuotas į iškarpinę" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Garso lygis" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Garsas išjungtas" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Garso paketų praradimas:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Garso grotuvas" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Garso peržiūra" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Garso apdorojimas (fokusuotas balsas)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Garso įrašo eiga" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Garso nustatymai" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Garso šaltiniai: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatinis ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatinis stiprinimo valdymas" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Naršyklė: atgal" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Naršyklės numatytasis įrenginys" @@ -6198,20 +6183,20 @@ msgstr "Skambučiai" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Reikalinga prieiga prie kameros, kad būtų galima peržiūrėti įrenginius" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Kameros prieiga nesuteikta. Atnaujinkite kameros leidimus ir bandykite dar kartą." @@ -6276,13 +6261,13 @@ msgstr "Kameros peržiūra" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kameros kokybė" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kameros nustatymai" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Nepavyko patvirtinti „Captcha“. Bandykite dar kartą." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Įrašyti" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Įrašyti programos garsą" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Įrašyti darbalaukio garsą" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Įrašyti įrenginio garsą" @@ -6736,12 +6721,12 @@ msgstr "Pakeitimas suplanuotas" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Pakeisti srautą" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Keisti srauto šaltinį" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Prieiga prie kanalo" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Prieiga prie kanalo uždrausta" @@ -7097,7 +7082,7 @@ msgstr "Kanalo ID nukopijuotas į iškarpinę" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "kanalo nuoroda" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Pasirinkite mokėjimo būdą" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Pasirinkite, ką bendrinti" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Išvalyti patikimus domenus ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Aiškesnis tekstas" @@ -8285,7 +8270,7 @@ msgstr "Sutraukti kanalo temą" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Sutraukti įrenginius" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Bendruomenės kūrėjas" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Išjungti garsą bendruomenėje" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Bendruomenės MFA reikalavimo pranešimų juosta" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Nutildyti bendruomenėje" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Konfigūruoti dabar" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Konfigūruoti arba baigti ekrano bendrinimą" @@ -8904,7 +8889,7 @@ msgstr "Patvirtinimas arba dvigubas spustelėjimas prisijungiant prie bendruomen msgid "Conflicts with {conflictLabel}" msgstr "Kertasi su „{conflictLabel}“" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Prijunkite kamerą ir bandykite dar kartą." @@ -8913,7 +8898,7 @@ msgstr "Prijunkite kamerą ir bandykite dar kartą." msgid "Connect a camera or virtual capture device, then try again." msgstr "Prijunkite kamerą arba virtualų fiksavimo įrenginį ir bandykite dar kartą." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Prijunkite ekraną ir bandykite dar kartą." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Ryšio garsumo valdikliai" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Ryšys: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistikos JSON nukopijuotas į iškarpinę" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Nukopijuota į iškarpinę" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopijuoti priedo ID" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopijuoti garso įrašą" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopijuoti garso įrašo nuorodą" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopijuoti galinį tašką" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopijuoti failo nuorodą" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopijuoti GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopijuoti GIF nuorodą" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopijuoti identifikatorių" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopijuoti paveikslėlį" @@ -9448,7 +9433,7 @@ msgstr "Kopijuoti paveikslėlį" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopijuoti paveikslėlio nuorodą" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Kopijuoti nuorodą į skyrių" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopijuoti mediją" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopijuoti reikšmę" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopijuoti vaizdo įrašą" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopijuoti vaizdo įrašo nuorodą" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopijuoti webhooko URL" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopijuojamas paveikslėlis..." @@ -10588,7 +10573,7 @@ msgstr "Šiuo metu: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Pasirinktinis" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deaktyvuoti" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Išjungti garsą" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Išjungti garsą visuose įrenginiuose" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Išjungti garsą įrenginyje" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Išjungti kitų narių garsą balso kanaluose, kad jie negirdėtų ir negalėtų kalbėti." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Garso išjungimo spartusis klavišas" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Išjungti garsą sau" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Garsas išjungtas" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Garsą išjungė moderatoriai" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Numatytasis" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Numatytoji kamera" @@ -11258,8 +11243,8 @@ msgstr "Delaveras" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Ištrinti :{emojiName}:? Šio veiksmo anuliuoti negalima." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Ištrinti „{memeName}“? Šio veiksmo anuliuoti negalima." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Ištrinti kvietimą" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Ištrinti mediją" @@ -11466,8 +11451,8 @@ msgstr "Ištrinti vaidmenį" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Ištrinti išsaugotą mediją" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Neaktyvumas kompiuteryje" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Kompiuteris" @@ -11849,13 +11834,13 @@ msgstr "Kūrėjo būsena" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Kūrėjo įrankiai" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Kūrėjo įrankiai pasiekiami iš personalo ženkliuko kanalo antraštėje." @@ -11879,6 +11864,17 @@ msgstr "Įrenginys" msgid "Device alerts" msgstr "Įrenginio pranešimai" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Įrenginio garsas ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Tik garso įrenginys" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Įrenginio informacija" @@ -11888,7 +11884,7 @@ msgstr "Įrenginio informacija" msgid "Device revoked" msgstr "Įrenginys atšauktas" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Įrenginio pasirinkimas" @@ -11912,7 +11908,7 @@ msgstr "Įrenginys:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Įrenginiai" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Pritemdyti perbrauktą tekstą" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Tiesioginė įvestis" @@ -12020,7 +12016,7 @@ msgstr "Tiesioginis įkėlimas aktyvus" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Išjungti" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Išjungta reikšmė" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Išjungus peržiūras, ateityje nebus įkeliamos naujos peržiūros. Esami peržiūros vaizdai gali likti matomi iki srauto pabaigos arba kol bus atnaujinta peržiūra." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Atmesti balso žinutę" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Atjungti" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Atjungti visus įrenginius" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Atjungti įrenginį" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Rodymas" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Ekranas" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification ir įdėkite į savo <1>.well-known aplanką, kad galėtume patvirtinti domeną." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Atsisiųsti garso įrašą" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Atsisiųsti darbalaukio naujinimą {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Atsisiųsti failą" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Atsisiųsti fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Atsisiųsti GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Atsisiųsti paveikslėlį" @@ -12714,7 +12710,7 @@ msgstr "Atsisiųsti diegimo programą" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Atsisiųsti mediją" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Atsisiųsti paketą" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Atsisiųsti vaizdo įrašą" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Aidas" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Aido slopinimas" @@ -12963,7 +12959,7 @@ msgstr "Redaguoti prieigą „{0}“" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Redaguoti alternatyvųjį tekstą" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Redaguoti spartųjį klavišą" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Redaguoti mediją" @@ -13102,8 +13098,8 @@ msgstr "Redaguoti atvirkštinės vaizdų paieškos variklį" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Redaguoti išsaugotą mediją" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Įjungti naršyklės pranešimus" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Įjunkite kameros prieigą, kad galėtumėte peržiūrėti kameras ir įrašymo įrenginius prieš pasirinkdami vieną transliacijai." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Įjunkite arba išjunkite integruotus vertėjus. Įjungti vertėjai rodomi žinutės kontekstiniame meniu, kai pažymimas tekstas." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Įjungti peržiūras" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Baigti ekrano bendrinimą" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Šifravimas nuo galo iki galo nepasiekiamas, nes šiame skambutyje yra nepalaikomas dalyvis." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Šifravimas nuo galo iki galo nepasiekiamas, nes šiame balso kanale yra nepalaikomas dalyvis." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Pramogos" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Visas ekranas" @@ -14095,7 +14091,7 @@ msgstr "Visas ekranas" msgid "Entire system" msgstr "Visa sistema" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Visos sistemos garsas" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "neįtraukti naudotojo" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Neįtraukti į sistemos garsą" @@ -14593,7 +14589,7 @@ msgstr "Nepavyko nukopijuoti kvietimo nuorodos" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Nepavyko nukopijuoti į iškarpinę" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Nepavyko įkelti kvietimų. Bandykite dar kartą." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Nepavyko įkelti bendrinamų šaltinių." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Perkelti langą į priekį" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Fokusuotas balsas" @@ -15322,10 +15318,6 @@ msgstr "Aplanko nustatymai" msgid "Follow us on {blueskyProviderName}" msgstr "Sekite mus „{blueskyProviderName}“ tinkle" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Sekti balso įvestį" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Persiųsti" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Pirmyn {defaultSeekAmount} sekundžių" @@ -15592,14 +15584,14 @@ msgstr "Rėmelis" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Kadrų dažnis" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Didesniam nei 30 FPS kadrų dažniui reikalingas {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Valdiklio Y / trikampis" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Žaidimai" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Įkeliamas GIF parinkiklis" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF peržiūra" @@ -16429,7 +16421,7 @@ msgstr "Suteikta {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Suteikia visus leidimus ir apeina kanalo apribojimus. Labai jautrus leidimas." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Detalus pasirinkimas" @@ -16992,7 +16984,7 @@ msgstr "Slėpti slaptažodį" msgid "Hide picture-in-picture popout?" msgstr "Slėpti iššokantįjį paveikslėlio paveikslėlyje langą?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Slėpti peržiūros miniatiūrą" @@ -17386,7 +17378,7 @@ msgstr "Jei norite, kad šie nariai galėtų pasiekti ankstesnes žinutes, išsi #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignoruoti" @@ -17395,11 +17387,11 @@ msgstr "Ignoruoti" msgid "Ignore friend request" msgstr "Nepaisyti draugystės užklausos" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignoruoti aparatinius įrenginius" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignoruoti įvesties mediją" @@ -17430,7 +17422,7 @@ msgstr "Nepaisyti {displayName} draugystės užklausos?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignoruoti šio kanalo lėtojo režimo apribojimą." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignoruoti virtualius" @@ -17468,7 +17460,7 @@ msgstr "Ilinojus" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Vaizdas" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Vaizdiniai elementai" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Vaizdas nukopijuotas į iškarpinę" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Vaizdo parinktys" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Vaizdo peržiūra" @@ -17540,7 +17532,7 @@ msgstr "Vaizdo įkėlimas" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Balso pokalbyje" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Balso pokalbyje" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Įtraukti visus, išskyrus pasirinktus" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Įtraukti programas" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Įvestis ir išvestis" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Įvesties įrenginys" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Įvesties profilis: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Įvesties nustatymai" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Įvesties būsenos" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Įvesties garsumas" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Kvietimo nuoroda paslėpta, kol bendrinama:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Kvietimo nuoroda paslėpta, kol bendrinama" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Pereiti prie {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Pereiti prie „{labelText}“" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Pereiti prie dabartinio skambučio" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Pereiti į susietą kanalą" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Pereiti prie susietos žinutės" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Pereiti prie {authorNickname} žinutės" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Pereiti prie žinutės iš „{labelText}“" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Išdėstymas" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Sužinokite apie ekrano bendrinimo peržiūras" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Nuorodų stilius" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Nuoroda nepasiekiama" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "„Linux“ programa" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "„Linux“ numatytasis įrenginys" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Įkeliama tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Įkeliama..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "„macOS“ programa" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "„macOS“ numatytasis įrenginys" @@ -20289,7 +20281,7 @@ msgstr "Kitas kūrinys" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Medijos parinktys" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Leisti / pristabdyti" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Medijos peržiūra" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Žinučių išdėstymas" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "nuoroda į žinutę" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofono testas" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Mikrofonas, kamera ir bendrinamas ekrano turinys yra užšifruoti nuo galo iki galo." @@ -21019,7 +21011,7 @@ msgstr "Rizika nepilnamečiams, netinkamoje vietoje esantis suaugusiesiems skirt #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Rašybos klaidos" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobilusis įrenginys" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Nutildyti visus" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Nutildyti visus įrenginius" @@ -21653,13 +21645,13 @@ msgstr "Nutildyta" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofonas nutildytas" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Moderatorių nutildytas" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Nėra leidimo „{sendMessagesPermission}“" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Nėra prieigos" @@ -22282,7 +22274,7 @@ msgstr "Išplėstinių nustatymų nerasta" msgid "No AFK channel" msgstr "Nėra AFK kanalo" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Programų langų nerasta" @@ -22300,6 +22292,11 @@ msgstr "Kol kas nėra išteklių" msgid "No audio" msgstr "Garso nėra" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Nėra garso iš šio įrenginio" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Nėra įgaliotųjų programų" @@ -22341,7 +22338,7 @@ msgstr "Nėra žymių" msgid "No bot banner" msgstr "Nėra boto reklamjuostės" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Kamera nerasta" @@ -22421,7 +22418,7 @@ msgstr "Aprašo nėra." msgid "No desktop update is available." msgstr "Nėra galimų darbalaukio naujinimų." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Ekranų nerasta" @@ -22650,7 +22647,7 @@ msgstr "Negautas atsakymo turinys" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Nėra rezultatų" @@ -22679,7 +22676,7 @@ msgstr "Dar nėra vaidmenų. Pridėkite vaidmenų čia: {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Nėra išsaugotos medijos" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Triukšmo slenkstis" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Triukšmo slopinimas" @@ -22877,7 +22874,7 @@ msgstr "Non-convert" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Nėra" @@ -23286,7 +23283,7 @@ msgstr "Taikoma tik plačiuose ekranuose." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Priimamos tik kredito kortelės. Debeto ir išankstinio mokėjimo kortelės negali būti naudojamos turinio suaugusiesiems patikrai." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Tik numatytieji garsiakalbiai" @@ -23334,7 +23331,7 @@ msgstr "Vykdykite kodą tik tuo atveju, jei tiksliai suprantate, ką jis daro." msgid "Only show message previews for DMs with unread messages" msgstr "Rodyti žinučių peržiūras tik DM su neskaitytomis žinutėmis" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Tik garsiakalbiai" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Atidaryti „{displayName}“" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Atidaryti „{labelText}“ nustatymuose" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Atidaryti @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Atidaryti papildomus medijos nustatymus" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Atidarykite programos langą ir bandykite dar kartą." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Atidaryti animuotą GIF viso ekrano režimu" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Atidaryti animuotą GIF vaizdo įrašą viso ekrano režimu" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Atidaryti garso įrašą viso ekrano režimu" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Atidaryti garso nuorodą" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Atidaryti naršyklę" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Atidaryti naršyklės parinkiklį" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Atidaryti mėgstamiausių meniu" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Atidaryti failo nuorodą" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Atidaryti GIF nuorodą" @@ -23651,7 +23648,7 @@ msgstr "Atidaryti paveikslėlį naršyklėje" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Atidaryti paveikslėlį viso ekrano režimu" @@ -23660,7 +23657,7 @@ msgstr "Atidaryti paveikslėlį viso ekrano režimu" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Atidaryti paveikslėlio nuorodą" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Atidaryti sistemos DM" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Atidaryti sistemos parinkiklį" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Atidaryti vaizdo įrašą viso ekrano režimu" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Atidaryti vaizdo įrašo nuorodą" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Atidaryti balso pokalbį" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Atidaryti balso ir vaizdo nustatymus" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Išvestis" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Išvesties įrenginys" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Išvesties nustatymai" @@ -24094,7 +24091,7 @@ msgstr "Išvesties nustatymai" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Išvesties garsumas" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Dalyvių skaičiaus limitas" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Dalyvio „{participantDisplayName}“ parinktys" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Peržiūra paslėpta" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "„{productName}“ laikinai saugo peržiūros vaizdus, kad galėtų juos pristatyti, ir jie nėra užšifruoti iš galo į galą. Jei nenorite, kad ekrano bendrinimo kadrai būtų įkeliami miniatiūroms, išjunkite peržiūras." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "„{productName}“ laikinai saugo peržiūros vaizdus, kad galėtų juos pristatyti, ir jie nėra užšifruoti iš galo į galą. Šio grupės DM dalyviams nereikia aktyviai stebėti jūsų srauto, kad pamatytų miniatiūrą." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "„{productName}“ laikinai saugo peržiūros vaizdus, kad galėtų juos pristatyti, ir jie nėra užšifruoti iš galo į galą. Žmonėms vis tiek reikia leidimo prisijungti, tačiau jiems nereikia aktyviai stebėti jūsų srauto." @@ -26269,7 +26266,7 @@ msgstr "Nuoroda nukopijuota." msgid "Referral parameters" msgstr "Rekomendacijų parametrai" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Atnaujinti garso šaltinius" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Paspaustas įprastas mygtukas." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Atmesti" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Pašalinti iš grupės" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Pašalinti iš išsaugotos medijos" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Nerodyti viršuje" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Pašalinti iš mėgstamiausių GIF (tik URL)" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Panaikintas {0} užblokavimas" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Atsukti atgal {defaultSeekAmount} sekundžių" @@ -28202,7 +28199,7 @@ msgstr "Išsaugoti piktogramą" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Norėdami pradėti, išsaugokite kelis medijos failus iš žinučių!" @@ -28313,7 +28310,7 @@ msgstr "Reikalingas ekrano įrašymo leidimas" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Ekrano bendrinimas" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Ekrano bendrinimo garso stiprinimas" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Nepavyko pradėti ekrano bendrinimo garso" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Ekrano bendrinimo kodavimo valdikliai" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Ekrano bendrinimas baigėsi" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Ekrano bendrinimo peržiūros elgsena" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Ekrano bendrinimo peržiūros" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Ekrano bendrinimo peržiūros išjungtos." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Ekrano bendrinimo peržiūros įjungtos." @@ -28391,13 +28388,13 @@ msgstr "Ekrano bendrinimo privatumas" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Ekrano bendrinimo kokybė" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Ekrano bendrinimo nustatymai" @@ -28723,7 +28720,7 @@ msgstr "Ieškoti vaidmenų ar narių…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Ieškoti išsaugotos medijos" @@ -28942,12 +28939,12 @@ msgstr "Persukimo peržiūra" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Pasirinkti" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Pasirinkite „{accessibleName}“" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Siųsti atkūrimo nuorodą" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Siųsti išsaugotą mediją „{memeName}“" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Nustatyta vaidmens pozicija narių sąraše" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Nustatyta pagal {preset} iš anksto nustatytą parinktį. Pasirinkus reikšmę čia, bus pereita prie pasirinktinio nustatymo." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Nustatykite pasirinktinius atskirų garsų lygius. Garsams be individualių nustatymų bus taikomas pagrindinis garso lygis." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Nustatyti garso išjungimo spartųjį klavišą" @@ -29669,11 +29666,6 @@ msgstr "Atidėti šį patikrinimą" msgid "Set this check aside?" msgstr "Atidėti šį patikrinimą?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Nustatyta siųsti {resolution} esant {frameRate} FPS su {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Nustatymai" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "nustatymų nuoroda" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Bendrinti dovaną" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Bendrinti ekraną" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Bendrinti su bendruomenės moderatoriais." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Bendrinti ekraną" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Bendrinkite ekraną didele raiška (1080p), Quad HD (1440p) arba natūralia šaltinio raiška, iki 60 kadrų per sekundę." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Bendrinamas langas" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Bendrinamo lango garsas" @@ -30624,6 +30616,10 @@ msgstr "Tylūs skambučiai" msgid "Silent calls from everyone" msgstr "Tylūs skambučiai iš visų" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Nebalsinis, kai įrenginys neturi savo garso įvesties" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Sklandus slinkimas" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Sklandesnis vaizdas" @@ -31005,11 +31001,6 @@ msgstr "Kai kurių jaustukų nepavyko pridėti" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Kai kurie failai, kuriuos bandote įkelti, viršija didžiausią leidžiamą {maxSizeFormatted} dydį vienam failui." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Kai kuriuos srauto nustatymus nepavyko pritaikyti jūsų tiesioginei transliacijai." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Garsai" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Šaltinis" @@ -31569,7 +31560,7 @@ msgstr "Pradėti balso skambutį?" msgid "Start call" msgstr "Pradėti skambutį" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Pradėti kameros testą ir konfigūruoti efektus" @@ -31910,7 +31901,7 @@ msgstr "Nustoti skaityti" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Sustabdyti srautą" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Nebepasitikėti visomis nuorodomis?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Nustoti žiūrėti" @@ -31982,7 +31973,7 @@ msgstr "Neleidžia garsiakalbių garsui grįžti atgal į mikrofoną." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Transliuoti" @@ -32001,11 +31992,6 @@ msgstr "Transliacija baigėsi" msgid "Stream hidden" msgstr "Srautas paslėptas" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Srautas nespėja" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Srauto kokybė" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Srauto nustatymai" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Srauto nustatymai buvo pakoreguoti" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Sistemos pranešimai iš „{productName}“ darbuotojų. Čia negalite #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Numatytasis sistemos įrenginys" @@ -33036,13 +33017,8 @@ msgstr "Botas pridėtas prie <0>{destinationName}." msgid "The bot has been added." msgstr "Botas pridėtas." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Naršyklė siunčia {deliveredResolution} vietoj {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Kameros peržiūra vis dar stabdoma. Po akimirkos pabandykite transliuoti dar kartą." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Šis vaidmuo suteikė {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Ekrano bendrinimo šaltinis nustojo siųsti vaizdą, todėl ekrano bendrinimas buvo sustabdytas." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Ši naršyklės konsolė yra kūrėjo įrankis." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Šis skambutis yra užšifruotas nuo galo iki galo." @@ -33645,11 +33621,6 @@ msgstr "Ši darbalaukio versija negali diegti naujinimų programoje {productName msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ši kūrimo versija negali atsinaujinti. Atsisiųskite darbalaukio diegimo programą, kad išbandytumėte naujinimo eigą." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Šis įrenginys praėjusį kartą nespėjo palaikyti {targetResolution} esant {targetFrameRate} kadrų per sekundę, todėl jūsų transliacija prasidėjo esant {resolution} esant {frameRate} kadrų per sekundę." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Šią programą valdo jūsų sistema. Atnaujinkite „{productName}“ naudodami programų centrą arba paketų tvarkyklę." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Ši instancija šiuo metu leidžia bendrinti ekraną iki 720p raiškos ir 30 kadrų per sekundę." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Šis nuorodų kanalas pažymėtas kaip skirtas brandžiam turiniui ir gali atverti medžiagą, kuri kai kuriems naudotojams gali būti netinkama." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Ši nuoroda nepasiekiama jūsų paskyrai." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Ši parinktis privaloma. Įveskite reikšmę." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Šis dalyvis negali kalbėti šiame kanale" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Šiam dalyviui išjungtas garsas" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Šiam dalyviui garsą išjungė moderatoriai" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Šis telefono numeris jau buvo naudotas. Bandykite kitą numerį arba susisiekite su palaikymo komanda." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Šis parinkiklis pasiekiamas tik darbalaukio programoje." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Valdiklių perjungimas" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Išjungti / įjungti garsą" @@ -34666,7 +34637,7 @@ msgstr "Dėklo piktogramos pakeitimai „Linux“ sistemoje įsigalioja tik iš #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Populiarūs GIF" @@ -34760,7 +34731,7 @@ msgstr "Pabandykite kitą paieškos užklausą." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Pabandykite kitą paieškos terminą arba filtrą" @@ -34839,11 +34810,6 @@ msgstr "Pabandykite kitus filtrus arba paieškos terminus." msgid "Try editing your message again." msgstr "Bandyti redaguoti žinutę dar kartą." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Bandyti dar kartą su visa kokybe" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Pabandykite ieškoti ko nors panašaus į „tema“, „pranešimai“ ar „privatumas“" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Išjunkite tai, kas jums nepriimtina. Kai kurios funkcijos gali nustoti veikti." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Išjunkite šio šaltinio garso bendrinimą arba pabandykite dar kartą po akimirkos." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Įjungti automatiškai, kai aptinkama OBS arba XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Įjungti kamerą" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Neišieškoma" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Įjungti garsą" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Įjungti garsą visuose įrenginiuose" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Įjungti garsą sau" @@ -35558,7 +35524,7 @@ msgstr "nežinomas naudotojas" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Nežinomas naudotojas" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Atrakinkite pasirinktinius jaustukus DM pokalbiuose su „{premiumProductName}“" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Atrakinkite HD ekrano bendrinimą su „{premiumProductName}“" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Įjungti garsą {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Įjungti garsą visuose įrenginiuose" @@ -35741,7 +35707,7 @@ msgstr "Grupė be pavadinimo" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Įvesties įrenginys be pavadinimo" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Įkelkite naujų jaustukų ir lipdukų bei tvarkykite savo kūrinius." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Įkelkite ekrano bendrinimo peržiūros kadrus." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL nukopijuotas į iškarpinę" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Naudotojo žyma (pasirinktinai)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Naudotojo garsumas" @@ -37227,7 +37193,7 @@ msgstr "Vaizdo paketų praradimas:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Vaizdo įrašo peržiūra" @@ -37283,7 +37249,7 @@ msgstr "Vaizdo įrašo įkėlimas" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Balsas ir vaizdas" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Balso ir vaizdo nustatymai" @@ -37685,7 +37651,7 @@ msgstr "Balso ir vaizdo spartieji klavišai" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Balso skambutis" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Balso ryšio derinimas" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Garso išjungimas" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Balso žinutė" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Balso žinutės grotuvas" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Balso nustatymai" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Garso įjungimas" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Palaukite čia" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Laukiama prisijungimo..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Kai paskelbta kaip nuorodos pokalbyje" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Įjungus peržiūras, „{productName}“ kartkartėmis įkelia JPEG formato kadrus iš jūsų bendrinamo ekrano, kad kiti šio grupės DM dalyviai galėtų pamatyti miniatiūrą prieš žiūrėdami." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Įjungus peržiūras, „{productName}“ kartkartėmis įkelia JPEG formato kadrus iš jūsų bendrinamo ekrano, kad žmonės, turintys leidimą prisijungti prie šio balso kanalo, galėtų pamatyti miniatiūrą prieš žiūrėdami." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Įjungus peržiūras, „{productName}“ kartkartėmis įkelia JPEG formato kadrus iš jūsų bendrinamo ekrano, kad kitas šio tiesioginio pokalbio dalyvis galėtų pamatyti miniatiūrą prieš žiūrėdamas." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Langai, nukirsti ekrano viršuje arba apačioje, ir prijungti kūrėjo įrankiai gali rodyti pilką foną, užuot likę skaidrūs." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Numatytasis Windows įrenginys" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Esate užblokuotas šioje bendruomenėje ir negalite prisijungti." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Jums išjungtas garsas" @@ -38833,11 +38799,6 @@ msgstr "Naudojate „{productName}“ {releaseChannel} versiją." msgid "You aren't in any communities right now." msgstr "Šiuo metu nesate jokioje bendruomenėje." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Jūs paprašėte {resolution} esant {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Šioje bendruomenėje negalite siųsti žinučių." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Negalite bendrinti ekrano šiame kanale" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Negalite kalbėti šiame kanale" @@ -39036,7 +38997,7 @@ msgstr "Negalite kalbėti šiame kanale" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Šiame kanale negalite įjungti kameros" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Pakeitėte savo žymą, kol naudojatės {PREMIUM_PRODUCT_NAME}. Ji bus atsitiktinai pakeista, kai baigs galioti jūsų {PREMIUM_PRODUCT_NAME}, nebent ji bus atnaujinta." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Neturite prieigos prie kanalo, kuriame buvo išsiųsta ši žinutė." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Liekate šiose bendruomenėse: {ownedNames}. Savininkai negali palikti savo bendruomenės." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderatoriai išjungė jūsų garsą" @@ -39699,11 +39660,6 @@ msgstr "Jūsų paraiška laukia peržiūros. Vis dar galite atnaujinti savo įra msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Jūsų naršyklė reikalauja naudotojo veiksmo, kad būtų galima paleisti garsą. Spustelėkite žemiau esantį mygtuką, kad įjungtumėte balso pokalbį." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Jūsų įrenginys siunčia {deliveredResolution} vietoj {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Tikrinama, ar jūsų kortelei taikoma vietinė kainodara. Tai paprastai užtrunka akimirką." @@ -39734,36 +39690,11 @@ msgstr "Jūsų bendruomenė įtraukta į Atradimą. Galite atnaujinti savo įra msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Jūsų bendruomenėje turi būti bent {minMemberCount, plural, one {# narys} few {# nariai} other {# narių}}, kad ją būtų galima įtraukti į Atradimą." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Jūsų ryšys nepajėgia palaikyti. Jūsų transliacija nustatyta į {frameRate} FPS, {resolution} raiška, o žiūrovai gauna apie {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Jūsų kredito kortelė patikrinta. Jei kortelė galioja, netrukus bus atrakintas suaugusiesiems skirtas turinys. Galite uždaryti šį skirtuką ir grįžti į programėlę." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Jūsų įrenginys nespėja. Jūsų srautas nustatytas į {frameRate} FPS, {resolution} raiška, o žiūrovai gauna apie {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Jūsų įrenginys nespėjo, todėl jūsų transliacija dabar siunčia {frameRate} FPS, kad {resolution} išliktų ryškus." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Jūsų įrenginys negalėjo susidoroti, todėl dabar jūsų transliacija siunčia {resolution} {frameRate} FPS vietoj {targetResolution} {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Jūsų įrenginys negalėjo susidoroti, todėl jūsų transliacija dabar siunčia {resolution}, kad išlaikytų sklandų {frameRate} FPS." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Prieš tęsiant, jūsų registracijai reikalingas papildomas apsaugos nuo brukalų patikrinimas." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Jūsų išsaugotas vaizdo įrašas {savedResolution} su {savedFrameRate} kadrų per sekundę reikalauja {premiumProductName}, todėl bendrinama naudojant {resolution} su {frameRate} kadrų per sekundę." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Jūsų ekrano bendrinimas negalėjo būti paskelbtas naudojant suderinamą vaizdo kodeką, todėl jis buvo sustabdytas. Pabandykite bendrinti dar kartą." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Jūsų šaltinis generuoja apie {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Jūsų transliacija vis dar aktyvi" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Jūsų srautas perjungtas į {codec}, nes {previousCodec} negalėjo palaikyti šio įrenginio. Žiūrovai gali trumpam matyti pauzę." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Jūsų pasirinktinis URL nustatytas į {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Jūsų vaizdo kodavimo įrenginys nustojo koduoti kadrus, todėl jūsų ekrano bendrinimas buvo sustabdytas. Pabandykite bendrinti dar kartą." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Jūsų vaizdo įrašų kodavimo įrenginys sustojo, todėl jūsų transliacija persijungė į {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/nl/messages.po b/fluxer_app/src/features/i18n/locales/nl/messages.po index 5cb1fc487..4f6f25182 100644 --- a/fluxer_app/src/features/i18n/locales/nl/messages.po +++ b/fluxer_app/src/features/i18n/locales/nl/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} wil verbinding maken" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} gebruikt dit account voor deze autorisatie." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} kan niet meekomen op dit apparaat. Stel de codec in op Automatisch in Geavanceerde instellingen om een snellere toe te staan." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} is momenteel alleen toegankelijk voor medewerkers van {p msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Geen limiet} one {# deelnemer} other {# deelnemers}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# regel over)} other {... (# regels over)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# rij over)} other {... (# rijen over)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Uitvouwen (# regel)} other {Uitvouwen (# regels)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Uitvouwen (# rij)} other {Uitvouwen (# rijen)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Vouw # ander apparaat uit} other {Vouw # andere apparaten uit}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {In gesprek} other {# in gesprek}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Deelnemen aan videogesprek (# deelnemer)} other {Deelnemen aan videogesprek (# deelnemers)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Blijf # stream bekijken en voeg deze toe} other {Blijf # streams bekijken en voeg deze toe}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Je uitnodigingslink verloopt over # dag.} other {Je uitnodigingslink verloopt over # dagen.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} uur" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} beelden per seconde" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# aangepaste waarde} other {# aangepaste wa msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} zal eerst controleren of je kaart in aanmerking komt voor lokale prijzen, en je daarna doorsturen naar de betaling. Keer terug naar {productName} zodra je dit hebt voltooid." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} is niet beschikbaar op dit apparaat, dus je stream gebruikt {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} heeft toegang nodig tot je microfoon. Geef microfoontoegang in de privacyinstellingen van je besturingssysteem en herstart de app." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} heeft cameratoegang nodig om je apparaten weer te geven." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "een URL die in de berichttekst is getypt" msgid "a user" msgstr "een gebruiker" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Een kijker kan {pinnedCodec} niet afspelen, dus je stream gebruikt {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Accepteren" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Opnemen" @@ -3178,12 +3163,12 @@ msgstr "Toevoegen aan groep" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Toevoegen aan opgeslagen media" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Toevoegen aan GIF-favorieten (alleen URL’s)" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Geavanceerd" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Geavanceerde video-instellingen" @@ -3451,7 +3436,7 @@ msgstr "Uitlijningsopties zijn alleen beschikbaar op bredere schermen" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Toestaan" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Sta {everyoneMention} en {hereMention} toe" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Sta {PRODUCT_NAME} toe om je camera te gebruiken in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Directe berichten van bots toestaan" msgid "Allow bots to send you direct messages?" msgstr "Bots toestaan om je directe berichten te sturen?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Cameratoegang toestaan" @@ -4014,13 +3999,13 @@ msgstr "Op het tabblad Animatie bepaal je zelf hoe geanimeerde emoji's, GIF's en #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Geanimeerde GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Geanimeerde GIF-video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Voor geanimeerde pictogrammen is de communityfunctie {animatedIconFeature} vereist." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Geanimeerde afbeelding" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Voorbeeld van geanimeerde afbeelding" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Geanimeerde uploads vereisen een {premiumProductName}-abonnement." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Geanimeerde video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Appstatus" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Appvenster" @@ -4361,7 +4346,7 @@ msgstr "App bijgewerkt" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Applicaties" @@ -4586,7 +4571,7 @@ msgstr "bijlage" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Bijlage {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Bijlage verlopen" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Bijlage is verlopen of niet beschikbaar" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Bijlage-ID gekopieerd naar klembord" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Geluidsniveau" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio gedempt" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Pakketverlies bij audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Audiospeler" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Audiovoorbeeld" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Audioverwerking (stemfocus)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Audiovoortgang" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Audio-instellingen" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Audiobronnen: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatisch ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatische versterkingsregeling" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser: terug" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Browserstandaard" @@ -6198,20 +6183,20 @@ msgstr "Gesprekken" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Camera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Cameratoegang is nodig voor apparaatvoorbeelden" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Cameratoegang is niet verleend. Werk de cameratoestemmingen bij en probeer het opnieuw." @@ -6276,13 +6261,13 @@ msgstr "Cameravoorbeeld" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Camerakwaliteit" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Camera-instellingen" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha-verificatie mislukt. Probeer het opnieuw." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Opnemen" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "App-audio opnemen" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Bureaubladgeluid opnemen" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Apparaataudio opnemen" @@ -6736,12 +6721,12 @@ msgstr "Wijziging gepland" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Stream wijzigen" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Streambron wijzigen" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Kanaaltoegang" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Toegang tot kanaal geweigerd" @@ -7097,7 +7082,7 @@ msgstr "Kanaal-ID gekopieerd naar klembord" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "kanaallink" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Kies betaalmethode" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Kies wat je wilt delen" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Vertrouwde domeinen wissen ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Duidelijkere tekst" @@ -8285,7 +8270,7 @@ msgstr "Kanaalonderwerp inklappen" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Apparaten inklappen" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Communitymaker" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Geluid uitschakelen in community" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Banner voor MFA-vereiste van community" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Microfoon dempen in community" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Nu configureren" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Scherm delen configureren of beëindigen" @@ -8904,7 +8889,7 @@ msgstr "Bevestiging of dubbelklik bij deelname aan spraakkanalen in communities" msgid "Conflicts with {conflictLabel}" msgstr "Conflict met {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Sluit een camera aan en probeer het opnieuw." @@ -8913,7 +8898,7 @@ msgstr "Sluit een camera aan en probeer het opnieuw." msgid "Connect a camera or virtual capture device, then try again." msgstr "Sluit een camera of virtueel opnameapparaat aan en probeer het opnieuw." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Sluit een beeldscherm aan en probeer het opnieuw." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Volumeregeling voor verbindingen" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Verbinding: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistieken-JSON naar klembord gekopieerd" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Gekopieerd naar klembord" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Bijlage-ID kopiëren" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Audio kopiëren" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Audiolink kopiëren" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Eindpunt kopiëren" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Bestandslink kopiëren" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "GIF kopiëren" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "GIF-link kopiëren" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "ID kopiëren" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Afbeelding kopiëren" @@ -9448,7 +9433,7 @@ msgstr "Afbeelding kopiëren" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Afbeeldingslink kopiëren" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Link naar onderdeel kopiëren" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Media kopiëren" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Waarde kopiëren" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Video kopiëren" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Videolink kopiëren" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Webhook-URL kopiëren" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Afbeelding kopiëren..." @@ -10588,7 +10573,7 @@ msgstr "Momenteel: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Aangepast" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deactiveren" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Geluid uitschakelen" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Geluid op alle apparaten uitschakelen" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Geluid op apparaat uitschakelen" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Het geluid voor andere leden in spraakkanalen uitschakelen, zodat ze niet kunnen horen of praten." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Sneltoets om geluid uit te schakelen" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Geluid voor jezelf uitschakelen" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Geluid uitgeschakeld" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Geluid uitgeschakeld door moderators" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Standaard" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Standaardcamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Wil je :{emojiName}: verwijderen? Dit kan niet ongedaan worden gemaakt." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "\"{memeName}\" verwijderen? Dit kan niet ongedaan worden gemaakt." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Uitnodiging verwijderen" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Media verwijderen" @@ -11466,8 +11451,8 @@ msgstr "Rol verwijderen" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Opgeslagen media verwijderen" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Afwezig op desktop" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Desktopapparaat" @@ -11849,13 +11834,13 @@ msgstr "Ontwikkelaarsstatus" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Ontwikkelaarstools" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Ontwikkelaarstools zijn beschikbaar via de medewerkersbadge in de kanaalkop." @@ -11879,6 +11864,17 @@ msgstr "Apparaat" msgid "Device alerts" msgstr "Apparaatmeldingen" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Audio van apparaat ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Alleen apparaataudio" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Apparaatgegevens" @@ -11888,7 +11884,7 @@ msgstr "Apparaatgegevens" msgid "Device revoked" msgstr "Apparaattoegang ingetrokken" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Apparaat selecteren" @@ -11912,7 +11908,7 @@ msgstr "Apparaat:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Apparaten" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Doorgestreepte tekst dimmen" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Directe invoer" @@ -12020,7 +12016,7 @@ msgstr "Directe upload actief" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Uitschakelen" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Uitgeschakelde waarde" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Als je de voorbeeldafbeeldingen uitschakelt, worden er geen nieuwe voorbeeldafbeeldingen meer geüpload. Eventuele eerder geüploade voorbeeldafbeeldingen blijven mogelijk zichtbaar totdat de stream eindigt of de voorbeeldafbeelding wordt vernieuwd." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Spraakbericht weggooien" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Verbinding verbreken" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Verbinding met alle apparaten verbreken" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Verbinding met apparaat verbreken" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Weergave" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Scherm" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification en plaats het in je <1>.well-known-map, zodat we het domein kunnen valideren." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Audio downloaden" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Desktopupdate {version} downloaden ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Bestand downloaden" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "fluxer-verification downloaden" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "GIF downloaden" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Afbeelding downloaden" @@ -12714,7 +12710,7 @@ msgstr "Installatieprogramma downloaden" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Media downloaden" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Pakket downloaden" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Video downloaden" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Echo" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Echo-onderdrukking" @@ -12963,7 +12959,7 @@ msgstr "Toegang bewerken voor {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Alternatieve tekst bewerken" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Sneltoets bewerken" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Media bewerken" @@ -13102,8 +13098,8 @@ msgstr "Zoekmachine voor omgekeerd zoeken bewerken" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Opgeslagen media bewerken" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Browsermeldingen inschakelen" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Schakel cameratoegang in om camera's en opnameapparaten te bekijken voordat je er een kiest om te streamen." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Schakel ingebouwde vertalers in of uit. Ingeschakelde vertalers verschijnen in het contextmenu van berichten wanneer tekst is geselecteerd." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Voorvertoningen inschakelen" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Scherm delen stoppen" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "End-to-end-versleuteling is niet beschikbaar omdat een deelnemer in dit gesprek deze niet ondersteunt." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "End-to-end-versleuteling is niet beschikbaar omdat een deelnemer in dit spraakkanaal deze niet ondersteunt." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Amusement" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Hele scherm" @@ -14095,7 +14091,7 @@ msgstr "Hele scherm" msgid "Entire system" msgstr "Hele systeem" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Volledige systeemaudio" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "een gebruiker uitsluiten" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Uitsluiten van systeemaudio" @@ -14593,7 +14589,7 @@ msgstr "Uitnodigingslink kopiëren mislukt" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Kopiëren naar klembord mislukt" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Uitnodigingen laden mislukt. Probeer het opnieuw." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Kan deelbare bronnen niet laden." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Venster naar voren halen" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Stemfocus" @@ -15322,10 +15318,6 @@ msgstr "Mapinstellingen" msgid "Follow us on {blueskyProviderName}" msgstr "Volg ons op {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Spraakinvoer volgen" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Doorsturen" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} seconden vooruitspoelen" @@ -15592,14 +15584,14 @@ msgstr "Kader" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Beeldsnelheid" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Framesnelheden boven 30 FPS vereisen {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Controller Y / Driehoek" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Gaming" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF-kiezer laden" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF-voorbeeld" @@ -16429,7 +16421,7 @@ msgstr "{permissions} verleend" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Verleent alle rechten en omzeilt kanaalbeperkingen. Zeer gevoelig." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Nauwkeurige selectie" @@ -16992,7 +16984,7 @@ msgstr "Wachtwoord verbergen" msgid "Hide picture-in-picture popout?" msgstr "Beeld-in-beeld-pop-out verbergen?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Voorbeeldminiatuur verbergen" @@ -17386,7 +17378,7 @@ msgstr "Als je wilt dat deze leden toegang hebben tot eerdere berichten die na e #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Negeren" @@ -17395,11 +17387,11 @@ msgstr "Negeren" msgid "Ignore friend request" msgstr "Vriendschapsverzoek negeren" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Hardwareapparaten negeren" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Invoermedia negeren" @@ -17430,7 +17422,7 @@ msgstr "Vriendschapsverzoek van {displayName} negeren?" msgid "Ignore this channel's slowmode cooldown." msgstr "Negeer de wachttijd van slowmodus in dit kanaal." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Virtuele audio negeren" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Afbeelding" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Afbeeldingsbestanden" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Afbeelding gekopieerd naar klembord" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Afbeeldingsopties" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Afbeeldingsvoorbeeld" @@ -17540,7 +17532,7 @@ msgstr "Afbeelding uploaden" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "In spraakchat" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "In spraakchat" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Alles behalve geselecteerde opnemen" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Apps opnemen" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Invoer en uitvoer" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Invoerapparaat" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Invoerprofiel: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Invoerinstellingen" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Toestanden van invoervelden" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Invoervolume" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Uitnodigingslink is verborgen tijdens delen:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Uitnodigingslink gemaskeerd tijdens delen" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Ga naar {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Ga naar {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Ga naar het huidige gesprek" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Ga naar het gekoppelde kanaal" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Ga naar het gelinkte bericht" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Ga naar het bericht van {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Ga naar het bericht in {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Lay-out" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Meer informatie over voorbeelden van schermdeling" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Linkstijl" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link niet beschikbaar" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux-app" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Standaard van Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Thema laden..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Laden..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS-app" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Standaard van macOS" @@ -20289,7 +20281,7 @@ msgstr "Volgend nummer" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Mediaopties" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Afspelen/pauzeren" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Mediavoorbeeld" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Berichtweergave" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "berichtlink" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Microfoontest" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Audio van je microfoon, camerabeelden en gedeelde scherminhoud zijn van begin tot eind versleuteld." @@ -21019,7 +21011,7 @@ msgstr "Minderjarigen in gevaar, inhoud voor volwassenen op de verkeerde plek of #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Verkeerd gespelde woorden" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobiel apparaat" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Alles dempen" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Alle apparaten dempen" @@ -21653,13 +21645,13 @@ msgstr "Gedempt" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Microfoon gedempt" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Gedempt door moderators" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Geen {sendMessagesPermission}-machtiging" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Geen toegang" @@ -22282,7 +22274,7 @@ msgstr "Geen geavanceerde instellingen gevonden" msgid "No AFK channel" msgstr "Geen AFK-kanaal" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Geen appvensters gevonden" @@ -22300,6 +22292,11 @@ msgstr "Nog geen bestanden" msgid "No audio" msgstr "Geen audio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Geen audio van dit apparaat" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Geen geautoriseerde apps" @@ -22341,7 +22338,7 @@ msgstr "Geen opgeslagen berichten" msgid "No bot banner" msgstr "Geen botbanner" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Geen camera gevonden" @@ -22421,7 +22418,7 @@ msgstr "Geen beschrijving." msgid "No desktop update is available." msgstr "Geen desktopupdate beschikbaar." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Geen schermen gevonden" @@ -22650,7 +22647,7 @@ msgstr "Geen inhoud van antwoord ontvangen" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Geen resultaten" @@ -22679,7 +22676,7 @@ msgstr "Nog geen rollen. Voeg rollen toe via {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Geen opgeslagen media" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Ruispoort" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Ruisonderdrukking" @@ -22877,7 +22874,7 @@ msgstr "Niet converteren" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Geen" @@ -23286,7 +23283,7 @@ msgstr "Alleen van toepassing op brede schermen." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Alleen creditcards worden geaccepteerd. Betaalpassen en prepaidkaarten kunnen niet worden gebruikt voor de controle voor inhoud voor volwassenen." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Alleen standaardluidsprekers" @@ -23334,7 +23331,7 @@ msgstr "Voer hier alleen code uit als je precies begrijpt wat het doet." msgid "Only show message previews for DMs with unread messages" msgstr "Toon alleen berichtvoorbeelden voor DM's met ongelezen berichten" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Alleen luidsprekers" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Open {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Open {labelText} in instellingen" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Open @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Ga naar de geavanceerde mediainstellingen" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Open een appvenster en probeer het opnieuw." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Geanimeerde GIF openen in grote weergave" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Geanimeerde GIF-video openen in grote weergave" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Audio openen in grote weergave" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Audiolink openen" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Browser openen" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Browserkiezer openen" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Favorietenmenu openen" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Bestandslink openen" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "GIF-link openen" @@ -23651,7 +23648,7 @@ msgstr "Afbeelding openen in browser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Afbeelding openen in grote weergave" @@ -23660,7 +23657,7 @@ msgstr "Afbeelding openen in grote weergave" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Afbeeldingslink openen" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Systeem-DM openen" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Systeemkiezer openen" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Video openen in grote weergave" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Videolink openen" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Spraakchat openen" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Audio- en video-instellingen openen" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Uitvoer" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Uitvoerapparaat" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Uitvoerinstellingen" @@ -24094,7 +24091,7 @@ msgstr "Uitvoerinstellingen" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Uitvoervolume" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Deelnemerslimiet" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Deelnemeropties voor {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Voorbeeld verborgen" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Voorbeeldafbeeldingen worden tijdelijk door {productName} opgeslagen voor verzending en zijn niet van begin tot eind versleuteld. Schakel voorbeelden uit als je niet wilt dat beelden van je gedeelde scherm worden geüpload voor miniaturen." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Voorbeeldafbeeldingen worden tijdelijk door {productName} opgeslagen voor verzending en zijn niet van begin tot eind versleuteld. Mensen in deze groeps-DM hoeven je stream niet actief te bekijken om de miniatuur te zien." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Voorbeeldafbeeldingen worden tijdelijk door {productName} opgeslagen voor verzending en zijn niet van begin tot eind versleuteld. Gebruikers hebben nog steeds toestemming nodig om verbinding te maken, maar hoeven je stream niet actief te bekijken." @@ -26269,7 +26266,7 @@ msgstr "Referentie gekopieerd." msgid "Referral parameters" msgstr "Verwijzingsparameters" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Audiobronnen vernieuwen" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Normale knop aangeklikt." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Weigeren" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Uit groep verwijderen" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Verwijderen uit opgeslagen media" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Niet meer altijd bovenaan" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Verwijderen uit URL-gebaseerde GIF-favorieten" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Verbanning van {0} opgeheven" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} seconden terugspoelen" @@ -28202,7 +28199,7 @@ msgstr "Pictogram opslaan" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Sla media van berichten op om te beginnen!" @@ -28313,7 +28310,7 @@ msgstr "Toestemming voor schermopname vereist" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Scherm delen" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Audioversterking bij schermdelen" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Audio bij schermdelen kon niet worden gestart" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Encoderinstellingen voor schermdelen" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Schermdeling beëindigd" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Gedrag van voorbeelden bij schermdelen" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Voorbeeldweergaven voor scherm delen" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Voorbeelden bij schermdelen zijn uitgeschakeld." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Voorbeelden bij schermdelen zijn ingeschakeld." @@ -28391,13 +28388,13 @@ msgstr "Privacy scherm delen" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Kwaliteit scherm delen" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Instellingen voor scherm delen" @@ -28723,7 +28720,7 @@ msgstr "Zoek rollen of leden…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Opgeslagen media zoeken" @@ -28942,12 +28939,12 @@ msgstr "Voorbeeld bij spoelen" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Selecteren" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Selecteer {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Herstelkoppeling verzenden" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Opgeslagen media-item {memeName} verzenden" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Een positie in de ledenlijst ingesteld voor de rol" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Instellen door de {preset} preset. Als je hier een waarde kiest, schakelt dit over naar Aangepast." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Stel aangepaste volumes in voor individuele geluiden. Geluiden zonder een eigen volume volgen het hoofdvolume." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Sneltoets voor geluid uitschakelen instellen" @@ -29669,11 +29666,6 @@ msgstr "Stel deze controle uit" msgid "Set this check aside?" msgstr "Deze controle uitstellen?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Verzenden ingesteld op {resolution} met {frameRate} FPS en {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Instellingen" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "instellingenlink" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Cadeau delen" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Scherm delen" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Delen met communitymoderators." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Deel je scherm" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Deel je scherm in hoge definitie (1080p), quad HD (1440p) of de oorspronkelijke bronresolutie, met maximaal 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Gedeeld venster" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio van gedeeld venster" @@ -30624,6 +30616,10 @@ msgstr "Stille oproepen" msgid "Silent calls from everyone" msgstr "Stille oproepen van iedereen" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Stil wanneer het opnameapparaat geen eigen audio-invoer heeft" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Vloeiend scrollen" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Vloeiendere video" @@ -31005,11 +31001,6 @@ msgstr "Sommige emoji's konden niet worden toegevoegd" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Sommige bestanden die je probeert te uploaden, zijn groter dan de maximale limiet van {maxSizeFormatted} per bestand." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Sommige streaminstellingen konden niet worden toegepast op je live stream." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Geluiden" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Bron" @@ -31569,7 +31560,7 @@ msgstr "Spraakoproep starten?" msgid "Start call" msgstr "Oproep starten" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Start cameratest en configureer effecten" @@ -31910,7 +31901,7 @@ msgstr "Voorlezen stoppen" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Stoppen met streamen" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Alle links niet meer vertrouwen?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Stoppen met kijken" @@ -31982,7 +31973,7 @@ msgstr "Voorkomt dat het geluid uit je luidsprekers weer door je microfoon wordt #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31992,6 @@ msgstr "Stream beëindigd" msgid "Stream hidden" msgstr "Stream verborgen" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Stream loopt achter" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Streamkwaliteit" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Streaminstellingen" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Streaminstellingen zijn aangepast" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Systeemaankondigingen van {productName}-medewerkers. Je kunt hier niet a #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Systeemstandaard" @@ -33036,13 +33017,8 @@ msgstr "De bot is toegevoegd aan <0>{destinationName}." msgid "The bot has been added." msgstr "De bot is toegevoegd." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "De browser stuurt {deliveredResolution} in plaats van {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Het cameravoorbeeld wordt nog gestopt. Probeer zo meteen opnieuw te streamen." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "De rol verleende {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "De bron van het gedeelde scherm verstuurde geen video meer. Daarom is het schermdelen gestopt." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Deze browserconsole is een ontwikkelaarstool." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Dit gesprek is end-to-end versleuteld." @@ -33645,11 +33621,6 @@ msgstr "Deze computerapp kan geen updates binnen {productName} installeren. Down msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Deze ontwikkelversie kan zichzelf niet bijwerken. Download een installatieprogramma voor de computer om het updateproces te controleren." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Dit apparaat kon de vorige keer niet meekomen met {targetResolution} op {targetFrameRate} FPS, dus je stream begon op {resolution} op {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Deze installatie wordt beheerd door je systeem. Werk {productName} bij via je softwarecentrum of pakketbeheerder." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Deze instantie staat momenteel schermdelen tot 720p met 30 FPS toe." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Dit linkkanaal is gemarkeerd voor inhoud voor volwassenen en kan materiaal openen dat ongeschikt is voor sommige gebruikers." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Deze link is niet beschikbaar voor je account." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Deze optie is vereist. Geef een waarde op." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Deze deelnemer kan niet spreken in dit kanaal" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Deze deelnemer heeft het geluid uitgeschakeld" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Moderators hebben het geluid voor deze deelnemer uitgeschakeld" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Dit telefoonnummer is al gebruikt. Probeer een ander nummer of neem contact op met support." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Deze kiezer is alleen beschikbaar in de computerapp." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Bedieningselementen tonen/verbergen" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Geluid in- of uitschakelen" @@ -34666,7 +34637,7 @@ msgstr "Wijzigingen aan het pictogram in het systeemvak worden op Linux pas na e #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Trending GIF's" @@ -34760,7 +34731,7 @@ msgstr "Probeer een andere zoekopdracht." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Probeer een andere zoekterm of filter" @@ -34839,11 +34810,6 @@ msgstr "Probeer andere filters of zoektermen." msgid "Try editing your message again." msgstr "Probeer je bericht opnieuw te bewerken." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Probeer opnieuw volledige kwaliteit" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Probeer te zoeken naar iets als \"thema\", \"meldingen\" of \"privacy\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Schakel alles uit waar je je niet prettig bij voelt. Sommige functies werken dan mogelijk niet meer." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Schakel het delen van audio voor deze bron uit of probeer het zo meteen opnieuw." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Automatisch inschakelen wanneer OBS of XSplit wordt gedetecteerd" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Camera inschakelen" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Oninbaar" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Geluid inschakelen" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Geluid op alle apparaten inschakelen" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Je geluid inschakelen" @@ -35558,7 +35524,7 @@ msgstr "onbekende gebruiker" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Onbekende gebruiker" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Ontgrendel aangepaste emoji's in DM's met {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Ontgrendel schermdelen in HD met {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Dempen opheffen voor {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Dempen op alle apparaten opheffen" @@ -35741,7 +35707,7 @@ msgstr "Naamloze groep" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Naamloze invoer" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Nieuwe emoji en stickers uploaden en je eigen creaties beheren." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Upload voorbeeldbeelden voor schermdeling." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL gekopieerd naar klembord" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Gebruikerstag (optioneel)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volume van gebruiker" @@ -37227,7 +37193,7 @@ msgstr "Videopakketverlies:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Videovoorbeeld" @@ -37283,7 +37249,7 @@ msgstr "Video uploaden" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Audio en video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Audio- en video-instellingen" @@ -37685,7 +37651,7 @@ msgstr "Sneltoetsen voor spraak en video" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Spraakoproep" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Foutopsporing spraakverbinding" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Geluid uitschakelen" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Spraakbericht" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Speler voor spraakbericht" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Spraakinstellingen" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Geluid inschakelen" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Even wachten" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Wachten op verbinding..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Wanneer als links in chats geplaatst" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Als voorbeelden zijn ingeschakeld, uploadt {productName} af en toe JPEG-beelden van je gedeelde scherm. Zo kunnen anderen in deze groeps-DM een miniatuur zien voordat ze gaan kijken." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Als voorbeelden zijn ingeschakeld, uploadt {productName} af en toe JPEG-beelden van je gedeelde scherm. Zo kunnen mensen die verbinding mogen maken met dit spraakkanaal een miniatuur zien voordat ze gaan kijken." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Als voorbeelden zijn ingeschakeld, uploadt {productName} af en toe JPEG-beelden van je gedeelde scherm. Zo kan de andere persoon in deze DM een miniatuur zien voordat die gaat kijken." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Vensters die aan de boven- of onderkant buiten het scherm vallen en vastgezette DevTools kunnen een grijze achtergrond krijgen in plaats van transparant te blijven." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Standaardapparaat van Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Je bent verbannen uit deze community en kunt niet deelnemen." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Je hebt het geluid uitgeschakeld" @@ -38833,11 +38799,6 @@ msgstr "Je gebruikt een {releaseChannel}-build van {productName}." msgid "You aren't in any communities right now." msgstr "Je zit momenteel in geen enkele community." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Je vroeg om {resolution} met {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Je kunt geen berichten verzenden in deze community." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Je kunt je scherm niet delen in dit kanaal" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Je kunt niet spreken in dit kanaal" @@ -39036,7 +38997,7 @@ msgstr "Je kunt niet spreken in dit kanaal" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Je kunt je camera niet aanzetten in dit kanaal" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Je hebt je tag gewijzigd terwijl je {PREMIUM_PRODUCT_NAME} had. Deze wordt willekeurig opnieuw ingesteld wanneer je {PREMIUM_PRODUCT_NAME} verloopt, tenzij het wordt verlengd." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Je hebt geen toegang tot het kanaal waar dit bericht is verzonden." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Je blijft in {ownedNames}. Eigenaren kunnen hun eigen community niet verlaten." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderators hebben je geluid uitgeschakeld" @@ -39699,11 +39660,6 @@ msgstr "Je aanvraag wacht op beoordeling. Je kunt de gegevens van je vermelding msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Je browser vereist interactie voordat audio kan worden afgespeeld. Klik op de knop hieronder om spraakchat in te schakelen." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Je capture-apparaat stuurt {deliveredResolution} in plaats van {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Je kaart wordt gecontroleerd voor lokale prijzen. Dit duurt meestal even." @@ -39734,36 +39690,11 @@ msgstr "Je community staat in Ontdekken. Je kunt je vermelding hieronder bijwerk msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Je community heeft minimaal {minMemberCount, plural, one {# lid} other {# leden}} nodig om in Ontdekken te kunnen worden vermeld." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Je verbinding kan het niet bijbenen. Je stream is ingesteld op {frameRate} FPS op {resolution} en kijkers ontvangen ongeveer {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Je creditcard is gecontroleerd. Als de kaart geldig is, wordt inhoud voor volwassenen binnenkort ontgrendeld. Je kunt dit tabblad sluiten en teruggaan naar de app." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Je apparaat kan het niet bijbenen. Je stream is ingesteld op {frameRate} FPS op {resolution} en kijkers krijgen ongeveer {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Uw apparaat kon het niet bijbenen, dus uw stream stuurt nu {frameRate} FPS om {resolution} scherp te houden." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Je apparaat kon het niet bijbenen, dus je stream stuurt nu {resolution} met {frameRate} FPS in plaats van {targetResolution} met {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Je apparaat kon het niet bijbenen, dus je stream stuurt nu {resolution} om {frameRate} FPS soepel te houden." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Je registratie heeft een extra antispamcontrole nodig voordat je verder kunt gaan." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Je opgeslagen {savedResolution} met {savedFrameRate} FPS vereist {premiumProductName}, dus delen gebruiken {resolution} met {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Je gedeelde scherm kon niet met een compatibele videocodec worden uitgezonden. Daarom is het schermdelen gestopt. Probeer je scherm opnieuw te delen." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Je bron produceert ongeveer {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Je stream is nog steeds live" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Je stream is overgeschakeld naar {codec} omdat {previousCodec} niet kon bijblijven op dit apparaat. Kijkers kunnen een korte onderbreking zien." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Je aangepaste URL is ingesteld op {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Je video-encoder is gestopt met het coderen van frames. Daarom is het schermdelen gestopt. Probeer je scherm opnieuw te delen." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Je videocodec is gestopt, dus je stream is overgeschakeld naar {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/no/messages.po b/fluxer_app/src/features/i18n/locales/no/messages.po index 931039153..b5860f1e1 100644 --- a/fluxer_app/src/features/i18n/locales/no/messages.po +++ b/fluxer_app/src/features/i18n/locales/no/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} vil koble til" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} vil bruke denne kontoen til denne autorisasjonen." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} klarer ikke å holde tritt på denne enheten. Sett kodeken til Automatisk i Avanserte innstillinger for å tillate en raskere." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} er for øyeblikket kun tilgjengelig for ansatte i {produ msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Ingen grense} one {# deltaker} other {# deltakere}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# linje igjen)} other {... (# linjer igjen)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# rad igjen)} other {... (# rader igjen)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Vis (# linje)} other {Vis (# linjer)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Vis flere (# rad)} other {Vis flere (# rader)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Vis # annen enhet} other {Vis # andre enheter}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {I samtale} other {# i samtale}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Bli med i videosamtale (# deltaker)} other {Bli med i videosamtale (# deltakere)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Fortsett å se # strøm og legg til denne} other {Fortsett å se # strømmer og legg til denne}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Invitasjonslenken din utløper om # dag.} other {Invitasjonslenken din utløper om # dager.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} timer" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} bilder/sek" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# overstyring} other {# overstyringer}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} sjekker først at kortet ditt oppfyller kravene for lokale priser, og tar deg deretter til betalingen. Gå tilbake til {productName} når du har fullført den." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} er ikke tilgjengelig på denne enheten, så strømmen din bruker {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} trenger tilgang til mikrofonen din. Gi mikrofontilgang i operativsystemets personverninnstillinger, og start appen på nytt." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} trenger tilgang til kameraet for å vise enhetene dine." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} pålogget" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "en URL skrevet i meldingsteksten" msgid "a user" msgstr "en bruker" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "En seer kan ikke spille av {pinnedCodec}, så strømmen din bruker {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Godta" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Svar" @@ -3178,12 +3163,12 @@ msgstr "Legg til i gruppe" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Legg til i lagrede medier" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Legg til i URL-baserte GIF-favoritter" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avansert" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Avanserte videoinnstillinger" @@ -3451,7 +3436,7 @@ msgstr "Kontroller for bildeplassering er bare tilgjengelige på bredere skjerme #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Tillat" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Tillat {everyoneMention} og {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Tillat {PRODUCT_NAME} å få tilgang til kameraet ditt i {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Tillat direktemeldinger fra boter" msgid "Allow bots to send you direct messages?" msgstr "Tillat at boter sender deg direktemeldinger?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Tillat kameratilgang" @@ -4014,13 +3999,13 @@ msgstr "Du styrer animerte emojier, GIF-er og klistremerker i fanen Animasjon." #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animert GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animert GIF-video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animerte ikoner krever fellesskapsfunksjonen {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animert bilde" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Forhåndsvisning av animert bilde" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Opplasting av animerte filer krever et {premiumProductName}-abonnement." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animert video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Apptilstand" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Appvindu" @@ -4361,7 +4346,7 @@ msgstr "Appen er oppdatert" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Apper" @@ -4586,7 +4571,7 @@ msgstr "vedlegg" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Vedlegg {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Vedlegg utløpt" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Vedlegget er utløpt eller utilgjengelig" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Vedleggs-ID kopiert til utklippstavlen" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Lydnivå" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Lyd dempet" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Pakketap for lyd:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Lydavspiller" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Forhåndsvisning av lyd" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Lydbehandling (fokusert tale)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Lydfremdrift" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Lydinnstillinger" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Lydkilder: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatisk ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatisk forsterkningskontroll" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Nettleser: tilbake" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Nettleserstandard" @@ -6198,20 +6183,20 @@ msgstr "Anrop" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Kameratilgang er nødvendig for forhåndsvisning av enheter" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Kameratilgang ble ikke gitt. Oppdater kameratillatelsene og prøv igjen." @@ -6276,13 +6261,13 @@ msgstr "Forhåndsvisning av kamera" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kamerakvalitet" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kamerainnstillinger" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha-verifisering mislyktes. Prøv igjen." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Ta opp" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Ta opp applyd" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Ta opp systemlyd" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Ta opp enhetslyd" @@ -6736,12 +6721,12 @@ msgstr "Endring planlagt" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Bytt strømmekilde" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Endre strømmekilde" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Kanaltilgang" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Ingen tilgang til kanal" @@ -7097,7 +7082,7 @@ msgstr "Kanal-ID kopiert til utklippstavlen" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "kanallenke" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Velg betalingsmåte" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Velg noe å dele" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Tøm listen over klarerte domener ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Klarere tekst" @@ -8285,7 +8270,7 @@ msgstr "Skjul kanaltema" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Skjul enheter" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Fellesskapets skaper" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Slå av lyden i fellesskapet" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Varsellinje for fellesskapets MFA-krav" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Demp mikrofonen i fellesskapet" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Konfigurer nå" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Konfigurer eller avslutt skjermdeling" @@ -8904,7 +8889,7 @@ msgstr "Bekreftelse eller dobbeltklikk for å bli med i talekanaler i fellesskap msgid "Conflicts with {conflictLabel}" msgstr "I konflikt med {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Koble til et kamera og prøv igjen." @@ -8913,7 +8898,7 @@ msgstr "Koble til et kamera og prøv igjen." msgid "Connect a camera or virtual capture device, then try again." msgstr "Koble til et kamera eller en virtuell opptaksenhet, og prøv deretter på nytt." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Koble til en skjerm, og prøv igjen." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Volumkontroller for tilkobling" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Tilkobling: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistikk-JSON kopiert til utklippstavlen" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Kopiert til utklippstavlen" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopier vedleggs-ID" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopier lyd" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopier lydlenke" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopier endepunkt" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopier fillenke" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopier GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopier GIF-lenke" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopier identifikator" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopier bilde" @@ -9448,7 +9433,7 @@ msgstr "Kopier bilde" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopier bildelenke" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Kopier lenke til seksjonen" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopier medieinnhold" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopier verdi" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopier video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopier videolenke" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopier webhook-URL" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopierer bilde …" @@ -10588,7 +10573,7 @@ msgstr "Nå: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Egendefinert" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Deaktiver" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Slå av lyden" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Slå av lyden på alle enheter" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Slå av lyden på enheten" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Slå av lyden for andre medlemmer i talekanaler, slik at de verken kan høre eller snakke." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Snarvei for å slå av lyden" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Slå av lyden for deg selv" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Lyden er slått av" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Moderatorene har slått av lyden" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Standard" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Standardkamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Slette :{emojiName}:? Kan ikke angres." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Slette «{memeName}»? Kan ikke angres." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Slett invitasjon" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Slett medier" @@ -11466,8 +11451,8 @@ msgstr "Slett rolle" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Slett lagrede medier" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Borte (datamaskin)" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Datamaskin" @@ -11849,13 +11834,13 @@ msgstr "Utviklerstatus" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Utviklerverktøy" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Utviklerverktøy er tilgjengelige via ansattmerket øverst i kanalen." @@ -11879,6 +11864,17 @@ msgstr "Enhet" msgid "Device alerts" msgstr "Enhetsvarsler" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Lydenhet ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Kun lyden fra enheten" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Enhetsdetaljer" @@ -11888,7 +11884,7 @@ msgstr "Enhetsdetaljer" msgid "Device revoked" msgstr "Enhet tilbakekalt" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Enhetsvalg" @@ -11912,7 +11908,7 @@ msgstr "Enhet:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Enheter" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Demp gjennomstreket tekst" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Direkte inndata" @@ -12020,7 +12016,7 @@ msgstr "Direkteopplasting aktiv" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Deaktiver" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Deaktivert verdi" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Hvis du deaktiverer forhåndsvisninger, vil ikke nye forhåndsvisningsopplastinger bli gjort. Eksisterende forhåndsvisningsbilder kan fortsatt være synlige til strømmen avsluttes eller forhåndsvisningen oppdateres." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Forkast talemelding" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Koble fra" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Koble fra alle enheter" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Koble fra enhet" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Visning" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Skjerm" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification og legg den i <1>.well-known-mappen din, slik at vi kan validere domenet." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Last ned lyd" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Last ned oppdatering {version} til skrivebordsappen ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Last ned fil" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Last ned fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Last ned GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Last ned bilde" @@ -12714,7 +12710,7 @@ msgstr "Last ned installasjonsprogram" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Last ned medier" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Last ned pakke" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Last ned video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Ekko" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Ekkodemping" @@ -12963,7 +12959,7 @@ msgstr "Rediger tilgang for {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Rediger alt-tekst" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Rediger tastatursnarvei" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Rediger medier" @@ -13102,8 +13098,8 @@ msgstr "Rediger søkemotor for omvendt bildesøk" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Rediger lagrede medier" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Aktiver nettleservarsler" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Aktiver kameratilgang for å forhåndsvise kameraer og opptaksenheter før du velger hvilken du vil strømme fra." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Aktiver eller deaktiver innebygde oversettere. Aktiverte oversettere vises i kontekstmenyen for meldinger når tekst er markert." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Aktiver forhåndsvisninger" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Avslutt skjermdeling" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Ende-til-ende-kryptering er utilgjengelig fordi en deltaker som ikke støttes, er med i samtalen." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Ende-til-ende-kryptering er utilgjengelig fordi en deltaker som ikke støttes, er i denne talekanalen." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Underholdning" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Hele skjermen" @@ -14095,7 +14091,7 @@ msgstr "Hele skjermen" msgid "Entire system" msgstr "Hele systemet" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "All systemlyd" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "utelat en bruker" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Utelat fra systemlyden" @@ -14593,7 +14589,7 @@ msgstr "Kunne ikke kopiere invitasjonslenke" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Klarte ikke å kopiere til utklippstavlen" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Kunne ikke laste inn invitasjoner. Prøv igjen." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Kunne ikke laste inn delbare kilder." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Fokuser vindu" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Tale i fokus" @@ -15322,10 +15318,6 @@ msgstr "Mappeinnstillinger" msgid "Follow us on {blueskyProviderName}" msgstr "Følg oss på {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Bruk samme mikrofon som for tale" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Videresend" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Spol fremover {defaultSeekAmount} sekunder" @@ -15592,14 +15584,14 @@ msgstr "Ramme" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Bildefrekvens" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Bildefrekvenser over 30 FPS krever {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Kontroller Y / Trekant" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Spill" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF-velgeren lastes inn" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Forhåndsvisning av GIF" @@ -16429,7 +16421,7 @@ msgstr "Ga {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Gir alle tillatelser og omgår kanalbegrensninger. Svært sensitivt." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Detaljert utvalg" @@ -16992,7 +16984,7 @@ msgstr "Skjul passord" msgid "Hide picture-in-picture popout?" msgstr "Skjule bilde-i-bilde-vinduet?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Skjul miniatyrbilde" @@ -17386,7 +17378,7 @@ msgstr "Hvis du vil at disse medlemmene skal få tilgang til tidligere meldinger #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorer" @@ -17395,11 +17387,11 @@ msgstr "Ignorer" msgid "Ignore friend request" msgstr "Ignorer venneforespørsel" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorer maskinvareenheter" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorer medieinndata" @@ -17430,7 +17422,7 @@ msgstr "Ignorere venneforespørselen fra {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorer ventetiden for sakte modus i denne kanalen." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorer virtuelle enheter" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Bilde" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Bildeelementer" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Bilde kopiert til utklippstavlen" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Bildealternativer" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Forhåndsvisning av bilde" @@ -17540,7 +17532,7 @@ msgstr "Bildeopplasting" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "I talechat" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "I talechat" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Inkluder alle unntatt valgte" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Inkluder apper" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Lyd inn og ut" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Inndataenhet" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Inndataprofil: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Inndatainnstillinger" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Tilstander for inndatafelt" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Inndatavolum" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Invitasjonslenken er skjult under deling:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Invitasjonslenke maskert under deling" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Hopp til {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Gå til {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Gå til den pågående samtalen" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Gå til den lenkede kanalen" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Gå til den lenkede meldingen" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Gå til meldingen fra {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Gå til meldingen i {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Oppsett" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Lær mer om skjermdelingsforhåndsvisninger" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Lenkestil" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Lenken er utilgjengelig" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux-app" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux – standard" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Laster inn tema …" #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Laster inn …" @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS-app" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS – standard" @@ -20289,7 +20281,7 @@ msgstr "Neste spor" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Alternativer for medier" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Spill av/pause" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Forhåndsvisning av medier" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Meldingsoppsett" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "meldingslenke" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofontest" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Innhold fra mikrofon, kamera og skjermdeling er ende-til-ende-kryptert." @@ -21019,7 +21011,7 @@ msgstr "Mindreårige i fare, voksent innhold på feil sted eller uønsket oppfø #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Feilstavede ord" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobil enhet" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Demp alle" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Demp mikrofonen på alle enheter" @@ -21653,13 +21645,13 @@ msgstr "Dempet" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofonen er dempet" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Dempet av moderatorer" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Mangler tillatelsen «{sendMessagesPermission}»" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Ingen tilgang" @@ -22282,7 +22274,7 @@ msgstr "Ingen avanserte innstillinger funnet" msgid "No AFK channel" msgstr "Ingen AFK-kanal" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Ingen programvinduer funnet" @@ -22300,6 +22292,11 @@ msgstr "Ingen ressurser ennå" msgid "No audio" msgstr "Ingen lyd" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Ingen lyd fra denne enheten" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Ingen autoriserte apper" @@ -22341,7 +22338,7 @@ msgstr "Ingen lagrede meldinger" msgid "No bot banner" msgstr "Ingen botbanner" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Finner ikke kamera" @@ -22421,7 +22418,7 @@ msgstr "Ingen beskrivelse." msgid "No desktop update is available." msgstr "Ingen oppdatering av skrivebordsappen er tilgjengelig." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Ingen skjermer funnet" @@ -22650,7 +22647,7 @@ msgstr "Ingen svartekst mottatt" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Ingen resultater" @@ -22679,7 +22676,7 @@ msgstr "Ingen roller ennå. Legg til roller i {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Ingen lagrede medier" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Støyport" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Støyreduksjon" @@ -22877,7 +22874,7 @@ msgstr "Ingen konvertering" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Ingen" @@ -23286,7 +23283,7 @@ msgstr "Gjelder bare på brede skjermer." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Bare kredittkort godtas. Debetkort og forhåndsbetalte kort kan ikke brukes til kontrollen for vokseninnhold." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Kun standardhøyttalere" @@ -23334,7 +23331,7 @@ msgstr "Kjør bare kode her hvis du forstår nøyaktig hva den gjør." msgid "Only show message previews for DMs with unread messages" msgstr "Vis bare forhåndsvisninger for direktemeldingssamtaler med uleste meldinger" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Kun høyttalere" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Åpne {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Åpne {labelText} i innstillinger" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Åpne @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Åpne avanserte medieinnstillinger" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Åpne et programvindu, og prøv igjen." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Åpne animert GIF i medieviseren" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Åpne animert GIF-video i medieviseren" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Åpne lyd i medieviseren" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Åpne lydlenke" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Åpne nettleser" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Åpne nettleservelger" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Åpne favorittmenyen" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Åpne fillenke" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Åpne GIF-lenke" @@ -23651,7 +23648,7 @@ msgstr "Åpne bilde i nettleser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Åpne bilde i medieviseren" @@ -23660,7 +23657,7 @@ msgstr "Åpne bilde i medieviseren" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Åpne bildelenke" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Åpne systemsamtalen" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Åpne systemvelger" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Åpne video i medieviseren" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Åpne videolenke" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Åpne talechat" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Åpne innstillinger for tale og video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Utdata" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Utdataenhet" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Utgangsinnstillinger" @@ -24094,7 +24091,7 @@ msgstr "Utgangsinnstillinger" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Utgangsvolum" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Deltakergrense" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Alternativer for {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Forhåndsvisning skjult" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Forhåndsvisningsbilder lagres midlertidig av {productName} for å kunne vises, og er ikke ende-til-ende-kryptert. Deaktiver forhåndsvisninger hvis du ikke ønsker at skjermdelingsbilder skal lastes opp for å lage miniatyrbilder." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Forhåndsvisningsbilder lagres midlertidig av {productName} for å kunne vises, og er ikke ende-til-ende-kryptert. Personer i denne gruppechatten trenger ikke å se aktivt på strømmen din for å se miniatyrbildet." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Forhåndsvisningsbilder lagres midlertidig av {productName} for visning og er ikke ende-til-ende-kryptert. Folk trenger fortsatt tillatelse til å koble seg til, men de trenger ikke aktivt å se på strømmen din." @@ -26269,7 +26266,7 @@ msgstr "Referanse kopiert." msgid "Referral parameters" msgstr "Henvisningsparametere" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Oppdater lydkilder" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Den vanlige knappen ble klikket på." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Avvis" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Fjern fra gruppe" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Fjern fra lagrede medier" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Slutt å vise øverst" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Fjern fra URL-baserte GIF-favoritter" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Opphevet utestengelse for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Spol {defaultSeekAmount} sekunder tilbake" @@ -28202,7 +28199,7 @@ msgstr "Lagre ikon" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Lagre noe medieinnhold fra meldinger for å komme i gang!" @@ -28313,7 +28310,7 @@ msgstr "Tilgang til skjermopptak kreves" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Skjermdeling" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Lydforsterkning for skjermdeling" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Lyd for skjermdeling kunne ikke starte" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Kontroller for skjermdelingskoding" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Skjermdelingen ble avsluttet" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Innstillinger for forhåndsvisning av skjermdeling" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Forhåndsvisninger av skjermdeling" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Forhåndsvisninger av skjermdeling er deaktivert." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Forhåndsvisninger av skjermdeling er aktivert." @@ -28391,13 +28388,13 @@ msgstr "Personvern for skjermdeling" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Skjermdelingskvalitet" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Innstillinger for skjermdeling" @@ -28723,7 +28720,7 @@ msgstr "Søk etter roller eller medlemmer …" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Søk i lagrede medier" @@ -28942,12 +28939,12 @@ msgstr "Forhåndsvisning ved spoling" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Velg" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Velg {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Send tilbakestillingslenke" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Send det lagrede medieelementet {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Satte en medlemslisteposisjon for rollen" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Angitt av {preset}-forhåndsinnstillingen. Å velge en verdi her bytter til Egendefinert." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Angi egendefinerte volumer for individuelle lyder. Lyder uten en overstyring følger hovedvolumet." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Angi snarvei for å slå lyden av eller på" @@ -29669,11 +29666,6 @@ msgstr "Sett denne sjekken til side" msgid "Set this check aside?" msgstr "Legg denne sjekken til side?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Sendt til {resolution} med {frameRate} FPS og {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Innstillinger" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "innstillingslenke" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Del gave" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Del skjerm" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Del med fellesskapsmoderatorer." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Del skjermen din" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Del skjermen din i HD (1080p), Quad HD (1440p) eller original oppløsning, med opptil 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Delt vindu" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Lyd fra delt vindu" @@ -30624,6 +30616,10 @@ msgstr "Stille anrop" msgid "Silent calls from everyone" msgstr "Stille anrop fra alle" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Stille når opptaksenheten ikke har egen lydinngang" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Jevn rulling" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Jevnere video" @@ -31005,11 +31001,6 @@ msgstr "Noen emojier kunne ikke legges til" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Noen filer du prøver å laste opp, overskrider den maksimale størrelsesgrensen på {maxSizeFormatted} per fil." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Noen strøm-innstillinger kunne ikke brukes på din direktesending." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Lyder" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Kilde" @@ -31569,7 +31560,7 @@ msgstr "Starte et taleanrop?" msgid "Start call" msgstr "Start samtale" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Start kameratest og konfigurer effekter" @@ -31910,7 +31901,7 @@ msgstr "Stopp opplesningen" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Stopp strømming" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Slutte å stole på alle lenker?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Slutt å se" @@ -31982,7 +31973,7 @@ msgstr "Hindrer at lyden fra høyttalerne dine sendes tilbake til mikrofonen din #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Strøm" @@ -32001,11 +31992,6 @@ msgstr "Strømmen er avsluttet" msgid "Stream hidden" msgstr "Strøm skjult" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Strømmen henger ikke med" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Strømmekvalitet" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Strømmeinnstillinger" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Strøminnstillinger ble justert" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Systemkunngjøringer fra {productName}-ansatte. Du kan ikke svare her." #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Systemstandard" @@ -33036,13 +33017,8 @@ msgstr "Boten er lagt til i <0>{destinationName}." msgid "The bot has been added." msgstr "Boten er lagt til." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Nettleseren sender {deliveredResolution} i stedet for {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Kameraforhåndsvisningen holder fortsatt på å stoppe. Prøv å strømme igjen om et øyeblikk." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Rollen ga {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Kilden for skjermdelingen sluttet å sende video, så skjermdelingen ble stoppet." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Denne nettleserkonsollen er et utviklerverktøy." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Denne samtalen er ende-til-ende-kryptert." @@ -33645,11 +33621,6 @@ msgstr "Denne skrivebordsversjonen kan ikke installere oppdateringer i {productN msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Denne utviklingsversjonen kan ikke oppdatere seg selv. Last ned en installasjonspakke for skrivebordsappen for å prøve oppdateringsflyten." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Denne enheten klarte ikke å holde tritt med {targetResolution} med {targetFrameRate} FPS sist, så strømmen din startet på {resolution} med {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Denne installasjonen administreres av systemet ditt. Oppdater {productName} via programvaresenteret eller pakkebehandleren." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Denne instansen tillater for øyeblikket skjermdeling opptil 720p ved 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Denne lenkekanalen er merket for voksent innhold og kan åpne materiale som kan være upassende for enkelte brukere." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Denne lenken er ikke tilgjengelig for kontoen din." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Dette alternativet er påkrevd. Vennligst oppgi en verdi." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Denne deltakeren kan ikke snakke i denne kanalen" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Denne deltakeren har slått av lyden" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Moderatorene har slått av lyden for denne deltakeren" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Dette telefonnummeret har allerede vært brukt. Prøv et annet nummer eller kontakt kundestøtte." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Denne velgeren er bare tilgjengelig i skrivebordsappen." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Vis/skjul kontroller" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Slå lyden av eller på" @@ -34666,7 +34637,7 @@ msgstr "Endringer i ikonet i systemstatusfeltet trer først i kraft etter en oms #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Populære GIF-er" @@ -34760,7 +34731,7 @@ msgstr "Prøv et annet søk." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Prøv et annet søkeord eller filter" @@ -34839,11 +34810,6 @@ msgstr "Prøv andre filtre eller søkeord." msgid "Try editing your message again." msgstr "Prøv å redigere meldingen din på nytt." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Prøv full kvalitet igjen" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Prøv å søke etter for eksempel «tema», «varsler» eller «personvern»" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Slå av det du ikke er komfortabel med. Enkelte funksjoner slutter kanskje å virke." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Slå av lyddeling for denne kilden, eller prøv igjen om et øyeblikk." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Slå på automatisk når OBS eller XSplit oppdages" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Slå på kamera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Kan ikke innkreves" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Slå på lyden" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Slå på lyden på alle enheter" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Slå på lyden for deg selv" @@ -35558,7 +35524,7 @@ msgstr "ukjent bruker" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Ukjent bruker" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Lås opp egendefinerte emojier i direktemeldinger med {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Lås opp HD-skjermdeling med {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Slå på lyden for {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Slå på mikrofonen på alle enheter" @@ -35741,7 +35707,7 @@ msgstr "Gruppe uten navn" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Inndataenhet uten navn" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Last opp nye emojier og klistremerker, og administrer dine egne kreasjoner." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Last opp forhåndsvisningsbilder for skjermdeling." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL-en er kopiert til utklippstavlen" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Brukertagg (valgfritt)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Brukervolum" @@ -37227,7 +37193,7 @@ msgstr "Pakketap for video:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Forhåndsvisning av video" @@ -37283,7 +37249,7 @@ msgstr "Videoopplasting" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Tale og video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Innstillinger for tale og video" @@ -37685,7 +37651,7 @@ msgstr "Snarveier for tale og video" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Taleanrop" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Feilsøking av taletilkobling" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Lyden slått av" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Talemelding" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Avspiller for talemelding" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Taleinnstillinger" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Lyden slått på" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Vent her" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Venter på tilkobling …" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Når de legges ut som lenker i chatten" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Når forhåndsvisninger er aktivert, laster {productName} opp enkelte JPEG-bilder fra skjermdelingen din slik at andre i denne gruppechatten kan se et miniatyrbilde før de ser på." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Når forhåndsvisninger er aktivert, laster {productName} opp enkelte JPEG-bilder fra skjermdelingen din slik at folk med tillatelse til å koble seg til denne talekanalen kan se et miniatyrbilde før de ser på." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Når forhåndsvisninger er aktivert, laster {productName} opp enkelte JPEG-bilder fra skjermdelingen din slik at den andre personen i denne samtalen kan se et miniatyrbilde før de ser på." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Vinduer som går utenfor toppen eller bunnen av skjermen, og forankrede utviklerverktøy, kan få grå bakgrunn i stedet for å forbli gjennomsiktige." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows – standard" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Du er utestengt fra dette fellesskapet og kan ikke bli med." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Du har slått av lyden" @@ -38833,11 +38799,6 @@ msgstr "Du bruker en {releaseChannel}-versjon av {productName}." msgid "You aren't in any communities right now." msgstr "Du er ikke med i noen fellesskap for øyeblikket." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Du ba om {resolution} med {frameRate} bilder per sekund" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Du kan ikke sende meldinger i dette fellesskapet." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Du kan ikke dele skjermen din i denne kanalen" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Du kan ikke snakke i denne kanalen" @@ -39036,7 +38997,7 @@ msgstr "Du kan ikke snakke i denne kanalen" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Du kan ikke slå på kameraet ditt i denne kanalen" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Du endret taggen din mens du hadde {PREMIUM_PRODUCT_NAME}. Den byttes ut med en tilfeldig tagg når {PREMIUM_PRODUCT_NAME} utløper, med mindre {PREMIUM_PRODUCT_NAME} fornyes." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Du har ikke tilgang til kanalen meldingen ble sendt i." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Du blir værende i {ownedNames}. Eiere kan ikke forlate sitt eget fellesskap." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderatorene har slått av lyden for deg" @@ -39699,11 +39660,6 @@ msgstr "Søknaden din venter på gjennomgang. Du kan fortsatt oppdatere oppføri msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Nettleseren din krever brukerinteraksjon før lyd kan spilles av. Klikk på knappen nedenfor for å aktivere talechat." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Enheten din sender {deliveredResolution} i stedet for {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Kortet ditt sjekkes for lokale priser. Dette tar vanligvis et øyeblikk." @@ -39734,36 +39690,11 @@ msgstr "Fellesskapet ditt er oppført i Oppdag. Du kan oppdatere oppføringsdeta msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Fellesskapet ditt må ha minst {minMemberCount, plural, one {# medlem} other {# medlemmer}} før det kan oppføres i Oppdag." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Forbindelsen din klarer ikke å holde tritt. Strømmen din er satt til {frameRate} FPS i {resolution}, og seerne får omtrent {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Kredittkortet ditt er sjekket. Hvis kortet er gyldig, vil voksent innhold låses opp om kort tid. Du kan lukke denne fanen og gå tilbake til appen." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Enheten din klarer ikke å holde tritt. Strømmen din er satt til {frameRate} FPS i {resolution}, og seerne får omtrent {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Enheten din klarte ikke å holde tritt, så strømmen din sender nå {frameRate} FPS for å holde {resolution} skarp." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Enheten din klarte ikke å holde tritt, så strømmen din sender nå {resolution} med {frameRate} FPS i stedet for {targetResolution} med {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Enheten din klarte ikke å holde tritt, så strømmen din sender nå {resolution} for å holde {frameRate} FPS jevnt." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Registreringen din krever en ekstra antispam-sjekk før du kan fortsette." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Ditt lagrede {savedResolution} med {savedFrameRate} FPS krever {premiumProductName}, så delinger bruker {resolution} med {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Skjermdelingen din kunne ikke publiseres med en kompatibel videokodek, så den ble stoppet. Prøv å dele igjen." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Kilden din produserer omtrent {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Strømmen din er fortsatt aktiv" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Strømmen din ble byttet til {codec} fordi {previousCodec} ikke holdt tritt på denne enheten. Seere kan oppleve en kort pause." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Den egendefinerte URL-en er nå satt til {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Videokoderen din sluttet å kode bilder, så skjermdelingen ble stoppet. Prøv å dele igjen." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Videokoderen din stoppet, så strømmen din ble byttet til {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/pl/messages.po b/fluxer_app/src/features/i18n/locales/pl/messages.po index 3060ba060..a2be83fb7 100644 --- a/fluxer_app/src/features/i18n/locales/pl/messages.po +++ b/fluxer_app/src/features/i18n/locales/pl/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} chce się połączyć" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} użyje tego konta do autoryzacji." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} nie działa wystarczająco szybko na tym urządzeniu. Ustaw kodek na Automatyczny w ustawieniach Zaawansowane, aby umożliwić szybszy." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Społeczność {communityName} jest obecnie dostępna tylko dla członk msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Brak limitu} one {# uczestnik} few {# uczestników} many {# uczestników} other {# uczestnika}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (pozostała # linia)} few {... (pozostały # linie)} many {... (pozostało # linii)} other {... (pozostało # linii)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (pozostał # wiersz)} few {... (pozostały # wiersze)} many {... (pozostało # wierszy)} other {... (pozostało # wiersza)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Rozwiń (1 wiersz)} few {Rozwiń (# wiersze)} many msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Rozwiń (# wiersz)} few {Rozwiń (# wiersze)} many {Rozwiń (# wierszy)} other {Rozwiń (# wiersza)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Rozwiń # inne urządzenie} few {Rozwiń # inne urządzenia} many {Rozwiń # innych urządzeń} other {Rozwiń # innego urządzenia}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {W rozmowie} few {# w rozmowie} many {# w rozmowie} msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Dołącz do rozmowy wideo (# uczestnik)} few {Dołącz do rozmowy wideo (# uczestników)} many {Dołącz do rozmowy wideo (# uczestników)} other {Dołącz do rozmowy wideo (# uczestników)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "Kontynuuj oglądanie {count, plural, one {# transmisji} few {# transmisji} many {# transmisji} other {# transmisji}} i dodaj tę" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Twój link z zaproszeniem wygaśnie za # dzień.} few {Twój link z zaproszeniem wygaśnie za # dni.} many {Twój link z zaproszeniem wygaśnie za # dni.} other {Twój link z zaproszeniem wygaśnie za # dnia.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} godziny" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} kl./s" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} kl./s" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# niestandardowa wartość} few {# niestand msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} najpierw sprawdzi, czy Twoja karta kwalifikuje się do lokalnych cen, a następnie przekieruje Cię do płatności. Wróć do {productName} po zakończeniu transakcji." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} nie jest dostępny na tym urządzeniu, więc Twój strumień używa {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} potrzebuje dostępu do mikrofonu. Zezwól na dostęp do mikrofonu w ustawieniach prywatności systemu operacyjnego i uruchom ponownie aplikację." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} potrzebuje dostępu do kamery, aby wyświetlić Twoje urządzenia." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "adres URL wpisany w treści wiadomości" msgid "a user" msgstr "użytkownik" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Widz nie może odtworzyć {pinnedCodec}, więc Twój strumień używa {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Akceptuj" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Odbierz" @@ -3178,12 +3163,12 @@ msgstr "Dodaj do grupy" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Dodaj do zapisanych multimediów" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Dodaj do ulubionych GIF-ów (tylko URL)" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Zaawansowane" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Zaawansowane ustawienia wideo" @@ -3451,7 +3436,7 @@ msgstr "Sterowanie wyrównaniem jest dostępne tylko na szerszych ekranach" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Zezwól" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Zezwól na {everyoneMention} i {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Zezwól aplikacji {PRODUCT_NAME} na dostęp do kamery w obszarze {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Zezwól na wiadomości prywatne od botów" msgid "Allow bots to send you direct messages?" msgstr "Zezwolić botom na wysyłanie Ci wiadomości prywatnych?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Zezwól na dostęp do kamery" @@ -4014,13 +3999,13 @@ msgstr "Animowane emoji, GIF-y i naklejki pozostają pod Twoją kontrolą w karc #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animowany GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animowany GIF wideo" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animowane ikony wymagają funkcji społeczności {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Obraz animowany" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Podgląd animowanego obrazu" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Przesyłanie animacji wymaga subskrypcji {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animowane wideo" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Stan aplikacji" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Okno aplikacji" @@ -4361,7 +4346,7 @@ msgstr "Aplikację pomyślnie zaktualizowano" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplikacje" @@ -4586,7 +4571,7 @@ msgstr "załącznik" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Załącznik {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Załącznik wygasł" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Załącznik wygasł lub jest niedostępny" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID załącznika skopiowane do schowka" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Poziom dźwięku" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Dźwięk wyciszony" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Utrata pakietów audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Odtwarzacz audio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Odsłuch dźwięku" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Przetwarzanie dźwięku (skupienie na głosie)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Postęp odtwarzania audio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Ustawienia audio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Źródła dźwięku: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatyczne ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatyczna regulacja wzmocnienia" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Przeglądarka: wstecz" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Domyślne urządzenie w przeglądarce" @@ -6198,20 +6183,20 @@ msgstr "Połączenia" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Potrzebny jest dostęp do kamery, aby wyświetlać podgląd urządzeń" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Nie przyznano dostępu do kamery. Zaktualizuj uprawnienia do kamery, a następnie spróbuj ponownie." @@ -6276,13 +6261,13 @@ msgstr "Podgląd kamery" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Jakość obrazu z kamery" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Ustawienia kamery" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Weryfikacja captcha nie powiodła się. Spróbuj ponownie." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Przechwytywanie" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Przechwytuj dźwięk aplikacji" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Przechwytuj dźwięk komputera" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Przechwytuj dźwięk urządzenia" @@ -6736,12 +6721,12 @@ msgstr "Zmiana zaplanowana" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Zmień transmisję" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Zmień źródło transmisji" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Dostęp do kanału" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Brak dostępu do kanału" @@ -7097,7 +7082,7 @@ msgstr "ID kanału skopiowane do schowka" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "link do kanału" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Wybierz metodę płatności" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Wybierz, co chcesz udostępnić" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Wyczyść zaufane domeny ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Wyraźniejszy tekst" @@ -8285,7 +8270,7 @@ msgstr "Zwiń temat kanału" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Zwiń urządzenia" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Twórca społeczności" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Wyłącz dźwięk w społeczności" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Pasek z wymogiem MFA dla społeczności" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Wycisz mikrofon w społeczności" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Skonfiguruj teraz" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Skonfiguruj lub zakończ udostępnianie ekranu" @@ -8904,7 +8889,7 @@ msgstr "Potwierdzenie lub dwukrotne kliknięcie przy dołączaniu do kanałów g msgid "Conflicts with {conflictLabel}" msgstr "Konflikt z {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Podłącz kamerę i spróbuj ponownie." @@ -8913,7 +8898,7 @@ msgstr "Podłącz kamerę i spróbuj ponownie." msgid "Connect a camera or virtual capture device, then try again." msgstr "Podłącz kamerę lub wirtualne urządzenie do przechwytywania, a następnie spróbuj ponownie." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Podłącz wyświetlacz, a następnie spróbuj ponownie." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Sterowanie głośnością połączenia" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Połączenie: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Skopiowano statystyki w formacie JSON do schowka" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Skopiowano do schowka" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopiuj ID załącznika" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopiuj dźwięk" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopiuj link do audio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopiuj punkt końcowy" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopiuj link do pliku" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopiuj GIF-a" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopiuj link do GIF-a" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopiuj identyfikator" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopiuj obraz" @@ -9448,7 +9433,7 @@ msgstr "Kopiuj obraz" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopiuj link do obrazu" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Skopiuj link do sekcji" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopiuj multimedia" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopiuj wartość" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopiuj wideo" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopiuj link do wideo" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopiuj adres URL webhooka" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopiowanie obrazu..." @@ -10588,7 +10573,7 @@ msgstr "Obecnie: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Niestandardowe" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Dezaktywuj" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Wyłącz dźwięk" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Wyłącz dźwięk na wszystkich urządzeniach" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Wyłącz dźwięk urządzenia" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Wyłączaj dźwięk innym członkom w kanałach głosowych, aby nie mogli słyszeć ani mówić." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Skrót wyłączania dźwięku" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Wyłącz dźwięk u siebie" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Dźwięk wyłączony" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Dźwięk wyłączony przez moderatorów" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Domyślne urządzenie" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Domyślna kamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Usunąć :{emojiName}:? Tej operacji nie można cofnąć." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Usunąć \"{memeName}\"? Tej operacji nie można cofnąć." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Usuń zaproszenie" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Usuń multimedia" @@ -11466,8 +11451,8 @@ msgstr "Usuń rolę" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Usuń zapisane multimedia" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Poza komputerem" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Komputer" @@ -11849,13 +11834,13 @@ msgstr "Stan dewelopera" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Narzędzia deweloperskie" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Narzędzia deweloperskie są dostępne z poziomu odznaki zespołu w nagłówku kanału." @@ -11879,6 +11864,17 @@ msgstr "Urządzenie" msgid "Device alerts" msgstr "Powiadomienia o urządzeniu" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Dźwięk urządzenia ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Tylko dźwięk z urządzenia" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Szczegóły urządzenia" @@ -11888,7 +11884,7 @@ msgstr "Szczegóły urządzenia" msgid "Device revoked" msgstr "Cofnięto dostęp urządzenia" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Wybór urządzenia" @@ -11912,7 +11908,7 @@ msgstr "Urządzenie:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Urządzenia" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Przyciemnij przekreślony tekst" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Bezpośrednie wejście" @@ -12020,7 +12016,7 @@ msgstr "Bezpośrednie przesyłanie aktywne" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Wyłącz" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Wyłączona wartość" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Wyłączenie podglądów spowoduje zatrzymanie przesyłania nowych miniatur. Istniejące miniatury mogą pozostać widoczne do zakończenia transmisji lub odświeżenia podglądu." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Odrzuć wiadomość głosową" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Rozłącz" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Rozłącz wszystkie urządzenia" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Rozłącz urządzenie" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Wyświetlanie" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Ekran" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification i umieść go w folderze <1>.well-known, abyśmy mogli zweryfikować domenę." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Pobierz audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Pobierz aktualizację aplikacji komputerowej {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Pobierz plik" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Pobierz fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Pobierz GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Pobierz obraz" @@ -12714,7 +12710,7 @@ msgstr "Pobierz instalator" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Pobierz multimedia" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Pobierz pakiet" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Pobierz wideo" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Echo" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Redukcja echa" @@ -12963,7 +12959,7 @@ msgstr "Edytuj dostęp dla {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Edytuj tekst alternatywny" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Edytuj skrót klawiszowy" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Edytuj multimedia" @@ -13102,8 +13098,8 @@ msgstr "Edytuj wyszukiwarkę obrazem" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Edytuj zapisane multimedia" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Włącz powiadomienia przeglądarki" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Włącz dostęp do kamery, aby wyświetlić podgląd kamer i urządzeń przechwytujących przed wybraniem źródła transmisji." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Włącz lub wyłącz wbudowane translatory. Włączone translatory pojawią się w menu kontekstowym wiadomości po zaznaczeniu tekstu." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Włącz podglądy" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Zatrzymaj udostępnianie ekranu" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Szyfrowanie end-to-end jest niedostępne, ponieważ uczestnik tej rozmowy korzysta z nieobsługiwanego klienta." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Szyfrowanie end-to-end jest niedostępne, ponieważ uczestnik tego kanału głosowego korzysta z nieobsługiwanego klienta." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Rozrywka" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Cały ekran" @@ -14095,7 +14091,7 @@ msgstr "Cały ekran" msgid "Entire system" msgstr "Cały system" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Dźwięk z całego systemu" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "wyklucz użytkownika" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Wyklucz z systemu" @@ -14593,7 +14589,7 @@ msgstr "Nie udało się skopiować linku z zaproszeniem" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Nie udało się skopiować do schowka" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Nie udało się wczytać zaproszeń. Spróbuj ponownie." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Nie udało się załadować źródeł do udostępnienia." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Przenieś okno na wierzch" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Wyrazisty głos" @@ -15322,10 +15318,6 @@ msgstr "Ustawienia folderu" msgid "Follow us on {blueskyProviderName}" msgstr "Obserwuj nas na {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Zgodnie z wejściem głosowym" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Przekaż dalej" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Przewiń do przodu o {defaultSeekAmount} sekund" @@ -15592,14 +15584,14 @@ msgstr "Ramka" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Liczba klatek na sekundę" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Liczba klatek powyżej 30 kl./s wymaga {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Pad Y / Trójkąt" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Gry" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Ładowanie selektora GIF-ów" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Podgląd GIF-a" @@ -16429,7 +16421,7 @@ msgstr "Przyznano {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Przyznaje wszystkie uprawnienia i pozwala omijać ograniczenia kanałów. Wymaga szczególnej ostrożności." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Szczegółowy wybór" @@ -16992,7 +16984,7 @@ msgstr "Ukryj hasło" msgid "Hide picture-in-picture popout?" msgstr "Ukryć okienko obrazu w obrazie?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Ukryj miniaturę podglądu" @@ -17386,7 +17378,7 @@ msgstr "Jeśli chcesz, aby ci członkowie mieli dostęp do wcześniejszych wiado #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignoruj" @@ -17395,11 +17387,11 @@ msgstr "Ignoruj" msgid "Ignore friend request" msgstr "Ignoruj zaproszenie do znajomych" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignoruj urządzenia sprzętowe" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignoruj multimedia wejściowe" @@ -17430,7 +17422,7 @@ msgstr "Zignorować zaproszenie do znajomych od {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Pomijaj czas oczekiwania między wiadomościami w trybie wolnym tego kanału." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignoruj wirtualne" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Obraz" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Obrazy" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Obraz skopiowany do schowka" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opcje obrazu" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Podgląd obrazu" @@ -17540,7 +17532,7 @@ msgstr "Przesyłanie obrazu" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "W rozmowie głosowej" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "W czacie głosowym" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Uwzględnij wszystkie oprócz wybranych" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Uwzględnij aplikacje" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Wejście i wyjście" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Urządzenie wejściowe" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Profil wejścia: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Ustawienia wejścia" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Stany pól wejściowych" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Głośność wejścia" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Link z zaproszeniem jest ukryty podczas udostępniania:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Link z zaproszeniem ukryty podczas udostępniania" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Przejdź do {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Przejdź do {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Przejdź do bieżącej rozmowy" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Przejdź do kanału wskazanego w linku" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Przejdź do wiadomości wskazanej w linku" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Przejdź do wiadomości od {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Przejdź do wiadomości w {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Układ" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Dowiedz się więcej o podglądach udostępniania ekranu" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Styl linków" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link niedostępny" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Aplikacja dla systemu Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Domyślne urządzenie audio systemu Linux." @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Wczytywanie motywu..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Ładowanie..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Aplikacja na macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Domyślne urządzenie audio w systemie macOS" @@ -20289,7 +20281,7 @@ msgstr "Następny utwór" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opcje multimediów" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Odtwórz/wstrzymaj" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Podgląd multimediów" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Układ wiadomości" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "link do wiadomości" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Test mikrofonu" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Dźwięk z mikrofonu, obraz z kamery i udostępniany ekran są szyfrowane end-to-end." @@ -21019,7 +21011,7 @@ msgstr "Nieletni w niebezpieczeństwie, treści dla dorosłych w niewłaściwym #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Błędnie napisane słowa" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Urządzenie mobilne" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Wycisz wszystkie" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Wycisz mikrofony na wszystkich urządzeniach" @@ -21653,13 +21645,13 @@ msgstr "Wyciszono" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofon wyciszony" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Mikrofon wyciszony przez moderatorów" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Brak uprawnienia „{sendMessagesPermission}”" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Brak dostępu" @@ -22282,7 +22274,7 @@ msgstr "Nie znaleziono żadnych zaawansowanych ustawień" msgid "No AFK channel" msgstr "Brak kanału AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Nie znaleziono okien aplikacji" @@ -22300,6 +22292,11 @@ msgstr "Brak zasobów" msgid "No audio" msgstr "Brak dźwięku" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Brak dźwięku z tego urządzenia" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Brak autoryzowanych aplikacji" @@ -22341,7 +22338,7 @@ msgstr "Brak zakładek" msgid "No bot banner" msgstr "Brak baneru bota" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Nie znaleziono kamery" @@ -22421,7 +22418,7 @@ msgstr "Brak opisu." msgid "No desktop update is available." msgstr "Brak dostępnej aktualizacji aplikacji komputerowej." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Nie znaleziono żadnych wyświetlaczy" @@ -22650,7 +22647,7 @@ msgstr "Nie otrzymano treści odpowiedzi" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Brak wyników" @@ -22679,7 +22676,7 @@ msgstr "Brak ról. Dodaj role w {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Brak zapisanych multimediów" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Bramka szumów" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Tłumienie szumów" @@ -22877,7 +22874,7 @@ msgstr "Bez konwersji" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Brak" @@ -23286,7 +23283,7 @@ msgstr "Dotyczy tylko szerokich ekranów." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Akceptujemy tylko karty kredytowe. Kart debetowych i przedpłaconych nie można użyć do weryfikacji dostępu do treści dla dorosłych." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Tylko domyślne głośniki" @@ -23334,7 +23331,7 @@ msgstr "Uruchamiaj kod tylko wtedy, gdy dokładnie rozumiesz, co robi." msgid "Only show message previews for DMs with unread messages" msgstr "Pokazuj podglądy wiadomości tylko dla rozmów prywatnych z nieprzeczytanymi wiadomościami" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Tylko głośniki" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Otwórz {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Otwórz {labelText} w ustawieniach" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Otwórz @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Otwórz zaawansowane ustawienia multimediów" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Otwórz okno aplikacji i spróbuj ponownie." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Otwórz animowany GIF w pełnym widoku" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Otwórz animację GIF zapisaną jako wideo w pełnym widoku" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Otwórz dźwięk w pełnym widoku" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Otwórz łącze audio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Otwórz przeglądarkę" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Otwórz selektor przeglądarki" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Otwórz menu ulubionych" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Otwórz łącze pliku" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Otwórz link do GIF-a" @@ -23651,7 +23648,7 @@ msgstr "Otwórz obraz w przeglądarce" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Otwórz obraz w pełnym widoku" @@ -23660,7 +23657,7 @@ msgstr "Otwórz obraz w pełnym widoku" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Otwórz link do obrazu" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Otwórz rozmowę z kontem systemowym" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Otwórz systemowy panel wyboru" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Otwórz wideo w pełnym widoku" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Otwórz link do wideo" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Otwórz czat głosowy" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Otwórz ustawienia głosu i wideo" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Wyjście" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Urządzenie wyjściowe" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Ustawienia wyjścia" @@ -24094,7 +24091,7 @@ msgstr "Ustawienia wyjścia" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Głośność wyjściowa" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Limit uczestników" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opcje uczestnika: {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Podgląd ukryty" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Obrazy podglądu są tymczasowo przechowywane przez {productName} w celu ich wyświetlenia i nie są szyfrowane metodą end-to-end. Wyłącz podglądy, jeśli nie chcesz przesyłać klatek udostępnianego ekranu w celu utworzenia miniatur." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Obrazy podglądu są tymczasowo przechowywane przez {productName} w celu ich dostarczania i nie są szyfrowane end-to-end. Uczestnicy tego czatu grupowego nie muszą aktywnie oglądać Twojej transmisji, aby zobaczyć miniaturę." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Obrazy podglądu są tymczasowo przechowywane przez {productName} w celu ich dostarczania i nie są szyfrowane end-to-end. Osoby oglądające miniaturę nadal muszą mieć uprawnienie do połączenia, ale nie muszą aktywnie oglądać Twojej transmisji." @@ -26269,7 +26266,7 @@ msgstr "Skopiowano odniesienie." msgid "Referral parameters" msgstr "Parametry polecenia" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Odśwież źródła dźwięku" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Kliknięto zwykły przycisk." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Odrzuć" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Usuń z grupy" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Usuń z zapisanych multimediów" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Usuń z góry" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Usuń z ulubionych GIF-ów zapisanych na podstawie adresu URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Cofnięto bana dla {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Przewiń do tyłu o {defaultSeekAmount} sekund" @@ -28202,7 +28199,7 @@ msgstr "Zapisz ikonę" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Zapisz multimedia z wiadomości, aby zacząć!" @@ -28313,7 +28310,7 @@ msgstr "Wymagane pozwolenie na nagrywanie ekranu" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Udostępnianie ekranu" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Wzmocnienie dźwięku udostępniania ekranu" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Nie udało się uruchomić dźwięku udostępnianego ekranu" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Sterowanie ustawieniami kodowania udostępniania ekranu" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Udostępnianie ekranu zakończone" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Zachowanie podglądu udostępniania ekranu" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Podglądy udostępniania ekranu" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Podglądy udostępniania ekranu są wyłączone." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Podglądy udostępniania ekranu są włączone." @@ -28391,13 +28388,13 @@ msgstr "Prywatność udostępniania ekranu" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Jakość udostępniania ekranu" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Ustawienia udostępniania ekranu" @@ -28723,7 +28720,7 @@ msgstr "Szukaj ról lub członków…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Szukaj zapisanych multimediów" @@ -28942,12 +28939,12 @@ msgstr "Podgląd podczas przewijania" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Wybierz" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Wybierz {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Wyślij link do resetowania" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Wyślij zapisany element multimedialny „{memeName}”" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Ustawiono pozycję roli na liście członków" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Ustawione przez preset {preset}. Wybranie wartości tutaj przełączy na Niestandardowe." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Ustaw niestandardową głośność dla poszczególnych dźwięków. Dźwięki bez indywidualnych ustawień będą odtwarzane z głośnością główną." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Ustaw skrót wyłączania dźwięku" @@ -29669,11 +29666,6 @@ msgstr "Odłóż tę weryfikację na później" msgid "Set this check aside?" msgstr "Odłożyć tę weryfikację na później?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Ustawiono wysyłanie {resolution} z szybkością {frameRate} FPS przy użyciu kodeka {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Ustawienia" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "link do ustawień" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Udostępnij prezent" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Udostępnij ekran" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Udostępnij moderatorom społeczności." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Udostępnij ekran" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Udostępniaj swój ekran w wysokiej rozdzielczości (1080p), Quad HD (1440p) lub natywnej rozdzielczości źródłowej, z prędkością do 60 kl./s." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Udostępnione okno" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Dźwięk udostępnianego okna" @@ -30624,6 +30616,10 @@ msgstr "Ciche połączenia" msgid "Silent calls from everyone" msgstr "Ciche połączenia od wszystkich" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Cichy, gdy urządzenie przechwytujące nie ma własnego wejścia audio" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Płynne przewijanie" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Płynniejszy obraz" @@ -31005,11 +31001,6 @@ msgstr "Niektórych emoji nie udało się dodać" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Niektóre pliki, które próbujesz przesłać, przekraczają maksymalny rozmiar {maxSizeFormatted} na plik." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Niektóre ustawienia strumienia nie mogły zostać zastosowane do Twojego transmisji na żywo." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Dźwięki" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Źródło" @@ -31569,7 +31560,7 @@ msgstr "Rozpocząć rozmowę głosową?" msgid "Start call" msgstr "Rozpocznij połączenie" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Rozpocznij test kamery i skonfiguruj efekty" @@ -31910,7 +31901,7 @@ msgstr "Zatrzymaj odczytywanie" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Zakończ transmisję" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Przestać ufać wszystkim linkom?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Zatrzymaj oglądanie" @@ -31982,7 +31973,7 @@ msgstr "Zapobiega zapętleniu dźwięku z głośników do mikrofonu." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Transmisja" @@ -32001,11 +31992,6 @@ msgstr "Transmisja zakończona" msgid "Stream hidden" msgstr "Transmisja ukryta" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Transmisja nie nadąża" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Jakość transmisji" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Ustawienia transmisji" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Ustawienia strumienia zostały dostosowane" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Ogłoszenia systemowe od zespołu {productName}. Nie możesz tutaj odpow #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Domyślne systemowe" @@ -33036,13 +33017,8 @@ msgstr "Bot został dodany do <0>{destinationName}." msgid "The bot has been added." msgstr "Bot został dodany." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Przeglądarka wysyła {deliveredResolution} zamiast {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Trwa jeszcze zatrzymywanie podglądu kamery. Spróbuj ponownie rozpocząć transmisję za chwilę." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Rola przyznała {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Źródło udostępniania ekranu przestało wysyłać wideo, więc udostępnianie ekranu zostało zatrzymane." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Ta konsola przeglądarki to narzędzie dla programistów." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Ta rozmowa jest szyfrowana end-to-end." @@ -33645,11 +33621,6 @@ msgstr "Ta wersja aplikacji komputerowej nie pozwala instalować aktualizacji we msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ta kompilacja deweloperska nie może się zaktualizować. Pobierz instalator na komputer, aby przetestować proces aktualizacji." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Ten komputer nie nadążył ostatnio z {targetResolution} przy {targetFrameRate} kl./s, dlatego Twój strumień rozpoczął się przy {resolution} przy {frameRate} kl./s." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Ta instalacja jest zarządzana przez Twój system. Zaktualizuj {productName} za pomocą centrum oprogramowania lub menedżera pakietów." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Ta instancja pozwala obecnie na udostępnianie ekranu w rozdzielczości do 720p przy 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Ten kanał z linkami jest oznaczony jako zawierający treści dla dorosłych i może otwierać materiały, które mogą być nieodpowiednie dla niektórych użytkowników." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Ten link jest niedostępny dla Twojego konta." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Ta opcja jest wymagana. Podaj wartość." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Ten uczestnik nie może mówić na tym kanale" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Ten uczestnik ma wyłączony dźwięk" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Moderatorzy wyłączyli dźwięk temu uczestnikowi" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Ten numer telefonu został już użyty. Spróbuj użyć innego numeru lub skontaktuj się z pomocą techniczną." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Ten panel wyboru jest dostępny tylko w aplikacji komputerowej." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Przełącz elementy sterujące" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Włącz/wyłącz dźwięk" @@ -34666,7 +34637,7 @@ msgstr "W systemie Linux zmiany ikony w zasobniku systemowym są stosowane dopie #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Popularne GIF-y" @@ -34760,7 +34731,7 @@ msgstr "Spróbuj wyszukać coś innego." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Spróbuj innej frazy lub filtru" @@ -34839,11 +34810,6 @@ msgstr "Spróbuj innych filtrów lub wyszukiwanych haseł." msgid "Try editing your message again." msgstr "Spróbuj edytować wiadomość ponownie." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Spróbuj ponownie z pełną jakością" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Spróbuj wyszukać coś w stylu „motyw”, „powiadomienia” lub „prywatność”" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Wyłącz wszystko, z czym nie czujesz się komfortowo. Niektóre funkcje mogą przestać działać." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Wyłącz udostępnianie dźwięku dla tego źródła lub spróbuj ponownie za chwilę." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Włączaj automatycznie po wykryciu OBS lub XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Włącz kamerę" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Nieściągalne" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Włącz dźwięk" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Włącz dźwięk na wszystkich urządzeniach" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Włącz dźwięk u siebie" @@ -35558,7 +35524,7 @@ msgstr "nieznany użytkownik" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Nieznany użytkownik" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Odblokuj niestandardowe emoji w wiadomościach prywatnych dzięki {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Odblokuj udostępnianie ekranu w jakości HD dzięki {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Włącz dźwięk: {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Włącz mikrofon na wszystkich urządzeniach" @@ -35741,7 +35707,7 @@ msgstr "Grupa bez nazwy" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Wejście bez nazwy" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Przesyłaj nowe emoji i naklejki oraz zarządzaj własnymi dziełami." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Przesyłaj klatki podglądu udostępnianego ekranu." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL skopiowany do schowka" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Tag użytkownika (opcjonalnie)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Głośność użytkownika" @@ -37227,7 +37193,7 @@ msgstr "Utrata pakietów wideo:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Podgląd wideo" @@ -37283,7 +37249,7 @@ msgstr "Przesyłanie wideo" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Dźwięk i wideo" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Ustawienia głosu i wideo" @@ -37685,7 +37651,7 @@ msgstr "Skróty połączeń głosowych i wideo" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Połączenie głosowe" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Debugowanie połączenia głosowego" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Wyłączenie dźwięku" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Wiadomość głosowa" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Odtwarzacz wiadomości głosowych" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Ustawienia głosu" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Włączenie dźwięku" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Poczekaj tutaj" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Oczekiwanie na połączenie…" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Gdy są publikowane jako linki na czacie" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Po włączeniu podglądów aplikacja {productName} sporadycznie przesyła klatki obrazu w formacie JPEG z udostępnianego ekranu, aby inni uczestnicy czatu grupowego mogli zobaczyć miniaturę przed rozpoczęciem oglądania." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Po włączeniu podglądów aplikacja {productName} sporadycznie przesyła klatki obrazu w formacie JPEG z udostępnianego ekranu, dzięki czemu osoby posiadające uprawnienia do połączenia się z tym kanałem głosowym mogą zobaczyć miniaturę przed rozpoczęciem oglądania." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Po włączeniu podglądów aplikacja {productName} sporadycznie przesyła klatki obrazu w formacie JPEG z udostępnianego ekranu, aby druga osoba w tym czacie mogła zobaczyć miniaturę przed rozpoczęciem oglądania." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Okna przycięte u góry lub u dołu ekranu oraz zadokowane narzędzia DevTools mogą renderować szare tło zamiast pozostawać przezroczyste." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Domyślne urządzenie systemu Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Masz bana w tej społeczności i nie możesz do niej dołączyć." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Masz wyłączony dźwięk" @@ -38833,11 +38799,6 @@ msgstr "Używasz wersji {releaseChannel} aplikacji {productName}." msgid "You aren't in any communities right now." msgstr "Nie należysz teraz do żadnych społeczności." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Poprosiłeś o {resolution} przy {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Nie możesz wysyłać wiadomości w tej społeczności." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Nie możesz udostępnić ekranu na tym kanale" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Nie możesz mówić na tym kanale" @@ -39036,7 +38997,7 @@ msgstr "Nie możesz mówić na tym kanale" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Nie możesz włączyć kamery na tym kanale" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Zmieniono Twój tag w trakcie korzystania z {PREMIUM_PRODUCT_NAME}. Zostanie on losowo zmieniony po wygaśnięciu subskrypcji {PREMIUM_PRODUCT_NAME}, chyba że ją odnowisz." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Nie masz dostępu do kanału, na który wysłano tę wiadomość." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Pozostajesz w {ownedNames}. Właściciele nie mogą opuścić własnej społeczności." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderatorzy wyłączyli Ci dźwięk" @@ -39699,11 +39660,6 @@ msgstr "Twoje zgłoszenie oczekuje na rozpatrzenie. Nadal możesz zaktualizować msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Twoja przeglądarka wymaga interakcji użytkownika, zanim będzie można odtworzyć dźwięk. Kliknij przycisk poniżej, aby włączyć czat głosowy." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Twoje urządzenie przechwytujące wysyła {deliveredResolution} zamiast {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Sprawdzamy Twoją kartę pod kątem lokalnych cen. Zazwyczaj trwa to tylko chwilę." @@ -39734,36 +39690,11 @@ msgstr "Twoja społeczność jest widoczna w Odkrywaniu. Poniżej możesz zaktua msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Twoja społeczność musi mieć co najmniej {minMemberCount, plural, one {# członka} few {# członków} many {# członków} other {# członka}}, zanim będzie mogła zostać umieszczona w Odkrywaniu." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Twoje połączenie nie nadąża. Twój strumień jest ustawiony na {frameRate} FPS w rozdzielczości {resolution}, a widzowie otrzymują około {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Twoja karta kredytowa została zweryfikowana. Jeśli karta jest ważna, treści dla dorosłych zostaną wkrótce odblokowane. Możesz zamknąć tę kartę i wrócić do aplikacji." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Twoje urządzenie nie nadąża. Twój strumień jest ustawiony na {frameRate} FPS w rozdzielczości {resolution}, a widzowie otrzymują około {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Twoje urządzenie nie nadąża, więc Twój strumień wysyła teraz {frameRate} FPS, aby zachować ostrość {resolution}." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Twoje urządzenie nie nadąża, więc Twój strumień wysyła teraz {resolution} przy {frameRate} FPS zamiast {targetResolution} przy {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Twoje urządzenie nie nadąża, więc Twój strumień wysyła teraz {resolution}, aby zapewnić płynność {frameRate} FPS." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Zanim przejdziesz dalej, musimy przeprowadzić dodatkową weryfikację antyspamową Twojej rejestracji." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Twoje zapisane {savedResolution} przy {savedFrameRate} FPS wymaga {premiumProductName}, więc udostępnianie używa {resolution} przy {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Nie udało się opublikować udostępniania ekranu za pomocą zgodnego kodeka wideo, dlatego zostało ono zatrzymane. Spróbuj udostępnić ponownie." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Twoje źródło generuje około {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Twoja transmisja nadal trwa" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Twój strumień został przełączony na {codec}, ponieważ {previousCodec} nie nadążał na tym urządzeniu. Widzowie mogą zobaczyć krótką przerwę." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Twój niestandardowy adres URL został ustawiony na {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Twój koder wideo przestał kodować klatki, więc udostępnianie ekranu zostało zatrzymane. Spróbuj udostępnić ponownie." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Twój koder wideo przestał działać, więc Twój strumień został przełączony na {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/pt-BR/messages.po b/fluxer_app/src/features/i18n/locales/pt-BR/messages.po index 401383136..5333ed3e9 100644 --- a/fluxer_app/src/features/i18n/locales/pt-BR/messages.po +++ b/fluxer_app/src/features/i18n/locales/pt-BR/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} quer se conectar" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} usará esta conta para esta autorização." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "O {codec} não consegue acompanhar neste dispositivo. Defina o codec como Automático nas configurações Avançadas para permitir um mais rápido." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "No momento, {communityName} está acessível apenas para membros da equi msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Sem limite} one {# participante} other {# participantes}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, =0 {... (# linhas restantes)} one {... (# linha restante)} other {... (# linhas restantes)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, =1 {... (# linha restante)} other {... (# linhas restantes)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, =0 {Expandir (# linhas)} one {Expandir (# linha)} other msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, =0 {Expandir (# linhas)} one {Expandir (# linha)} other {Expandir (# linhas)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, =0 {Expandir mais # dispositivos} one {Expandir mais # dispositivo} other {Expandir mais # dispositivos}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, =0 {# em chamada} one {Em chamada} other {# em chamada}} msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, =0 {Entrar na chamada de vídeo (# participantes)} one {Entrar na chamada de vídeo (# participante)} other {Entrar na chamada de vídeo (# participantes)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, =0 {Continuar assistindo a # transmissões e adicionar esta} one {Continuar assistindo a # transmissão e adicionar esta} other {Continuar assistindo a # transmissões e adicionar esta}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, =0 {Seu link de convite expira em # dias.} one {Seu link de convite expira em # dia.} other {Seu link de convite expira em # dias.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} horas" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, =0 {# substituições} one {# substituição} ot msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} primeiro verificará se seu cartão é elegível para preços localizados e, em seguida, você prosseguirá para o pagamento. Retorne ao {productName} assim que concluir." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} não está disponível neste dispositivo, então seu stream usa {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "O {productName} precisa de acesso ao seu microfone. Permita o acesso ao microfone nas configurações de privacidade do seu sistema operacional e reinicie o aplicativo." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "O {productName} precisa de acesso à câmera para listar seus dispositivos." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "uma URL digitada no texto da mensagem" msgid "a user" msgstr "um usuário" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Um espectador não consegue reproduzir {pinnedCodec}, então seu stream está usando {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Aceitar" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Atender" @@ -3178,12 +3163,12 @@ msgstr "Adicionar ao grupo" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Adicionar às mídias salvas" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Adicionar aos GIFs favoritos por URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avançado" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Configurações avançadas de vídeo" @@ -3451,7 +3436,7 @@ msgstr "Os controles de alinhamento estão disponíveis apenas em telas mais lar #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Permitir" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Permitir {everyoneMention} e {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Permita que o {PRODUCT_NAME} acesse sua câmera em {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Permitir mensagens diretas de bots" msgid "Allow bots to send you direct messages?" msgstr "Permitir que bots enviem mensagens diretas para você?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Permitir acesso à câmera" @@ -4014,13 +3999,13 @@ msgstr "Emojis animados, GIFs e figurinhas permanecem sob seu controle na aba An #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF animado" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Vídeo GIF animado" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Ícones animados exigem o recurso de comunidade {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Imagem animada" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Prévia de imagem animada" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "O envio de imagens animadas exige uma assinatura do {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Vídeo animado" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Estado do aplicativo" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Janela do app" @@ -4361,7 +4346,7 @@ msgstr "Aplicativo atualizado com sucesso" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplicativos" @@ -4586,7 +4571,7 @@ msgstr "anexo" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Anexo {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Anexo expirou" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Anexo expirou ou está indisponível" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID do anexo copiado para a área de transferência" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Nível do áudio" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Áudio silenciado" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Perda de pacotes de áudio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Reprodutor de áudio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Prévia do áudio" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Processamento de áudio (voz focada)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Progresso do áudio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Configurações de áudio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Fontes de áudio: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automático ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Controle automático de ganho" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Voltar no navegador" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Padrão do navegador" @@ -6198,20 +6183,20 @@ msgstr "Chamadas" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Câmera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Acesso à câmera é necessário para prévias de dispositivos" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "O acesso à câmera não foi concedido. Atualize as permissões da câmera e tente novamente." @@ -6276,13 +6261,13 @@ msgstr "Prévia da câmera" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Qualidade da câmera" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Configurações da câmera" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "A verificação do CAPTCHA falhou. Tente novamente." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Capturar" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Capturar áudio do app" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Capturar áudio do computador" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Capturar áudio do dispositivo" @@ -6736,12 +6721,12 @@ msgstr "Alteração agendada" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Alterar transmissão" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Alterar fonte da transmissão" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Acesso ao canal" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Acesso ao canal negado" @@ -7097,7 +7082,7 @@ msgstr "ID do canal copiado para a área de transferência" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "link do canal" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Escolha a forma de pagamento" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Escolha algo para compartilhar" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Limpar domínios confiáveis ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Texto mais claro" @@ -8285,7 +8270,7 @@ msgstr "Recolher tópico do canal" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Recolher dispositivos" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Criador da comunidade" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Desativar áudio na comunidade" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Barra de aviso de exigência de MFA na comunidade" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Silenciar microfone na comunidade" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configurar agora" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configurar ou encerrar o compartilhamento de tela" @@ -8904,7 +8889,7 @@ msgstr "Confirmação ou duplo clique para entrar em canais de voz da comunidade msgid "Conflicts with {conflictLabel}" msgstr "Conflita com {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Conecte uma câmera e tente novamente." @@ -8913,7 +8898,7 @@ msgstr "Conecte uma câmera e tente novamente." msgid "Connect a camera or virtual capture device, then try again." msgstr "Conecte uma câmera ou dispositivo de captura virtual e tente novamente." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Conecte um monitor e tente novamente." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Controles de volume da conexão" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Conexão: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "JSON de estatísticas copiado para a área de transferência" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copiado para a área de transferência" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copiar ID do anexo" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copiar áudio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copiar link do áudio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copiar endereço" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copiar link do arquivo" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copiar GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copiar link do GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copiar identificador" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copiar imagem" @@ -9448,7 +9433,7 @@ msgstr "Copiar imagem" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copiar link da imagem" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copiar link para a seção" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copiar mídia" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copiar valor" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copiar vídeo" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copiar link do vídeo" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copiar URL do webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Copiando imagem..." @@ -10588,7 +10573,7 @@ msgstr "Atualmente: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Personalizado" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Desativar" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Desativar áudio" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Desativar áudio em todos os dispositivos" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Desativar áudio do dispositivo" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Desativar o áudio de outros membros em canais de voz, impedindo que ouçam ou falem." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Atalho para desativar áudio" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Desativar áudio para mim" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Com áudio desativado" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Áudio desativado pelos moderadores" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Padrão" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Câmera padrão" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Excluir :{emojiName}:? Não poderá ser desfeito." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Excluir \"{memeName}\"? Não poderá ser desfeito." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Excluir convite" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Excluir mídia" @@ -11466,8 +11451,8 @@ msgstr "Excluir cargo" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Excluir mídia salva" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Ausente no computador" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Computador" @@ -11849,13 +11834,13 @@ msgstr "Estado do desenvolvedor" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Ferramentas do desenvolvedor" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "As ferramentas de desenvolvedor estão disponíveis no selo da equipe no cabeçalho do canal." @@ -11879,6 +11864,17 @@ msgstr "Dispositivo" msgid "Device alerts" msgstr "Alertas do dispositivo" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Áudio do dispositivo ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Áudio do dispositivo" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Detalhes do dispositivo" @@ -11888,7 +11884,7 @@ msgstr "Detalhes do dispositivo" msgid "Device revoked" msgstr "Sessão do dispositivo encerrada" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Seleção de dispositivo" @@ -11912,7 +11908,7 @@ msgstr "Dispositivo:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Dispositivos" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Escurecer texto tachado" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Entrada direta" @@ -12020,7 +12016,7 @@ msgstr "Envio direto ativo" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Desativar" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Valor desativado" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Desativar as miniaturas interrompe os envios futuros de miniaturas. As imagens de miniatura já enviadas podem permanecer visíveis até o fim da transmissão ou a atualização da miniatura." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Descartar mensagem de voz" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Desconectar" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Desconectar todos os dispositivos" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Desconectar dispositivo" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Exibição" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Tela" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification e coloque-o na sua pasta <1>.well-known para que possamos validar o domínio." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Baixar áudio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Baixar atualização {version} para computador ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Baixar arquivo" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Baixar fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Baixar GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Baixar imagem" @@ -12714,7 +12710,7 @@ msgstr "Baixar instalador" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Baixar mídia" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Baixar pacote" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Baixar vídeo" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Eco" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Cancelamento de eco" @@ -12963,7 +12959,7 @@ msgstr "Editar acesso para {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Editar texto alternativo" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Editar atalho do teclado" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Editar mídia" @@ -13102,8 +13098,8 @@ msgstr "Editar buscador de imagens reversas" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Editar mídia salva" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Ativar notificações do navegador" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Ative o acesso à câmera para pré-visualizar câmeras e dispositivos de captura antes de escolher um para transmitir." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Ative ou desative os tradutores integrados. Os tradutores ativados aparecem no menu de contexto da mensagem quando o texto é selecionado." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Ativar prévias" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Encerrar compartilhamento de tela" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "A criptografia de ponta a ponta não está disponível porque há um participante incompatível nesta chamada." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "A criptografia de ponta a ponta não está disponível porque há um participante incompatível neste canal de voz." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Entretenimento" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Tela inteira" @@ -14095,7 +14091,7 @@ msgstr "Tela inteira" msgid "Entire system" msgstr "Sistema inteiro" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Áudio do sistema inteiro" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "excluir um usuário" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Excluir do sistema" @@ -14593,7 +14589,7 @@ msgstr "Não foi possível copiar o link do convite" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Falha ao copiar para a área de transferência" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Não foi possível carregar os convites. Tente novamente." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Não foi possível carregar as fontes compartilháveis." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Focar janela" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Voz focada" @@ -15322,10 +15318,6 @@ msgstr "Configurações da pasta" msgid "Follow us on {blueskyProviderName}" msgstr "Siga-nos no {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Seguir entrada de voz" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Encaminhar" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avançar {defaultSeekAmount} segundos" @@ -15592,14 +15584,14 @@ msgstr "Moldura" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Taxa de quadros" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Taxas de quadros acima de 30 FPS exigem {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Y / triângulo (controle)" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Jogos" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Carregando seletor de GIFs" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Prévia do GIF" @@ -16429,7 +16421,7 @@ msgstr "Concedeu {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Concede todas as permissões e ignora as restrições do canal. Altamente sensível." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Seleção granular" @@ -16992,7 +16984,7 @@ msgstr "Ocultar senha" msgid "Hide picture-in-picture popout?" msgstr "Ocultar janela flutuante picture-in-picture?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Ocultar miniatura da prévia" @@ -17386,7 +17378,7 @@ msgstr "Se quiser que esses membros acessem mensagens antigas enviadas após uma #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorar" @@ -17395,11 +17387,11 @@ msgstr "Ignorar" msgid "Ignore friend request" msgstr "Ignorar pedido de amizade" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorar dispositivos de hardware" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorar mídia de entrada" @@ -17430,7 +17422,7 @@ msgstr "Ignorar o pedido de amizade de {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorar o tempo de espera do modo lento deste canal." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorar virtual" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Imagem" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Imagens" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Imagem copiada para a área de transferência" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opções de imagem" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Prévia da imagem" @@ -17540,7 +17532,7 @@ msgstr "Envio de imagem" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "No chat de voz" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "No chat de voz" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Incluir todos, exceto os selecionados" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Incluir aplicativos" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Entrada e saída" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Dispositivo de entrada" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Perfil de entrada: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Configurações de entrada" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Estados de entrada" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Volume de entrada" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "O link de convite está oculto enquanto você compartilha:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Link de convite mascarado durante o compartilhamento" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Ir para {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Ir para {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Ir para a chamada atual" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Ir para o canal vinculado" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Ir para a mensagem vinculada" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Ir para a mensagem de {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Ir para a mensagem em {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Layout" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Saiba mais sobre as prévias de compartilhamento de tela" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Estilo de link" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link indisponível" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Aplicativo Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Dispositivo de áudio padrão do Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Carregando tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Carregando..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Aplicativo macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Dispositivo de áudio padrão do macOS" @@ -20289,7 +20281,7 @@ msgstr "Próxima faixa" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opções de mídia" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Reproduzir/pausar" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Prévia da mídia" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Layout da mensagem" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "link da mensagem" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Teste de microfone" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "O áudio, vídeo e compartilhamento de tela são criptografados de ponta a ponta." @@ -21019,7 +21011,7 @@ msgstr "Menores em risco, conteúdo adulto em local inadequado ou conduta indese #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Palavras com erros de ortografia" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Celular" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Silenciar tudo" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Silenciar todos os dispositivos" @@ -21653,13 +21645,13 @@ msgstr "Silenciado" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Microfone silenciado" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Silenciado por moderadores" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Sem a permissão {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Sem acesso" @@ -22282,7 +22274,7 @@ msgstr "Nenhuma configuração avançada encontrada" msgid "No AFK channel" msgstr "Nenhum canal de ausência" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Nenhuma janela de aplicativo encontrada" @@ -22300,6 +22292,11 @@ msgstr "Nenhum recurso ainda" msgid "No audio" msgstr "Sem áudio" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Sem áudio deste dispositivo" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Nenhum aplicativo autorizado" @@ -22341,7 +22338,7 @@ msgstr "Nenhuma mensagem salva" msgid "No bot banner" msgstr "Sem banner do bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Nenhuma câmera encontrada" @@ -22421,7 +22418,7 @@ msgstr "Sem descrição." msgid "No desktop update is available." msgstr "Nenhuma atualização do aplicativo para computador está disponível." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Nenhum monitor encontrado" @@ -22650,7 +22647,7 @@ msgstr "Nenhum corpo de resposta recebido" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Nenhum resultado" @@ -22679,7 +22676,7 @@ msgstr "Nenhum cargo ainda. Adicione cargos em {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Nenhuma mídia salva" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Gate de ruído" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Supressão de ruído" @@ -22877,7 +22874,7 @@ msgstr "Não converter" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Nenhum" @@ -23286,7 +23283,7 @@ msgstr "Aplica-se apenas a telas largas." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Apenas cartões de crédito são aceitos. Cartões de débito e pré-pagos não podem ser usados para a verificação de conteúdo adulto." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Apenas alto-falantes padrão" @@ -23334,7 +23331,7 @@ msgstr "Execute códigos aqui apenas se você souber exatamente o que eles fazem msgid "Only show message previews for DMs with unread messages" msgstr "Mostrar prévias apenas das conversas por mensagem direta com mensagens não lidas" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Apenas alto-falantes" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Abrir {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Abrir {labelText} nas configurações" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Abrir @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Abrir configurações avançadas de mídia" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Abra uma janela de aplicativo e tente novamente." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Abrir GIF animado na visualização completa" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Abrir vídeo GIF animado na visualização completa" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Abrir áudio na visualização completa" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Abrir link de áudio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Abrir navegador" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Abrir seletor do navegador" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Abrir menu de favoritos" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Abrir link do arquivo" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Abrir link do GIF" @@ -23651,7 +23648,7 @@ msgstr "Abrir imagem no navegador" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Abrir imagem na visualização completa" @@ -23660,7 +23657,7 @@ msgstr "Abrir imagem na visualização completa" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Abrir link da imagem" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Abrir mensagem direta do sistema" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Abrir seletor do sistema" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Abrir vídeo na visualização completa" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Abrir link do vídeo" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Abrir chat de voz" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Abrir configurações de voz e vídeo" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Saída" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Dispositivo de saída" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Configurações de saída" @@ -24094,7 +24091,7 @@ msgstr "Configurações de saída" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Volume de saída" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Limite de participantes" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opções para o participante {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Prévia oculta" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "O {productName} armazena temporariamente as imagens de prévia para distribuí-las, sem criptografia de ponta a ponta. Desative as prévias se não quiser enviar quadros do compartilhamento de tela para criar miniaturas." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "O {productName} armazena temporariamente as imagens de prévia para distribuí-las, sem criptografia de ponta a ponta. As pessoas nesta conversa em grupo podem ver a miniatura mesmo sem assistir à transmissão." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "O {productName} armazena temporariamente as imagens de prévia para distribuí-las, sem criptografia de ponta a ponta. As pessoas precisam de permissão para se conectar, mas podem ver as prévias mesmo sem assistir à transmissão." @@ -26269,7 +26266,7 @@ msgstr "Referência copiada." msgid "Referral parameters" msgstr "Parâmetros de indicação" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Atualizar fontes de áudio" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Botão normal clicado." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Rejeitar" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Remover do grupo" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Remover das mídias salvas" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Desativar sempre no topo" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Remover dos GIFs favoritos salvos por URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Banimento de {0} revogado" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Voltar {defaultSeekAmount} segundos" @@ -28202,7 +28199,7 @@ msgstr "Salvar ícone" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Salve algumas mídias de mensagens para começar!" @@ -28313,7 +28310,7 @@ msgstr "Permissão para gravar a tela é necessária" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Compartilhar tela" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Aumento de áudio do compartilhamento de tela" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "O áudio do compartilhamento de tela não pôde ser iniciado" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Controles do codificador de compartilhamento de tela" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Compartilhamento de tela encerrado" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Comportamento da prévia do compartilhamento de tela" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Prévias de compartilhamentos de tela" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "As prévias do compartilhamento de tela estão desativadas." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "As prévias do compartilhamento de tela estão ativadas." @@ -28391,13 +28388,13 @@ msgstr "Privacidade do compartilhamento de tela" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Qualidade do compartilhamento de tela" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Configurações de compartilhamento de tela" @@ -28723,7 +28720,7 @@ msgstr "Pesquisar cargos ou membros…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Pesquisar mídias salvas" @@ -28942,12 +28939,12 @@ msgstr "Prévia ao navegar pelo vídeo" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Selecionar" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Selecionar {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Enviar link de redefinição" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Enviar mídia salva {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Definiu uma posição na lista de membros para o cargo" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Definido pelo preset {preset}. Escolher um valor aqui muda para Personalizado." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Defina volumes personalizados para sons individuais. Sons sem uma configuração específica seguem o volume principal." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Definir atalho para desativar áudio" @@ -29669,11 +29666,6 @@ msgstr "Adiar esta verificação" msgid "Set this check aside?" msgstr "Adiar esta verificação?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Definido para enviar {resolution} a {frameRate} FPS com {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Configurações" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "link de configurações" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Compartilhar presente" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Compartilhar tela" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Compartilhar com moderadores da comunidade." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Compartilhar tela" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Compartilhe sua tela em alta definição (1080p), Quad HD (1440p) ou resolução nativa, em até 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Janela compartilhada" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Áudio da janela compartilhada" @@ -30624,6 +30616,10 @@ msgstr "Chamadas silenciosas" msgid "Silent calls from everyone" msgstr "Chamadas silenciosas de todos" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silencioso quando o dispositivo de captura não tem entrada de áudio própria" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Rolagem suave" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Vídeo mais fluido" @@ -31005,11 +31001,6 @@ msgstr "Não foi possível adicionar alguns emojis" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Alguns arquivos que você está tentando enviar excedem o limite máximo de {maxSizeFormatted} por arquivo." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Algumas configurações de transmissão não puderam ser aplicadas à sua transmissão ao vivo." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Sons" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Original" @@ -31569,7 +31560,7 @@ msgstr "Iniciar uma chamada de voz?" msgid "Start call" msgstr "Iniciar chamada" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Iniciar teste da câmera e configurar efeitos" @@ -31910,7 +31901,7 @@ msgstr "Parar leitura em voz alta" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Parar transmissão" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Parar de confiar em todos os links?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Parar de assistir" @@ -31982,7 +31973,7 @@ msgstr "Impede que o áudio dos seus alto-falantes retorne para o microfone." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Transmissão" @@ -32001,11 +31992,6 @@ msgstr "Transmissão encerrada" msgid "Stream hidden" msgstr "Transmissão oculta" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "A transmissão não está mantendo o ritmo" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Qualidade da transmissão" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Configurações de transmissão" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "As configurações de transmissão foram ajustadas" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Comunicados do sistema da equipe {productName}. Não é possível respon #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Padrão do sistema" @@ -33036,13 +33017,8 @@ msgstr "O bot foi adicionado a <0>{destinationName}." msgid "The bot has been added." msgstr "O bot foi adicionado." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "O navegador está enviando {deliveredResolution} em vez de {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "A prévia da câmera ainda está sendo encerrada. Tente transmitir novamente em alguns instantes." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "O cargo concedeu {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "A fonte de compartilhamento de tela parou de enviar vídeo, então o seu compartilhamento de tela foi interrompido." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Este console do navegador é uma ferramenta de desenvolvedor." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Esta chamada tem criptografia de ponta a ponta." @@ -33645,11 +33621,6 @@ msgstr "Esta versão para computador não pode instalar atualizações dentro do msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Esta versão de desenvolvimento não pode se atualizar. Baixe um instalador para computador para testar o fluxo de atualização." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Este dispositivo não conseguiu acompanhar {targetResolution} a {targetFrameRate} FPS da última vez, então sua transmissão começou em {resolution} a {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Esta instalação é gerenciada pelo seu sistema. Atualize o {productName} a partir da sua central de softwares ou gerenciador de pacotes." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Esta instância permite compartilhamento de tela de até 720p a 30 FPS no momento." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Este canal de link está marcado para conteúdo adulto e pode abrir material que talvez seja impróprio para alguns usuários." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Este link não está disponível para sua conta." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Esta opção é obrigatória. Por favor, forneça um valor." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Este participante não pode falar neste canal" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Este participante está com o áudio desativado" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Os moderadores desativaram o áudio deste participante" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Este número de telefone já foi usado. Tente outro número ou entre em contato com o suporte." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Este seletor está disponível apenas no aplicativo para computador." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Alternar controles" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Ativar ou desativar áudio" @@ -34666,7 +34637,7 @@ msgstr "As alterações no ícone da bandeja só se aplicam após reiniciar no L #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIFs em alta" @@ -34760,7 +34731,7 @@ msgstr "Tente outra pesquisa." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Tente outro termo de busca ou filtro" @@ -34839,11 +34810,6 @@ msgstr "Tente filtros ou termos de busca diferentes." msgid "Try editing your message again." msgstr "Tente editar sua mensagem novamente." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Tentar qualidade total novamente" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Tente pesquisar por algo como \"tema\", \"notificações\" ou \"privacidade\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Desative as permissões com as quais você não se sentir à vontade. Alguns recursos podem parar de funcionar." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Desative o compartilhamento de áudio desta fonte ou tente novamente em alguns instantes." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Ativar automaticamente quando OBS ou XSplit for detectado" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Ligar câmera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Incobrável" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Reativar áudio" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Reativar áudio em todos os dispositivos" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Reativar seu áudio" @@ -35558,7 +35524,7 @@ msgstr "usuário desconhecido" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Usuário desconhecido" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Desbloqueie emojis personalizados em mensagens diretas com o {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Desbloqueie o compartilhamento de tela HD com {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Reativar som de notificação de {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Reativar microfones em todos os dispositivos" @@ -35741,7 +35707,7 @@ msgstr "Grupo sem nome" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Entrada sem nome" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Enviar novos emojis e figurinhas e gerenciar suas próprias criações." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Enviar quadros de prévia dos compartilhamentos de tela." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copiada para a área de transferência" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Tag do usuário (opcional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volume do usuário" @@ -37227,7 +37193,7 @@ msgstr "Perda de pacotes de vídeo:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Prévia do vídeo" @@ -37283,7 +37249,7 @@ msgstr "Envio de vídeo" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Áudio e vídeo" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Configurações de voz e vídeo" @@ -37685,7 +37651,7 @@ msgstr "Atalhos de áudio e vídeo" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Chamada de voz" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Depurar conexão de voz" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Áudio desativado" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Mensagem de voz" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Reprodutor de mensagem de voz" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Configurações de voz" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Áudio reativado" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Aguarde" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Aguardando conexão..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Quando postado como link no chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Quando as prévias estão ativadas, o {productName} envia ocasionalmente quadros JPEG do seu compartilhamento de tela para que as outras pessoas nesta conversa em grupo possam ver uma miniatura antes de assistir." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Quando as prévias estão ativadas, o {productName} envia ocasionalmente quadros JPEG do seu compartilhamento de tela para que as pessoas com permissão para se conectar a este canal de voz possam ver uma miniatura antes de assistir." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Quando as prévias estão ativadas, o {productName} envia ocasionalmente quadros JPEG do seu compartilhamento de tela para que a outra pessoa nesta conversa direta possa ver uma miniatura antes de assistir." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Janelas cortadas na parte superior ou inferior da tela, e DevTools encaixado, podem renderizar um fundo cinza em vez de permanecerem transparentes." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Padrão do Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Você foi banido(a) desta comunidade e não pode entrar." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Você está com o áudio desativado" @@ -38833,11 +38799,6 @@ msgstr "Você está usando uma compilação {releaseChannel} do {productName}." msgid "You aren't in any communities right now." msgstr "Você não faz parte de nenhuma comunidade no momento." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Você pediu {resolution} a {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Você não pode enviar mensagens nesta comunidade." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Você não pode compartilhar sua tela neste canal" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Você não pode falar neste canal" @@ -39036,7 +38997,7 @@ msgstr "Você não pode falar neste canal" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Você não pode ligar sua câmera neste canal" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Você mudou sua tag enquanto usava o {PREMIUM_PRODUCT_NAME}. Ela será alterada aleatoriamente quando seu {PREMIUM_PRODUCT_NAME} expirar, a menos que seja renovado." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Você não tem acesso ao canal onde esta mensagem foi enviada." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Você permanece em {ownedNames}. Proprietários não podem sair de sua própria comunidade." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Os moderadores desativaram seu áudio" @@ -39699,11 +39660,6 @@ msgstr "Sua inscrição está aguardando análise. Você ainda pode atualizar os msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Seu navegador requer interação para reproduzir áudio. Clique no botão abaixo para ativar o chat de voz." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Seu dispositivo de captura está enviando {deliveredResolution} em vez de {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Seu cartão está sendo verificado para os preços regionais. Isso geralmente leva só um instante." @@ -39734,36 +39690,11 @@ msgstr "Sua comunidade aparece em Descobrir. Você pode atualizar os detalhes ab msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Sua comunidade precisa de pelo menos {minMemberCount, plural, one {# membro} other {# membros}} para poder ser listada em Descobrir." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Sua conexão não está aguentando. Seu stream está configurado para {frameRate} FPS em {resolution} e os espectadores estão recebendo cerca de {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Seu cartão de crédito foi verificado. Se o cartão for válido, o conteúdo adulto será desbloqueado em breve. Você pode fechar esta aba e voltar para o aplicativo." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Seu dispositivo não está conseguindo acompanhar. Seu streaming está configurado para {frameRate} FPS em {resolution} e os espectadores estão recebendo cerca de {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Seu dispositivo não conseguiu acompanhar, então seu stream agora envia {frameRate} FPS para manter {resolution} nítido." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Seu dispositivo não conseguiu acompanhar, então sua transmissão agora envia {resolution} a {frameRate} FPS em vez de {targetResolution} a {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Seu dispositivo não conseguiu acompanhar, então seu stream agora envia {resolution} para manter {frameRate} FPS estáveis." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Seu cadastro precisa de uma verificação antispam extra antes de você continuar." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Seu {savedResolution} salvo a {savedFrameRate} FPS precisa de {premiumProductName}, então o compartilhamento usa {resolution} a {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Seu compartilhamento de tela não pôde ser publicado com um codec de vídeo compatível, por isso foi interrompido. Tente compartilhar novamente." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Sua fonte está produzindo cerca de {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Sua transmissão ainda está ativa" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Seu stream mudou para {codec} porque {previousCodec} não conseguiu acompanhar neste dispositivo. Os espectadores podem ver uma pequena pausa." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Seu URL personalizado foi definido como {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Seu codificador de vídeo parou de codificar quadros, então o compartilhamento de tela foi interrompido. Tente compartilhar novamente." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Seu codificador de vídeo parou, então seu stream mudou para {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/ro/messages.po b/fluxer_app/src/features/i18n/locales/ro/messages.po index f3efba3f4..10d5fb2dc 100644 --- a/fluxer_app/src/features/i18n/locales/ro/messages.po +++ b/fluxer_app/src/features/i18n/locales/ro/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} vrea să se conecteze" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} va folosi acest cont pentru această autorizare." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} nu poate ține pasul pe acest dispozitiv. Setează codec-ul la Automat în setările Avansate pentru a permite unul mai rapid." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} este accesibilă momentan doar membrilor echipei {produc msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Fără limită} one {# participant} few {# participanți} other {# de participanți}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# linie rămasă)} few {... (# linii rămase)} other {... (# de linii rămase)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# rând rămas)} few {... (# rânduri rămase)} other {... (# de rânduri rămase)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Extinde (# linie)} few {Extinde (# linii)} other {E msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Extinde (# rând)} few {Extinde (# rânduri)} other {Extinde (# de rânduri)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Extinde încă # dispozitiv} few {Extinde încă # dispozitive} other {Extinde încă # de dispozitive}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {În apel} other {# în apel}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Alătură-te apelului video (# participant)} few {Alătură-te apelului video (# participanți)} other {Alătură-te apelului video (# de participanți)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Continuă să urmărești # stream și adaugă-l pe acesta} few {Continuă să urmărești # streamuri și adaugă-l pe acesta} other {Continuă să urmărești # de streamuri și adaugă-l pe acesta}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Linkul tău de invitație expiră peste # zi.} few {Linkul tău de invitație expiră peste # zile.} other {Linkul tău de invitație expiră peste # de zile.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} ore" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# suprascriere} few {# suprascrieri} other msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} va verifica mai întâi dacă cardul tău este eligibil pentru prețuri localizate, apoi vei continua la plată. Revino la {productName} după ce ai finalizat procesul." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} nu este disponibil pe acest dispozitiv, așa că fluxul tău folosește {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} are nevoie de acces la microfonul tău. Permite accesul la microfon în setările de confidențialitate ale sistemului de operare și repornește aplicația." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} are nevoie de acces la cameră pentru a-ți afișa dispozitivele." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "o adresă URL tastată în textul mesajului" msgid "a user" msgstr "un utilizator" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Un vizualizator nu poate reda {pinnedCodec}, așa că fluxul tău folosește {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Acceptă" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Răspunde" @@ -3178,12 +3163,12 @@ msgstr "Adaugă în grup" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Adaugă la media salvată" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Adaugă la favoritele GIF salvate doar prin URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avansat" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Setări video avansate" @@ -3451,7 +3436,7 @@ msgstr "Comenzile de aliniere sunt disponibile doar pe ecrane mai late" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Permite" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Permite {everyoneMention} și {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Permite aplicației {PRODUCT_NAME} să îți acceseze camera în {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Permite mesaje directe de la boți" msgid "Allow bots to send you direct messages?" msgstr "Permiți boților să-ți trimită mesaje directe?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Permite accesul la cameră" @@ -4014,13 +3999,13 @@ msgstr "Emoji-urile animate, GIF-urile și stickerele rămân sub controlul tău #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF animat" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Videoclip GIF animat" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Pictogramele animate necesită funcția de comunitate {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Imagine animată" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Previzualizare imagine animată" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Încărcarea fișierelor animate necesită un abonament {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Video animat" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Stare aplicație" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Fereastră aplicație" @@ -4361,7 +4346,7 @@ msgstr "Aplicație actualizată cu succes" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Aplicații" @@ -4586,7 +4571,7 @@ msgstr "atașament" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Atașamentul {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Atașament expirat" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Atașamentul a expirat sau nu este disponibil" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID atașament copiat în clipboard" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Nivel audio" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Audio dezactivat" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Pierdere pachete audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Player audio" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Previzualizare audio" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Procesare audio (voce focalizată)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Progres audio" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Setări audio" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Surse audio: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automat ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Control automat al amplificării" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Browser: înapoi" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Dispozitiv audio implicit al browserului" @@ -6198,20 +6183,20 @@ msgstr "Apeluri" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Cameră" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Este necesar accesul la cameră pentru previzualizarea dispozitivelor" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Accesul la cameră nu a fost acordat. Actualizează permisiunile camerei și încearcă din nou." @@ -6276,13 +6261,13 @@ msgstr "Previzualizare cameră" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Calitatea camerei" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Setări cameră" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Verificarea Captcha a eșuat. Încearcă din nou." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Captură" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Capturează sunetul aplicației" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Capturează sunetul de pe desktop" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Capturează sunetul dispozitivului" @@ -6736,12 +6721,12 @@ msgstr "Modificare programată" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Schimbă fluxul" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Schimbă sursa fluxului" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Acces la canal" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Acces la canal refuzat" @@ -7097,7 +7082,7 @@ msgstr "ID-ul canalului a fost copiat în clipboard" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "link canal" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Alege metoda de plată" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Alege ce să partajezi" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Șterge domeniile de încredere ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Text mai clar" @@ -8285,7 +8270,7 @@ msgstr "Restrânge subiectul canalului" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Restrânge dispozitivele" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Creatorul comunității" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Dezactivează sunetul în comunitate" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Bara de notificare pentru cerința MFA a comunității" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Dezactivează microfonul în comunitate" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Configurează acum" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Configurează sau încheie partajarea ecranului" @@ -8904,7 +8889,7 @@ msgstr "Confirmare sau dublu clic pentru a intra în canalele vocale ale comunit msgid "Conflicts with {conflictLabel}" msgstr "Intră în conflict cu {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Conectează o cameră și încearcă din nou." @@ -8913,7 +8898,7 @@ msgstr "Conectează o cameră și încearcă din nou." msgid "Connect a camera or virtual capture device, then try again." msgstr "Conectează o cameră sau un dispozitiv de captură virtual, apoi încearcă din nou." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Conectează un ecran, apoi încearcă din nou." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Controale pentru volumul conexiunii" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Conexiune: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statisticile JSON au fost copiate în clipboard" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Copiat în clipboard" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Copiază ID-ul atașamentului" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Copiază fișierul audio" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Copiază linkul audio" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Copiază punctul final" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Copiază linkul fișierului" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Copiază GIF-ul" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Copiază linkul GIF-ului" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Copiază identificatorul" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Copiază imaginea" @@ -9448,7 +9433,7 @@ msgstr "Copiază imaginea" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Copiază linkul imaginii" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Copiază linkul către secțiune" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Copiază media" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Copiază valoarea" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Copiază videoclipul" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Copiază linkul videoclipului" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Copiază URL-ul webhook-ului" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Se copiază imaginea..." @@ -10588,7 +10573,7 @@ msgstr "Momentan: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Personalizat" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Dezactivează" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Dezactivează sunetul" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Dezactivează sunetul pe toate dispozitivele" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Dezactivează sunetul dispozitivului" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Dezactivează sunetul altor membri în canalele vocale, astfel încât să nu poată auzi sau vorbi." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Comandă rapidă pentru dezactivarea sunetului" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Dezactivează-ți sunetul" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Sunet dezactivat" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Sunet dezactivat de moderatori" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Implicit" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Cameră implicită" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Ștergi :{emojiName}:? Această acțiune nu poate fi anulată." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Ștergi „{memeName}”? Această acțiune nu poate fi anulată." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Șterge invitația" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Șterge media" @@ -11466,8 +11451,8 @@ msgstr "Șterge rolul" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Șterge media salvată" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Desktop inactiv" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Dispozitiv desktop" @@ -11849,13 +11834,13 @@ msgstr "Stare dezvoltator" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Instrumente pentru dezvoltatori" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Instrumentele pentru dezvoltatori sunt disponibile din insigna de personal din antetul canalului." @@ -11879,6 +11864,17 @@ msgstr "Dispozitiv" msgid "Device alerts" msgstr "Alerte dispozitiv" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Audio dispozitiv ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Doar audio dispozitiv" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Detalii dispozitiv" @@ -11888,7 +11884,7 @@ msgstr "Detalii dispozitiv" msgid "Device revoked" msgstr "Dispozitiv revocat" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Selectare dispozitiv" @@ -11912,7 +11908,7 @@ msgstr "Dispozitiv:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Dispozitive" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Estompează textul tăiat" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Intrare directă" @@ -12020,7 +12016,7 @@ msgstr "Încărcare directă activă" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Dezactivează" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Valoare dezactivată" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Dezactivarea previzualizărilor oprește încărcările viitoare de previzualizări. Imaginile de previzualizare existente pot rămâne vizibile până la încheierea transmiterii sau până la actualizarea previzualizării." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Renunță la mesajul vocal" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Deconectare" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Deconectează toate dispozitivele" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Deconectează dispozitivul" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Afișare" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Ecran" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification și plasează-l în folderul tău <1>.well-known pentru a putea valida domeniul." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Descarcă audio" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Descarcă actualizarea pentru desktop {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Descarcă fișierul" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Descarcă fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Descarcă GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Descarcă imaginea" @@ -12714,7 +12710,7 @@ msgstr "Descarcă programul de instalare" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Descarcă media" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Descarcă pachetul" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Descarcă video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Ecou" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Anulare ecou" @@ -12963,7 +12959,7 @@ msgstr "Editează accesul pentru {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Editează textul alternativ" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Editează scurtătura de la tastatură" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Editează media" @@ -13102,8 +13098,8 @@ msgstr "Editează motorul de căutare inversă a imaginii" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Editează media salvată" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Activează notificările în browser" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Activează accesul la cameră pentru a previzualiza camerele și dispozitivele de captură înainte de a alege unul pentru a-l transmite." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Activează sau dezactivează traducătorii încorporați. Traducătorii activați apar în meniul contextual al mesajelor când este selectat text." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Activează previzualizările" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Oprește partajarea ecranului" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Criptarea end-to-end nu este disponibilă, deoarece în acest apel se află un participant incompatibil." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Criptarea end-to-end nu este disponibilă, deoarece pe acest canal vocal se află un participant incompatibil." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Divertisment" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Întregul ecran" @@ -14095,7 +14091,7 @@ msgstr "Întregul ecran" msgid "Entire system" msgstr "Întregul sistem" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Sunetul întregului sistem" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "exclude un utilizator" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Exclude din sistem" @@ -14593,7 +14589,7 @@ msgstr "Nu s-a putut copia linkul de invitație" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Copierea în clipboard nu a reușit" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Nu s-au putut încărca invitațiile. Încearcă din nou." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Nu s-au putut încărca sursele partajabile." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Adu fereastra în prim-plan" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Voce focalizată" @@ -15322,10 +15318,6 @@ msgstr "Setări dosar" msgid "Follow us on {blueskyProviderName}" msgstr "Urmărește-ne pe {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Urmează intrarea vocală" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Redirecționează" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Înainte cu {defaultSeekAmount} secunde" @@ -15592,14 +15584,14 @@ msgstr "Ramă" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Rată de cadre" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Ratele de cadre de peste 30 FPS necesită {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Controller Y / Triunghi" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Jocuri" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Se încarcă selectorul de GIF-uri" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Previzualizare GIF" @@ -16429,7 +16421,7 @@ msgstr "Acordat {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Acordă toate permisiunile și ocolește restricțiile canalului. Foarte sensibil." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Selecție granulară" @@ -16992,7 +16984,7 @@ msgstr "Ascunde parola" msgid "Hide picture-in-picture popout?" msgstr "Ascunzi fereastra pop-up imagine în imagine?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Ascunde miniatura de previzualizare" @@ -17386,7 +17378,7 @@ msgstr "Dacă vrei ca acești membri să poată accesa mesajele mai vechi trimis #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignoră" @@ -17395,11 +17387,11 @@ msgstr "Ignoră" msgid "Ignore friend request" msgstr "Ignoră cererea de prietenie" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignoră dispozitivele hardware" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignoră media de intrare" @@ -17430,7 +17422,7 @@ msgstr "Ignori cererea de prietenie de la {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignoră pauza impusă de modul lent al acestui canal." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignoră dispozitivele virtuale" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Imagine" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Resurse de imagine" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Imagine copiată în clipboard" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Opțiuni pentru imagine" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Previzualizare imagine" @@ -17540,7 +17532,7 @@ msgstr "Încărcare imagine" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "În apel vocal" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "În chatul vocal" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Include tot, cu excepția celor selectate" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Include aplicații" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Intrare și ieșire" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Dispozitiv de intrare" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Profil de intrare: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Setări de intrare" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Stări ale câmpurilor" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Volum de intrare" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Linkul de invitație este ascuns în timpul partajării:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Linkul de invitație este mascat în timpul partajării" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Salt la {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Salt la {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Salt la apelul curent" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Salt la canalul asociat" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Salt la mesajul din link" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Salt la mesajul de la {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Salt la mesajul din {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Aspect" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Află mai multe despre previzualizarea partajării ecranului" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Stil link" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Link indisponibil" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Aplicație Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Implicit Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Se încarcă tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Se încarcă..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Aplicație macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Implicit macOS" @@ -20289,7 +20281,7 @@ msgstr "Piesa următoare" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Opțiuni media" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Redare/pauză" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Previzualizare media" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Aspect mesaje" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "link mesaj" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Test microfon" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Conținutul microfonului, al camerei și al partajării ecranului este criptat de la un capăt la altul." @@ -21019,7 +21011,7 @@ msgstr "Minori în pericol, conținut matur în locuri nepotrivite sau comportam #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Cuvinte scrise greșit" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Dispozitiv mobil" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Dezactivează toate notificările" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Dezactivează microfonul pe toate dispozitivele" @@ -21653,13 +21645,13 @@ msgstr "Pe silențios" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Microfon dezactivat" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Microfon dezactivat de moderatori" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Fără permisiunea {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Fără acces" @@ -22282,7 +22274,7 @@ msgstr "Nu au fost găsite setări avansate" msgid "No AFK channel" msgstr "Fără canal AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Nu au fost găsite ferestre de aplicații" @@ -22300,6 +22292,11 @@ msgstr "Încă niciun element" msgid "No audio" msgstr "Fără sunet" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Nu există sunet de pe acest dispozitiv" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Nicio aplicație autorizată" @@ -22341,7 +22338,7 @@ msgstr "Niciun mesaj salvat" msgid "No bot banner" msgstr "Fără banner de bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Nu s-a găsit nicio cameră" @@ -22421,7 +22418,7 @@ msgstr "Fără descriere." msgid "No desktop update is available." msgstr "Nicio actualizare pentru desktop nu este disponibilă." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Nu s-a găsit niciun ecran" @@ -22650,7 +22647,7 @@ msgstr "Nu s-a primit niciun corp de răspuns" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Niciun rezultat" @@ -22679,7 +22676,7 @@ msgstr "Încă nu există roluri. Adaugă roluri în {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Niciun element media salvat" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Filtru de zgomot" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Suprimarea zgomotului" @@ -22877,7 +22874,7 @@ msgstr "Fără conversie" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Niciunul" @@ -23286,7 +23283,7 @@ msgstr "Se aplică doar pe ecrane late." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Sunt acceptate doar cardurile de credit. Cardurile de debit și preplătite nu pot fi utilizate pentru verificarea conținutului matur." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Doar difuzoare implicite" @@ -23334,7 +23331,7 @@ msgstr "Rulează cod aici doar dacă înțelegi exact ce face." msgid "Only show message previews for DMs with unread messages" msgstr "Afișează previzualizările mesajelor doar pentru DM-urile cu mesaje necitite" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Doar difuzoare" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Deschide {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Deschide {labelText} în setări" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Deschide @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Deschide setările avansate pentru media" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Deschide o fereastră de aplicație, apoi încearcă din nou." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Deschide GIF-ul animat în vizualizare completă" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Deschide videoclipul GIF animat în vizualizare completă" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Deschide audio în vizualizare completă" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Deschide linkul audio" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Deschide browserul" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Deschide selectorul de browser" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Deschide meniul de favorite" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Deschide linkul fișierului" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Deschide linkul GIF" @@ -23651,7 +23648,7 @@ msgstr "Deschide imaginea în browser" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Deschide imaginea în vizualizare completă" @@ -23660,7 +23657,7 @@ msgstr "Deschide imaginea în vizualizare completă" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Deschide linkul imaginii" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Deschide DM-ul de sistem" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Deschide selectorul de sistem" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Deschide videoclipul în vizualizare completă" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Deschide linkul video" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Deschide conversația vocală" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Deschide setările de voce și video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Ieșire" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Dispozitiv de ieșire" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Setări ieșire" @@ -24094,7 +24091,7 @@ msgstr "Setări ieșire" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Volum ieșire" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Limită de participanți" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Opțiuni de participant pentru {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Previzualizare ascunsă" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Imaginile de previzualizare sunt stocate temporar de către {productName} pentru a fi afișate și nu sunt criptate cap la cap. Dezactivează previzualizările dacă nu dorești ca imaginile din timpul partajării ecranului să fie încărcate pentru generarea miniaturilor." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Imaginile de previzualizare sunt stocate temporar de către {productName} pentru a fi afișate și nu sunt criptate cap la cap. Persoanele din acest DM de grup nu trebuie să urmărească activ streamul tău pentru a vedea miniatura." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Imaginile de previzualizare sunt stocate temporar de către {productName} pentru a fi afișate și nu sunt criptate cap la cap. Persoanele au nevoie totuși de permisiune pentru a se conecta, dar nu trebuie să urmărească activ streamul tău." @@ -26269,7 +26266,7 @@ msgstr "Referință copiată." msgid "Referral parameters" msgstr "Parametri de recomandare" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Reîmprospătează sursele audio" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Buton normal apăsat." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Refuză" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Elimină din grup" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Elimină din media salvată" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Scoate fereastra din prim-plan" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Elimină din favoritele GIF salvate doar prin URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Interdicție revocată pentru {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Derulează înapoi {defaultSeekAmount} secunde" @@ -28202,7 +28199,7 @@ msgstr "Salvează pictograma" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Salvează niște fișiere media din mesaje pentru a începe!" @@ -28313,7 +28310,7 @@ msgstr "Este necesară permisiunea de înregistrare a ecranului" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Partajare ecran" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Amplificare audio partajare ecran" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Nu s-a putut porni sunetul partajării ecranului" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Controalele codificatorului pentru partajarea ecranului" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Partajarea ecranului s-a încheiat" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Comportamentul previzualizării la partajarea ecranului" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Previzualizări pentru partajarea ecranului" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Previzualizările pentru partajarea ecranului sunt dezactivate." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Previzualizările pentru partajarea ecranului sunt activate." @@ -28391,13 +28388,13 @@ msgstr "Confidențialitate partajare ecran" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Calitatea partajării ecranului" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Setări partajare ecran" @@ -28723,7 +28720,7 @@ msgstr "Caută roluri sau membri…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Caută în media salvată" @@ -28942,12 +28939,12 @@ msgstr "Previzualizare la derulare" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Selectează" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Selectează {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Trimite link de resetare" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Trimite media salvată {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "A setat o poziție în lista de membri pentru rol" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Setat de presetarea {preset}. Alegerea unei valori aici comută la Personalizat." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Setează volume personalizate pentru sunete individuale. Sunetele fără o setare personalizată vor urma volumul principal." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Setează scurtătura pentru dezactivarea sunetului" @@ -29669,11 +29666,6 @@ msgstr "Amână această verificare" msgid "Set this check aside?" msgstr "Amâni această verificare?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Set to send {resolution} la {frameRate} FPS cu {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Setări" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "link setări" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Trimite cadou" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Partajează ecranul" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Trimite moderatorilor comunității." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Partajează-ți ecranul" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Partajează-ți ecranul la rezoluție înaltă (1080p), Quad HD (1440p) sau rezoluția sursă nativă, la până la 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Fereastră partajată" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Audio fereastră partajată" @@ -30624,6 +30616,10 @@ msgstr "Apeluri silențioase" msgid "Silent calls from everyone" msgstr "Apeluri silențioase de la toată lumea" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Silenzios când dispozitivul de captură nu are propria intrare audio" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Derulare lină" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Video mai fluid" @@ -31005,11 +31001,6 @@ msgstr "Unele emoji-uri nu au putut fi adăugate" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Unele fișiere pe care încerci să le încarci depășesc limita maximă de {maxSizeFormatted} per fișier." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Unele setări de flux nu au putut fi aplicate fluxului tău live." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Sunete" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Sursă" @@ -31569,7 +31560,7 @@ msgstr "Începi un apel vocal?" msgid "Start call" msgstr "Inițiază apelul" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Pornește testul camerei și configurează efectele" @@ -31910,7 +31901,7 @@ msgstr "Oprește citirea" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Oprește streamingul" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Nu mai ai încredere în toate linkurile?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Oprește vizionarea" @@ -31982,7 +31973,7 @@ msgstr "Împiedică sunetul din difuzoare să ajungă în microfon." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Stream" @@ -32001,11 +31992,6 @@ msgstr "Stream încheiat" msgid "Stream hidden" msgstr "Stream ascuns" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Streamul nu ține pasul" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Calitatea streamului" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Setări stream" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Setările fluxului au fost ajustate" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Anunțuri de sistem de la personalul {productName}. Nu poți răspunde a #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Implicit din sistem" @@ -33036,13 +33017,8 @@ msgstr "Botul a fost adăugat la <0>{destinationName}." msgid "The bot has been added." msgstr "Botul a fost adăugat." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Browserul trimite {deliveredResolution} în loc de {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Previzualizarea camerei încă se oprește. Încearcă din nou să transmiți în câteva momente." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Rolul a acordat {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Sursa partajării ecranului a încetat să trimită video, astfel încât partajarea ecranului s-a oprit." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Această consolă de browser este un instrument pentru dezvoltatori." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Acest apel este criptat end-to-end." @@ -33645,11 +33621,6 @@ msgstr "Această versiune pentru desktop nu poate instala actualizări în cadru msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Această versiune de dezvoltare nu se poate actualiza singură. Descarcă un program de instalare pentru desktop pentru a testa fluxul de actualizare." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Acest dispozitiv nu a putut ține pasul cu {targetResolution} la {targetFrameRate} FPS data trecută, așa că streamul tău a început la {resolution} la {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Această instalare este gestionată de sistemul tău. Actualizează {productName} din centrul de software sau prin intermediul managerului de pachete." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Instanța curentă permite partajarea ecranului până la 720p la 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Acest canal de linkuri este marcat ca având conținut matur și poate deschide materiale care ar putea fi nepotrivite pentru unii utilizatori." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Acest link nu este disponibil pentru contul tău." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Această opțiune este obligatorie. Introdu o valoare." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Acest participant nu poate vorbi pe acest canal" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Acest participant are sunetul dezactivat" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Acestui participant i-a fost dezactivat sunetul de moderatori" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Acest număr de telefon a fost deja utilizat. Încearcă un alt număr sau contactează asistența." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Acest selector este disponibil doar în aplicația desktop." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Comută comenzile" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Activează/dezactivează sunetul" @@ -34666,7 +34637,7 @@ msgstr "Modificările pictogramei din bara de sistem se aplică numai după o re #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF-uri populare" @@ -34760,7 +34731,7 @@ msgstr "Încearcă o altă interogare de căutare." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Încearcă un alt termen de căutare sau filtru" @@ -34839,11 +34810,6 @@ msgstr "Încearcă alte filtre sau alți termeni de căutare." msgid "Try editing your message again." msgstr "Încearcă să-ți editezi din nou mesajul." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Încearcă din nou la calitate maximă" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Încearcă să cauți ceva de genul „temă”, „notificări” sau „confidențialitate”" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Dezactivează tot ce nu-ți convine. Este posibil ca unele funcții să nu mai funcționeze." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Dezactivează partajarea audio pentru această sursă sau încearcă din nou peste o clipă." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Activează automat când este detectat OBS sau XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Pornește camera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Neîncasabil" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Activează sunetul" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Activează sunetul pe toate dispozitivele" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Activează-ți sunetul" @@ -35558,7 +35524,7 @@ msgstr "utilizator necunoscut" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Utilizator necunoscut" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Deblochează emoji-urile personalizate în DM-uri cu {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Deblochează partajarea ecranului HD cu {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Activează sunetul pentru {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Activează microfonul pe toate dispozitivele" @@ -35741,7 +35707,7 @@ msgstr "Grup fără nume" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Intrare fără nume" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Încarcă emoji și stickere noi și gestionează-ți propriile creații." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Încarcă cadrele de previzualizare pentru partajarea ecranului." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL copiat în clipboard" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Tag utilizator (opțional)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Volum utilizator" @@ -37227,7 +37193,7 @@ msgstr "Pierdere pachete video:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Previzualizare video" @@ -37283,7 +37249,7 @@ msgstr "Încărcare video" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Voce și video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Setări voce și video" @@ -37685,7 +37651,7 @@ msgstr "Comenzi rapide pentru voce și video" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Apel vocal" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Depanare conexiune vocală" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Dezactivare sunet" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Mesaj vocal" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Player pentru mesaje vocale" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Setări voce" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Activare sunet" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Așteaptă aici" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Se așteaptă conexiunea..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Când sunt postate ca linkuri în chat" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Când previzualizările sunt activate, {productName} încarcă ocazional cadre JPEG din partajarea ecranului tău, astfel încât ceilalți participanți din acest DM de grup să poată vedea o miniatură înainte de a viziona." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Când previzualizările sunt activate, {productName} încarcă ocazional cadre JPEG din partajarea ecranului tău, astfel încât persoanele care au permisiunea de a se conecta la acest canal vocal să poată vedea o miniatură înainte de a viziona." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Când previzualizările sunt activate, {productName} încarcă ocazional cadre JPEG din partajarea ecranului tău, astfel încât cealaltă persoană din acest DM să poată vedea o miniatură înainte de a viziona." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Ferestrele tăiate în partea de sus sau de jos a ecranului și DevTools andocate pot afișa un fundal gri în loc să rămână transparente." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Implicit Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Ai interdicție în această comunitate și nu te poți alătura." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Ai sunetul dezactivat" @@ -38833,11 +38799,6 @@ msgstr "Folosești o versiune {releaseChannel} a aplicației {productName}." msgid "You aren't in any communities right now." msgstr "Nu ești în nicio comunitate în acest moment." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Ai cerut {resolution} la {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Nu poți trimite mesaje în această comunitate." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Nu poți partaja ecranul pe acest canal" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Nu poți vorbi pe acest canal" @@ -39036,7 +38997,7 @@ msgstr "Nu poți vorbi pe acest canal" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Nu poți porni camera în acest canal" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Ți-ai schimbat tagul cât timp aveai {PREMIUM_PRODUCT_NAME}. Acesta se va reinițializa aleatoriu când {PREMIUM_PRODUCT_NAME} expiră, dacă nu se reînnoiește." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Nu ai acces la canalul unde a fost trimis acest mesaj." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Rămâi în {ownedNames}. Proprietarii nu își pot părăsi propria comunitate." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Ți-a fost dezactivat sunetul de moderatori" @@ -39699,11 +39660,6 @@ msgstr "Cererea ta este în curs de examinare. Poți actualiza în continuare de msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Browserul tău necesită interacțiune cu utilizatorul înainte de a reda audio. Apasă butonul de mai jos pentru a activa chatul vocal." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Dispozitivul dvs. de captură trimite {deliveredResolution} în loc de {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Se verifică eligibilitatea cardului tău pentru prețuri localizate. De obicei durează doar un moment." @@ -39734,36 +39690,11 @@ msgstr "Comunitatea ta este listată în Discovery. Poți actualiza detaliile li msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Comunitatea ta are nevoie de cel puțin {minMemberCount, plural, one {# membru} few {# membri} other {# de membri}} pentru a putea fi listată în Discovery." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Conexiunea ta nu face față. Streamul tău este setat la {frameRate} FPS la {resolution}, iar spectatori primesc aproximativ {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Cardul tău de credit a fost verificat. Dacă este valid, conținutul pentru adulți se va debloca în scurt timp. Poți închide această filă și reveni la aplicație." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Dispozitivul tău nu face față. Fluxul tău este setat la {frameRate} FPS la {resolution}, iar spectatori primesc aproximativ {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Dispozitivul tău nu a ținut pasul, așa că fluxul tău trimite acum {frameRate} FPS pentru a menține {resolution} clar." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Dispozitivul tău nu a putut ține pasul, așa că streamul tău trimite acum {resolution} la {frameRate} FPS în loc de {targetResolution} la {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Dispozitivul tău nu a ținut pasul, așa că streamul tău trimite acum {resolution} pentru a menține {frameRate} FPS fluid." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Înregistrarea ta necesită o verificare anti-spam suplimentară înainte de a putea continua." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Calitatea salvată de {savedResolution} la {savedFrameRate} FPS necesită {premiumProductName}, așa că partajările folosesc {resolution} la {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Partajarea ecranului tău nu a putut fi publicată cu un codec video compatibil, așa că a fost oprită. Încearcă să partajezi din nou." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Sursa ta produce aproximativ {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Streamul tău este încă live" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Fluxul tău a fost comutat la {codec}, deoarece {previousCodec} nu a putut ține pasul pe acest dispozitiv. Este posibil ca spectatorii să vadă o scurtă pauză." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Adresa URL personalizată a fost setată la {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Codificatorul tău video a încetat să codifice cadre, așa că partajarea ecranului a fost oprită. Încearcă să partajezi din nou." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Encoderul tău video s-a oprit, așa că streamul tău a trecut la {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/ru/messages.po b/fluxer_app/src/features/i18n/locales/ru/messages.po index 71869f4c7..96c70c5fc 100644 --- a/fluxer_app/src/features/i18n/locales/ru/messages.po +++ b/fluxer_app/src/features/i18n/locales/ru/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} хочет подключиться" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} будет использовать этот аккаунт для авторизации." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} не справляется на этом устройстве. Установите значение «Автоматически» в разделе «Дополнительные настройки», чтобы использовать более быстрый кодек." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Сейчас сообщество «{communityName}» доступно msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Без ограничений} one {# участник} few {# участника} many {# участников} other {# участника}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (осталась # строка)} few {... (осталось # строки)} many {... (осталось # строк)} other {... (осталось # строки)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (осталась # строка)} few {... (осталось # строки)} many {... (осталось # строк)} other {... (осталось # строки)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Развернуть (# строка)} few {Раз msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Развернуть (# строка)} few {Развернуть (# строки)} many {Развернуть (# строк)} other {Развернуть (# строки)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Развернуть ещё # устройство} few {Развернуть ещё # устройства} many {Развернуть ещё # устройств} other {Развернуть ещё # устройства}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, =1 {В звонке} one {# в звонке} few {# в msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Присоединиться к видеозвонку (# участник)} few {Присоединиться к видеозвонку (# участника)} many {Присоединиться к видеозвонку (# участников)} other {Присоединиться к видеозвонку (# участника)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Продолжить смотреть # трансляцию и добавить эту} few {Продолжить смотреть # трансляции и добавить эту} many {Продолжить смотреть # трансляций и добавить эту} other {Продолжить смотреть # трансляций и добавить эту}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Срок действия ссылки-приглашения истекает через # день.} few {Срок действия ссылки-приглашения истекает через # дня.} many {Срок действия ссылки-приглашения истекает через # дней.} other {Срок действия ссылки-приглашения истекает через # дня.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} часа" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} кадров/с" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# переопределение} few {# п msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} сначала проверит, подходит ли ваша карта для региональных цен, а затем перенаправит вас к оплате. Вернитесь в {productName} после завершения." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} недоступен на этом устройстве, поэтому ваш поток использует {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} требуется доступ к микрофону. Разрешите доступ к микрофону в настройках конфиденциальности операционной системы и перезапустите приложение." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} требуется доступ к камере, чтобы показать список ваших устройств." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} в сети" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution}, {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "URL-адрес, набранный в тексте сообщения" msgid "a user" msgstr "пользователь" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Один из зрителей не может воспроизвести {pinnedCodec}, поэтому ваш поток использует {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Принять" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Ответить" @@ -3178,12 +3163,12 @@ msgstr "Добавить в группу" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Добавить в сохраненные медиа" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Добавить в избранные GIF (только по URL)" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Дополнительно" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Дополнительные настройки видео" @@ -3451,7 +3436,7 @@ msgstr "Настройки выравнивания доступны тольк #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Разрешить" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Разрешить {everyoneMention} и {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Разрешите {PRODUCT_NAME} доступ к вашей камере в {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Разрешить личные сообщения от ботов" msgid "Allow bots to send you direct messages?" msgstr "Разрешить ботам отправлять вам личные сообщения?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Разрешить доступ к камере" @@ -4014,13 +3999,13 @@ msgstr "Анимированные эмодзи, GIF-файлы и стикер #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Анимированный GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Анимированное GIF-видео" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Для анимированных значков требуется функция сообщества «{animatedIconFeature}»." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Анимированное изображение" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Предпросмотр анимированного изображения" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Для загрузки анимированных файлов требуется подписка {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Анимированное видео" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Состояние приложения" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Окно приложения" @@ -4361,7 +4346,7 @@ msgstr "Приложение обновлено" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Приложения" @@ -4586,7 +4571,7 @@ msgstr "вложение" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Вложение {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Срок действия вложения истёк" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Срок действия вложения истёк или оно недоступно" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "ID вложения скопирован в буфер обмена" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Уровень звука" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Звук отключен" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Потеря аудиопакетов:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Аудиоплеер" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Предпросмотр аудио" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Обработка аудио (фокусировка на голосе)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Прогресс аудио" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Настройки аудио" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Источники звука: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Автоматически ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Автоматическая регулировка усиления" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Браузер: назад" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Браузер (устройство по умолчанию)" @@ -6198,20 +6183,20 @@ msgstr "Звонки" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Камера" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Для предпросмотра устройств нужен доступ к камере" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Доступ к камере не предоставлен. Обновите разрешения для камеры и попробуйте снова." @@ -6276,13 +6261,13 @@ msgstr "Предпросмотр камеры" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Качество камеры" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Настройки камеры" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Проверка капчи не удалась. Попробуйте ещё раз." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Захват" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Захватывать звук приложения" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Захватывать звук рабочего стола" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Захватывать звук устройства" @@ -6736,12 +6721,12 @@ msgstr "Изменение запланировано" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Сменить трансляцию" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Изменить источник трансляции" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Доступ к каналам" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Доступ к каналу запрещён" @@ -7097,7 +7082,7 @@ msgstr "ID канала скопирован в буфер обмена" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "ссылка на канал" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Выберите способ оплаты" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Выберите, что показать" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Очистить доверенные домены ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Более четкий текст" @@ -8285,7 +8270,7 @@ msgstr "Свернуть тему канала" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Свернуть устройства" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Создатель сообщества" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Отключить звук в сообществе" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Баннер с требованием MFA для сообщества" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Отключить микрофон в сообществе" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Настроить сейчас" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Настроить или завершить демонстрацию экрана" @@ -8904,7 +8889,7 @@ msgstr "Подтверждение или двойной щелчок для в msgid "Conflicts with {conflictLabel}" msgstr "Конфликтует с {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Подключите камеру и попробуйте снова." @@ -8913,7 +8898,7 @@ msgstr "Подключите камеру и попробуйте снова." msgid "Connect a camera or virtual capture device, then try again." msgstr "Подключите камеру или виртуальное устройство захвата, затем повторите попытку." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Подключите дисплей и попробуйте снова." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Регуляторы громкости подключений" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Подключение: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "JSON со статистикой скопирован в буфер об #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Скопировано в буфер обмена" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Скопировать ID вложения" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Скопировать аудио" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Скопировать ссылку на аудио" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Скопировать конечную точку" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Скопировать ссылку на файл" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Скопировать GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Скопировать ссылку на GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Скопировать ID" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Скопировать изображение" @@ -9448,7 +9433,7 @@ msgstr "Скопировать изображение" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Скопировать ссылку на изображение" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Скопировать ссылку на раздел" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Скопировать медиа" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Скопировать значение" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Скопировать видео" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Скопировать ссылку на видео" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Скопировать URL вебхука" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Копирование изображения..." @@ -10588,7 +10573,7 @@ msgstr "Сейчас: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Другое" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Деактивировать" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Отключить звук" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Отключить звук на всех устройствах" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Отключить звук устройства" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Отключать звук другим участникам голосовых каналов, чтобы они не могли ни слышать, ни говорить." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Сочетание клавиш для отключения звука" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Отключить звук для себя" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Звук отключён" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Звук отключён модераторами" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "По умолчанию" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Камера по умолчанию" @@ -11258,8 +11243,8 @@ msgstr "Делавэр" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Удалить :{emojiName}:? Это действие нельзя от #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Удалить «{memeName}»? Это действие нельзя отменить." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Удалить приглашение" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Удалить медиа" @@ -11466,8 +11451,8 @@ msgstr "Удалить роль" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Удалить сохраненные медиа" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Нет на месте (компьютер)" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Компьютер" @@ -11849,13 +11834,13 @@ msgstr "Состояние разработчика" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Инструменты разработчика" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Инструменты разработчика доступны по значку сотрудника в заголовке канала." @@ -11879,6 +11864,17 @@ msgstr "Устройство" msgid "Device alerts" msgstr "Уведомления устройства" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Аудио устройства ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Аудио только с устройства" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Информация об устройстве" @@ -11888,7 +11884,7 @@ msgstr "Информация об устройстве" msgid "Device revoked" msgstr "Устройство отозвано" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Выбор устройства" @@ -11912,7 +11908,7 @@ msgstr "Устройство:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Устройства" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Приглушить зачеркнутый текст" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Прямой ввод" @@ -12020,7 +12016,7 @@ msgstr "Прямая загрузка активна" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Отключить" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Отключенное значение" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Отключение предпросмотра остановит загрузку новых кадров. Уже загруженные изображения могут оставаться видимыми до конца трансляции или до обновления предпросмотра." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Отменить голосовое сообщение" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Отключиться" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Отключить все устройства" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Отключить устройство" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Отображение" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Экран" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification и поместите его в папку <1>.well-known, чтобы мы могли подтвердить домен." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Скачать аудио" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Скачать обновление для ПК {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Скачать файл" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Скачать fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Скачать GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Скачать изображение" @@ -12714,7 +12710,7 @@ msgstr "Скачать установщик" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Скачать медиа" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Скачать пакет" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Скачать видео" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Эхо" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Эхоподавление" @@ -12963,7 +12959,7 @@ msgstr "Изменить доступ для {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Изменить альтернативный текст" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Изменить сочетание клавиш" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Изменить медиа" @@ -13102,8 +13098,8 @@ msgstr "Изменить сервис обратного поиска по из #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Изменить сохраненные медиа" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Включить уведомления в браузере" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Включите доступ к камере, чтобы посмотреть камеры и устройства захвата, прежде чем выбрать одно для трансляции." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Включите или отключите встроенные переводчики. Включенные переводчики появятся в контекстном меню сообщения при выделении текста." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Включить предварительный просмотр" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Завершить демонстрацию экрана" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Сквозное шифрование недоступно, так как в звонке участвует неподдерживаемый участник." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Сквозное шифрование недоступно, так как в этом голосовом канале есть неподдерживаемый участник." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Развлечения" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Весь экран" @@ -14095,7 +14091,7 @@ msgstr "Весь экран" msgid "Entire system" msgstr "Вся система" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Весь звук системы" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "исключить пользователя" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Исключить из системного звука" @@ -14593,7 +14589,7 @@ msgstr "Не удалось скопировать ссылку-приглаше #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Не удалось скопировать в буфер обмена" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Не удалось загрузить приглашения. Повторите попытку." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Не удалось загрузить источники для демонстрации." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Показать окно" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Фокусировка на голосе" @@ -15322,10 +15318,6 @@ msgstr "Настройки папки" msgid "Follow us on {blueskyProviderName}" msgstr "Подпишитесь на нас в {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Следовать за микрофоном" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Переслать" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Вперёд на {defaultSeekAmount} секунд" @@ -15592,14 +15584,14 @@ msgstr "Рамка" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Частота кадров" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Для частоты кадров выше 30 FPS требуется {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Геймпад Y / Треугольник" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Игры" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Загрузка GIF-файлов" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Предпросмотр GIF" @@ -16429,7 +16421,7 @@ msgstr "Предоставлены разрешения: {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Предоставляет все разрешения и обходит ограничения канала. Крайне рискованно." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Детальный выбор" @@ -16992,7 +16984,7 @@ msgstr "Скрыть пароль" msgid "Hide picture-in-picture popout?" msgstr "Скрыть окно «картинка в картинке»?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Скрыть миниатюру предпросмотра" @@ -17386,7 +17378,7 @@ msgstr "Если вы хотите, чтобы эти участники мог #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Игнорировать" @@ -17395,11 +17387,11 @@ msgstr "Игнорировать" msgid "Ignore friend request" msgstr "Игнорировать запрос в друзья" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Игнорировать аппаратные устройства" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Игнорировать входные медиапотоки" @@ -17430,7 +17422,7 @@ msgstr "Игнорировать запрос в друзья от {displayName} msgid "Ignore this channel's slowmode cooldown." msgstr "Игнорировать медленный режим в этом канале." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Игнорировать виртуальные устройства" @@ -17468,7 +17460,7 @@ msgstr "Иллинойс" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Изображение" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Изображения" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Изображение скопировано в буфер обмена" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Параметры изображения" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Предпросмотр изображения" @@ -17540,7 +17532,7 @@ msgstr "Загрузка изображения" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "В голосовом чате" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "В голосовом чате" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Включить все, кроме выбранных" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Включить приложения" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Ввод и вывод" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Устройство ввода" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Профиль ввода: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Настройки ввода" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Состояния полей ввода" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Громкость ввода" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Ссылка-приглашение скрыта во время демонстрации экрана:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Ссылка-приглашение скрыта во время демонстрации экрана" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Перейти к {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Перейти к «{labelText}»" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Перейти к текущему звонку" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Перейти к каналу по ссылке" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Перейти к сообщению по ссылке" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Перейти к сообщению от {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Перейти к сообщению в {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Макет" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Узнать больше о предпросмотре демонстрации экрана" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Стили ссылок" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Ссылка недоступна" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Приложение Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux (устройство по умолчанию)" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Загрузка темы..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Загрузка..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Приложение macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS (устройство по умолчанию)" @@ -20289,7 +20281,7 @@ msgstr "Следующая дорожка" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Параметры медиа" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Воспроизведение/пауза" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Предпросмотр медиа" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Вид сообщений" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "ссылка на сообщение" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Тест микрофона" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Микрофон, камера и демонстрация экрана защищены сквозным шифрованием." @@ -21019,7 +21011,7 @@ msgstr "Опасность для несовершеннолетних, конт #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Опечатки" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Мобильное устройство" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Отключить все уведомления" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Выключить микрофон на всех устройствах" @@ -21653,13 +21645,13 @@ msgstr "Без звука" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Микрофон выключен" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Микрофон отключен модераторами" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Нет разрешения {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Нет доступа" @@ -22282,7 +22274,7 @@ msgstr "Не найдено расширенных настроек" msgid "No AFK channel" msgstr "Нет AFK-канала" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Окна приложений не найдены" @@ -22300,6 +22292,11 @@ msgstr "Пока нет ресурсов" msgid "No audio" msgstr "Нет звука" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Аудио с этого устройства отсутствует" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Нет авторизованных приложений" @@ -22341,7 +22338,7 @@ msgstr "Нет закладок" msgid "No bot banner" msgstr "Без баннера бота" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Камера не найдена" @@ -22421,7 +22418,7 @@ msgstr "Без описания." msgid "No desktop update is available." msgstr "Нет доступных обновлений для компьютера." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Дисплеи не найдены" @@ -22650,7 +22647,7 @@ msgstr "Тело ответа не получено" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Нет результатов" @@ -22679,7 +22676,7 @@ msgstr "Ролей пока нет. Добавьте роли в {rolesSettingsP #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Нет сохраненных медиа" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Шумовой гейт" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Подавление шума" @@ -22877,7 +22874,7 @@ msgstr "Без преобразования" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Нет" @@ -23286,7 +23283,7 @@ msgstr "Применяется только на широких экранах." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Принимаются только кредитные карты. Дебетовые и предоплаченные карты нельзя использовать для проверки доступа к контенту для взрослых." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Только динамики по умолчанию" @@ -23334,7 +23331,7 @@ msgstr "Запускайте код здесь, только если вы то msgid "Only show message previews for DMs with unread messages" msgstr "Показывать предпросмотр сообщений только для личных чатов с непрочитанными сообщениями" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Только динамики" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Открыть {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Открыть {labelText} в настройках" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Открыть @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Открыть расширенные настройки мультимедиа" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Откройте окно приложения и попробуйте снова." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Открыть анимированный GIF в полноэкранном режиме" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Открыть анимированное GIF-видео в полноэкранном режиме" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Открыть аудио в полноэкранном режиме" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Открыть ссылку на аудио" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Открыть браузер" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Открыть выбор источника в браузере" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Открыть меню избранного" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Открыть ссылку на файл" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Открыть ссылку на GIF" @@ -23651,7 +23648,7 @@ msgstr "Открыть изображение в браузере" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Открыть изображение в полноэкранном режиме" @@ -23660,7 +23657,7 @@ msgstr "Открыть изображение в полноэкранном ре #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Открыть ссылку на изображение" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Открыть системный чат" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Открыть системный выбор источника" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Открыть видео в полноэкранном режиме" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Открыть ссылку на видео" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Открыть голосовой чат" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Открыть настройки аудио и видео" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Вывод" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Устройство вывода" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Настройки вывода звука" @@ -24094,7 +24091,7 @@ msgstr "Настройки вывода звука" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Громкость вывода" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Лимит участников" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Параметры участника: {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Предпросмотр скрыт" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Изображения предпросмотра временно хранятся в {productName} для передачи и не защищены сквозным шифрованием. Отключите предпросмотр, если не хотите, чтобы кадры демонстрации экрана загружались для создания миниатюр." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Изображения предпросмотра временно хранятся в {productName} для передачи и не защищены сквозным шифрованием. Участникам этого группового чата необязательно активно смотреть вашу трансляцию, чтобы видеть миниатюру." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Изображения предпросмотра временно хранятся в {productName} для передачи и не защищены сквозным шифрованием. Пользователям всё равно нужно разрешение на подключение, но им необязательно активно смотреть вашу трансляцию." @@ -26269,7 +26266,7 @@ msgstr "Ссылка скопирована." msgid "Referral parameters" msgstr "Реферальные параметры" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Обновить источники звука" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Нажата обычная кнопка." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Отклонить" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Удалить из группы" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Удалить из сохраненных медиа" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Убрать закрепление сверху" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Удалить из избранных GIF (только по URL)" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Бан для {0} снят" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Назад на {defaultSeekAmount} секунд" @@ -28202,7 +28199,7 @@ msgstr "Сохранить значок" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Сохраните медиа из сообщений, чтобы начать!" @@ -28313,7 +28310,7 @@ msgstr "Требуется разрешение на запись экрана" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Демонстрация экрана" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Усиление звука при демонстрации экрана" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Не удалось включить звук демонстрации экрана" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Настройки кодировщика для демонстрации экрана" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Демонстрация экрана завершена" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Поведение предпросмотра демонстрации экрана" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Предпросмотры демонстрации экрана" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Предпросмотры демонстрации экрана отключены." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Предпросмотры демонстрации экрана включены." @@ -28391,13 +28388,13 @@ msgstr "Конфиденциальность демонстрации экран #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Качество демонстрации экрана" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Настройки демонстрации экрана" @@ -28723,7 +28720,7 @@ msgstr "Поиск ролей или участников…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Поиск сохраненных медиа" @@ -28942,12 +28939,12 @@ msgstr "Предпросмотр перемотки" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Выбрать" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Выберите {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Отправить ссылку для сброса" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Отправить сохраненный медиафайл «{memeName}»" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Для роли задана позиция в списке участников" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Установлено пресетом {preset}. Выбор значения здесь переключит на «Другое»." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Установите пользовательскую громкость для отдельных звуков. Звуки без индивидуальных настроек будут использовать общую громкость." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Назначить сочетание клавиш для отключения звука" @@ -29669,11 +29666,6 @@ msgstr "Отложить эту проверку" msgid "Set this check aside?" msgstr "Отложить эту проверку?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Отправлять {resolution} с частотой {frameRate} кадров в секунду и кодеком {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Настройки" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "ссылка на настройки" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Поделиться подарком" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Начать демонстрацию" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Поделиться с модераторами сообщества." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Начать демонстрацию экрана" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Демонстрируйте свой экран в высоком разрешении (1080p), Quad HD (1440p) или исходном разрешении с частотой до 60 кадров в секунду." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Демонстрируемое окно" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Звук демонстрируемого окна" @@ -30624,6 +30616,10 @@ msgstr "Тихие звонки" msgid "Silent calls from everyone" msgstr "Тихие звонки от всех" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Без звука, если у устройства захвата нет собственного аудиовхода" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Плавная прокрутка" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Более плавное видео" @@ -31005,11 +31001,6 @@ msgstr "Некоторые эмодзи не удалось добавить" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Некоторые файлы, которые вы пытаетесь загрузить, превышают максимальный размер в {maxSizeFormatted} на файл." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Некоторые настройки трансляции не удалось применить к вашему прямому эфиру." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Звуки" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Исходное" @@ -31569,7 +31560,7 @@ msgstr "Начать голосовой звонок?" msgid "Start call" msgstr "Начать звонок" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Запустить тест камеры и настроить эффекты" @@ -31910,7 +31901,7 @@ msgstr "Остановить озвучивание" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Прекратить трансляцию" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Перестать доверять всем ссылкам?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Остановить просмотр" @@ -31982,7 +31973,7 @@ msgstr "Предотвращает попадание звука из динам #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Трансляция" @@ -32001,11 +31992,6 @@ msgstr "Трансляция завершена" msgid "Stream hidden" msgstr "Трансляция скрыта" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Трансляция не успевает" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Качество трансляции" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Настройки трансляции" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Настройки потока были скорректированы" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Системные объявления от сотрудников {pro #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Системное по умолчанию" @@ -33036,13 +33017,8 @@ msgstr "Бот добавлен в <0>{destinationName}." msgid "The bot has been added." msgstr "Бот добавлен." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Браузер отправляет {deliveredResolution} вместо {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Предпросмотр камеры ещё останавливается. Попробуйте начать трансляцию чуть позже." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Роль предоставляла {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Источник демонстрации экрана прекратил передачу видео, поэтому демонстрация была остановлена." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Консоль браузера — это инструмент разработчика." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "В этом звонке включено сквозное шифрование." @@ -33645,11 +33621,6 @@ msgstr "Эта сборка для ПК не может устанавливат msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Эта сборка для разработки не может обновиться сама. Загрузите установщик для ПК, чтобы протестировать процесс обновления." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Это устройство не справилось с {targetResolution} при {targetFrameRate} FPS в прошлый раз, поэтому ваша трансляция началась с {resolution} при {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Эта установка управляется вашей системой. Обновите {productName} через центр программного обеспечения или менеджер пакетов." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "В этом экземпляре демонстрация экрана ограничена качеством 720p при 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Этот канал-ссылка помечен как содержащий контент для взрослых и может открывать материалы, которые могут быть неприемлемы для некоторых пользователей." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Эта ссылка недоступна для вашего аккаунта." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Этот параметр обязателен. Укажите значение." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Этот участник не может говорить в этом канале" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "У этого участника отключён звук" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Модераторы отключили звук этому участнику" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Этот номер телефона уже использовался. Попробуйте другой номер или обратитесь в службу поддержки." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Это окно выбора доступно только в приложении для ПК." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Показать/скрыть элементы управления" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Включить/выключить звук" @@ -34666,7 +34637,7 @@ msgstr "Изменения значка в трее применяются то #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Популярные GIF-файлы" @@ -34760,7 +34731,7 @@ msgstr "Попробуйте другой поисковый запрос." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Попробуйте другой запрос или фильтр" @@ -34839,11 +34810,6 @@ msgstr "Попробуйте другие фильтры или условия msgid "Try editing your message again." msgstr "Попробуйте отредактировать сообщение ещё раз." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Попробовать снова в полном качестве" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Попробуйте поискать что-то вроде «тема», «уведомления» или «конфиденциальность»" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Отключите то, что вас не устраивает. Некоторые функции могут перестать работать." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Отключите общий доступ к аудио для этого источника или попробуйте снова через мгновение." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Включать автоматически при обнаружении OBS или XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Включить камеру" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Не подлежит взысканию" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Включить звук" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Включить звук на всех устройствах" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Включить звук для себя" @@ -35558,7 +35524,7 @@ msgstr "неизвестный пользователь" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Неизвестный пользователь" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Разблокируйте пользовательские эмодзи в личных сообщениях с {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Разблокируйте демонстрацию экрана в HD с {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Включить звук для {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Включить микрофон на всех устройствах" @@ -35741,7 +35707,7 @@ msgstr "Безымянная группа" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Безымянный аудиовход" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Загружать новые эмодзи и стикеры, а также управлять своими творениями." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Загружать кадры предпросмотра демонстрации экрана." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "Ссылка скопирована в буфер обмена" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Тег пользователя (необязательно)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Громкость пользователя" @@ -37227,7 +37193,7 @@ msgstr "Потеря видеопакетов:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Предпросмотр видео" @@ -37283,7 +37249,7 @@ msgstr "Загрузка видео" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Аудио и видео" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Настройки аудио и видео" @@ -37685,7 +37651,7 @@ msgstr "Быстрые клавиши для аудио и видео" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Голосовой звонок" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Отладка голосового соединения" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Отключение звука" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Голосовое сообщение" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Плеер голосового сообщения" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Настройки голоса" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Включение звука" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Подождите" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Ожидание подключения..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "При отправке ссылкой в чат" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Когда предпросмотр включён, {productName} периодически загружает отдельные JPEG-кадры вашей демонстрации экрана, чтобы другие участники этого группового чата могли увидеть миниатюру до начала просмотра." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Когда предпросмотр включён, {productName} периодически загружает отдельные JPEG-кадры вашей демонстрации экрана, чтобы пользователи с разрешением на подключение к этому голосовому каналу могли увидеть миниатюру до начала просмотра." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Когда предпросмотр включён, {productName} периодически загружает отдельные JPEG-кадры вашей демонстрации экрана, чтобы собеседник в этом личном чате мог увидеть миниатюру до начала просмотра." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Окна, обрезанные сверху или снизу экрана, а также закреплённые DevTools, могут отображать серый фон вместо прозрачного." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows (устройство по умолчанию)" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Вы забанены в этом сообществе и не можете присоединиться." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "У вас отключён звук" @@ -38833,11 +38799,6 @@ msgstr "Вы используете {releaseChannel}-сборку {productName}. msgid "You aren't in any communities right now." msgstr "Вы пока не состоите ни в одном сообществе." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Вы запросили {resolution} с частотой {frameRate} кадров в секунду" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Вы не можете отправлять сообщения в это #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Вы не можете демонстрировать экран в этом канале" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Вы не можете говорить в этом канале" @@ -39036,7 +38997,7 @@ msgstr "Вы не можете говорить в этом канале" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Вы не можете включить камеру в этом канале" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Вы изменили свой тег, пока у вас была подписка {PREMIUM_PRODUCT_NAME}. Он будет случайно изменен, когда срок действия подписки {PREMIUM_PRODUCT_NAME} истечет, если она не будет продлена." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "У вас нет доступа к каналу, в котором было отправлено это сообщение." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Вы остаетесь в {ownedNames}. Владельцы не могут покинуть свое сообщество." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Модераторы отключили вам звук" @@ -39699,11 +39660,6 @@ msgstr "Ваша заявка находится на рассмотрении. msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Браузеру нужно действие с вашей стороны, прежде чем он сможет воспроизводить звук. Нажмите кнопку ниже, чтобы включить голосовой чат." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Ваше устройство захвата отправляет {deliveredResolution} вместо {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Проверяем карту, чтобы подобрать цены для вашего региона. Обычно это занимает несколько секунд." @@ -39734,36 +39690,11 @@ msgstr "Ваше сообщество размещено в каталоге. В msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Чтобы разместить сообщество в каталоге, в нем должно быть не менее {minMemberCount, plural, one {# участника} few {# участников} many {# участников} other {# участников}}." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Вашего подключения недостаточно. Ваш поток настроен на {frameRate} FPS при разрешении {resolution}, а зрители получают около {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Ваша кредитная карта проверена. Если карта действительна, доступ к контенту для взрослых будет открыт в ближайшее время. Вы можете закрыть эту вкладку и вернуться в приложение." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Ваше устройство не справляется. Ваш поток настроен на {frameRate} FPS при разрешении {resolution}, а зрители получают около {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Ваше устройство не справляется, поэтому ваш поток теперь отправляет {frameRate} кадров в секунду, чтобы сохранить четкость {resolution}." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Ваше устройство не справляется, поэтому ваш поток теперь отправляет {resolution} с частотой {frameRate} кадров/с вместо {targetResolution} с частотой {targetFrameRate} кадров/с." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Ваше устройство не справлялось, поэтому ваш поток теперь отправляет {resolution} для поддержания плавности {frameRate} FPS." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Чтобы продолжить, нужно пройти дополнительную антиспам-проверку." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Ваше сохраненное качество {savedResolution} при {savedFrameRate} FPS требует {premiumProductName}, поэтому используется качество {resolution} при {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Не удалось опубликовать демонстрацию экрана с совместимым видеокодеком, поэтому она была остановлена. Попробуйте начать демонстрацию снова." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Ваш источник выдает около {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Ваша трансляция продолжается" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Ваш поток переключился на {codec}, так как {previousCodec} не справлялся на этом устройстве. Зрители могут увидеть короткую паузу." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Короткая ссылка установлена: {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Ваш видеокодер перестал кодировать кадры, поэтому демонстрация экрана была остановлена. Попробуйте начать демонстрацию снова." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Ваш видеокодек остановился, поэтому трансляция переключилась на {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/sv-SE/messages.po b/fluxer_app/src/features/i18n/locales/sv-SE/messages.po index a399e688e..8978d25d3 100644 --- a/fluxer_app/src/features/i18n/locales/sv-SE/messages.po +++ b/fluxer_app/src/features/i18n/locales/sv-SE/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} vill ansluta" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} kommer att använda det här kontot för den här auktoriseringen." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} kan inte hålla jämna steg på den här enheten. Ställ in codec till Automatisk i Avancerade inställningar för att tillåta en snabbare." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} är för närvarande endast tillgänglig för {productNa msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Ingen gräns} one {# deltagare} other {# deltagare}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# rad kvar)} other {... (# rader kvar)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {… (# rad kvar)} other {… (# rader kvar)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Visa (# rad)} other {Visa (# rader)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Visa (# rad)} other {Visa (# rader)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Visa # annan enhet} other {Visa # andra enheter}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {I samtal} other {# i samtal}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Gå med i videosamtal (# deltagare)} other {Gå med i videosamtal (# deltagare)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "Fortsätt titta på {count, plural, one {# sändning} other {# sändningar}} och lägg till den här" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Din inbjudningslänk upphör att gälla om # dag.} other {Din inbjudningslänk upphör att gälla om # dagar.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} timmar" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} bilder/sek" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# åsidosättning} other {# åsidosättning msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} kontrollerar först om ditt kort kan användas för regionala priser och tar dig sedan till betalningen. Återgå till {productName} när du är klar." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} är inte tillgängligt på den här enheten, så din stream använder {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} behöver åtkomst till din mikrofon. Tillåt mikrofonåtkomst i operativsystemets sekretessinställningar och starta om appen." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} behöver åtkomst till kameran för att visa dina enheter." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} online" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "en URL som skrivits i meddelandetexten" msgid "a user" msgstr "en användare" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "En tittare kan inte spela upp {pinnedCodec}, så din stream använder {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Acceptera" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Svara" @@ -3178,12 +3163,12 @@ msgstr "Lägg till i grupp" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Lägg till i sparade medier" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Lägg till i URL-baserade GIF-favoriter" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Avancerat" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Avancerade videoinställningar" @@ -3451,7 +3436,7 @@ msgstr "Justeringskontroller är bara tillgängliga på bredare skärmar" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Tillåt" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Tillåt {everyoneMention} och {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Tillåt {PRODUCT_NAME} att komma åt din kamera i {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Tillåt direktmeddelanden från botar" msgid "Allow bots to send you direct messages?" msgstr "Tillåt botar att skicka direktmeddelanden till dig?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Tillåt kamera" @@ -4014,13 +3999,13 @@ msgstr "På fliken Animering styr du hur animerade emojier, GIF:ar och klisterm #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Animerad GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Animerad GIF-video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Animerade ikoner kräver communityfunktionen {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Animerad bild" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Förhandsvisning av animerad bild" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Animerade uppladdningar kräver ett {premiumProductName}-abonnemang." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Animerad video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Appstatus" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Appfönster" @@ -4361,7 +4346,7 @@ msgstr "Applikationen har uppdaterats" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Appar" @@ -4586,7 +4571,7 @@ msgstr "bilaga" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Bilaga {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Bilagan har gått ut" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Bilagan har gått ut eller är inte tillgänglig" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Bilagans ID kopierat till urklipp" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Ljudnivå" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Ljud av" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Förlorade ljudpaket:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Ljudspelare" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Ljudförhandsgranskning" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Ljudbehandling (fokuserat röstläge)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Ljudförlopp" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Ljudinställningar" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Ljudkällor: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Automatisk ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Automatisk förstärkningsreglering" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Webbläsare: bakåt" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Webbläsarens standard" @@ -6198,20 +6183,20 @@ msgstr "Samtal" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Kameraåtkomst behövs för enhetsförhandsvisningar" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Kameraåtkomst beviljades inte. Uppdatera kamerabehörigheterna och försök igen." @@ -6276,13 +6261,13 @@ msgstr "Kameraförhandsvisning" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kamerakvalitet" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kamerainställningar" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Verifiering av captcha misslyckades. Försök igen." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Spela in" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Spela in app-ljud" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Spela in datorljud" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Spela in enhetsljud" @@ -6736,12 +6721,12 @@ msgstr "Ändring schemalagd" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Byt sändning" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Byt sändningskälla" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Kanalåtkomst" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Åtkomst till kanalen nekad" @@ -7097,7 +7082,7 @@ msgstr "Kanal-ID kopierat till urklipp" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "kanallänk" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Välj betalningsmetod" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Välj vad du vill dela" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Rensa betrodda domäner ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Tydligare text" @@ -8285,7 +8270,7 @@ msgstr "Fäll ihop kanalämne" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Fäll ihop enheter" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Skapare av communityn" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Stäng av medlemmens ljud i communityn" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Meddelandefält för MFA-krav i communityn" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Tysta medlemmen i communityn" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Konfigurera nu" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Konfigurera eller avsluta skärmdelning" @@ -8904,7 +8889,7 @@ msgstr "Bekräftelse eller dubbelklick för att ansluta till röstkanaler i comm msgid "Conflicts with {conflictLabel}" msgstr "Konflikter med {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Anslut en kamera och försök igen." @@ -8913,7 +8898,7 @@ msgstr "Anslut en kamera och försök igen." msgid "Connect a camera or virtual capture device, then try again." msgstr "Anslut en kamera eller virtuell inspelningsenhet och försök igen." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Anslut en skärm och försök igen." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Volymkontroller för anslutning" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Anslutning: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Statistik-JSON kopierad till urklipp" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Kopierat till urklipp" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Kopiera bilage-ID" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Kopiera ljud" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Kopiera ljudlänk" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Kopiera slutpunkt" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Kopiera fillänk" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Kopiera GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Kopiera GIF-länk" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Kopiera identifierare" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Kopiera bild" @@ -9448,7 +9433,7 @@ msgstr "Kopiera bild" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Kopiera bildlänk" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Kopiera länk till avsnittet" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Kopiera medieobjekt" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Kopiera värde" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Kopiera video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Kopiera videolänk" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Kopiera webhook-URL" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Kopierar bild..." @@ -10588,7 +10573,7 @@ msgstr "Just nu: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Anpassad" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Inaktivera" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Stäng av ljudet" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Stäng av ljudet på alla enheter" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Stäng av ljudet på enheten" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Stäng av andra medlemmars ljud i röstkanaler så att de varken kan höra eller prata." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Kortkommando för att stänga av ljudet" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Stäng av ljudet för dig själv" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Ljudet avstängt" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Ljudet avstängt av moderatorer" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Standard" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Standardkamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Ta bort :{emojiName}:? Detta kan inte ångras." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Ta bort \"{memeName}\"? Detta kan inte ångras." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Ta bort inbjudan" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Ta bort medieobjekt" @@ -11466,8 +11451,8 @@ msgstr "Ta bort roll" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Ta bort sparat medieobjekt" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Borta från datorn" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Dator" @@ -11849,13 +11834,13 @@ msgstr "Utvecklarstatus" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Utvecklarverktyg" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Utvecklarverktyg finns via personalmärket i kanalhuvudet." @@ -11879,6 +11864,17 @@ msgstr "Enhet" msgid "Device alerts" msgstr "Enhetsaviseringar" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Enhetsljud ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Endast enhetsljud" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Enhetsinformation" @@ -11888,7 +11884,7 @@ msgstr "Enhetsinformation" msgid "Device revoked" msgstr "Enhetens åtkomst har återkallats" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Enhetsval" @@ -11912,7 +11908,7 @@ msgstr "Enhet:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Enheter" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Tona ned genomstruken text" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Direktinmatning" @@ -12020,7 +12016,7 @@ msgstr "Direktuppladdning aktiv" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Inaktivera" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Inaktiverat värde" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Om du inaktiverar förhandsvisningar stoppas framtida uppladdningar av förhandsvisningar. Befintliga förhandsvisningsbilder kan fortfarande vara synliga tills sändningen avslutas eller förhandsvisningen uppdateras." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Kasta röstmeddelandet" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Koppla från" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Koppla från alla enheter" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Koppla från enhet" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Visning" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Skärm" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification och placera den i din <1>.well-known-mapp så att vi kan validera domänen." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Ladda ner ljud" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Ladda ner uppdatering {version} för datorappen ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Ladda ner fil" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Ladda ner fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Ladda ner GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Ladda ner bild" @@ -12714,7 +12710,7 @@ msgstr "Ladda ner installationsprogram" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Ladda ner medieobjekt" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Ladda ner paket" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Ladda ner video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Eko" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Ekoeliminering" @@ -12963,7 +12959,7 @@ msgstr "Redigera åtkomst för {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Redigera alt-text" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Redigera kortkommando" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Redigera medieobjekt" @@ -13102,8 +13098,8 @@ msgstr "Redigera sökmotor för omvänd bildsökning" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Redigera sparat medieobjekt" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Aktivera webbläsaraviseringar" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Tillåt kameraåtkomst för att förhandsvisa kameror och inspelningsenheter innan du väljer en att sända från." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Aktivera eller inaktivera inbyggda översättare. Aktiverade översättare visas i meddelandets snabbmeny när text är markerad." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Aktivera förhandsvisningar" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Avsluta skärmdelning" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Totalsträckskryptering är inte tillgänglig eftersom en deltagare i samtalet saknar stöd för den." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Totalsträckskryptering är inte tillgänglig eftersom en deltagare i röstkanalen saknar stöd för den." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Underhållning" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Hela skärmen" @@ -14095,7 +14091,7 @@ msgstr "Hela skärmen" msgid "Entire system" msgstr "Hela systemet" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Hela systemljudet" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "uteslut en användare" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Uteslut från systemljudet" @@ -14593,7 +14589,7 @@ msgstr "Kunde inte kopiera inbjudningslänken" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Kunde inte kopiera till urklipp" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Det gick inte att läsa in inbjudningar. Försök igen." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Det gick inte att läsa in delbara källor." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Fokusera fönstret" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Fokuserat röstläge" @@ -15322,10 +15318,6 @@ msgstr "Mappinställningar" msgid "Follow us on {blueskyProviderName}" msgstr "Följ oss på {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Följ röstinmatning" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Vidarebefordra" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Spola framåt {defaultSeekAmount} sekunder" @@ -15592,14 +15584,14 @@ msgstr "Ram" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Bildfrekvens" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Bildfrekvenser över 30 FPS kräver {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Handkontroll Y / Triangel" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Spel" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF-väljaren laddas" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF-förhandsvisning" @@ -16429,7 +16421,7 @@ msgstr "Beviljade {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Ger alla behörigheter och kringgår kanalbegränsningar. Mycket känsligt." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Detaljerat urval" @@ -16992,7 +16984,7 @@ msgstr "Dölj lösenord" msgid "Hide picture-in-picture popout?" msgstr "Dölj bild-i-bild-fönstret?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Dölj förhandsgranskningens miniatyrbild" @@ -17386,7 +17378,7 @@ msgstr "Om du vill att de här medlemmarna ska kunna läsa äldre meddelanden so #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ignorera" @@ -17395,11 +17387,11 @@ msgstr "Ignorera" msgid "Ignore friend request" msgstr "Ignorera vänförfrågan" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ignorera maskinvaruenheter" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ignorera inmatningsmedia" @@ -17430,7 +17422,7 @@ msgstr "Ignorera vänförfrågan från {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Ignorera väntetiden för långsamt läge i den här kanalen." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ignorera virtuella" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Bild" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Bildresurser" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Bild kopierad till urklipp" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Bildalternativ" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Bildförhandsvisning" @@ -17540,7 +17532,7 @@ msgstr "Bilduppladdning" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "I röstchatt" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "I röstchatt" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Inkludera alla utom valda" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Inkludera appar" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "In- och utdata" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Indataenhet" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Indataprofil: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Ingångsinställningar" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Inmatningslägen" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Ingångsvolym" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Inbjudningslänken är dold under delning:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Inbjudningslänk maskerad under delning" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Hoppa till {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Gå till {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Gå till det aktuella samtalet" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Gå till den länkade kanalen" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Gå till det länkade meddelandet" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Gå till meddelandet från {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Hoppa till meddelandet i {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Layout" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Läs mer om förhandsvisningar av skärmdelning" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Länkstil" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Länk otillgänglig" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux-app" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Standard för Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Laddar tema..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Läser in..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS-app" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Standard för macOS" @@ -20289,7 +20281,7 @@ msgstr "Nästa spår" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Mediealternativ" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Spela upp/pausa" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Medieförhandsvisning" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Meddelandelayout" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "meddelandelänk" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofontest" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Innehåll från mikrofon, kamera och skärmdelning är totalsträckskrypterat." @@ -21019,7 +21011,7 @@ msgstr "Minderåriga i riskzonen, vuxet innehåll på fel plats eller oönskat b #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Felstavade ord" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobil enhet" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Tysta alla" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Stäng av mikrofonen på alla enheter" @@ -21653,13 +21645,13 @@ msgstr "Tystad" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofonen är avstängd" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Tystad av moderatorer" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Ingen behörighet för {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Ingen åtkomst" @@ -22282,7 +22274,7 @@ msgstr "Inga avancerade inställningar hittades" msgid "No AFK channel" msgstr "Ingen AFK-kanal" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Inga programfönster hittades" @@ -22300,6 +22292,11 @@ msgstr "Inga resurser än" msgid "No audio" msgstr "Inget ljud" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Ingen ljud från den här enheten" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Inga auktoriserade appar" @@ -22341,7 +22338,7 @@ msgstr "Inga bokmärken" msgid "No bot banner" msgstr "Ingen bot-banner" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Ingen kamera hittades" @@ -22421,7 +22418,7 @@ msgstr "Ingen beskrivning." msgid "No desktop update is available." msgstr "Ingen uppdatering för datorappen är tillgänglig." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Inga skärmar hittades" @@ -22650,7 +22647,7 @@ msgstr "Ingen svarsdata mottagen" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Inga resultat" @@ -22679,7 +22676,7 @@ msgstr "Inga roller än. Lägg till roller i {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Inga sparade medier" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Brusgrind" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Brusreducering" @@ -22877,7 +22874,7 @@ msgstr "Ingen konvertering" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Ingen" @@ -23286,7 +23283,7 @@ msgstr "Gäller endast på breda skärmar." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Endast kreditkort accepteras. Bankkort och förbetalda kort kan inte användas för kontrollen för vuxet innehåll." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Endast standardhögtalare" @@ -23334,7 +23331,7 @@ msgstr "Kör bara kod här om du förstår exakt vad den gör." msgid "Only show message previews for DMs with unread messages" msgstr "Visa bara meddelandeförhandsvisningar för DM-konversationer med olästa meddelanden" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Endast högtalare" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Öppna {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Öppna {labelText} i inställningarna" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Öppna @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Öppna avancerade medieinställningar" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Öppna ett programfönster och försök igen." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Öppna animerad GIF i medievisaren" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Öppna animerad GIF-video i medievisaren" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Öppna ljud i medievisaren" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Öppna ljudlänk" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Öppna webbläsaren" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Öppna webbläsarväljaren" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Öppna favoritmenyn" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Öppna fillänk" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Öppna GIF-länk" @@ -23651,7 +23648,7 @@ msgstr "Öppna bild i webbläsare" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Öppna bild i medievisaren" @@ -23660,7 +23657,7 @@ msgstr "Öppna bild i medievisaren" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Öppna bildlänk" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Öppna system-DM" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Öppna systemväljaren" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Öppna video i medievisaren" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Öppna videolänk" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Öppna röstchatt" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Öppna inställningar för ljud och video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Utdata" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Utdataenhet" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Utgångsinställningar" @@ -24094,7 +24091,7 @@ msgstr "Utgångsinställningar" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Utvolym" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Deltagargräns" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Alternativ för {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Förhandsvisning dold" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Förhandsvisningsbilder lagras tillfälligt av {productName} för att kunna levereras och är inte totalsträckskrypterade. Inaktivera förhandsvisningar om du inte vill att bildrutor från skärmdelningen ska laddas upp som miniatyrbilder." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Förhandsvisningsbilder lagras tillfälligt av {productName} för att kunna levereras och är inte totalsträckskrypterade. Personerna i den här grupp-DM-konversationen behöver inte aktivt titta på din sändning för att se miniatyrbilden." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Förhandsvisningsbilder lagras tillfälligt av {productName} för att kunna levereras och är inte totalsträckskrypterade. Andra behöver fortfarande behörighet att ansluta, men de behöver inte aktivt titta på din sändning." @@ -26269,7 +26266,7 @@ msgstr "Referens kopierad." msgid "Referral parameters" msgstr "Värvningsparametrar" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Uppdatera ljudkällor" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Vanlig knapp klickad." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Avvisa" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Ta bort från grupp" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Ta bort från sparade medier" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Sluta visa överst" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Ta bort från URL-baserade GIF-favoriter" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Hävde bannlysningen för {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Spola tillbaka {defaultSeekAmount} sekunder" @@ -28202,7 +28199,7 @@ msgstr "Spara ikon" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Spara medier från meddelanden för att komma igång!" @@ -28313,7 +28310,7 @@ msgstr "Skärminspelningsbehörighet krävs" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Skärmdelning" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Ljudförstärkning vid skärmdelning" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Ljud för skärmdelning kunde inte starta" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Inställningar för skärmdelningskodare" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Skärmdelningen avslutades" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Beteende för skärmdelningsförhandsvisning" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Förhandsvisningar av skärmdelning" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Förhandsvisningar av skärmdelning är inaktiverade." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Förhandsvisningar för skärmdelning är aktiverade." @@ -28391,13 +28388,13 @@ msgstr "Sekretess vid skärmdelning" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Skärmdelningskvalitet" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Skärmdelningsinställningar" @@ -28723,7 +28720,7 @@ msgstr "Sök roller eller medlemmar…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Sök sparade medier" @@ -28942,12 +28939,12 @@ msgstr "Förhandsvisning vid spolning" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Välj" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Välj {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Skicka återställningslänk" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Skicka sparat medieobjekt {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Ställde in en position i medlemslistan för rollen" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Ställs in av förinställningen {preset}. Att välja ett värde här växlar till Anpassad." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Ställ in anpassade volymer för enskilda ljud. Ljud utan en åsidosättning följer huvudvolymen." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Ange kortkommando för att stänga av ljudet" @@ -29669,11 +29666,6 @@ msgstr "Skjut upp den här kontrollen" msgid "Set this check aside?" msgstr "Skjuta upp den här kontrollen?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Ställ in för att skicka {resolution} med {frameRate} FPS med {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Inställningar" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "inställningslänk" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Dela present" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Dela skärm" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Dela med community-moderatorer." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Dela din skärm" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Dela din skärm i HD (1080p), Quad HD (1440p) eller källans ursprungliga upplösning, med upp till 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Delat fönster" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Ljud från delat fönster" @@ -30624,6 +30616,10 @@ msgstr "Tysta samtal" msgid "Silent calls from everyone" msgstr "Tysta samtal från alla" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Tyst när enheten som används för inspelning inte har någon egen ljudingång" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Mjuk rullning" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Mjukare video" @@ -31005,11 +31001,6 @@ msgstr "Vissa emojier kunde inte läggas till" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Vissa filer du försöker ladda upp överskrider den maximala storleksgränsen på {maxSizeFormatted} per fil." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Vissa ströminställningar kunde inte tillämpas på din livesändning." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Ljud" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Källa" @@ -31569,7 +31560,7 @@ msgstr "Starta ett röstsamtal?" msgid "Start call" msgstr "Starta samtal" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Starta kameratest och konfigurera effekter" @@ -31910,7 +31901,7 @@ msgstr "Stoppa uppläsning" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Sluta sända" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Sluta lita på alla länkar?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Sluta titta" @@ -31982,7 +31973,7 @@ msgstr "Hindrar ljudet från högtalarna från att matas tillbaka till mikrofone #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Sändning" @@ -32001,11 +31992,6 @@ msgstr "Sändningen avslutades" msgid "Stream hidden" msgstr "Sändningen dold" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Sändningen hänger inte med" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Sändningskvalitet" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Sändningsinställningar" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Streaminställningar justerades" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Systemmeddelanden från {productName}-personal. Du kan inte svara här." #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Systemstandard" @@ -33036,13 +33017,8 @@ msgstr "Boten har lagts till i <0>{destinationName}." msgid "The bot has been added." msgstr "Boten har lagts till." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Webbläsaren skickar {deliveredResolution} istället för {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Kameraförhandsvisningen håller fortfarande på att stoppas. Försök sända igen om en stund." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Rollen gav {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Skärmdelningskällan slutade skicka video, så din skärmdelning har stoppats." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Den här webbläsarkonsolen är ett utvecklarverktyg." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Samtalet är totalsträckskrypterat." @@ -33645,11 +33621,6 @@ msgstr "Den här versionen av datorappen kan inte installera uppdateringar inifr msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Den här utvecklingsversionen kan inte uppdatera sig själv. Ladda ner ett installationsprogram för datorappen för att prova uppdateringsflödet." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Den här enheten kunde inte hålla jämna steg med {targetResolution} vid {targetFrameRate} bildrutor/s förra gången, så din stream startade vid {resolution} vid {frameRate} bildrutor/s." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Den här installationen hanteras av ditt system. Uppdatera {productName} via din programhanterare eller pakethanterare." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Den här instansen tillåter för närvarande skärmdelning upp till 720p vid 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Den här länkkanalen är markerad för vuxet innehåll och kan öppna material som är olämpligt för vissa användare." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Den här länken är inte tillgänglig för ditt konto." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Det här alternativet krävs. Ange ett värde." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Den här deltagaren kan inte prata i den här kanalen" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Den här deltagarens ljud är avstängt" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Moderatorerna stängde av den här deltagarens ljud" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Det här telefonnumret har redan använts. Prova ett annat nummer eller kontakta supporten." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Den här väljaren är bara tillgänglig i datorappen." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Visa/dölj kontroller" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Slå på eller av ljudet" @@ -34666,7 +34637,7 @@ msgstr "Ändringar av ikonen i meddelandefältet tillämpas först efter en omst #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Trendande GIF:ar" @@ -34760,7 +34731,7 @@ msgstr "Prova en annan sökfråga." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Prova en annan sökterm eller ett annat filter" @@ -34839,11 +34810,6 @@ msgstr "Prova andra filter eller söktermer." msgid "Try editing your message again." msgstr "Försök redigera meddelandet igen." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Försök med full kvalitet igen" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Prova att söka efter något som ”tema”, ”aviseringar” eller ”integritet”" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Stäng av det du inte är bekväm med. Vissa funktioner kanske slutar fungera." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Stäng av ljuddelning för den här källan eller försök igen om en stund." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Aktivera automatiskt när OBS eller XSplit upptäcks" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Slå på kameran" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Ej indrivningsbar" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Slå på ljudet" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Slå på ljudet för alla enheter" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Slå på ljudet för dig själv" @@ -35558,7 +35524,7 @@ msgstr "okänd användare" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Okänd användare" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Lås upp anpassade emojier i DM med {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Lås upp HD-skärmdelning med {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Slå på ljudet för {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Slå på mikrofonen på alla enheter" @@ -35741,7 +35707,7 @@ msgstr "Namnlös grupp" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Namnlös ingång" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Ladda upp nya emojier och klistermärken och hantera dina egna skapelser." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Ladda upp förhandsvisningsbilder för skärmdelningar." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL kopierad till urklipp" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Användartagg (valfritt)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Användarvolym" @@ -37227,7 +37193,7 @@ msgstr "Videopaketförlust:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Videoförhandsvisning" @@ -37283,7 +37249,7 @@ msgstr "Videouppladdning" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Ljud och video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Inställningar för ljud och video" @@ -37685,7 +37651,7 @@ msgstr "Genvägar för röst- och videosamtal" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Röstsamtal" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Felsökning av röstanslutning" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Stäng av ljudet" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Röstmeddelande" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Röstmeddelandespelare" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Röstinställningar" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Slå på ljudet" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Vänta här" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Väntar på anslutning…" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "När de delas som länkar i chatten" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "När förhandsvisningar är aktiverade laddar {productName} ibland upp JPEG-bildrutor från din skärmdelning så att andra i grupp-DM-konversationen kan se en miniatyrbild innan de börjar titta." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "När förhandsvisningar är aktiverade laddar {productName} upp enstaka JPEG-bilder från din skärmdelning, så att de som har tillåtelse att ansluta till den här röstkanalen kan se en miniatyrbild innan de tittar." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "När förhandsvisningar är aktiverade laddar {productName} ibland upp JPEG-bildrutor från din skärmdelning så att den andra personen i DM-konversationen kan se en miniatyrbild innan de börjar titta." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Fönster som delvis ligger utanför skärmens över- eller nederkant samt dockade DevTools kan få en grå bakgrund i stället för att förbli transparenta." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Standard för Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Du är bannlyst från den här communityn och kan inte gå med." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Ditt ljud är avstängt" @@ -38833,11 +38799,6 @@ msgstr "Du använder en {releaseChannel}-version av {productName}." msgid "You aren't in any communities right now." msgstr "Du är inte med i några communities just nu." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Du begärde {resolution} med {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Du kan inte skicka meddelanden i den här communityn." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Du kan inte dela din skärm i den här kanalen" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Du kan inte prata i den här kanalen" @@ -39036,7 +38997,7 @@ msgstr "Du kan inte prata i den här kanalen" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Du kan inte slå på din kamera i den här kanalen" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Du ändrade din tagg medan du hade {PREMIUM_PRODUCT_NAME}. Den slumpas om när ditt {PREMIUM_PRODUCT_NAME} går ut, om det inte förnyas." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Du har inte åtkomst till kanalen där meddelandet skickades." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Du stannar i {ownedNames}. Ägare kan inte lämna sin egen community." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderatorerna stängde av ditt ljud" @@ -39699,11 +39660,6 @@ msgstr "Din ansökan väntar på granskning. Du kan fortfarande uppdatera listni msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Din webbläsare kräver användarinteraktion innan ljud kan spelas upp. Klicka på knappen nedan för att aktivera röstchatt." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Din skärmdelningsenhet skickar {deliveredResolution} istället för {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Ditt kort kontrolleras för regional prissättning. Det brukar ta en stund." @@ -39734,36 +39690,11 @@ msgstr "Din community listas i Upptäck. Du kan uppdatera listningens uppgifter msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Din community behöver minst {minMemberCount, plural, one {# medlem} other {# medlemmar}} innan den kan listas i Upptäck." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Din anslutning klarar inte av det. Din stream är inställd på {frameRate} FPS i {resolution} och tittarna får ungefär {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Ditt kreditkort har kontrollerats. Om kortet är giltigt kommer vuxet innehåll att låsas upp inom kort. Du kan stänga den här fliken och återgå till appen." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Din enhet klarar inte av det. Din ström är inställd på {frameRate} FPS vid {resolution} och tittarna får ungefär {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Din enhet kunde inte hänga med, så din stream skickar nu {frameRate} FPS för att hålla {resolution} skarpt." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Din enhet kunde inte hänga med, så din stream skickar nu {resolution} med {frameRate} FPS istället för {targetResolution} med {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Din enhet kunde inte hänga med, så din stream skickar nu {resolution} för att hålla {frameRate} FPS jämnt." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Din registrering behöver en extra antispamkontroll innan du kan fortsätta." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Din sparade {savedResolution} med {savedFrameRate} FPS kräver {premiumProductName}, så delningar använder {resolution} med {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Din skärmdelning kunde inte publiceras med en kompatibel videokodek, så den stoppades. Försök dela igen." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Din källa producerar cirka {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Din sändning är fortfarande live" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Din stream bytte till {codec} eftersom {previousCodec} inte kunde hålla jämna steg på den här enheten. Tittare kan se en kort paus." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Din anpassade URL har ställts in till {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Din videokodare slutade koda bildrutor, så din skärmdelning stoppades. Försök dela igen." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Din videokodare slutade fungera, så din stream bytte till {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/th/messages.po b/fluxer_app/src/features/i18n/locales/th/messages.po index abadcce34..b0bc12fa7 100644 --- a/fluxer_app/src/features/i18n/locales/th/messages.po +++ b/fluxer_app/src/features/i18n/locales/th/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} ต้องการเชื่อมต่อ" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} จะใช้บัญชีนี้สำหรับการอนุญาตนี้" -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} ไม่สามารถทำงานได้บนอุปกรณ์นี้ ตั้งค่าตัวแปลงสัญญาณเป็นอัตโนมัติในการตั้งค่าขั้นสูงเพื่อใช้ตัวแปลงสัญญาณที่เร็วกว่า" - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "ขณะนี้ {communityName} เข้าถึงได้เฉ msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ ไม่จำกัด} one {ผู้เข้าร่วม # คน} other {ผู้เข้าร่วม # คน}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (เหลือ # บรรทัด)} other {... (เหลือ # บรรทัด)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (เหลือ # แถว)} other {... (เหลือ # แถว)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {ขยาย (# บรรทัด)} other {ขย msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {ขยาย (# แถว)} other {ขยาย (# แถว)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {ขยายอุปกรณ์อื่น # เครื่อง} other {ขยายอุปกรณ์อื่น # เครื่อง}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {กำลังคุยสาย} other {# คน msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {เข้าร่วมวิดีโอคอล (ผู้เข้าร่วม # คน)} other {เข้าร่วมวิดีโอคอล (ผู้เข้าร่วม # คน)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {ดูสตรีมที่เปิดอยู่ # รายการต่อไปและเพิ่มสตรีมนี้} other {ดูสตรีมที่เปิดอยู่ # รายการต่อไปและเพิ่มสตรีมนี้}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {ลิงก์เชิญของคุณจะหมดอายุในอีก # วัน} other {ลิงก์เชิญของคุณจะหมดอายุในอีก # วัน}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} ชั่วโมง" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} เฟรมต่อวินาที" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# การแทนที่} other {# ก msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} จะตรวจสอบก่อนว่าบัตรของคุณมีสิทธิ์ได้ราคาแบบท้องถิ่นหรือไม่ จากนั้นจะพาคุณไปยังหน้าชำระเงิน กลับมาที่ {productName} เมื่อทำเสร็จแล้ว" -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "อุปกรณ์นี้ไม่รองรับ {pinnedCodec} ดังนั้นสตรีมของคุณจึงใช้ {codec}" - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} ต้องการสิทธิ์เข้าถึงไมโครโฟนของคุณ โปรดอนุญาตการเข้าถึงไมโครโฟนในการตั้งค่าความเป็นส่วนตัวของระบบปฏิบัติการ แล้วรีสตาร์ทแอป" #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} ต้องการสิทธิ์เข้าถึงกล้องเพื่อแสดงรายการอุปกรณ์ของคุณ" @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "ออนไลน์ {renderedPresenceCount} คน" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "URL ที่พิมพ์ในข้อความ" msgid "a user" msgstr "ผู้ใช้" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "ผู้ชมไม่สามารถเล่น {pinnedCodec} ได้ จึงทำให้สตรีมของคุณใช้ {codec}" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "ยอมรับ" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "รับสาย" @@ -3178,12 +3163,12 @@ msgstr "เพิ่มเข้ากลุ่ม" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "เพิ่มไปยังสื่อที่บันทึกไว้" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "เพิ่มไปยัง GIF รายการโปรด (เฉพาะ URL)" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "ขั้นสูง" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "การตั้งค่าวิดีโอขั้นสูง" @@ -3451,7 +3436,7 @@ msgstr "การควบคุมการจัดเรียงมีให #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "อนุญาต" msgid "Allow {everyoneMention} and {hereMention}" msgstr "อนุญาต {everyoneMention} และ {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "อนุญาตให้ {PRODUCT_NAME} เข้าถึงกล้องของคุณใน {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}" @@ -3618,7 +3603,7 @@ msgstr "อนุญาตให้บอทส่งข้อความส่ msgid "Allow bots to send you direct messages?" msgstr "อนุญาตให้บอทส่งข้อความส่วนตัวถึงคุณหรือไม่" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "อนุญาตให้เข้าถึงกล้อง" @@ -4014,13 +3999,13 @@ msgstr "คุณควบคุมอิโมจิ GIF และสติก #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF เคลื่อนไหว" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "วิดีโอ GIF แบบเคลื่อนไหว" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "ไอคอนเคลื่อนไหวต้องใช้ฟีเจอร์คอมมูนิตี้ {animatedIconFeature}" #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "รูปภาพเคลื่อนไหว" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "ตัวอย่างรูปภาพเคลื่อนไหว" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "การอัปโหลดภาพเคลื่อนไหวต้องมีการสมัครสมาชิก {premiumProductName}" #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "วิดีโอเคลื่อนไหว" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "สถานะแอป" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "หน้าต่างแอป" @@ -4361,7 +4346,7 @@ msgstr "อัปเดตแอปพลิเคชันแล้ว" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "แอปพลิเคชัน" @@ -4586,7 +4571,7 @@ msgstr "ไฟล์แนบ" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "ไฟล์แนบ {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "ไฟล์แนบหมดอายุแล้ว" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "ไฟล์แนบหมดอายุหรือไม่พร้อมใช้งาน" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "คัดลอก ID ไฟล์แนบแล้ว" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "ระดับเสียง" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "ปิดเสียงแล้ว" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "แพ็กเก็ตเสียงสูญหาย:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "เครื่องเล่นเสียง" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "ตัวอย่างเสียง" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "การประมวลผลเสียง (เสียงที่เน้น)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "ความคืบหน้าของเสียง" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "การตั้งค่าเสียง" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "แหล่งเสียง: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "อัตโนมัติ ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "ควบคุมอัตราขยายเสียงอัตโนมัติ" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "เบราว์เซอร์: ย้อนกลับ" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "ค่าเริ่มต้นของเบราว์เซอร์" @@ -6198,20 +6183,20 @@ msgstr "การโทร" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "กล้อง" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "จำเป็นต้องเข้าถึงกล้องเพื่อดูตัวอย่างอุปกรณ์" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "ไม่ได้รับสิทธิ์เข้าถึงกล้อง โปรดอัปเดตสิทธิ์กล้อง แล้วลองอีกครั้ง" @@ -6276,13 +6261,13 @@ msgstr "ตัวอย่างกล้อง" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "คุณภาพกล้อง" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "การตั้งค่ากล้อง" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "การยืนยันแคปต์ชาล้มเหลว โปรดลองอีกครั้ง" #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "บันทึกเสียง" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "บันทึกเสียงจากแอป" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "บันทึกเสียงเดสก์ท็อป" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "บันทึกเสียงจากอุปกรณ์" @@ -6736,12 +6721,12 @@ msgstr "กำหนดการเปลี่ยนแปลงแล้ว" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "เปลี่ยนสตรีม" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "เปลี่ยนแหล่งที่มาของสตรีม" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "การเข้าถึงช่อง" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "ไม่สามารถเข้าถึงช่องได้" @@ -7097,7 +7082,7 @@ msgstr "คัดลอก ID ช่องแล้ว" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "ลิงก์ช่อง" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "เลือกช่องทางการชำระเงิน" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "เลือกสิ่งที่จะแชร์" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "ล้างโดเมนที่เชื่อถือได้ ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "ข้อความชัดเจนขึ้น" @@ -8285,7 +8270,7 @@ msgstr "ยุบหัวข้อช่อง" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "ยุบอุปกรณ์" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "ผู้สร้างคอมมูนิตี้" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "ปิดเสียงทั้งหมดในคอมมูนิตี้" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "แถบแจ้งเตือนข้อกำหนด MFA ของคอมมูนิตี้" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "ปิดไมโครโฟนในคอมมูนิตี้" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "ตั้งค่าเลย" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "ตั้งค่าหรือหยุดแชร์หน้าจอ" @@ -8904,7 +8889,7 @@ msgstr "ยืนยันหรือดับเบิลคลิกเพื msgid "Conflicts with {conflictLabel}" msgstr "ขัดแย้งกับ {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "เชื่อมต่อกล้องแล้วลองอีกครั้ง" @@ -8913,7 +8898,7 @@ msgstr "เชื่อมต่อกล้องแล้วลองอีก msgid "Connect a camera or virtual capture device, then try again." msgstr "เชื่อมต่อกล้องหรืออุปกรณ์จับภาพเสมือน แล้วลองอีกครั้ง" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "เชื่อมต่อจอแสดงผล แล้วลองอีกครั้ง" @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "การควบคุมระดับเสียงการเชื่อมต่อ" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "การเชื่อมต่อ: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "คัดลอก JSON สถิติไปยังคลิปบอ #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "คัดลอกไปยังคลิปบอร์ดแล้ว" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "คัดลอก ID ไฟล์แนบ" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "คัดลอกเสียง" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "คัดลอกลิงก์เสียง" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "คัดลอกปลายทาง" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "คัดลอกลิงก์ไฟล์" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "คัดลอก GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "คัดลอกลิงก์ GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "คัดลอก ID" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "คัดลอกรูปภาพ" @@ -9448,7 +9433,7 @@ msgstr "คัดลอกรูปภาพ" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "คัดลอกลิงก์รูปภาพ" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "คัดลอกลิงก์ไปยังส่วน" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "คัดลอกสื่อ" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "คัดลอกค่า" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "คัดลอกวิดีโอ" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "คัดลอกลิงก์วิดีโอ" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "คัดลอก URL ของ webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "กำลังคัดลอกรูปภาพ..." @@ -10588,7 +10573,7 @@ msgstr "ปัจจุบัน: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "กำหนดเอง" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "ปิดใช้งาน" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "ปิดเสียงทั้งหมด" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "ปิดเสียงทั้งหมดของทุกอุปกรณ์" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "ปิดเสียงทั้งหมดของอุปกรณ์" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "ปิดเสียงทั้งหมดของสมาชิกคนอื่นในช่องเสียง เพื่อไม่ให้พวกเขาได้ยินหรือพูดได้" #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "ปุ่มลัดปิดเสียงทั้งหมด" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "ปิดเสียงทั้งหมดของตัวเอง" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "ปิดเสียงทั้งหมดแล้ว" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "ปิดเสียงทั้งหมดโดยผู้ดูแล" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "ค่าเริ่มต้น" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "กล้องเริ่มต้น" @@ -11258,8 +11243,8 @@ msgstr "เดลาแวร์" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "ลบ :{emojiName}: ใช่หรือไม่ การดำเ #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "ลบ \"{memeName}\" ใช่หรือไม่ การดำเนินการนี้จะยกเลิกไม่ได้" @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "ลบคำเชิญ" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "ลบสื่อ" @@ -11466,8 +11451,8 @@ msgstr "ลบบทบาท" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "ลบสื่อที่บันทึกไว้" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "ไม่อยู่ (บนเดสก์ท็อป)" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "อุปกรณ์เดสก์ท็อป" @@ -11849,13 +11834,13 @@ msgstr "สถานะสำหรับนักพัฒนา" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "เครื่องมือสำหรับนักพัฒนา" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "เครื่องมือสำหรับนักพัฒนาสามารถใช้งานได้จากป้ายพนักงานในส่วนหัวของช่อง" @@ -11879,6 +11864,17 @@ msgstr "อุปกรณ์" msgid "Device alerts" msgstr "การแจ้งเตือนอุปกรณ์" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "เสียงอุปกรณ์ ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "เสียงอุปกรณ์เท่านั้น" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "รายละเอียดอุปกรณ์" @@ -11888,7 +11884,7 @@ msgstr "รายละเอียดอุปกรณ์" msgid "Device revoked" msgstr "ยกเลิกอุปกรณ์แล้ว" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "การเลือกอุปกรณ์" @@ -11912,7 +11908,7 @@ msgstr "อุปกรณ์:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "อุปกรณ์" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "หรี่ข้อความขีดทับ" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "อินพุตโดยตรง" @@ -12020,7 +12016,7 @@ msgstr "เปิดอัปโหลดโดยตรงอยู่" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "ปิด" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "ค่าที่ปิดใช้งาน" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "การปิดตัวอย่างจะหยุดการอัปโหลดตัวอย่างในอนาคต รูปภาพตัวอย่างที่มีอยู่อาจยังแสดงอยู่จนกว่าสตรีมจะสิ้นสุดหรือตัวอย่างจะรีเฟรช" @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "ทิ้งข้อความเสียง" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "ตัดการเชื่อมต่อ" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "ตัดการเชื่อมต่ออุปกรณ์ทั้งหมด" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "ตัดการเชื่อมต่ออุปกรณ์" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "การแสดงผล" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "หน้าจอ" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification แล้ววางในโฟลเดอร์ <1>.well-known ของคุณ เพื่อให้เราตรวจสอบยืนยันโดเมนได้" #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "ดาวน์โหลดเสียง" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "ดาวน์โหลดการอัปเดตเดสก์ท็อป {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "ดาวน์โหลดไฟล์" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "ดาวน์โหลด fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "ดาวน์โหลด GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "ดาวน์โหลดรูปภาพ" @@ -12714,7 +12710,7 @@ msgstr "ดาวน์โหลดตัวติดตั้ง" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "ดาวน์โหลดสื่อ" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "ดาวน์โหลดแพ็กเกจ" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "ดาวน์โหลดวิดีโอ" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "เสียงสะท้อน" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "การตัดเสียงสะท้อน" @@ -12963,7 +12959,7 @@ msgstr "แก้ไขการเข้าถึงสำหรับ {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "แก้ไขข้อความอธิบายรูปภาพ" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "แก้ไขปุ่มลัดคีย์บอร์ด" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "แก้ไขสื่อ" @@ -13102,8 +13098,8 @@ msgstr "แก้ไขเครื่องมือค้นหารูปภ #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "แก้ไขสื่อที่บันทึกไว้" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "เปิดการแจ้งเตือนในเบราว์เซอร์" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "เปิดใช้งานการเข้าถึงกล้องเพื่อดูตัวอย่างกล้องและอุปกรณ์จับภาพก่อนเลือกหนึ่งรายการเพื่อสตรีม" @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "เปิดหรือปิดเครื่องมือแปลภาษาในตัว เครื่องมือแปลภาษาที่เปิดใช้งานจะแสดงในเมนูบริบทของข้อความเมื่อเลือกข้อความ" #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "เปิดใช้ภาพตัวอย่าง" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "หยุดแชร์หน้าจอ" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "การเข้ารหัสจากต้นทางถึงปลายทางไม่พร้อมใช้งาน เนื่องจากมีผู้เข้าร่วมที่ไม่รองรับอยู่ในสายนี้" #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "การเข้ารหัสจากต้นทางถึงปลายทางไม่พร้อมใช้งาน เนื่องจากมีผู้เข้าร่วมที่ไม่รองรับอยู่ในช่องเสียงนี้" @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "บันเทิง" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "ทั้งหน้าจอ" @@ -14095,7 +14091,7 @@ msgstr "ทั้งหน้าจอ" msgid "Entire system" msgstr "ทั้งระบบ" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "เสียงทั้งระบบ" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "ไม่รวมผู้ใช้" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "ไม่รวมในเสียงระบบ" @@ -14593,7 +14589,7 @@ msgstr "คัดลอกลิงก์เชิญไม่สำเร็จ #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "คัดลอกไปยังคลิปบอร์ดไม่สำเร็จ" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "โหลดคำเชิญไม่สำเร็จ ลองอีกครั้ง" #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "โหลดแหล่งที่มาที่แชร์ได้ไม่สำเร็จ" @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "นำหน้าต่างกลับมา" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "เน้นเสียงพูด" @@ -15322,10 +15318,6 @@ msgstr "การตั้งค่าโฟลเดอร์" msgid "Follow us on {blueskyProviderName}" msgstr "ติดตามเราบน {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "ใช้ตามอินพุตเสียง" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "ส่งต่อ" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "กรอไปข้างหน้า {defaultSeekAmount} วินาที" @@ -15592,14 +15584,14 @@ msgstr "กรอบหน้าต่าง" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "อัตราเฟรม" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "อัตราเฟรมที่สูงกว่า 30 FPS ต้องใช้ {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "เกมแพด Y / สามเหลี่ยม" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "เกม" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "กำลังโหลดตัวเลือก GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "ตัวอย่าง GIF" @@ -16429,7 +16421,7 @@ msgstr "ได้รับสิทธิ์ {permissions} แล้ว" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "ให้สิทธิ์ทั้งหมดและข้ามข้อจำกัดของช่อง มีความละเอียดอ่อนสูง" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "เลือกแบบละเอียด" @@ -16992,7 +16984,7 @@ msgstr "ซ่อนรหัสผ่าน" msgid "Hide picture-in-picture popout?" msgstr "ซ่อนหน้าต่างย่อย Picture-in-picture หรือไม่" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "ซ่อนภาพตัวอย่าง" @@ -17386,7 +17378,7 @@ msgstr "หากต้องการให้สมาชิกเหล่า #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "ไม่สนใจ" @@ -17395,11 +17387,11 @@ msgstr "ไม่สนใจ" msgid "Ignore friend request" msgstr "ไม่สนใจคำขอเป็นเพื่อน" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "ไม่สนใจอุปกรณ์ฮาร์ดแวร์" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "ไม่สนใจสื่อนำเข้า" @@ -17430,7 +17422,7 @@ msgstr "ไม่สนใจคำขอเป็นเพื่อนจาก msgid "Ignore this channel's slowmode cooldown." msgstr "ข้ามช่วงรอของโหมดจำกัดเวลาในช่องนี้" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "ไม่สนใจอุปกรณ์เสมือน" @@ -17468,7 +17460,7 @@ msgstr "อิลลินอยส์" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "รูปภาพ" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "รูปภาพประกอบ" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "คัดลอกรูปภาพแล้ว" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "ตัวเลือกรูปภาพ" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "ตัวอย่างรูปภาพ" @@ -17540,7 +17532,7 @@ msgstr "อัปโหลดรูปภาพ" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "อยู่ในช่องเสียง" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "อยู่ในแชทเสียง" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "รวมทั้งหมด ยกเว้นที่เลือก" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "รวมแอป" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "อินพุตและเอาต์พุต" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "อุปกรณ์อินพุต" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "โปรไฟล์อินพุต: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "การตั้งค่าอินพุต" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "สถานะอินพุต" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "ระดับเสียงไมโครโฟน" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "ซ่อนลิงก์เชิญขณะแชร์หน้าจอ:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "ซ่อนลิงก์เชิญไว้ขณะแชร์หน้าจอ" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "ข้ามไปที่ {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "ข้ามไปที่ {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "ข้ามไปที่การโทรปัจจุบัน" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "ไปยังช่องที่ลิงก์" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "ข้ามไปยังข้อความที่ลิงก์" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "ข้ามไปที่ข้อความจาก {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "ข้ามไปที่ข้อความใน {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "เลย์เอาต์" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "ดูข้อมูลเพิ่มเติมเกี่ยวกับการแสดงตัวอย่างการแชร์หน้าจอ" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "สไตล์ลิงก์" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "ลิงก์ใช้งานไม่ได้" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "แอป Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "ค่าเริ่มต้นของ Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "กำลังโหลดธีม..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "กำลังโหลด..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "แอป macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "ค่าเริ่มต้นของ macOS" @@ -20289,7 +20281,7 @@ msgstr "แทร็กถัดไป" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "ตัวเลือกสื่อ" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "เล่น/หยุดชั่วคราว" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "ตัวอย่างสื่อ" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "รูปแบบข้อความ" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "ลิงก์ข้อความ" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "ทดสอบไมโครโฟน" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "เนื้อหาจากไมโครโฟน กล้อง และการแชร์หน้าจอได้รับการเข้ารหัสแบบต้นทางถึงปลายทาง" @@ -21019,7 +21011,7 @@ msgstr "ผู้เยาว์ตกอยู่ในความเสี่ #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "คำสะกดผิด" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "อุปกรณ์มือถือ" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "ปิดเสียงทั้งหมด" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "ปิดไมโครโฟนทุกอุปกรณ์" @@ -21653,13 +21645,13 @@ msgstr "ปิดเสียง" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "ปิดไมโครโฟนแล้ว" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "ปิดไมโครโฟนโดยผู้ดูแล" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "ไม่มีสิทธิ์ {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "ไม่สามารถเข้าถึงได้" @@ -22282,7 +22274,7 @@ msgstr "ไม่พบการตั้งค่าขั้นสูง" msgid "No AFK channel" msgstr "ไม่มีช่อง AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "ไม่พบหน้าต่างแอปพลิเคชัน" @@ -22300,6 +22292,11 @@ msgstr "ยังไม่มีไฟล์ประกอบ" msgid "No audio" msgstr "ไม่มีเสียง" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "ไม่มีเสียงจากอุปกรณ์นี้" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "ไม่มีแอปที่ได้รับอนุญาต" @@ -22341,7 +22338,7 @@ msgstr "ไม่มีบุ๊กมาร์ก" msgid "No bot banner" msgstr "ไม่มีแบนเนอร์บอท" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "ไม่พบกล้อง" @@ -22421,7 +22418,7 @@ msgstr "ไม่มีคำอธิบาย" msgid "No desktop update is available." msgstr "ไม่มีการอัปเดตเดสก์ท็อป" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "ไม่พบจอแสดงผล" @@ -22650,7 +22647,7 @@ msgstr "ไม่ได้รับเนื้อหาการตอบกล #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "ไม่พบผลลัพธ์" @@ -22679,7 +22676,7 @@ msgstr "ยังไม่มีบทบาท เพิ่มบทบาท #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "ไม่มีสื่อที่บันทึกไว้" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "การตัดเสียงรบกวน" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "การลดเสียงรบกวน" @@ -22877,7 +22874,7 @@ msgstr "ไม่แปลง" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "ไม่มี" @@ -23286,7 +23283,7 @@ msgstr "ใช้ได้เฉพาะบนหน้าจอขนาดใ msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "รับเฉพาะบัตรเครดิตเท่านั้น ไม่สามารถใช้บัตรเดบิตและบัตรเติมเงินในการตรวจสอบเนื้อหาสำหรับผู้ใหญ่ได้" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "ลำโพงเริ่มต้นเท่านั้น" @@ -23334,7 +23331,7 @@ msgstr "เรียกใช้โค้ดที่นี่เฉพาะเ msgid "Only show message previews for DMs with unread messages" msgstr "แสดงตัวอย่างข้อความเฉพาะในข้อความส่วนตัวที่มีข้อความยังไม่ได้อ่าน" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "เฉพาะลำโพง" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "เปิด {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "เปิด {labelText} ในการตั้งค่า" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "เปิด @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "เปิดการตั้งค่าสื่อขั้นสูง" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "เปิดหน้าต่างแอปพลิเคชัน แล้วลองอีกครั้ง" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "เปิดภาพ GIF เคลื่อนไหวแบบเต็มจอ" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "เปิดวิดีโอ GIF เคลื่อนไหวแบบเต็มจอ" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "เปิดเสียงแบบเต็มจอ" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "เปิดลิงก์เสียง" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "เปิดเบราว์เซอร์" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "เปิดตัวเลือกเบราว์เซอร์" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "เปิดเมนูรายการโปรด" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "เปิดลิงก์ไฟล์" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "เปิดลิงก์ GIF" @@ -23651,7 +23648,7 @@ msgstr "เปิดรูปภาพในเบราว์เซอร์" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "เปิดรูปภาพแบบเต็มจอ" @@ -23660,7 +23657,7 @@ msgstr "เปิดรูปภาพแบบเต็มจอ" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "เปิดลิงก์รูปภาพ" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "เปิดข้อความส่วนตัวของระบบ" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "เปิดตัวเลือกของระบบ" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "เปิดวิดีโอแบบเต็มจอ" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "เปิดลิงก์วิดีโอ" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "เปิดการโทรด้วยเสียง" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "เปิดการตั้งค่าเสียงและวิดีโอ" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "เอาต์พุต" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "อุปกรณ์เอาต์พุต" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "การตั้งค่าเอาต์พุต" @@ -24094,7 +24091,7 @@ msgstr "การตั้งค่าเอาต์พุต" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "ระดับเสียงลำโพง" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "จำกัดจำนวนผู้เข้าร่วม" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "ตัวเลือกผู้เข้าร่วมสำหรับ {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "ซ่อนตัวอย่างไว้" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "รูปภาพตัวอย่างจะถูกจัดเก็บโดย {productName} ชั่วคราวเพื่อส่ง และจะไม่ได้รับการเข้ารหัสแบบ end-to-end หากคุณไม่ต้องการให้เฟรมการแชร์หน้าจอถูกอัปโหลดสำหรับสร้างภาพขนาดย่อ ให้ปิดใช้งานตัวอย่าง" #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "รูปภาพตัวอย่างจะถูกจัดเก็บโดย {productName} ชั่วคราวเพื่อส่ง และจะไม่ได้รับการเข้ารหัสแบบ end-to-end ผู้ใช้ในแชทกลุ่มนี้ไม่จำเป็นต้องรับชมสตรีมของคุณอยู่ก็เห็นภาพขนาดย่อได้" #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "รูปภาพตัวอย่างจะถูกจัดเก็บโดย {productName} ชั่วคราวเพื่อส่ง และจะไม่ได้รับการเข้ารหัสแบบ end-to-end ผู้ใช้ยังคงต้องมีสิทธิ์ในการเชื่อมต่อ แต่ไม่จำเป็นต้องรับชมสตรีมของคุณอยู่" @@ -26269,7 +26266,7 @@ msgstr "คัดลอกข้อมูลอ้างอิงแล้ว" msgid "Referral parameters" msgstr "พารามิเตอร์การแนะนำ" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "รีเฟรชแหล่งเสียง" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "คลิกปุ่มปกติแล้ว" #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "ปฏิเสธ" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "นำออกจากกลุ่ม" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "ลบออกจากสื่อที่บันทึกไว้" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "เลิกตรึงไว้ด้านบน" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "นำออกจาก GIF รายการโปรด (เฉพาะ URL)" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "ยกเลิกการแบน {0} แล้ว" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "ย้อนกลับ {defaultSeekAmount} วินาที" @@ -28202,7 +28199,7 @@ msgstr "บันทึกไอคอน" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "บันทึกสื่อจากข้อความเพื่อเริ่มต้นใช้งาน" @@ -28313,7 +28310,7 @@ msgstr "ต้องมีสิทธิ์บันทึกหน้าจอ #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "แชร์หน้าจอ" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "เพิ่มเสียงการแชร์หน้าจอ" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "ไม่สามารถเริ่มเสียงแชร์หน้าจอได้" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "การควบคุมตัวเข้ารหัสสำหรับการแชร์หน้าจอ" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "การแชร์หน้าจอสิ้นสุดลง" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "พฤติกรรมการแสดงตัวอย่างการแชร์หน้าจอ" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "ตัวอย่างการแชร์หน้าจอ" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "ปิดใช้งานตัวอย่างการแชร์หน้าจอแล้ว" #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "เปิดใช้งานการแสดงตัวอย่างการแชร์หน้าจอแล้ว" @@ -28391,13 +28388,13 @@ msgstr "ความเป็นส่วนตัวของการแชร #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "คุณภาพการแชร์หน้าจอ" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "การตั้งค่าการแชร์หน้าจอ" @@ -28723,7 +28720,7 @@ msgstr "ค้นหาบทบาทหรือสมาชิก…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "ค้นหาสื่อที่บันทึกไว้" @@ -28942,12 +28939,12 @@ msgstr "ตัวอย่างขณะเลื่อน" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "เลือก" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "เลือก {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "ส่งลิงก์รีเซ็ต" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "ส่งสื่อที่บันทึกไว้ {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "กำหนดตำแหน่งของบทบาทในรายการสมาชิก" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "ตั้งค่าโดยค่าที่ตั้งไว้ล่วงหน้า {preset} การเลือกค่าที่นี่จะเปลี่ยนเป็นแบบกำหนดเอง" @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "ตั้งค่าระดับเสียงเฉพาะสำหรับแต่ละเสียง เสียงที่ไม่ได้ตั้งค่าเองจะใช้ระดับเสียงหลัก" #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "ตั้งค่าปุ่มลัดปิดเสียงทั้งหมด" @@ -29669,11 +29666,6 @@ msgstr "พักการตรวจสอบนี้ไว้ก่อน" msgid "Set this check aside?" msgstr "พักการตรวจสอบนี้ไว้ก่อนไหม" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "ตั้งค่าเพื่อส่ง {resolution} ที่ {frameRate} FPS ด้วย {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "การตั้งค่า" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "ลิงก์การตั้งค่า" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "แชร์ของขวัญ" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "แชร์หน้าจอ" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "แชร์ให้ผู้ดูแลคอมมูนิตี้" #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "แชร์หน้าจอของคุณ" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "แชร์หน้าจอของคุณแบบความละเอียดสูง (1080p) quad HD (1440p) หรือความละเอียดเดิมของแหล่งที่มา ที่เฟรมเรตสูงสุด 60 FPS" @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "หน้าต่างที่แชร์" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "เสียงของหน้าต่างที่แชร์" @@ -30624,6 +30616,10 @@ msgstr "สายเรียกเข้าแบบไม่มีเสีย msgid "Silent calls from everyone" msgstr "ปิดเสียงสายเรียกเข้าจากทุกคน" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "เงียบเมื่ออุปกรณ์บันทึกไม่มีอินพุตเสียงของตัวเอง" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "การเลื่อนที่ราบรื่น" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "วิดีโอที่ราบรื่นขึ้น" @@ -31005,11 +31001,6 @@ msgstr "เพิ่มอิโมจิบางรายการไม่ไ msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "ไฟล์บางไฟล์ที่คุณกำลังอัปโหลดมีขนาดเกินขีดจำกัดสูงสุดที่ {maxSizeFormatted} ต่อไฟล์" -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "การตั้งค่าสตรีมบางอย่างไม่สามารถนำไปใช้กับสตรีมสดของคุณได้" - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "เสียง" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "ต้นฉบับ" @@ -31569,7 +31560,7 @@ msgstr "เริ่มการโทรด้วยเสียงไหม" msgid "Start call" msgstr "เริ่มโทร" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "เริ่มทดสอบกล้องและกำหนดค่าเอฟเฟกต์" @@ -31910,7 +31901,7 @@ msgstr "หยุดพูด" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "หยุดสตรีม" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "เลิกเชื่อถือลิงก์ทั้งหมดหรือไม่" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "หยุดดู" @@ -31982,7 +31973,7 @@ msgstr "ป้องกันเสียงจากลำโพงย้อน #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "สตรีม" @@ -32001,11 +31992,6 @@ msgstr "สตรีมจบแล้ว" msgid "Stream hidden" msgstr "ซ่อนสตรีมแล้ว" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "สตรีมไม่ทัน" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "คุณภาพสตรีม" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "การตั้งค่าสตรีม" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "ปรับการตั้งค่าสตรีมแล้ว" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "ประกาศจากทีมงาน {productName} คุณไ #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "ค่าเริ่มต้นของระบบ" @@ -33036,13 +33017,8 @@ msgstr "เพิ่มบอทไปยัง <0>{destinationName} แล msgid "The bot has been added." msgstr "เพิ่มบอทแล้ว" -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "เบราว์เซอร์กำลังส่ง {deliveredResolution} แทน {resolution}" - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "การแสดงตัวอย่างกล้องกำลังปิดอยู่ ลองสตรีมอีกครั้งในอีกสักครู่" @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "บทบาทนี้เคยให้สิทธิ์ {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "แหล่งที่มาของการแชร์หน้าจอหยุดส่งวิดีโอ การแชร์หน้าจอของคุณจึงหยุดลง" @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "คอนโซลของเบราว์เซอร์นี้เป็นเครื่องมือสำหรับนักพัฒนา" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "การโทรนี้มีการเข้ารหัสจากต้นทางถึงปลายทาง" @@ -33645,11 +33621,6 @@ msgstr "บิลด์เดสก์ท็อปนี้ไม่สามา msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "บิลด์สำหรับนักพัฒนานี้ไม่สามารถอัปเดตตัวเองได้ ดาวน์โหลดตัวติดตั้งสำหรับเดสก์ท็อปเพื่อทดสอบขั้นตอนการอัปเดต" -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "อุปกรณ์นี้ไม่สามารถรองรับ {targetResolution} ที่ {targetFrameRate} FPS ได้ในครั้งล่าสุด ดังนั้นสตรีมของคุณจึงเริ่มที่ {resolution} ที่ {frameRate} FPS" - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "การติดตั้งนี้ได้รับการจัดการโดยระบบของคุณ อัปเดต {productName} จากศูนย์ซอฟต์แวร์หรือตัวจัดการแพ็กเกจของคุณ" #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "ปัจจุบันอินสแตนซ์นี้อนุญาตให้แชร์หน้าจอได้สูงสุด 720p ที่ 30 FPS" @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "ช่องลิงก์นี้มีเนื้อหาสำหรับผู้ใหญ่ และอาจเปิดเนื้อหาที่ไม่เหมาะสมสำหรับผู้ใช้บางราย" #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "ลิงก์นี้ไม่พร้อมใช้งานสำหรับบัญชีของคุณ" @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "ตัวเลือกนี้จำเป็น โปรดระบุค่า" #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "ผู้เข้าร่วมรายนี้ไม่สามารถพูดในช่องนี้ได้" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "ผู้เข้าร่วมรายนี้ปิดเสียงทั้งหมดอยู่" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "ผู้เข้าร่วมรายนี้ถูกผู้ดูแลปิดเสียงทั้งหมด" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "หมายเลขโทรศัพท์นี้ถูกใช้ไปแล้ว ลองใช้หมายเลขอื่นหรือติดต่อฝ่ายสนับสนุน" #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "ตัวเลือกนี้ใช้ได้เฉพาะในแอปเดสก์ท็อปเท่านั้น" @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "สลับการควบคุม" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "สลับปิดเสียงทั้งหมด" @@ -34666,7 +34637,7 @@ msgstr "การเปลี่ยนแปลงไอคอนถาดระ #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF ยอดนิยม" @@ -34760,7 +34731,7 @@ msgstr "ลองใช้คำค้นหาอื่น" #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "ลองใช้คำค้นหาหรือตัวกรองอื่น" @@ -34839,11 +34810,6 @@ msgstr "ลองใช้ตัวกรองหรือคำค้นหา msgid "Try editing your message again." msgstr "ลองแก้ไขข้อความของคุณอีกครั้ง" -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "ลองคุณภาพเต็มอีกครั้ง" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "ลองค้นหาด้วยคำว่า \"ธีม\", \"การแจ้งเตือน\" หรือ \"ความเป็นส่วนตัว\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "ปิดสิ่งที่คุณไม่สบายใจได้ ฟีเจอร์บางอย่างอาจใช้งานไม่ได้" #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "ปิดการแชร์เสียงสำหรับแหล่งที่มานี้ หรือลองอีกครั้งในอีกสักครู่" @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "เปิดอัตโนมัติเมื่อตรวจพบ OBS หรือ XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "เปิดกล้อง" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "เรียกเก็บไม่ได้" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "เปิดเสียงทั้งหมด" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "เปิดเสียงทั้งหมดของทุกอุปกรณ์" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "เปิดเสียงทั้งหมดของตัวเอง" @@ -35558,7 +35524,7 @@ msgstr "ผู้ใช้ที่ไม่รู้จัก" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "ผู้ใช้ที่ไม่รู้จัก" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "ปลดล็อกอิโมจิแบบกำหนดเองในข้อความส่วนตัวด้วย {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "ปลดล็อกการแชร์หน้าจอแบบ HD ด้วย {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "เปิดเสียง {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "เปิดไมโครโฟนทุกอุปกรณ์" @@ -35741,7 +35707,7 @@ msgstr "กลุ่มที่ไม่มีชื่อ" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "อินพุตที่ไม่มีชื่อ" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "อัปโหลดอิโมจิและสติกเกอร์ใหม่ รวมถึงจัดการผลงานของคุณเอง" #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "อัปโหลดเฟรมตัวอย่างสำหรับการแชร์หน้าจอ" @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "คัดลอก URL ไปยังคลิปบอร์ดแล้ว" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "แท็กผู้ใช้ (ไม่บังคับ)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "ระดับเสียงของผู้ใช้" @@ -37227,7 +37193,7 @@ msgstr "แพ็กเก็ตวิดีโอสูญหาย:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "ตัวอย่างวิดีโอ" @@ -37283,7 +37249,7 @@ msgstr "อัปโหลดวิดีโอ" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "เสียงและวิดีโอ" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "การตั้งค่าเสียงและวิดีโอ" @@ -37685,7 +37651,7 @@ msgstr "ปุ่มลัดเสียงและวิดีโอ" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "โทรด้วยเสียง" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "แก้ไขข้อผิดพลาดการเชื่อมต่อเสียง" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "ปิดเสียงทั้งหมด" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "ข้อความเสียง" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "เครื่องเล่นข้อความเสียง" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "การตั้งค่าเสียง" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "เลิกปิดเสียงทั้งหมด" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "รอสักครู่" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "กำลังรอการเชื่อมต่อ..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "เมื่อโพสต์เป็นลิงก์ในแชท" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "เมื่อเปิดใช้งานตัวอย่าง {productName} จะอัปโหลดเฟรม JPEG จากการแชร์หน้าจอเป็นครั้งคราว เพื่อให้ผู้ใช้อื่นๆ ในแชทกลุ่มนี้สามารถดูภาพตัวอย่างก่อนรับชมได้" #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "เมื่อเปิดใช้งานตัวอย่าง {productName} จะอัปโหลดเฟรม JPEG จากการแชร์หน้าจอเป็นครั้งคราว เพื่อให้ผู้ที่มีสิทธิ์เชื่อมต่อกับช่องเสียงนี้สามารถดูภาพตัวอย่างก่อนรับชมได้" #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "เมื่อเปิดใช้งานตัวอย่าง {productName} จะอัปโหลดเฟรม JPEG จากการแชร์หน้าจอเป็นครั้งคราว เพื่อให้อีกคนในข้อความส่วนตัวนี้สามารถดูภาพตัวอย่างก่อนรับชมได้" @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "หน้าต่างที่ถูกตัดที่ด้านบนหรือด้านล่างของหน้าจอ และ DevTools ที่ถูกยึดไว้ อาจแสดงพื้นหลังสีเทาแทนที่จะโปร่งใส" #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "ค่าเริ่มต้นของ Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "คุณถูกแบนจากคอมมูนิตี้นี้และไม่สามารถเข้าร่วมได้" #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "คุณปิดเสียงทั้งหมดอยู่" @@ -38833,11 +38799,6 @@ msgstr "คุณกำลังใช้บิลด์ {releaseChannel} ขอ msgid "You aren't in any communities right now." msgstr "ขณะนี้คุณยังไม่ได้อยู่ในคอมมูนิตี้ใดๆ" -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "คุณขอ {resolution} ที่ {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "คุณไม่สามารถส่งข้อความใน #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "คุณไม่สามารถแชร์หน้าจอในช่องนี้ได้" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "คุณไม่สามารถพูดในช่องนี้ได้" @@ -39036,7 +38997,7 @@ msgstr "คุณไม่สามารถพูดในช่องนี้ #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "คุณไม่สามารถเปิดกล้องในช่องนี้ได้" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "คุณเปลี่ยนแท็กขณะใช้ {PREMIUM_PRODUCT_NAME} แท็กจะถูกสุ่มใหม่เมื่อ {PREMIUM_PRODUCT_NAME} ของคุณหมดอายุ เว้นแต่จะมีการต่ออายุ" #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "คุณไม่มีสิทธิ์เข้าถึงช่องที่มีการส่งข้อความนี้" @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "คุณยังคงอยู่ใน {ownedNames} เจ้าของไม่สามารถออกจากคอมมูนิตี้ของตนเองได้" #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "คุณถูกผู้ดูแลปิดเสียงทั้งหมด" @@ -39699,11 +39660,6 @@ msgstr "ใบสมัครของคุณอยู่ระหว่าง msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "เบราว์เซอร์ของคุณต้องมีการโต้ตอบจากผู้ใช้ก่อนจึงจะเล่นเสียงได้ คลิกปุ่มด้านล่างเพื่อเปิดใช้งานการแชทด้วยเสียง" -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "อุปกรณ์จับภาพของคุณกำลังส่ง {deliveredResolution} แทนที่จะเป็น {resolution}" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "กำลังตรวจสอบบัตรของคุณเพื่อดูราคาในพื้นที่ โดยปกติจะใช้เวลาสักครู่" @@ -39734,36 +39690,11 @@ msgstr "คอมมูนิตี้ของคุณแสดงอยู่ msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "คอมมูนิตี้ของคุณต้องมีสมาชิกอย่างน้อย {minMemberCount, plural, one {# คน} other {# คน}} จึงจะแสดงใน Discovery ได้" -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "การเชื่อมต่อของคุณตามไม่ทัน สตรีมของคุณตั้งค่าไว้ที่ {frameRate} FPS ที่ {resolution} และผู้ชมได้รับประมาณ {deliveredFrameRate} FPS" - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "เราได้ตรวจสอบบัตรเครดิตของคุณแล้ว หากบัตรถูกต้อง เนื้อหาสำหรับผู้ใหญ่จะปลดล็อกในไม่ช้า คุณสามารถปิดแท็บนี้และกลับไปที่แอปได้เลย" -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "อุปกรณ์ของคุณไม่สามารถทำงานได้ทัน อุปกรณ์ของคุณตั้งค่าสตรีมเป็น {frameRate} FPS ที่ความละเอียด {resolution} และผู้ชมได้รับประมาณ {deliveredFrameRate} FPS" - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "อุปกรณ์ของคุณตามไม่ทัน จึงส่ง {frameRate} FPS เพื่อให้ {resolution} คมชัด" - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "อุปกรณ์ของคุณไม่สามารถรองรับได้ สตรีมของคุณจึงส่ง {resolution} ที่ {frameRate} FPS แทนที่จะเป็น {targetResolution} ที่ {targetFrameRate} FPS" - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "อุปกรณ์ของคุณตามไม่ทัน จึงส่งภาพที่ความละเอียด {resolution} เพื่อให้ได้เฟรมเรต {frameRate} FPS ที่ราบรื่น" - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "การลงทะเบียนของคุณต้องผ่านการตรวจสอบสแปมเพิ่มเติมก่อนดำเนินการต่อ" #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "คุณภาพที่บันทึกไว้ของคุณที่ {savedResolution} ที่ {savedFrameRate} FPS ต้องใช้ {premiumProductName} ดังนั้นการแชร์จะใช้ {resolution} ที่ {frameRate} FPS" #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "ไม่สามารถเผยแพร่การแชร์หน้าจอของคุณด้วยตัวแปลงสัญญาณวิดีโอที่รองรับได้ จึงหยุดการแชร์ลง ลองแชร์อีกครั้ง" -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "แหล่งที่มาของคุณแสดงผลประมาณ {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "สตรีมของคุณยังคงถ่ายทอดสดอยู่" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "การสตรีมของคุณเปลี่ยนเป็น {codec} เนื่องจาก {previousCodec} ไม่สามารถทำงานได้ทันบนอุปกรณ์นี้ ผู้ชมอาจเห็นการหยุดชะงักเล็กน้อย" - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "URL ที่กำหนดเองของคุณถูกตั้งค่าเป็น {inviteEndpoint}/{vanitySlug} แล้ว" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "ตัวเข้ารหัสวิดีโอของคุณหยุดการเข้ารหัสเฟรม จึงหยุดการแชร์หน้าจอของคุณแล้ว ลองแชร์อีกครั้ง" -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "ตัวเข้ารหัสวิดีโอของคุณหยุดทำงาน สตรีมของคุณจึงเปลี่ยนไปใช้ {codec}" - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/tr/messages.po b/fluxer_app/src/features/i18n/locales/tr/messages.po index 985737ee2..f990b344d 100644 --- a/fluxer_app/src/features/i18n/locales/tr/messages.po +++ b/fluxer_app/src/features/i18n/locales/tr/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} bağlanmak istiyor" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} bu yetkilendirme için bu hesabı kullanacak." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} bu cihazda yetişemiyor. Daha hızlı bir codec'e izin vermek için Gelişmiş ayarlar'da codec'i Otomatik olarak ayarlayın." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} şu anda yalnızca {productName} çalışanlarına açı msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Sınır yok} one {# katılımcı} other {# katılımcı}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# satır kaldı)} other {... (# satır kaldı)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# satır kaldı)} other {... (# satır kaldı)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Genişlet (# satır)} other {Genişlet (# satır)}} msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Genişlet (# satır)} other {Genişlet (# satır)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {# diğer cihazı genişlet} other {# diğer cihazı genişlet}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Aramada} other {# aramada}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Görüntülü aramaya katıl (# katılımcı)} other {Görüntülü aramaya katıl (# katılımcı)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {# akışı izlemeye devam et ve bunu ekle} other {# akışı izlemeye devam et ve bunu ekle}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Davet bağlantınız # gün içinde sona erecek.} other {Davet bağlantınız # gün içinde sona erecek.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} saat" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# geçersiz kılma} other {# geçersiz kıl msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} önce kartınızın yerelleştirilmiş fiyatlandırma için uygun olup olmadığını doğrulayacak, ardından ödemeye devam edecektir. İşlemi tamamladıktan sonra {productName} uygulamasına geri dönün." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} bu cihazda kullanılamıyor, bu nedenle akışınız {codec} kullanıyor." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} uygulamasının mikrofonunuza erişmesi gerekiyor. İşletim sisteminizin gizlilik ayarlarından mikrofon erişimine izin verin ve uygulamayı yeniden başlatın." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} uygulamasının cihazlarınızı listelemek için kamera erişimine ihtiyacı var." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} çevrimiçi" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "mesaj metnine yazılmış bir URL" msgid "a user" msgstr "bir kullanıcı" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Bir izleyici {pinnedCodec} oynatamıyor, bu yüzden akışınız {codec} kullanıyor." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Kabul et" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Yanıtla" @@ -3178,12 +3163,12 @@ msgstr "Gruba ekle" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Kayıtlı medyaya ekle" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Yalnızca URL'den kaydedilen GIF favorilerine ekle" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Gelişmiş" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Gelişmiş video ayarları" @@ -3451,7 +3436,7 @@ msgstr "Hizalama kontrolleri yalnızca daha geniş ekranlarda kullanılabilir" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "İzin ver" msgid "Allow {everyoneMention} and {hereMention}" msgstr "{everyoneMention} ve {hereMention} etiketlerine izin ver" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "{PRODUCT_NAME} uygulamasının kameranıza erişmesine izin vermek için {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME} yolunu izleyin." @@ -3618,7 +3603,7 @@ msgstr "Botlardan doğrudan mesajlara izin ver" msgid "Allow bots to send you direct messages?" msgstr "Botların size doğrudan mesaj göndermesine izin verilsin mi?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Kameraya izin ver" @@ -4014,13 +3999,13 @@ msgstr "Hareketli emojiler, GIF'ler ve çıkartmalar Animasyon sekmesinde kontro #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Hareketli GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Hareketli GIF video" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Hareketli simgeler için {animatedIconFeature} topluluk özelliği gerekir." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Hareketli görsel" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Hareketli görsel önizlemesi" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Hareketli yüklemeler için {premiumProductName} aboneliği gereklidir." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Hareketli video" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Uygulama durumu" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Uygulama penceresi" @@ -4361,7 +4346,7 @@ msgstr "Uygulama başarıyla güncellendi" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Uygulamalar" @@ -4586,7 +4571,7 @@ msgstr "ek" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Ek {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Ek sona erdi" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Ek süresi dolmuş veya kullanılamıyor" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Ek kimliği panoya kopyalandı" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Ses seviyesi" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Ses kapalı" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Ses paketi kaybı:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Ses oynatıcısı" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Ses önizlemesi" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Ses işleme (odaklanmış ses)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Ses ilerlemesi" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Ses ayarları" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Ses kaynakları: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Otomatik ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Otomatik kazanç kontrolü" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Tarayıcı: geri" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Tarayıcı varsayılanı" @@ -6198,20 +6183,20 @@ msgstr "Aramalar" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Kamera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Cihaz önizlemeleri için kamera erişimi gerekiyor" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Kamera erişimi verilmedi. Kamera izinlerini güncelleyin, sonra tekrar deneyin." @@ -6276,13 +6261,13 @@ msgstr "Kamera önizlemesi" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Kamera kalitesi" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Kamera ayarları" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Captcha doğrulaması başarısız oldu. Tekrar deneyin." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Yakala" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Uygulama sesini yakala" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Masaüstü sesini yakala" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Cihaz sesini yakala" @@ -6736,12 +6721,12 @@ msgstr "Değişiklik planlandı" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Yayını değiştir" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Yayın kaynağını değiştir" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Kanal erişimi" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Kanala erişim reddedildi" @@ -7097,7 +7082,7 @@ msgstr "Kanal kimliği panoya kopyalandı" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "kanal bağlantısı" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Ödeme yöntemi seçin" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Paylaşmak için bir şey seçin" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Güvenilen alan adlarını temizle ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Daha net metin" @@ -8285,7 +8270,7 @@ msgstr "Kanal konusunu daralt" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Cihazları daralt" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Topluluk kurucusu" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Topluluk sağırlaştırması" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Topluluk MFA gereksinimi bildirim çubuğu" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Topluluk sessize alma" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Şimdi yapılandır" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Ekran paylaşımını yapılandır veya bitir" @@ -8904,7 +8889,7 @@ msgstr "Topluluk sesli kanallarına katılmak için onay veya çift tıklama" msgid "Conflicts with {conflictLabel}" msgstr "{conflictLabel} ile çakışıyor" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Bir kamera bağlayıp tekrar deneyin." @@ -8913,7 +8898,7 @@ msgstr "Bir kamera bağlayıp tekrar deneyin." msgid "Connect a camera or virtual capture device, then try again." msgstr "Bir kamera veya sanal yakalama cihazı bağlayın, ardından tekrar deneyin." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Bir ekran bağlayın, sonra tekrar deneyin." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Bağlantı sesi düzeyi denetimleri" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Bağlantı: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "İstatistik JSON'ı panoya kopyalandı" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Panoya kopyalandı" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Ek kimliğini kopyala" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Sesi kopyala" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Ses bağlantısını kopyala" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Uç noktayı kopyala" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Dosya bağlantısını kopyala" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "GIF'i kopyala" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "GIF bağlantısını kopyala" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Tanıtıcıyı kopyala" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Görseli kopyala" @@ -9448,7 +9433,7 @@ msgstr "Görseli kopyala" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Görsel bağlantısını kopyala" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Bölüm bağlantısını kopyala" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Medyayı kopyala" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Değeri kopyala" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Videoyu kopyala" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Video bağlantısını kopyala" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Webhook URL'sini kopyala" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Görsel kopyalanıyor..." @@ -10588,7 +10573,7 @@ msgstr "Şu anda: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Özel" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Devre dışı bırak" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Sağırlaştır" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Tüm cihazları sağırlaştır" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Cihazı sağırlaştır" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Sesli kanallardaki diğer üyeleri sağırlaştırın, böylece duyamaz ve konuşamazlar." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Sağırlaştırma kısayolu" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Kendini sağırlaştır" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Sağırlaştırıldı" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Moderatörler tarafından sağırlaştırıldı" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Varsayılan" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Varsayılan kamera" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr ":{emojiName}: silinsin mi? Bu işlem geri alınamaz." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "\"{memeName}\" silinsin mi? Bu işlem geri alınamaz." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Daveti sil" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Medyayı sil" @@ -11466,8 +11451,8 @@ msgstr "Rolü sil" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Kayıtlı medyayı sil" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Masaüstü boşta" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Masaüstü cihaz" @@ -11849,13 +11834,13 @@ msgstr "Geliştirici durumu" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Geliştirici araçları" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Geliştirici araçlarına kanal başlığındaki personel rozetinden erişilebilir." @@ -11879,6 +11864,17 @@ msgstr "Cihaz" msgid "Device alerts" msgstr "Cihaz uyarıları" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Cihaz sesi ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Yalnızca cihaz sesi" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Cihaz ayrıntıları" @@ -11888,7 +11884,7 @@ msgstr "Cihaz ayrıntıları" msgid "Device revoked" msgstr "Cihazın erişimi iptal edildi" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Cihaz seçimi" @@ -11912,7 +11908,7 @@ msgstr "Cihaz:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Cihazlar" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Üstü çizili metni soluklaştır" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Doğrudan giriş" @@ -12020,7 +12016,7 @@ msgstr "Doğrudan yükleme etkin" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Devre dışı bırak" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Devre dışı bırakılan değer" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Önizlemeleri devre dışı bırakmak, gelecekteki önizleme yüklemelerini durdurur. Mevcut önizleme resimleri, yayın sona erene veya önizleme yenilenene kadar görünür kalabilir." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Sesli mesajı sil" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Bağlantıyı kes" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Tüm cihazların bağlantısını kes" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Cihazın bağlantısını kes" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Görüntüleme" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Ekran" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification dosyasını indirin ve alan adını doğrulayabilmemiz için <1>.well-known klasörünüze yerleştirin." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Sesi indir" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Masaüstü güncellemesi {version} sürümünü indir ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Dosyayı indir" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "fluxer-verification dosyasını indir" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "GIF'i indir" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Görseli indir" @@ -12714,7 +12710,7 @@ msgstr "Yükleyiciyi indir" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Medyayı indir" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Paketi indir" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Videoyu indir" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Yankı" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Yankı engelleme" @@ -12963,7 +12959,7 @@ msgstr "{0} için erişimi düzenle" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Alternatif metni düzenle" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Klavye kısayolunu düzenle" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Medyayı düzenle" @@ -13102,8 +13098,8 @@ msgstr "Ters görsel arama motorunu düzenle" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Kayıtlı medyayı düzenle" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Tarayıcı bildirimlerini etkinleştir" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Yayınlamak üzere birini seçmeden önce kameraları ve yakalama aygıtlarını önizlemek için kamera erişimini etkinleştirin." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Yerleşik çevirmenleri etkinleştirin veya devre dışı bırakın. Etkinleştirilen çevirmenler, metin seçildiğinde mesaj bağlam menüsünde görünür." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Önizlemeleri etkinleştir" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Ekran paylaşımını bitir" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Bu aramada desteklenmeyen bir katılımcı olduğu için uçtan uca şifreleme kullanılamıyor." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Bu sesli kanalda desteklenmeyen bir katılımcı olduğu için uçtan uca şifreleme kullanılamıyor." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Eğlence" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Tüm ekran" @@ -14095,7 +14091,7 @@ msgstr "Tüm ekran" msgid "Entire system" msgstr "Tüm sistem" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Tüm sistem sesi" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "bir kullanıcıyı hariç tut" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Sistemden hariç tut" @@ -14593,7 +14589,7 @@ msgstr "Davet bağlantısı kopyalanamadı" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Panoya kopyalanamadı" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Davetler yüklenemedi. Tekrar deneyin." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Paylaşılabilir kaynaklar yüklenemedi." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Pencereye odaklan" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Odaklanmış ses" @@ -15322,10 +15318,6 @@ msgstr "Klasör ayarları" msgid "Follow us on {blueskyProviderName}" msgstr "Bizi {blueskyProviderName} üzerinden takip edin" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Ses girişini takip et" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "İlet" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} saniye ileri sar" @@ -15592,14 +15584,14 @@ msgstr "Çerçeve" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Kare hızı" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "30 FPS üzerindeki kare hızları için {premiumProductName} gerekir" @@ -15923,7 +15915,7 @@ msgstr "Oyun kumandası Y / Üçgen" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Oyun" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "GIF seçici yükleniyor" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF önizlemesi" @@ -16429,7 +16421,7 @@ msgstr "{permissions} verildi" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Tüm izinleri verir ve kanal kısıtlamalarını atlar. Çok hassastır." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Ayrıntılı seçim" @@ -16992,7 +16984,7 @@ msgstr "Parolayı gizle" msgid "Hide picture-in-picture popout?" msgstr "Resim içinde resim penceresi gizlensin mi?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Önizleme küçük resmini gizle" @@ -17386,7 +17378,7 @@ msgstr "Bu üyelerin belirli bir tarihten sonra gönderilen geçmiş mesajlara e #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Yok say" @@ -17395,11 +17387,11 @@ msgstr "Yok say" msgid "Ignore friend request" msgstr "Arkadaşlık isteğini yok say" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Donanım aygıtlarını yok say" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Giriş medyasını yok say" @@ -17430,7 +17422,7 @@ msgstr "{displayName} adlı kişiden gelen arkadaşlık isteği yok sayılsın m msgid "Ignore this channel's slowmode cooldown." msgstr "Bu kanalın yavaş mod sınırlamasını yok sayın." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Sanalı yok say" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Görsel" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Görsel öğeler" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Görsel panoya kopyalandı" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Görsel seçenekleri" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Görsel önizlemesi" @@ -17540,7 +17532,7 @@ msgstr "Görsel yükleme" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Sesli sohbette" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Sesli sohbette" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Seçilenler dışındakilerin tümünü dahil et" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Uygulamaları dahil et" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Giriş ve çıkış" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Giriş aygıtı" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Giriş profili: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Giriş ayarları" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Giriş durumları" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Giriş sesi düzeyi" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Paylaşım sırasında davet bağlantısı gizlenir:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Paylaşım sırasında davet bağlantısı maskelendi" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "{displayName} adlı kişiye atla" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "{labelText} kanalına git" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Mevcut aramaya atla" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Bağlantılı kanala git" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Bağlantılı mesaja git" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "{authorNickname} kullanıcısından gelen mesaja git" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "{labelText} içindeki mesaja git" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Yerleşim" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Ekran paylaşımı önizlemeleri hakkında bilgi edinin" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Bağlantı stili" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Bağlantı kullanılamıyor" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux uygulaması" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux varsayılanı" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Tema yükleniyor..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Yükleniyor..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS uygulaması" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS varsayılanı" @@ -20289,7 +20281,7 @@ msgstr "Sonraki parça" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Medya seçenekleri" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Oynat/duraklat" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Medya önizlemesi" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Mesaj düzeni" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "mesaj bağlantısı" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Mikrofon testi" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Mikrofon, kamera ve ekran paylaşımı içeriği uçtan uca şifrelenmiştir." @@ -21019,7 +21011,7 @@ msgstr "Risk altındaki küçükler, yanlış yerdeki yetişkin içeriği veya i #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Yanlış yazılmış kelimeler" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Mobil cihaz" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Tümünü sessize al" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Tüm cihazların sesini kapat" @@ -21653,13 +21645,13 @@ msgstr "Sessize alındı" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Mikrofonun sesi kapalı" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Moderatörler tarafından sesi kapatıldı" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} izni yok" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Erişim yok" @@ -22282,7 +22274,7 @@ msgstr "Gelişmiş ayar bulunamadı" msgid "No AFK channel" msgstr "AFK kanalı yok" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Uygulama penceresi bulunamadı" @@ -22300,6 +22292,11 @@ msgstr "Henüz öğe yok" msgid "No audio" msgstr "Ses yok" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Bu cihazdan ses gelmiyor" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Yetkili uygulama yok" @@ -22341,7 +22338,7 @@ msgstr "Yer işareti yok" msgid "No bot banner" msgstr "Bot afişi yok" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Kamera bulunamadı" @@ -22421,7 +22418,7 @@ msgstr "Açıklama yok." msgid "No desktop update is available." msgstr "Masaüstü güncellemesi mevcut değil." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Ekran bulunamadı" @@ -22650,7 +22647,7 @@ msgstr "Yanıt gövdesi alınamadı" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Sonuç bulunamadı" @@ -22679,7 +22676,7 @@ msgstr "Henüz rol yok. Rolleri {rolesSettingsPath} bölümünden ekleyin" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Kayıtlı medya yok" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Gürültü kapısı" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Gürültü engelleme" @@ -22877,7 +22874,7 @@ msgstr "Dönüştürme yok" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Yok" @@ -23286,7 +23283,7 @@ msgstr "Yalnızca geniş ekranlarda geçerlidir." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Yalnızca kredi kartları kabul edilir. Banka ve ön ödemeli kartlar yetişkin içeriği kontrolü için kullanılamaz." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Yalnızca varsayılan hoparlörler" @@ -23334,7 +23331,7 @@ msgstr "Burada yalnızca ne yaptığını tam olarak anladığınız kodları ç msgid "Only show message previews for DMs with unread messages" msgstr "Yalnızca okunmamış mesajları olan DM'ler için mesaj önizlemelerini göster" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Yalnızca hoparlörler" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "{displayName} adlı kişiyi aç" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Ayarlarda {labelText} bölümünü aç" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "@{displayName} adlı kişiyi aç" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Gelişmiş medya ayarlarını aç" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Bir uygulama penceresi açın, sonra tekrar deneyin." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Hareketli GIF'i tam görünümde aç" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Hareketli GIF videoyu tam görünümde aç" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Sesi tam görünümde aç" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Ses bağlantısını aç" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Tarayıcıyı aç" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Tarayıcı seçiciyi aç" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Favoriler menüsünü aç" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Dosya bağlantısını aç" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "GIF bağlantısını aç" @@ -23651,7 +23648,7 @@ msgstr "Görseli tarayıcıda aç" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Görseli tam görünümde aç" @@ -23660,7 +23657,7 @@ msgstr "Görseli tam görünümde aç" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Görsel bağlantısını aç" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Sistem DM'ini aç" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Sistem seçiciyi aç" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Videoyu tam görünümde aç" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Video bağlantısını aç" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Sesli sohbeti aç" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Ses ve video ayarlarını aç" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Çıktı" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Çıkış cihazı" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Çıkış ayarları" @@ -24094,7 +24091,7 @@ msgstr "Çıkış ayarları" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Çıkış sesi düzeyi" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Katılımcı sınırı" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "{participantDisplayName} için katılımcı seçenekleri" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Önizleme gizlendi" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Önizleme görüntüleri geçici olarak {productName} tarafından saklanır ve uçtan uca şifrelenmez. Küçük resimler için ekran paylaşımı karelerinizin yüklenmesini istemiyorsanız önizlemeleri devre dışı bırakın." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Önizleme görüntüleri geçici olarak {productName} tarafından saklanır ve uçtan uca şifrelenmez. Bu grup DM'deki kişilerin küçük resmi görmesi için yayınınızı aktif olarak izlemesi gerekmez." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Önizleme görüntüleri geçici olarak {productName} tarafından saklanır ve uçtan uca şifrelenmez. İnsanların yine de bağlanmak için izni olması gerekir, ancak yayınınızı aktif olarak izlemeleri gerekmez." @@ -26269,7 +26266,7 @@ msgstr "Referans kopyalandı." msgid "Referral parameters" msgstr "Yönlendirme parametreleri" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Ses kaynaklarını yenile" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Normal düğmeye tıklandı." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Reddet" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Gruptan çıkar" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Kayıtlı medyadan kaldır" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Üstte kalmayı bırak" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Yalnızca URL'den kaydedilen GIF favorilerinden kaldır" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "{0} için yasaklama kaldırıldı" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} saniye geri sar" @@ -28202,7 +28199,7 @@ msgstr "Simgeyi kaydet" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Başlamak için mesajlardan biraz medya kaydedin!" @@ -28313,7 +28310,7 @@ msgstr "Ekran kaydı izni gerekli" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Ekran paylaşımı" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Ekran paylaşımı ses yükseltme" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Ekran paylaşımı sesi başlatılamadı" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Ekran paylaşımı kodlayıcı ayarları" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Ekran paylaşımı sona erdi" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Ekran paylaşımı önizleme davranışı" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Ekran paylaşımı önizlemeleri" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Ekran paylaşımı önizlemeleri devre dışı bırakıldı." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Ekran paylaşımı önizlemeleri etkinleştirildi." @@ -28391,13 +28388,13 @@ msgstr "Ekran paylaşımı gizliliği" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Ekran paylaşımı kalitesi" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Ekran paylaşımı ayarları" @@ -28723,7 +28720,7 @@ msgstr "Rol veya üye ara…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Kayıtlı medyada ara" @@ -28942,12 +28939,12 @@ msgstr "Sarma önizlemesi" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Seç" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "{accessibleName} seçin" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Sıfırlama bağlantısı gönder" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Kayıtlı medyayı gönder: {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Rol için bir üye listesi konumu ayarlandı" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "{preset} ön ayarı tarafından ayarlandı. Buradaki bir değeri seçmek Özel'e geçer." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Bireysel sesler için özel ses düzeyleri ayarlayın. Geçersiz kılma yapılmayan sesler ana ses düzeyini takip eder." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Sağırlaştırma kısayolunu ayarla" @@ -29669,11 +29666,6 @@ msgstr "Bu kontrolü ertele" msgid "Set this check aside?" msgstr "Bu denetimi erteleyelim mi?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "{resolution} olarak, saniyede {frameRate} kare ile {codec} kullanarak gönderilecek şekilde ayarlandı" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Ayarlar" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "ayarlar bağlantısı" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Hediye paylaş" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Ekran paylaş" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Topluluk moderatörleriyle paylaşın." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Ekranınızı paylaşın" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Ekranınızı yüksek çözünürlükte (1080p), Quad HD'de (1440p) veya kaynak çözünürlüğünde, 60 FPS'ye kadar paylaşın." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Paylaşılan pencere" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Paylaşılan pencere sesi" @@ -30624,6 +30616,10 @@ msgstr "Sessiz aramalar" msgid "Silent calls from everyone" msgstr "Herkesten sessiz aramalar" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Cihazın kendi ses girişi olmadığında sessiz" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Akıcı kaydırma" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Daha akıcı video" @@ -31005,11 +31001,6 @@ msgstr "Bazı emojiler eklenemedi" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Yüklemeye çalıştığınız bazı dosyalar, dosya başına {maxSizeFormatted} olan maksimum boyut sınırını aşıyor." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Bazı akış ayarları canlı akışınıza uygulanamadı." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Sesler" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Kaynak" @@ -31569,7 +31560,7 @@ msgstr "Sesli arama başlatılsın mı?" msgid "Start call" msgstr "Aramayı başlat" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Kamera testini başlat ve efektleri yapılandır" @@ -31910,7 +31901,7 @@ msgstr "Konuşmayı durdur" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Yayını durdur" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Tüm bağlantılara artık güvenilmesin mi?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "İzlemeyi durdur" @@ -31982,7 +31973,7 @@ msgstr "Hoparlörlerinizin sesinin mikrofonunuza geri gitmesini engeller." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Yayınla" @@ -32001,11 +31992,6 @@ msgstr "Yayın sona erdi" msgid "Stream hidden" msgstr "Yayın gizlendi" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Yayın yetişemiyor" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Yayın kalitesi" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Yayın ayarları" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Akış ayarları ayarlandı" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "{productName} ekibinden sistem duyuruları. Buradan yanıt veremezsiniz. #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Sistem varsayılanı" @@ -33036,13 +33017,8 @@ msgstr "Bot şuraya eklendi: <0>{destinationName}." msgid "The bot has been added." msgstr "Bot eklendi." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Tarayıcı, {resolution} yerine {deliveredResolution} gönderiyor." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Kamera önizlemesi hâlâ durduruluyor. Birazdan tekrar yayın yapmayı deneyin." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Rol şunları verdi: {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Ekran paylaşımı kaynağı video göndermeyi durdurdu, bu nedenle ekran paylaşımınız durduruldu." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Bu tarayıcı konsolu bir geliştirici aracıdır." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Bu arama uçtan uca şifrelidir." @@ -33645,11 +33621,6 @@ msgstr "Bu masaüstü sürümü, güncellemeleri {productName} içinde yükleyem msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Bu geliştirme sürümü kendini güncelleyemez. Güncelleme akışını test etmek için bir masaüstü yükleyicisi indirin." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Bu cihaz geçen sefer {targetResolution} çözünürlükte ve {targetFrameRate} FPS'de yetişemedi, bu yüzden yayının {resolution} çözünürlükte ve {frameRate} FPS'de başladı." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Bu kurulum sisteminiz tarafından yönetiliyor. {productName} uygulamasını yazılım merkezinden veya paket yöneticisinden güncelleyin." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Bu kurulum şu anda 30 FPS'de 720p'ye kadar ekran paylaşımına izin veriyor." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Bu bağlantı kanalı yetişkinlere yönelik içerik olarak işaretlenmiştir ve bazı kullanıcılar için uygunsuz olabilecek materyaller içerebilir." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Bu bağlantı hesabınız için kullanılamıyor." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Bu seçenek gerekli. Lütfen bir değer girin." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Bu katılımcı bu kanalda konuşamaz" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Bu katılımcı sağırlaştırıldı" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Bu katılımcı moderatörler tarafından sağırlaştırıldı" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Bu telefon numarası zaten kullanılmış. Başka bir numara deneyin veya destekle iletişime geçin." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Bu seçici yalnızca masaüstü uygulamasında kullanılabilir." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Kontrolleri aç/kapat" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Sağırlaştırmayı aç/kapat" @@ -34666,7 +34637,7 @@ msgstr "Tepsi simgesi değişiklikleri yalnızca Linux'ta yeniden başlattıktan #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Popüler GIF'ler" @@ -34760,7 +34731,7 @@ msgstr "Farklı bir arama sorgusu deneyin." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Farklı bir arama terimi veya filtre deneyin" @@ -34839,11 +34810,6 @@ msgstr "Farklı filtreler veya arama terimleri deneyin." msgid "Try editing your message again." msgstr "Mesajınızı tekrar düzenlemeyi deneyin." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Tam kaliteyi tekrar dene" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "\"Tema\", \"bildirimler\" veya \"gizlilik\" gibi bir şey aramayı deneyin" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Rahatsız olduğunuz her şeyi kapatın. Bazı özellikler çalışmayı durdurabilir." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Bu kaynak için ses paylaşımını kapatın veya birazdan tekrar deneyin." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "OBS veya XSplit algılandığında otomatik olarak aç" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Kamerayı aç" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Tahsil edilemez" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Sağırlaştırmayı kaldır" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Tüm cihazlarda sağırlaştırmayı kaldır" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Kendi sağırlaştırmanı kaldır" @@ -35558,7 +35524,7 @@ msgstr "bilinmeyen kullanıcı" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Bilinmeyen kullanıcı" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "{premiumProductName} ile DM'lerde özel emojilerin kilidini açın" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "{premiumProductName} ile HD ekran paylaşımının kilidini açın" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "{label} sesini aç" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Tüm cihazların sesini aç" @@ -35741,7 +35707,7 @@ msgstr "Adsız grup" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Adsız giriş" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Yeni emoji ve çıkartmalar yükleyin, kendi oluşturduklarınızı yönetin." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Ekran paylaşımları için önizleme kareleri yükleyin." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL panoya kopyalandı" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Kullanıcı etiketi (isteğe bağlı)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Kullanıcı sesi" @@ -37227,7 +37193,7 @@ msgstr "Video paket kaybı:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Video önizlemesi" @@ -37283,7 +37249,7 @@ msgstr "Video yükleme" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Ses ve video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Ses ve video ayarları" @@ -37685,7 +37651,7 @@ msgstr "Ses ve video kısayolları" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Sesli arama" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Ses bağlantısı hata ayıklaması" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Sağırlaştırıldı" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Sesli mesaj" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Sesli mesaj oynatıcısı" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Ses ayarları" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Sağırlaştırma kaldırıldı" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Burada bekleyin" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Bağlantı bekleniyor..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Sohbete bağlantı olarak gönderildiğinde" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Önizlemeler etkinleştirildiğinde {productName}, ekran paylaşımınızdan ara sıra JPEG kareleri yükler. Böylece bu grup DM'deki diğer kişiler izlemeye başlamadan önce küçük resmi görebilir." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Önizlemeler etkinleştirildiğinde {productName}, ekran paylaşımınızdan ara sıra JPEG kareleri yükler. Böylece bu sesli kanala bağlanma izni olan kişiler izlemeye başlamadan önce küçük resmi görebilir." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Önizlemeler etkinleştirildiğinde {productName}, ekran paylaşımınızdan ara sıra JPEG kareleri yükler. Böylece bu DM'deki diğer kişi izlemeye başlamadan önce küçük resmi görebilir." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Ekranın üst veya alt kısmında kesilen pencereler ve sabitlenmiş geliştirici araçları, saydam kalmak yerine gri bir arka plan gösterebilir." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows varsayılanı" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Bu topluluktan yasaklandınız ve katılamazsınız." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Sağırlaştırıldınız" @@ -38833,11 +38799,6 @@ msgstr "{productName} uygulamasının {releaseChannel} derlemesini kullanıyorsu msgid "You aren't in any communities right now." msgstr "Şu anda hiçbir toplulukta değilsiniz." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "{resolution} olarak, {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Bu toplulukta mesaj gönderemezsiniz." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Bu kanalda ekranınızı paylaşamazsınız" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Bu kanalda konuşamazsınız" @@ -39036,7 +38997,7 @@ msgstr "Bu kanalda konuşamazsınız" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Bu kanalda kameranızı açamazsınız" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "{PREMIUM_PRODUCT_NAME} aboneliğiniz varken etiketinizi değiştirdiniz. Yenilenmediği takdirde, {PREMIUM_PRODUCT_NAME} aboneliğiniz sona erdiğinde etiketiniz rastgele yeniden belirlenecektir." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Bu mesajın gönderildiği kanala erişiminiz yok." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Şu topluluklarda kalırsınız: {ownedNames}. Sahipler kendi topluluklarından ayrılamaz." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Moderatörler tarafından sağırlaştırıldınız" @@ -39699,11 +39660,6 @@ msgstr "Başvurunuz incelenmeyi bekliyor. İlan ayrıntılarınızı yine de gü msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Tarayıcınız, ses çalınabilmesi için önce kullanıcı etkileşimi gerektiriyor. Sesli sohbeti etkinleştirmek için aşağıdaki düğmeye tıklayın." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Yakalamak istediğin aygıt, {resolution} yerine {deliveredResolution} gönderiyor." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Kartınız yerelleştirilmiş fiyatlandırma için kontrol ediliyor. Bu genellikle kısa sürer." @@ -39734,36 +39690,11 @@ msgstr "Topluluğunuz Keşfet'te listeleniyor. Aşağıdan ilan ayrıntıların msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Topluluğunuzun Keşfet'te listelenebilmesi için en az {minMemberCount, plural, one {# üyesi} other {# üyesi}} olmalı." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Bağlantınız yetişemiyor. Akışınız {frameRate} FPS olarak ayarlanmış ve {resolution} çözünürlükte, izleyiciler ise yaklaşık {deliveredFrameRate} FPS alıyor." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Kredi kartınız kontrol edildi. Kart geçerliyse, yetişkinlere yönelik içerik kısa süre içinde açılacaktır. Bu sekmeyi kapatıp uygulamaya dönebilirsiniz." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Cihazınız yetişemiyor. Akışınız {frameRate} FPS ve {resolution} olarak ayarlanmış, izleyiciler ise yaklaşık {deliveredFrameRate} FPS alıyor." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Cihazınız yetişemedi, bu nedenle keskinliği korumak için akışınız artık {frameRate} FPS gönderiyor. {resolution}" - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Cihazınız yetişemedi, bu nedenle akışınız artık {targetResolution} ({targetFrameRate} FPS) yerine {resolution} ({frameRate} FPS) ile gönderiliyor." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Cihazınız yetişemedi, bu nedenle akışınız artık {resolution} göndererek {frameRate} FPS'yi akıcı tutuyor." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Devam etmeden önce kaydınızın ek bir anti-spam kontrolünden geçmesi gerekiyor." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Kaydedilen {savedResolution} ({savedFrameRate} FPS) ayarlarınız {premiumProductName} gerektiriyor, bu nedenle paylaşımlar {resolution} ({frameRate} FPS) kullanıyor." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Ekran paylaşımınız uyumlu bir video kodeğiyle yayınlanamadı, bu nedenle durduruldu. Tekrar paylaşmayı deneyin." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Kaynak, saniyede yaklaşık {sourceFrameRate} FPS üretiyor" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Yayın devam ediyor" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Akışınız, bu cihazda {previousCodec} yetişemediği için {codec} olarak değiştirildi. İzleyiciler kısa bir duraklama görebilir." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Özel URL'niz {inviteEndpoint}/{vanitySlug} olarak ayarlandı" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Video kodlayıcınız kare kodlamayı durdurduğu için ekran paylaşımınız durduruldu. Tekrar paylaşmayı deneyin." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Video kodlayıcınız durdu, bu nedenle akışınız {codec} üzerine geçti." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/uk/messages.po b/fluxer_app/src/features/i18n/locales/uk/messages.po index 36a8dba5a..5a3e5787b 100644 --- a/fluxer_app/src/features/i18n/locales/uk/messages.po +++ b/fluxer_app/src/features/i18n/locales/uk/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} хоче підключитися" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} використовуватиме цей обліковий запис для авторизації." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} не справляється на цьому пристрої. Установіть кодек на «Автоматично» в розділі «Додаткові налаштування», щоб дозволити швидший." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Доступ до спільноти «{communityName}» наразі м msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Без обмежень} one {# учасник} few {# учасники} many {# учасників} other {# учасника}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (ще # рядок)} few {... (ще # рядки)} many {... (ще # рядків)} other {... (ще # рядка)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (ще # рядок)} few {... (ще # рядки)} many {... (ще # рядків)} other {... (ще # рядка)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Розгорнути (# рядок)} few {Розг msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Розгорнути (# рядок)} few {Розгорнути (# рядки)} many {Розгорнути (# рядків)} other {Розгорнути (# рядка)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Розгорнути ще # пристрій} few {Розгорнути ще # пристрої} many {Розгорнути ще # пристроїв} other {Розгорнути ще # пристроїв}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, =1 {У дзвінку} one {# у дзвінку} few {# msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Приєднатися до відеодзвінка (# учасник)} few {Приєднатися до відеодзвінка (# учасники)} many {Приєднатися до відеодзвінка (# учасників)} other {Приєднатися до відеодзвінка (# учасника)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Продовжуйте дивитися # трансляцію та додайте цю} few {Продовжуйте дивитися # трансляції та додайте цю} many {Продовжуйте дивитися # трансляцій та додайте цю} other {Продовжуйте дивитися # трансляції та додайте цю}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {Ваше посилання-запрошення дійсне ще # день.} few {Ваше посилання-запрошення дійсне ще # дні.} many {Ваше посилання-запрошення дійсне ще # днів.} other {Ваше посилання-запрошення дійсне ще # днів.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} години" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} кадр/с" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# перевизначення} few {# пе msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} спочатку перевірить, чи ваша картка підходить для локалізованого ціноутворення, а потім перенаправить вас до оплати. Поверніться до {productName}, щойно завершите." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} недоступний на цьому пристрої, тому ваш потік використовує {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} потрібен доступ до мікрофона. Дозвольте доступ до мікрофона в налаштуваннях конфіденційності операційної системи та перезапустіть застосунок." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "Щоб відобразити ваші пристрої, застосунку {productName} потрібен доступ до камери." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} онлайн" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "URL, введений у тексті повідомлення" msgid "a user" msgstr "користувач" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Глядач не може відтворити {pinnedCodec}, тому ваш потік використовує {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Прийняти" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Відповісти" @@ -3178,12 +3163,12 @@ msgstr "Додати до групи" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Додати до збережених медіа" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Додати до вибраних GIF за URL-адресою" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Додатково" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Розширені налаштування відео" @@ -3451,7 +3436,7 @@ msgstr "Елементи керування вирівнюванням дост #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Дозволити" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Дозволити згадки {everyoneMention} та {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Дозвольте {PRODUCT_NAME} доступ до камери в «{MACOS_SYSTEM_SETTINGS_NAME}» → «{MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME}» → «{MACOS_CAMERA_PERMISSION_NAME}»." @@ -3618,7 +3603,7 @@ msgstr "Дозволити ботам надсилати особисті пов msgid "Allow bots to send you direct messages?" msgstr "Дозволити ботам надсилати вам особисті повідомлення?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Дозволити камеру" @@ -4014,13 +3999,13 @@ msgstr "Анімовані емодзі, GIF-файли та стікери за #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Анімований GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Анімоване GIF-відео" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Для анімованих іконок потрібна функція спільноти {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Анімоване зображення" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Попередній перегляд анімованого зображення" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Для завантаження анімованих файлів потрібна підписка {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Анімоване відео" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Стан застосунку" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Вікно застосунку" @@ -4361,7 +4346,7 @@ msgstr "Застосунок успішно оновлено" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Застосунки" @@ -4586,7 +4571,7 @@ msgstr "вкладення" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Вкладення {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Термін дії вкладення закінчився" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Термін дії вкладення закінчився або воно недоступне" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Ідентифікатор вкладення скопійовано в буфер обміну" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Рівень звуку" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Аудіо вимкнено" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Втрата аудіопакетів:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Аудіоплеєр" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Попередній перегляд аудіо" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Обробка аудіо (фокусований голос)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Прогрес відтворення аудіо" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Налаштування аудіо" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Джерела аудіо: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Автоматично ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Автоматичне регулювання підсилення" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Браузер: назад" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Стандартний пристрій браузера" @@ -6198,20 +6183,20 @@ msgstr "Дзвінки" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Камера" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Для попереднього перегляду пристроїв потрібен доступ до камери" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Доступ до камери не надано. Оновіть дозволи для камери та спробуйте ще раз." @@ -6276,13 +6261,13 @@ msgstr "Попередній перегляд камери" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Якість камери" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Налаштування камери" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Перевірка капчі не вдалася. Спробуйте ще раз." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Захоплення" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Захоплювати звук застосунку" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Захоплювати звук робочого столу" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Захоплювати звук пристрою" @@ -6736,12 +6721,12 @@ msgstr "Зміна запланована" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Змінити трансляцію" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Змінити джерело трансляції" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Доступ до каналу" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Доступ до каналу заборонено" @@ -7097,7 +7082,7 @@ msgstr "Ідентифікатор каналу скопійовано в буф #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "посилання на канал" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Виберіть спосіб оплати" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Виберіть, чим поділитися" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Очистити довірені домени ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Чіткіший текст" @@ -8285,7 +8270,7 @@ msgstr "Згорнути тему каналу" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Згорнути пристрої" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Творець спільноти" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Вимкнути звук у спільноті" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Панель нагадування про вимогу MFA для спільноти" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Вимкнути мікрофон у спільноті" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Налаштувати зараз" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Налаштувати або завершити демонстрацію екрана" @@ -8904,7 +8889,7 @@ msgstr "Підтвердження або подвійне клацання дл msgid "Conflicts with {conflictLabel}" msgstr "Конфліктує з {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Підключіть камеру та спробуйте ще раз." @@ -8913,7 +8898,7 @@ msgstr "Підключіть камеру та спробуйте ще раз." msgid "Connect a camera or virtual capture device, then try again." msgstr "Підключіть камеру або віртуальний пристрій захоплення, а потім спробуйте ще раз." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Підключіть дисплей, а потім спробуйте ще раз." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Керування гучністю підключення" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Підключення: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Статистику JSON скопійовано в буфер обмі #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Скопійовано в буфер обміну" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Копіювати ID вкладення" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Копіювати аудіо" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Копіювати посилання на аудіо" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Копіювати кінцеву точку" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Копіювати посилання на файл" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Копіювати GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Копіювати посилання на GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Копіювати ідентифікатор" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Копіювати зображення" @@ -9448,7 +9433,7 @@ msgstr "Копіювати зображення" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Копіювати посилання на зображення" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Копіювати посилання на розділ" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Копіювати медіа" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Копіювати значення" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Копіювати відео" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Копіювати посилання на відео" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Копіювати URL вебхука" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Копіювання зображення..." @@ -10588,7 +10573,7 @@ msgstr "Зараз: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Власне" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Деактивувати" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Вимкнути звук" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Вимкнути звук на всіх пристроях" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Вимкнути звук пристрою" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Вимикати звук іншим учасникам у голосових каналах, щоб вони не могли ні чути, ні говорити." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Комбінація клавіш для вимкнення звуку" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Вимкнути звук для себе" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Звук вимкнено" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Звук вимкнено модераторами" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "За замовчуванням" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Камера за замовчуванням" @@ -11258,8 +11243,8 @@ msgstr "Делавер" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Видалити :{emojiName}:? Цю дію не можна скасув #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Видалити «{memeName}»? Цю дію не можна скасувати." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Видалити запрошення" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Видалити медіа" @@ -11466,8 +11451,8 @@ msgstr "Видалити роль" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Видалити збережені медіа" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Немає на комп'ютері" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Комп'ютер" @@ -11849,13 +11834,13 @@ msgstr "Стан розробника" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Інструменти розробника" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Інструменти розробника доступні зі значка персоналу в заголовку каналу." @@ -11879,6 +11864,17 @@ msgstr "Пристрій" msgid "Device alerts" msgstr "Сповіщення пристрою" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Аудіо пристрою ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Аудіо пристрою" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Деталі пристрою" @@ -11888,7 +11884,7 @@ msgstr "Деталі пристрою" msgid "Device revoked" msgstr "Пристрій відкликано" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Вибір пристрою" @@ -11912,7 +11908,7 @@ msgstr "Пристрій:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Пристрої" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Приглушити закреслений текст" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Прямий вхід" @@ -12020,7 +12016,7 @@ msgstr "Пряме завантаження активне" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Вимкнути" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Вимкнене значення" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Вимкнення попереднього перегляду зупинить подальше завантаження кадрів. Наявні зображення попереднього перегляду можуть залишатися видимими до завершення трансляції або оновлення попереднього перегляду." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Видалити голосове повідомлення" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Від'єднатися" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Від'єднати всі пристрої" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Від'єднати пристрій" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Відображення" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Екран" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification та помістіть його до папки <1>.well-known, щоб ми могли перевірити домен." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Завантажити аудіо" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Завантажити оновлення для комп'ютера {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Завантажити файл" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Завантажити fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Завантажити GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Завантажити зображення" @@ -12714,7 +12710,7 @@ msgstr "Завантажити інсталятор" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Завантажити медіа" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Завантажити пакунок" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Завантажити відео" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Відлуння" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Придушення відлуння" @@ -12963,7 +12959,7 @@ msgstr "Редагувати доступ для {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Редагувати альтернативний текст" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Змінити комбінацію клавіш" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Редагувати медіа" @@ -13102,8 +13098,8 @@ msgstr "Редагувати пошукову систему для зворот #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Редагувати збережені медіа" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Увімкнути сповіщення в браузері" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Увімкніть доступ до камери, щоб переглянути камери та пристрої захоплення, перш ніж обрати той, який транслюватимете." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Увімкніть або вимкніть вбудовані перекладачі. Увімкнені перекладачі з'являються в контекстному меню повідомлення, коли виділено текст." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Увімкнути попередній перегляд" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Завершити демонстрацію екрана" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Наскрізне шифрування недоступне, оскільки в цьому дзвінку є учасник, який його не підтримує." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Наскрізне шифрування недоступне, оскільки в цьому голосовому каналі є учасник, який його не підтримує." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Розваги" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Увесь екран" @@ -14095,7 +14091,7 @@ msgstr "Увесь екран" msgid "Entire system" msgstr "Уся система" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Весь системний звук" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "виключити користувача" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Виключити із системи" @@ -14593,7 +14589,7 @@ msgstr "Не вдалося скопіювати посилання-запрош #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Не вдалося скопіювати в буфер обміну" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Не вдалося завантажити запрошення. Спробуйте ще раз." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Не вдалося завантажити джерела для демонстрації." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Активувати вікно" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Чіткий голос" @@ -15322,10 +15318,6 @@ msgstr "Налаштування папки" msgid "Follow us on {blueskyProviderName}" msgstr "Слідкуйте за нами в {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Слідувати за голосовим введенням" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Переслати" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Перемотати вперед на {defaultSeekAmount} секунд" @@ -15592,14 +15584,14 @@ msgstr "Рамка" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Частота кадрів" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Для частоти кадрів понад 30 FPS потрібен {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Геймпад Y / Трикутник" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Ігри" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Завантаження добірки GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Попередній перегляд GIF" @@ -16429,7 +16421,7 @@ msgstr "Надано {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Надає всі дозволи та обходить обмеження каналів. Дуже ризиковано." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Детальний вибір" @@ -16992,7 +16984,7 @@ msgstr "Сховати пароль" msgid "Hide picture-in-picture popout?" msgstr "Сховати вікно «картинка в картинці»?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Сховати мініатюру попереднього перегляду" @@ -17386,7 +17378,7 @@ msgstr "Якщо ви хочете, щоб ці учасники могли чи #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Ігнорувати" @@ -17395,11 +17387,11 @@ msgstr "Ігнорувати" msgid "Ignore friend request" msgstr "Ігнорувати запит на додавання в друзі" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Ігнорувати апаратні пристрої" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Ігнорувати вхідні медіа" @@ -17430,7 +17422,7 @@ msgstr "Ігнорувати запит на додавання в друзі в msgid "Ignore this channel's slowmode cooldown." msgstr "Ігнорувати обмеження повільного режиму цього каналу." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Ігнорувати віртуальні" @@ -17468,7 +17460,7 @@ msgstr "Іллінойс" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Зображення" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Зображення" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Зображення скопійовано в буфер обміну" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Параметри зображення" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Попередній перегляд зображення" @@ -17540,7 +17532,7 @@ msgstr "Завантаження зображення" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "У голосовому чаті" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "У голосовому чаті" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Включити всі, крім вибраних" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Включити застосунки" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Введення та виведення" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Пристрій введення" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Профіль введення: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Налаштування введення" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Стани введення" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Гучність вхідного сигналу" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Посилання-запрошення приховано під час демонстрації екрана:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Посилання-запрошення приховано під час демонстрації екрана" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Перейти до {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Перейти до {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Перейти до поточного дзвінка" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Перейти до пов'язаного каналу" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Перейти до пов'язаного повідомлення" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Перейти до повідомлення від {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Перейти до повідомлення в {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Макет" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Дізнайтеся більше про попередній перегляд демонстрації екрана" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Стиль посилань" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Посилання недоступне" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Застосунок для Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Стандартний аудіопристрій Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Завантаження теми…" #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Завантаження..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Застосунок для macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Стандартний аудіопристрій macOS" @@ -20289,7 +20281,7 @@ msgstr "Наступна доріжка" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Параметри медіа" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Відтворення/пауза" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Попередній перегляд медіа" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Макет повідомлення" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "посилання на повідомлення" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Тест мікрофона" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Мікрофон, камера та вміст демонстрації екрана зашифровані наскрізно." @@ -21019,7 +21011,7 @@ msgstr "Неповнолітні в небезпеці, контент для д #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Слова з помилками" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Мобільний пристрій" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Вимкнути всі сповіщення" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Вимкнути мікрофон на всіх пристроях" @@ -21653,13 +21645,13 @@ msgstr "Сповіщення вимкнено" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Мікрофон вимкнено" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Мікрофон вимкнено модераторами" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Немає дозволу {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Немає доступу" @@ -22282,7 +22274,7 @@ msgstr "Не знайдено жодних розширених налаштув msgid "No AFK channel" msgstr "Немає каналу AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Вікна застосунків не знайдено" @@ -22300,6 +22292,11 @@ msgstr "Поки що немає ресурсів" msgid "No audio" msgstr "Без звуку" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Немає аудіо з цього пристрою" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Немає авторизованих застосунків" @@ -22341,7 +22338,7 @@ msgstr "Немає закладок" msgid "No bot banner" msgstr "Без банера бота" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Камеру не знайдено" @@ -22421,7 +22418,7 @@ msgstr "Без опису." msgid "No desktop update is available." msgstr "Оновлення для комп'ютера недоступне." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Дисплеї не знайдено" @@ -22650,7 +22647,7 @@ msgstr "Не отримано тіла відповіді" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Немає результатів" @@ -22679,7 +22676,7 @@ msgstr "Ще немає ролей. Додайте ролі в {rolesSettingsPat #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Немає збережених медіа" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Шумовий гейт" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Приглушення шуму" @@ -22877,7 +22874,7 @@ msgstr "Без перетворення" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Немає" @@ -23286,7 +23283,7 @@ msgstr "Застосовується лише на широких екранах msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Приймаються лише кредитні картки. Дебетові та передплачені картки не підходять для перевірки доступу до контенту для дорослих." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Лише стандартні динаміки" @@ -23334,7 +23331,7 @@ msgstr "Запускайте код тут, лише якщо ви точно р msgid "Only show message previews for DMs with unread messages" msgstr "Показувати попередній перегляд повідомлень лише для приватних чатів із непрочитаними повідомленнями" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Лише динаміки" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Відкрити {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Відкрити {labelText} у налаштуваннях" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Відкрити @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Відкрити розширені налаштування медіа" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Відкрийте вікно застосунку, а потім спробуйте ще раз." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Відкрити анімований GIF на весь екран" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Відкрити анімоване GIF-відео на весь екран" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Відкрити аудіо на весь екран" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Відкрити посилання на аудіо" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Відкрити браузер" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Відкрити вікно вибору браузера" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Відкрити меню «Вибране»" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Відкрити посилання на файл" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Відкрити посилання на GIF" @@ -23651,7 +23648,7 @@ msgstr "Відкрити зображення в браузері" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Відкрити зображення на весь екран" @@ -23660,7 +23657,7 @@ msgstr "Відкрити зображення на весь екран" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Відкрити посилання на зображення" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Відкрити системний приватний чат" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Відкрити системне вікно вибору" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Відкрити відео на весь екран" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Відкрити посилання на відео" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Відкрити голосовий чат" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Відкрити налаштування аудіо та відео" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Виведення" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Пристрій виведення" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Налаштування виводу" @@ -24094,7 +24091,7 @@ msgstr "Налаштування виводу" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Гучність виводу" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Обмеження учасників" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Параметри учасника для {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Попередній перегляд приховано" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Зображення попереднього перегляду тимчасово зберігаються в {productName} для передачі та не захищені наскрізним шифруванням. Вимкніть попередній перегляд, якщо ви не хочете, щоб кадри демонстрації екрана завантажувалися для створення мініатюр." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Зображення попереднього перегляду тимчасово зберігаються в {productName} для передачі та не захищені наскрізним шифруванням. Учасникам цього групового чату не обов'язково активно дивитися вашу трансляцію, щоб бачити мініатюру." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Зображення попереднього перегляду тимчасово зберігаються в {productName} для передачі та не захищені наскрізним шифруванням. Для підключення все ще потрібен дозвіл, але користувачам не потрібно активно дивитися вашу трансляцію." @@ -26269,7 +26266,7 @@ msgstr "Посилання скопійовано." msgid "Referral parameters" msgstr "Реферальні параметри" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Оновити джерела звуку" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Натиснуто звичайну кнопку." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Відхилити" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Видалити з групи" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Видалити зі збережених медіа" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Зняти закріплення" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Видалити з вибраних GIF за URL-адресою" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Скасовано блокування для {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Перемотати на {defaultSeekAmount} секунд назад" @@ -28202,7 +28199,7 @@ msgstr "Зберегти іконку" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Збережіть медіа з повідомлень, щоб почати!" @@ -28313,7 +28310,7 @@ msgstr "Потрібен дозвіл на запис екрана" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Демонстрація екрана" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Підсилення звуку під час демонстрації екрана" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Не вдалося ввімкнути звук демонстрації екрана" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Керування кодувальником демонстрації екрана" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Демонстрацію екрана завершено" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Поведінка попереднього перегляду демонстрації екрана" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Попередні перегляди демонстрації екрана" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Попередні перегляди демонстрації екрана вимкнено." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Попередні перегляди демонстрації екрана ввімкнено." @@ -28391,13 +28388,13 @@ msgstr "Конфіденційність демонстрації екрана" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Якість демонстрації екрана" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Налаштування демонстрації екрана" @@ -28723,7 +28720,7 @@ msgstr "Пошук ролей або учасників…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Пошук збережених медіа" @@ -28942,12 +28939,12 @@ msgstr "Попередній перегляд перемотування" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Вибрати" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Виберіть {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Надіслати посилання для скидання" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Надіслати збережений медіафайл «{memeName}»" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Встановлено позицію ролі у списку учасників" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Встановлено пресетом {preset}. Вибір значення тут перемкне на \"Власні налаштування\"." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Установіть власну гучність для окремих звуків. Звуки без перевизначення використовують загальну гучність." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Установити комбінацію клавіш для вимкнення звуку" @@ -29669,11 +29666,6 @@ msgstr "Відкласти цю перевірку" msgid "Set this check aside?" msgstr "Відкласти цю перевірку?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Надіслати {resolution} з частотою {frameRate} кадрів на секунду та кодеком {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Налаштування" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "посилання на налаштування" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Поділитися подарунком" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Поділитися екраном" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Поділитися з модераторами спільноти." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Поділитися екраном" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Діліться екраном у високій роздільній здатності (1080p), quad HD (1440p) або у вихідній роздільній здатності джерела з частотою до 60 кадрів/с." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Вікно демонстрації" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Аудіо вікна демонстрації" @@ -30624,6 +30616,10 @@ msgstr "Беззвучні дзвінки" msgid "Silent calls from everyone" msgstr "Беззвучні дзвінки від усіх" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Без звуку, коли пристрій захоплення не має власного аудіовходу" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Плавне прокручування" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Плавніше відео" @@ -31005,11 +31001,6 @@ msgstr "Деякі емодзі не вдалося додати" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Деякі файли, які ви намагаєтеся завантажити, перевищують максимальний розмір {maxSizeFormatted} на файл." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Деякі налаштування трансляції не вдалося застосувати до вашого прямого ефіру." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Звуки" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Джерело" @@ -31569,7 +31560,7 @@ msgstr "Розпочати голосовий дзвінок?" msgid "Start call" msgstr "Почати дзвінок" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Запустити тест камери та налаштувати ефекти" @@ -31910,7 +31901,7 @@ msgstr "Зупинити озвучення" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Припинити трансляцію" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Припинити довіряти всім посиланням?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Зупинити перегляд" @@ -31982,7 +31973,7 @@ msgstr "Запобігає зацикленню звуку з динаміків #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Стрім" @@ -32001,11 +31992,6 @@ msgstr "Трансляція завершена" msgid "Stream hidden" msgstr "Трансляцію приховано" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Трансляція не встигає" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Якість трансляції" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Налаштування трансляції" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Налаштування потоку було змінено" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Системні оголошення від команди {productName #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Системний за замовчуванням" @@ -33036,13 +33017,8 @@ msgstr "Бота додано до <0>{destinationName}." msgid "The bot has been added." msgstr "Бота додано." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Браузер надсилає {deliveredResolution} замість {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Попередній перегляд камери ще зупиняється. Спробуйте розпочати трансляцію ще раз за мить." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Роль надавала {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Джерело демонстрації екрана припинило надсилати відео, тому демонстрацію вашого екрана зупинено." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Консоль браузера — це інструмент розробника." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Цей дзвінок наскрізно зашифровано." @@ -33645,11 +33621,6 @@ msgstr "Ця збірка для комп'ютера не може встано msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ця розробницька збірка не може оновити себе. Завантажте інсталятор для комп'ютера, щоб протестувати процес оновлення." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Цей пристрій минулого разу не впорався з {targetResolution} за {targetFrameRate} кадрів на секунду, тому ваш стрім розпочався з {resolution} за {frameRate} кадрів на секунду." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Цією інсталяцією керує ваша система. Оновіть {productName} через центр програм або менеджер пакунків." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Цей екземпляр наразі дозволяє демонстрацію екрана до 720p із частотою 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Цей канал за посиланням позначено як такий, що містить контент для дорослих, і може відкривати матеріали, які можуть бути неприйнятними для деяких користувачів." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Це посилання недоступне для вашого облікового запису." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Цей параметр обов'язковий. Укажіть значення." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Цей учасник не може говорити в цьому каналі" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "У цього учасника вимкнено звук" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Модератори вимкнули звук цьому учаснику" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Цей номер телефону вже використовувався. Спробуйте інший номер або зверніться до служби підтримки." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Це вікно вибору доступне лише в десктопному застосунку." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Перемкнути елементи керування" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Увімкнути/вимкнути звук" @@ -34666,7 +34637,7 @@ msgstr "Зміни іконки в треї застосовуються лиш #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "Популярні GIF-файли" @@ -34760,7 +34731,7 @@ msgstr "Спробуйте інший пошуковий запит." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Спробуйте інший пошуковий запит або фільтр" @@ -34839,11 +34810,6 @@ msgstr "Спробуйте інші фільтри або пошукові за msgid "Try editing your message again." msgstr "Спробуйте відредагувати повідомлення ще раз." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Спробувати знову повну якість" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Спробуйте пошукати щось на кшталт «тема», «сповіщення» або «конфіденційність»" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Вимкніть те, що вам не підходить. Деякі функції можуть перестати працювати." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Вимкніть звук для цього джерела або спробуйте ще раз за мить." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Увімкнути автоматично, коли виявлено OBS або XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Увімкнути камеру" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Не підлягає стягненню" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Увімкнути звук" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Увімкнути звук на всіх пристроях" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Увімкнути звук для себе" @@ -35558,7 +35524,7 @@ msgstr "невідомий користувач" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Невідомий користувач" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Розблокуйте власні емодзі у приватних чатах з {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Розблокуйте демонстрацію екрана в HD з {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Увімкнути звук для {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Увімкнути мікрофон на всіх пристроях" @@ -35741,7 +35707,7 @@ msgstr "Група без назви" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Вхід без назви" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Завантажувати нові емодзі та стікери, а також керувати власними творіннями." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Завантажувати кадри попереднього перегляду для демонстрації екрана." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "URL скопійовано в буфер обміну" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Тег користувача (необов'язково)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Гучність користувача" @@ -37227,7 +37193,7 @@ msgstr "Втрата відеопакетів:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Попередній перегляд відео" @@ -37283,7 +37249,7 @@ msgstr "Завантаження відео" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Аудіо та відео" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Налаштування аудіо та відео" @@ -37685,7 +37651,7 @@ msgstr "Комбінації клавіш для голосових і віде #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Голосовий дзвінок" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Налагодження голосового з'єднання" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Вимкнення звуку в голосовому чаті" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Голосове повідомлення" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Програвач голосових повідомлень" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Налаштування голосу" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Увімкнення звуку в голосовому чаті" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Зачекайте тут" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Очікування з'єднання…" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Під час публікації як посилання в чаті" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Коли ввімкнено попередній перегляд, {productName} час від часу завантажує окремі кадри у форматі JPEG з вашої демонстрації екрана, щоб інші учасники цього групового чату могли бачити мініатюру перед переглядом." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Коли ввімкнено попередній перегляд, {productName} час від часу завантажує окремі кадри у форматі JPEG з вашої демонстрації екрана, щоб люди, які мають дозвіл на підключення до цього голосового каналу, могли бачити мініатюру перед переглядом." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Коли ввімкнено попередній перегляд, {productName} час від часу завантажує окремі кадри у форматі JPEG з вашої демонстрації екрана, щоб інша людина в цьому приватному чаті могла бачити мініатюру перед переглядом." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Вікна, обрізані зверху або знизу екрана, а також закріплені інструменти розробника можуть відображати сірий фон замість прозорого." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Стандартний пристрій Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Вас заблоковано в цій спільноті, тому ви не можете приєднатися." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "У вас вимкнено звук" @@ -38833,11 +38799,6 @@ msgstr "Ви використовуєте {releaseChannel}-збірку {product msgid "You aren't in any communities right now." msgstr "Зараз ви не є учасником жодної спільноти." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Ви запитали {resolution} з частотою {frameRate} кадрів на секунду" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Ви не можете надсилати повідомлення в ц #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Ви не можете демонструвати екран у цьому каналі" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Ви не можете говорити в цьому каналі" @@ -39036,7 +38997,7 @@ msgstr "Ви не можете говорити в цьому каналі" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Ви не можете ввімкнути камеру в цьому каналі" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Ви змінили свій тег, поки у вас був {PREMIUM_PRODUCT_NAME}. Він стане випадковим, коли термін дії {PREMIUM_PRODUCT_NAME} завершиться, якщо підписку не буде поновлено." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "У вас немає доступу до каналу, куди було надіслано це повідомлення." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Ви залишаєтеся в {ownedNames}. Власники не можуть покинути власну спільноту." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Модератори вимкнули вам звук" @@ -39699,11 +39660,6 @@ msgstr "Ваша заявка очікує на розгляд. Ви все ще msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Ваш браузер вимагає взаємодії з користувачем, перш ніж можна буде відтворити аудіо. Натисніть кнопку нижче, щоб увімкнути голосовий чат." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Ваш пристрій захоплення надсилає {deliveredResolution} замість {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Ми перевіряємо вашу картку, щоб визначити локалізовані ціни. Зазвичай це триває недовго." @@ -39734,36 +39690,11 @@ msgstr "Ваша спільнота є в Discovery. Ви можете онов msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Щоб спільноту можна було додати до Discovery, у ній має бути щонайменше {minMemberCount, plural, one {# учасник} few {# учасники} many {# учасників} other {# учасника}}." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Ваше з'єднання не встигає. Ваш потік налаштовано на {frameRate} FPS у якості {resolution}, а глядачі отримують приблизно {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Вашу кредитну картку перевірено. Якщо картка дійсна, доступ до контенту для дорослих незабаром буде розблоковано. Можете закрити цю вкладку та повернутися до застосунку." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Ваш пристрій не встигає. Ваш потік налаштовано на {frameRate} FPS у роздільній здатності {resolution}, а глядачі отримують приблизно {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Ваш пристрій не встигав, тому ваш потік тепер надсилає {frameRate} FPS, щоб зберегти чіткість {resolution}." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Ваш пристрій не впорався, тому ваш потік тепер надсилає {resolution} з частотою {frameRate} кадрів на секунду замість {targetResolution} з частотою {targetFrameRate} кадрів на секунду." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Ваш пристрій не встигав, тому ваш потік тепер надсилає {resolution}, щоб забезпечити плавність {frameRate} кадрів на секунду." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Щоб продовжити, потрібно пройти додаткову перевірку на спам." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Ваша збережена якість {savedResolution} із частотою {savedFrameRate} кадрів на секунду потребує {premiumProductName}, тому спільний доступ використовує {resolution} із частотою {frameRate} кадрів на секунду." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Не вдалося опублікувати демонстрацію екрана з сумісним відеокодеком, тому її зупинено. Спробуйте почати демонстрацію знову." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Ваше джерело видає приблизно {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Ваша трансляція досі активна" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Ваш потік переключено на {codec}, оскільки {previousCodec} не впорався на цьому пристрої. Глядачі можуть побачити коротку паузу." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "Вашу персоналізовану URL-адресу встановлено на {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Ваш відеокодер перестав кодувати кадри, тому демонстрацію екрана зупинено. Спробуйте почати демонстрацію знову." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Ваш відеокодер зупинився, тому ваш потік переключився на {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/vi/messages.po b/fluxer_app/src/features/i18n/locales/vi/messages.po index 7677e4368..1ceca8826 100644 --- a/fluxer_app/src/features/i18n/locales/vi/messages.po +++ b/fluxer_app/src/features/i18n/locales/vi/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} muốn kết nối" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} sẽ sử dụng tài khoản này cho lần ủy quyền này." -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} không theo kịp trên thiết bị này. Hãy đặt codec thành Tự động trong cài đặt Nâng cao để cho phép một codec nhanh hơn." - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "Hiện tại, {communityName} chỉ dành cho nhân viên của {product msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ Không giới hạn} one {# người tham gia} other {# người tham gia}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {... (# dòng còn lại)} other {... (# dòng còn lại)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {... (# hàng còn lại)} other {... (# hàng còn lại)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {Mở rộng (# dòng)} other {Mở rộng (# dòng) msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {Mở rộng (# hàng)} other {Mở rộng (# hàng)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {Mở rộng # thiết bị khác} other {Mở rộng # thiết bị khác}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {Đang gọi} other {# người đang gọi}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {Tham gia cuộc gọi video (# người tham gia)} other {Tham gia cuộc gọi video (# người tham gia)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {Tiếp tục xem # luồng và thêm luồng này} other {Tiếp tục xem # luồng và thêm luồng này}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, other {Liên kết mời của bạn sẽ hết hạn sau # ngày.}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel} ({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} giờ" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# ghi đè} other {# ghi đè}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} trước tiên sẽ xác minh xem thẻ của bạn có đủ điều kiện áp dụng giá theo khu vực hay không, sau đó chuyển bạn sang bước thanh toán. Quay lại {productName} sau khi bạn hoàn tất." -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "Thiết bị này không hỗ trợ {pinnedCodec}, vì vậy luồng của bạn sẽ sử dụng {codec}." - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} cần quyền truy cập micrô của bạn. Hãy cho phép truy cập micrô trong cài đặt quyền riêng tư của hệ điều hành và khởi động lại ứng dụng." #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} cần quyền truy cập camera để liệt kê thiết bị của bạn." @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} đang hoạt động" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "một URL được nhập trong nội dung tin nhắn" msgid "a user" msgstr "một người dùng" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "Một người xem không thể phát {pinnedCodec}, vì vậy luồng của bạn đang sử dụng {codec}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "Chấp nhận" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "Trả lời" @@ -3178,12 +3163,12 @@ msgstr "Thêm vào nhóm" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "Thêm vào media đã lưu" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "Thêm vào GIF yêu thích lưu theo URL" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "Nâng cao" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "Cài đặt video nâng cao" @@ -3451,7 +3436,7 @@ msgstr "Tùy chọn căn chỉnh chỉ khả dụng trên màn hình rộng hơn #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "Cho phép" msgid "Allow {everyoneMention} and {hereMention}" msgstr "Cho phép {everyoneMention} và {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "Cho phép {PRODUCT_NAME} truy cập camera của bạn trong {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." @@ -3618,7 +3603,7 @@ msgstr "Cho phép bot nhắn tin trực tiếp" msgid "Allow bots to send you direct messages?" msgstr "Cho phép bot gửi tin nhắn trực tiếp cho bạn?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "Cho phép truy cập camera" @@ -4014,13 +3999,13 @@ msgstr "Biểu tượng cảm xúc động, ảnh GIF và nhãn dán vẫn nằm #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "Ảnh GIF động" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "Video GIF động" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "Biểu tượng động yêu cầu tính năng cộng đồng {animatedIconFeature}." #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "Ảnh động" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "Xem trước ảnh động" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "Việc tải lên ảnh động yêu cầu gói đăng ký {premiumProductName}." #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "Video động" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "Trạng thái ứng dụng" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "Cửa sổ ứng dụng" @@ -4361,7 +4346,7 @@ msgstr "Đã cập nhật ứng dụng thành công" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "Ứng dụng" @@ -4586,7 +4571,7 @@ msgstr "tệp đính kèm" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "Tệp đính kèm {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "Tệp đính kèm đã hết hạn" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "Tệp đính kèm đã hết hạn hoặc không khả dụng" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "Đã sao chép ID tệp đính kèm vào bảng tạm" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "Mức âm thanh" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "Đã tắt âm thanh" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "Mất gói âm thanh:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "Trình phát âm thanh" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "Xem trước âm thanh" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "Xử lý âm thanh (giọng nói tập trung)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "Tiến độ âm thanh" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "Cài đặt âm thanh" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "Nguồn âm thanh: {summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "Tự động ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "Tự động điều chỉnh độ lợi" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "Trình duyệt: quay lại" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "Mặc định của trình duyệt" @@ -6198,20 +6183,20 @@ msgstr "Cuộc gọi" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "Camera" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "Cần quyền truy cập camera để xem trước thiết bị" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "Chưa được cấp quyền truy cập camera. Hãy cập nhật quyền camera rồi thử lại." @@ -6276,13 +6261,13 @@ msgstr "Xem trước camera" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "Chất lượng camera" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "Cài đặt camera" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "Xác minh CAPTCHA không thành công. Hãy thử lại." #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "Thu âm thanh" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "Thu âm thanh ứng dụng" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "Thu âm thanh từ máy tính" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "Thu âm thanh thiết bị" @@ -6736,12 +6721,12 @@ msgstr "Đã lên lịch thay đổi" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "Đổi nguồn chia sẻ" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "Đổi nguồn chia sẻ màn hình" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "Quyền truy cập kênh" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "Không thể truy cập kênh" @@ -7097,7 +7082,7 @@ msgstr "Đã sao chép ID kênh vào bảng tạm" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "liên kết kênh" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "Chọn phương thức thanh toán" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "Chọn nội dung để chia sẻ" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "Xóa miền đáng tin cậy ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "Văn bản rõ ràng hơn" @@ -8285,7 +8270,7 @@ msgstr "Thu gọn chủ đề kênh" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "Thu gọn thiết bị" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "Người tạo cộng đồng" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "Tắt tiếng nghe trong cộng đồng" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "Thanh thông báo yêu cầu MFA của cộng đồng" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "Tắt tiếng trong cộng đồng" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "Cấu hình ngay" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "Cấu hình hoặc kết thúc chia sẻ màn hình" @@ -8904,7 +8889,7 @@ msgstr "Xác nhận hoặc nhấp đúp để tham gia kênh thoại cộng đ msgid "Conflicts with {conflictLabel}" msgstr "Xung đột với {conflictLabel}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "Kết nối camera và thử lại." @@ -8913,7 +8898,7 @@ msgstr "Kết nối camera và thử lại." msgid "Connect a camera or virtual capture device, then try again." msgstr "Kết nối camera hoặc thiết bị ghi hình ảo, rồi thử lại." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "Kết nối một màn hình, rồi thử lại." @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "Điều khiển âm lượng kết nối" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "Kết nối: {connectionId}" @@ -9277,7 +9262,7 @@ msgstr "Đã sao chép JSON thống kê vào bảng nhớ tạm" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "Đã sao chép vào bảng nhớ tạm" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "Sao chép ID tệp đính kèm" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "Sao chép âm thanh" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "Sao chép liên kết âm thanh" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "Sao chép điểm cuối" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "Sao chép liên kết tệp" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "Sao chép ảnh GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "Sao chép liên kết GIF" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "Sao chép ID" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "Sao chép ảnh" @@ -9448,7 +9433,7 @@ msgstr "Sao chép ảnh" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "Sao chép liên kết hình ảnh" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "Sao chép liên kết đến phần này" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "Sao chép phương tiện" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "Sao chép giá trị" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "Sao chép video" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "Sao chép liên kết video" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "Sao chép URL webhook" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "Đang sao chép ảnh..." @@ -10588,7 +10573,7 @@ msgstr "Hiện tại: {mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "Tùy chỉnh" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "Hủy kích hoạt" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "Tắt tiếng nghe" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "Tắt tiếng nghe trên tất cả thiết bị" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "Tắt tiếng nghe trên thiết bị" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "Tắt tiếng nghe của các thành viên khác trong kênh thoại để họ không thể nghe hoặc nói." #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "Phím tắt tắt tiếng nghe" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "Tắt tiếng nghe của bạn" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "Đã tắt tiếng nghe" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "Đã bị người điều hành tắt tiếng nghe" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "Mặc định" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "Camera mặc định" @@ -11258,8 +11243,8 @@ msgstr "Delaware" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "Xóa :{emojiName}:? Không thể hoàn tác." #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "Xóa \"{memeName}\"? Không thể hoàn tác." @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "Xóa lời mời" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "Xóa media" @@ -11466,8 +11451,8 @@ msgstr "Xóa vai trò" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "Xóa media đã lưu" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "Vắng mặt trên máy tính" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "Thiết bị máy tính" @@ -11849,13 +11834,13 @@ msgstr "Trạng thái nhà phát triển" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "Công cụ nhà phát triển" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "Công cụ nhà phát triển có sẵn từ huy hiệu nhân viên trong tiêu đề kênh." @@ -11879,6 +11864,17 @@ msgstr "Thiết bị" msgid "Device alerts" msgstr "Thông báo thiết bị" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "Âm thanh thiết bị ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "Chỉ âm thanh thiết bị" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "Chi tiết thiết bị" @@ -11888,7 +11884,7 @@ msgstr "Chi tiết thiết bị" msgid "Device revoked" msgstr "Thiết bị đã bị thu hồi" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "Chọn thiết bị" @@ -11912,7 +11908,7 @@ msgstr "Thiết bị:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "Thiết bị" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "Làm mờ văn bản gạch ngang" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "Đầu vào trực tiếp" @@ -12020,7 +12016,7 @@ msgstr "Tải lên trực tiếp đang bật" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "Tắt" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "Giá trị bị tắt" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "Tắt tính năng xem trước sẽ dừng việc tải lên các bản xem trước sau này. Các ảnh xem trước hiện có vẫn có thể hiển thị cho đến khi luồng phát kết thúc hoặc bản xem trước được làm mới." @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "Hủy tin nhắn thoại" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "Ngắt kết nối" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "Ngắt kết nối tất cả thiết bị" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "Ngắt kết nối thiết bị" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "Hiển thị" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "Màn hình" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification và đặt vào thư mục <1>.well-known để chúng tôi có thể xác minh tên miền." #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "Tải âm thanh" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "Tải bản cập nhật {version} cho máy tính ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "Tải tệp" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "Tải xuống fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "Tải GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "Tải ảnh" @@ -12714,7 +12710,7 @@ msgstr "Tải trình cài đặt" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "Tải phương tiện" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "Tải gói" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "Tải video" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "Tiếng vọng" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "Khử tiếng vọng" @@ -12963,7 +12959,7 @@ msgstr "Chỉnh sửa quyền truy cập cho {0}" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "Chỉnh sửa văn bản thay thế" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "Chỉnh sửa phím tắt" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "Chỉnh sửa phương tiện" @@ -13102,8 +13098,8 @@ msgstr "Chỉnh sửa công cụ tìm kiếm hình ảnh ngược" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "Chỉnh sửa media đã lưu" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "Bật thông báo trên trình duyệt" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "Cho phép truy cập camera để xem trước camera và thiết bị ghi hình trước khi chọn một thiết bị để truyền phát." @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "Bật hoặc tắt trình dịch tích hợp. Trình dịch đã bật sẽ xuất hiện trong menu ngữ cảnh tin nhắn khi bạn chọn văn bản." #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "Bật xem trước" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "Dừng chia sẻ màn hình" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "Không có mã hóa đầu cuối vì một người tham gia không được hỗ trợ đang ở trong cuộc gọi này." #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "Không có mã hóa đầu cuối vì có người tham gia không được hỗ trợ trong kênh thoại này." @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "Giải trí" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "Toàn bộ màn hình" @@ -14095,7 +14091,7 @@ msgstr "Toàn bộ màn hình" msgid "Entire system" msgstr "Toàn bộ hệ thống" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "Toàn bộ âm thanh hệ thống" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "loại trừ một người dùng" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "Loại trừ khỏi hệ thống" @@ -14593,7 +14589,7 @@ msgstr "Không thể sao chép liên kết mời" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "Sao chép vào bảng tạm thất bại" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "Không tải được lời mời. Vui lòng thử lại." #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "Không thể tải nguồn có thể chia sẻ." @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "Đưa cửa sổ lên phía trước" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "Tập trung giọng nói" @@ -15322,10 +15318,6 @@ msgstr "Cài đặt thư mục" msgid "Follow us on {blueskyProviderName}" msgstr "Theo dõi chúng tôi trên {blueskyProviderName}" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "Theo thiết bị đầu vào thoại" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "Chuyển tiếp" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "Tua tới {defaultSeekAmount} giây" @@ -15592,14 +15584,14 @@ msgstr "Khung" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "Tốc độ khung hình" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "Tốc độ khung hình trên 30 FPS yêu cầu {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "Tay cầm Y / Tam giác" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "Trò chơi" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "Đang tải trình chọn GIF" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "Xem trước GIF" @@ -16429,7 +16421,7 @@ msgstr "Đã cấp {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "Cấp tất cả quyền và bỏ qua các hạn chế kênh. Rất nhạy cảm." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "Chọn chi tiết" @@ -16992,7 +16984,7 @@ msgstr "Ẩn mật khẩu" msgid "Hide picture-in-picture popout?" msgstr "Ẩn cửa sổ hình trong hình?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "Ẩn hình thu nhỏ xem trước" @@ -17386,7 +17378,7 @@ msgstr "Nếu bạn muốn các thành viên này truy cập tin nhắn cũ đư #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "Bỏ qua" @@ -17395,11 +17387,11 @@ msgstr "Bỏ qua" msgid "Ignore friend request" msgstr "Bỏ qua lời mời kết bạn" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "Bỏ qua thiết bị phần cứng" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "Bỏ qua phương tiện đầu vào" @@ -17430,7 +17422,7 @@ msgstr "Bỏ qua lời mời kết bạn từ {displayName}?" msgid "Ignore this channel's slowmode cooldown." msgstr "Bỏ qua thời gian chờ chế độ chậm của kênh này." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "Bỏ qua thiết bị ảo" @@ -17468,7 +17460,7 @@ msgstr "Illinois" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "Hình ảnh" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "Tài nguyên hình ảnh" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "Đã sao chép ảnh vào bảng nhớ tạm" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "Tùy chọn hình ảnh" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "Xem trước hình ảnh" @@ -17540,7 +17532,7 @@ msgstr "Tải ảnh lên" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "Đang trong cuộc gọi thoại" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "Trong trò chuyện thoại" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "Bao gồm tất cả trừ những mục đã chọn" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "Bao gồm ứng dụng" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "Đầu vào và đầu ra" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "Thiết bị đầu vào" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "Cấu hình đầu vào: {processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "Cài đặt đầu vào" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "Trạng thái ô nhập" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "Âm lượng đầu vào" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "Liên kết mời bị ẩn khi đang chia sẻ:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "Đã ẩn liên kết mời khi đang chia sẻ" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "Chuyển đến {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "Chuyển đến {labelText}" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "Chuyển đến cuộc gọi hiện tại" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "Chuyển đến kênh được liên kết" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "Chuyển đến tin nhắn được liên kết" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "Chuyển đến tin nhắn từ {authorNickname}" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "Chuyển đến tin nhắn trong {labelText}" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "Bố cục" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "Tìm hiểu về bản xem trước chia sẻ màn hình" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "Kiểu liên kết" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "Liên kết không khả dụng" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Ứng dụng Linux" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Mặc định của Linux" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "Đang tải chủ đề..." #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "Đang tải..." @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "Ứng dụng macOS" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "Mặc định của macOS" @@ -20289,7 +20281,7 @@ msgstr "Bản nhạc tiếp theo" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "Tùy chọn phương tiện" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "Phát/tạm dừng" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "Xem trước phương tiện" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "Bố cục tin nhắn" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "liên kết tin nhắn" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "Kiểm tra micrô" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "Micrô, camera và nội dung chia sẻ màn hình được mã hóa đầu cuối." @@ -21019,7 +21011,7 @@ msgstr "Trẻ vị thành niên gặp rủi ro, nội dung người lớn không #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "Lỗi chính tả" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "Thiết bị di động" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "Tắt tất cả thông báo" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "Tắt micrô trên tất cả thiết bị" @@ -21653,13 +21645,13 @@ msgstr "Đã tắt thông báo" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "Đã tắt micrô" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "Đã bị người điều hành tắt tiếng" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "Không có quyền {sendMessagesPermission}" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "Không có quyền truy cập" @@ -22282,7 +22274,7 @@ msgstr "Không tìm thấy cài đặt nâng cao nào" msgid "No AFK channel" msgstr "Không có kênh AFK" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "Không tìm thấy cửa sổ ứng dụng nào" @@ -22300,6 +22292,11 @@ msgstr "Chưa có tài nguyên nào" msgid "No audio" msgstr "Không có âm thanh" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "Không có âm thanh từ thiết bị này" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "Không có ứng dụng được ủy quyền" @@ -22341,7 +22338,7 @@ msgstr "Không có tin nhắn đã lưu" msgid "No bot banner" msgstr "Không có ảnh bìa bot" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "Không tìm thấy camera" @@ -22421,7 +22418,7 @@ msgstr "Không có mô tả." msgid "No desktop update is available." msgstr "Không có bản cập nhật nào cho ứng dụng máy tính." -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "Không tìm thấy màn hình nào" @@ -22650,7 +22647,7 @@ msgstr "Không nhận được nội dung phản hồi" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "Không có kết quả" @@ -22679,7 +22676,7 @@ msgstr "Chưa có vai trò nào. Thêm vai trò trong {rolesSettingsPath}" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "Chưa có media đã lưu" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "Cổng lọc nhiễu" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "Khử tiếng ồn" @@ -22877,7 +22874,7 @@ msgstr "Không chuyển đổi" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "Không" @@ -23286,7 +23283,7 @@ msgstr "Chỉ áp dụng trên màn hình rộng." msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "Chỉ chấp nhận thẻ tín dụng. Không thể dùng thẻ ghi nợ và thẻ trả trước để kiểm tra nội dung người lớn." -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "Chỉ loa mặc định" @@ -23334,7 +23331,7 @@ msgstr "Chỉ chạy mã ở đây nếu bạn hiểu chính xác mã đó làm msgid "Only show message previews for DMs with unread messages" msgstr "Chỉ hiện bản xem trước tin nhắn cho các tin nhắn trực tiếp chưa đọc" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "Chỉ loa" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "Mở {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "Mở {labelText} trong cài đặt" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "Mở @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "Mở cài đặt phương tiện nâng cao" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "Mở một cửa sổ ứng dụng, rồi thử lại." #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "Mở ảnh GIF động ở chế độ xem đầy đủ" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "Mở video GIF động ở chế độ xem đầy đủ" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "Mở âm thanh ở chế độ xem đầy đủ" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "Mở liên kết âm thanh" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "Mở trình duyệt" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "Mở trình chọn của trình duyệt" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "Mở menu yêu thích" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "Mở liên kết tệp" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "Mở liên kết GIF" @@ -23651,7 +23648,7 @@ msgstr "Mở ảnh trong trình duyệt" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "Mở ảnh ở chế độ xem đầy đủ" @@ -23660,7 +23657,7 @@ msgstr "Mở ảnh ở chế độ xem đầy đủ" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "Mở liên kết hình ảnh" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "Mở tin nhắn trực tiếp của hệ thống" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "Mở trình chọn của hệ thống" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "Mở video ở chế độ xem đầy đủ" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "Mở liên kết video" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "Mở trò chuyện thoại" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "Mở cài đặt âm thanh & video" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "Đầu ra" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "Thiết bị đầu ra" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "Cài đặt đầu ra" @@ -24094,7 +24091,7 @@ msgstr "Cài đặt đầu ra" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "Âm lượng đầu ra" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "Giới hạn người tham gia" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "Tùy chọn người tham gia cho {participantDisplayName}" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "Bản xem trước bị ẩn" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "Hình ảnh xem trước được {productName} lưu tạm thời để gửi đi và không được mã hóa đầu cuối. Hãy tắt tính năng xem trước nếu bạn không muốn khung hình chia sẻ màn hình được tải lên để tạo hình thu nhỏ." #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "Hình ảnh xem trước được {productName} lưu tạm thời để gửi đi và không được mã hóa đầu cuối. Những người trong tin nhắn nhóm này không cần đang xem luồng của bạn mới thấy được hình thu nhỏ." #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "Hình ảnh xem trước được {productName} lưu tạm thời để gửi đi và không được mã hóa đầu cuối. Mọi người vẫn cần quyền để kết nối, nhưng không cần chủ động xem luồng của bạn." @@ -26269,7 +26266,7 @@ msgstr "Đã sao chép tham chiếu." msgid "Referral parameters" msgstr "Tham số giới thiệu" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "Làm mới nguồn âm thanh" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "Đã nhấn nút thông thường." #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "Từ chối" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "Xóa khỏi nhóm" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "Xóa khỏi media đã lưu" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "Bỏ hiển thị trên cùng" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "Xóa khỏi GIF yêu thích lưu theo URL" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "Đã thu hồi lệnh cấm đối với {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Tua lại {defaultSeekAmount} giây" @@ -28202,7 +28199,7 @@ msgstr "Lưu biểu tượng" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "Lưu một vài media từ tin nhắn để bắt đầu!" @@ -28313,7 +28310,7 @@ msgstr "Cần quyền ghi màn hình" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "Chia sẻ màn hình" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "Tăng âm lượng chia sẻ màn hình" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "Âm thanh chia sẻ màn hình không thể bắt đầu" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "Điều khiển bộ mã hóa chia sẻ màn hình" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "Chia sẻ màn hình đã kết thúc" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "Hành vi xem trước chia sẻ màn hình" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "Bản xem trước chia sẻ màn hình" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "Bản xem trước chia sẻ màn hình đã bị tắt." #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "Bản xem trước chia sẻ màn hình đã được bật." @@ -28391,13 +28388,13 @@ msgstr "Quyền riêng tư chia sẻ màn hình" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "Chất lượng chia sẻ màn hình" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "Cài đặt chia sẻ màn hình" @@ -28723,7 +28720,7 @@ msgstr "Tìm kiếm vai trò hoặc thành viên…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "Tìm kiếm media đã lưu" @@ -28942,12 +28939,12 @@ msgstr "Xem trước vị trí tua" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "Chọn" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "Chọn {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "Gửi liên kết đặt lại mật khẩu" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "Gửi media đã lưu {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "Đã đặt vị trí của vai trò trong danh sách thành viên" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "Được đặt theo cài đặt sẵn {preset}. Chọn một giá trị ở đây sẽ chuyển sang Tùy chỉnh." @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "Đặt âm lượng tùy chỉnh cho từng âm thanh. Các âm thanh không có cài đặt riêng sẽ theo âm lượng chính." #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "Đặt phím tắt tắt tiếng nghe" @@ -29669,11 +29666,6 @@ msgstr "Tạm gác lại việc kiểm tra này" msgid "Set this check aside?" msgstr "Tạm gác lại việc kiểm tra này?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "Đặt để gửi {resolution} ở {frameRate} FPS với {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "Cài đặt" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "liên kết cài đặt" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "Chia sẻ quà" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "Chia sẻ màn hình" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "Chia sẻ với người kiểm duyệt cộng đồng." #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "Chia sẻ màn hình của bạn" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "Chia sẻ màn hình của bạn ở độ nét cao (1080p), Quad HD (1440p) hoặc độ phân giải nguồn gốc, với tốc độ lên đến 60 FPS." @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "Cửa sổ đã chia sẻ" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "Âm thanh cửa sổ được chia sẻ" @@ -30624,6 +30616,10 @@ msgstr "Cuộc gọi im lặng" msgid "Silent calls from everyone" msgstr "Tắt tiếng cuộc gọi từ mọi người" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "Im lặng khi thiết bị ghi âm không có đầu vào âm thanh riêng" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "Cuộn mượt" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "Video mượt hơn" @@ -31005,11 +31001,6 @@ msgstr "Không thể thêm một số biểu tượng cảm xúc" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Một số tệp bạn đang tải lên vượt quá giới hạn kích thước tối đa là {maxSizeFormatted} cho mỗi tệp." -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "Một số cài đặt luồng không thể áp dụng cho luồng trực tiếp của bạn." - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "Âm thanh" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "Nguồn" @@ -31569,7 +31560,7 @@ msgstr "Bắt đầu cuộc gọi thoại?" msgid "Start call" msgstr "Bắt đầu cuộc gọi" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "Bắt đầu kiểm tra camera và cấu hình hiệu ứng" @@ -31910,7 +31901,7 @@ msgstr "Dừng đọc" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "Dừng chia sẻ màn hình" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "Ngừng tin cậy tất cả liên kết?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "Dừng xem" @@ -31982,7 +31973,7 @@ msgstr "Ngăn âm thanh từ loa vọng ngược vào micrô." #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "Phát trực tiếp" @@ -32001,11 +31992,6 @@ msgstr "Luồng trực tiếp đã kết thúc" msgid "Stream hidden" msgstr "Đã ẩn luồng" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "Luồng không theo kịp" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "Chất lượng luồng" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "Cài đặt truyền phát" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "Đã điều chỉnh cài đặt luồng" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "Thông báo hệ thống từ đội ngũ {productName}. Bạn không th #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "Mặc định hệ thống" @@ -33036,13 +33017,8 @@ msgstr "Bot đã được thêm vào <0>{destinationName}." msgid "The bot has been added." msgstr "Bot đã được thêm." -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "Trình duyệt đang gửi {deliveredResolution} thay vì {resolution}." - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "Bản xem trước camera vẫn chưa dừng hẳn. Hãy thử truyền phát lại sau giây lát." @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "Vai trò đã cấp {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "Nguồn chia sẻ màn hình đã ngừng gửi video, vì vậy quá trình chia sẻ màn hình của bạn đã dừng." @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "Bảng điều khiển trình duyệt này là công cụ dành cho nhà phát triển." #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "Cuộc gọi này được mã hóa đầu cuối." @@ -33645,11 +33621,6 @@ msgstr "Bản dựng máy tính này không thể cài đặt bản cập nhật msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Bản dựng phát triển này không thể tự cập nhật. Hãy tải trình cài đặt máy tính để thử quy trình cập nhật." -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "Thiết bị này đã không theo kịp {targetResolution} ở {targetFrameRate} FPS lần trước, nên luồng của bạn đã bắt đầu ở {resolution} ở {frameRate} FPS." - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "Bản cài đặt này do hệ thống của bạn quản lý. Hãy cập nhật {productName} từ trung tâm phần mềm hoặc trình quản lý gói của bạn." #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "Máy chủ này hiện cho phép chia sẻ màn hình tối đa 720p ở 30 FPS." @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "Kênh liên kết này được đánh dấu là có nội dung người lớn và có thể mở ra nội dung không phù hợp với một số người dùng." #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "Liên kết này không khả dụng cho tài khoản của bạn." @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "Tùy chọn này là bắt buộc. Vui lòng cung cấp giá trị." #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "Người tham gia này không thể nói trong kênh này" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "Người tham gia này đang tắt tiếng nghe" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "Người tham gia này đã bị người điều hành tắt tiếng nghe" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "Số điện thoại này đã được sử dụng. Hãy thử số khác hoặc liên hệ bộ phận hỗ trợ." #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "Trình chọn này chỉ có trên ứng dụng máy tính." @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "Hiện/ẩn điều khiển" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "Bật/tắt chế độ tắt tiếng nghe" @@ -34666,7 +34637,7 @@ msgstr "Các thay đổi đối với biểu tượng khay chỉ áp dụng sau #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "GIF thịnh hành" @@ -34760,7 +34731,7 @@ msgstr "Thử một truy vấn tìm kiếm khác." #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "Thử từ khóa hoặc bộ lọc khác" @@ -34839,11 +34810,6 @@ msgstr "Thử các bộ lọc hoặc cụm từ tìm kiếm khác." msgid "Try editing your message again." msgstr "Thử chỉnh sửa lại tin nhắn của bạn." -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "Thử lại chất lượng đầy đủ" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "Thử tìm kiếm các mục như \"giao diện\", \"thông báo\" hoặc \"quyền riêng tư\"" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "Tắt bất kỳ tính năng nào bạn không muốn. Một số tính năng có thể ngừng hoạt động." #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "Tắt chia sẻ âm thanh cho nguồn này hoặc thử lại sau." @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "Tự động bật khi phát hiện OBS hoặc XSplit" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "Bật camera" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "Không thể thu hồi" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "Bật tiếng nghe" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "Bật tiếng nghe trên tất cả thiết bị" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "Bật tiếng nghe của bạn" @@ -35558,7 +35524,7 @@ msgstr "người dùng không xác định" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "Người dùng không xác định" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "Mở khóa biểu tượng cảm xúc tùy chỉnh trong tin nhắn trực tiếp với {premiumProductName}" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "Mở khóa chia sẻ màn hình HD với {premiumProductName}" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "Bật âm thanh thông báo cho {label}" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "Bật micrô trên tất cả thiết bị" @@ -35741,7 +35707,7 @@ msgstr "Nhóm chưa đặt tên" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "Đầu vào không tên" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "Tải lên biểu tượng cảm xúc và nhãn dán mới, đồng thời quản lý các nội dung bạn đã tạo." #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "Tải lên các khung hình xem trước cho tính năng chia sẻ màn hình." @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "Đã sao chép URL vào bảng nhớ tạm" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "Thẻ người dùng (tùy chọn)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "Âm lượng người dùng" @@ -37227,7 +37193,7 @@ msgstr "Mất gói video:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "Xem trước video" @@ -37283,7 +37249,7 @@ msgstr "Tải video lên" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "Âm thanh & video" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "Cài đặt âm thanh & video" @@ -37685,7 +37651,7 @@ msgstr "Phím tắt thoại và video" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "Cuộc gọi thoại" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "Gỡ lỗi kết nối thoại" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "Tắt tiếng nghe" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "Tin nhắn thoại" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "Trình phát tin nhắn thoại" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "Cài đặt thoại" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "Bật tiếng nghe" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "Đợi ở đây" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "Đang chờ kết nối..." @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "Khi đăng dưới dạng liên kết trong cuộc trò chuyện" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "Khi bật tính năng xem trước, {productName} sẽ tải lên định kỳ các khung hình JPEG từ nội dung bạn chia sẻ để những người khác trong tin nhắn nhóm này có thể xem hình thu nhỏ trước khi xem." #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "Khi bật tính năng xem trước, {productName} sẽ tải lên định kỳ các khung hình JPEG từ nội dung bạn chia sẻ để những người có quyền kết nối vào kênh thoại này có thể xem hình thu nhỏ trước khi xem." #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "Khi bật tính năng xem trước, {productName} sẽ tải lên định kỳ các khung hình JPEG từ nội dung bạn chia sẻ để người kia trong tin nhắn trực tiếp này có thể xem hình thu nhỏ trước khi xem." @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "Các cửa sổ bị cắt ở cạnh trên hoặc dưới màn hình và DevTools được gắn vào có thể hiển thị nền màu xám thay vì giữ trong suốt." #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Mặc định của Windows" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "Bạn đã bị cấm khỏi cộng đồng này và không thể tham gia." #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "Bạn đang tắt tiếng nghe" @@ -38833,11 +38799,6 @@ msgstr "Bạn đang sử dụng bản dựng {releaseChannel} của {productName msgid "You aren't in any communities right now." msgstr "Hiện bạn chưa tham gia cộng đồng nào." -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "Bạn yêu cầu {resolution} ở tốc độ {frameRate} FPS" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "Bạn không thể gửi tin nhắn trong cộng đồng này." #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "Bạn không thể chia sẻ màn hình trong kênh này" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "Bạn không thể nói trong kênh này" @@ -39036,7 +38997,7 @@ msgstr "Bạn không thể nói trong kênh này" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "Bạn không thể bật camera trong kênh này" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "Bạn đã đổi thẻ khi đang dùng {PREMIUM_PRODUCT_NAME}. Thẻ sẽ được tạo ngẫu nhiên lại khi gói {PREMIUM_PRODUCT_NAME} của bạn hết hạn, trừ khi gói được gia hạn." #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "Bạn không có quyền truy cập vào kênh chứa tin nhắn này." @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "Bạn vẫn ở trong {ownedNames}. Chủ sở hữu không thể rời cộng đồng của chính mình." #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "Bạn đã bị người điều hành tắt tiếng nghe" @@ -39699,11 +39660,6 @@ msgstr "Đơn đăng ký của bạn đang chờ xét duyệt. Bạn vẫn có t msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "Trình duyệt của bạn yêu cầu tương tác người dùng trước khi có thể phát âm thanh. Nhấn vào nút bên dưới để bật trò chuyện thoại." -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "Thiết bị ghi hình của bạn đang gửi {deliveredResolution} thay vì {resolution}." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "Đang kiểm tra thẻ của bạn để áp dụng giá theo khu vực. Việc này thường chỉ mất một lát." @@ -39734,36 +39690,11 @@ msgstr "Cộng đồng của bạn đã được liệt kê trong Khám phá. B msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "Cộng đồng của bạn cần có ít nhất {minMemberCount, plural, other {# thành viên}} trước khi có thể được liệt kê trong Khám phá." -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Kết nối của bạn không theo kịp. Luồng của bạn được đặt thành {frameRate} FPS ở {resolution} và người xem nhận được khoảng {deliveredFrameRate} FPS." - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "Thẻ tín dụng của bạn đã được kiểm tra. Nếu thẻ hợp lệ, nội dung người lớn sẽ sớm được mở khóa. Bạn có thể đóng tab này và quay lại ứng dụng." -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "Thiết bị của bạn không theo kịp. Luồng của bạn được đặt ở {frameRate} FPS ở độ phân giải {resolution} và người xem nhận được khoảng {deliveredFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "Thiết bị của bạn không theo kịp, vì vậy luồng của bạn hiện gửi {frameRate} FPS để giữ cho {resolution} sắc nét." - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "Thiết bị của bạn không theo kịp, nên luồng của bạn giờ đây gửi {resolution} ở {frameRate} FPS thay vì {targetResolution} ở {targetFrameRate} FPS." - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "Thiết bị của bạn không theo kịp, nên luồng của bạn hiện đang gửi {resolution} để giữ cho {frameRate} FPS mượt mà." - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "Đăng ký của bạn cần một bước kiểm tra chống spam bổ sung trước khi tiếp tục." #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "Chất lượng đã lưu của bạn {savedResolution} ở tốc độ {savedFrameRate} FPS yêu cầu {premiumProductName}, vì vậy các lượt chia sẻ sẽ sử dụng {resolution} ở tốc độ {frameRate} FPS." #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "Không thể phát lượt chia sẻ màn hình của bạn bằng codec video tương thích, vì vậy lượt chia sẻ đã bị dừng. Hãy thử chia sẻ lại." -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "Nguồn của bạn đang xuất khoảng {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "Luồng của bạn vẫn đang phát" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "Luồng của bạn đã chuyển sang {codec} vì {previousCodec} không theo kịp trên thiết bị này. Người xem có thể thấy một khoảng dừng ngắn." - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "URL tùy chỉnh của bạn đã được đặt thành {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "Bộ mã hóa video của bạn đã ngừng mã hóa khung hình, vì vậy lượt chia sẻ màn hình của bạn đã bị dừng. Hãy thử chia sẻ lại." -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "Bộ mã hóa video của bạn đã dừng, vì vậy luồng của bạn đã chuyển sang {codec}." - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/zh-CN/messages.po b/fluxer_app/src/features/i18n/locales/zh-CN/messages.po index bb7410b7e..43a0b9d01 100644 --- a/fluxer_app/src/features/i18n/locales/zh-CN/messages.po +++ b/fluxer_app/src/features/i18n/locales/zh-CN/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} 想连接到你的账号" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} 将使用此账号进行本次授权。" -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} 在此设备上无法跟上。在“高级”设置中将编解码器设为“自动”,以允许使用更快的编解码器。" - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "{communityName} 目前仅供 {productName} 员工访问" msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ 无限制} other {# 位参与者}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, other {...(还剩 # 行)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, other {...(还剩 # 行)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, other {展开(# 行)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, other {展开(# 行)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, other {展开另外 # 台设备}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, other {# 人正在通话}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, other {加入视频通话(# 位参与者)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, other {继续观看 # 个直播并添加此直播}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, other {你的邀请链接将在 # 天后过期。}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel}({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} 小时" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} 帧/秒" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, other {# 项覆盖}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} 会先验证你的银行卡是否符合本地定价条件,然后带你前往付款页面。完成后请返回 {productName}。" -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "此设备不支持 {pinnedCodec},因此您的流将使用 {codec}。" - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} 需要访问你的麦克风。请在操作系统的隐私设置中允许麦克风访问,然后重启应用。" #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} 需要摄像头权限才能列出你的设备。" @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} 人在线" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "消息文本中输入的网址" msgid "a user" msgstr "某个用户" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "有观众无法播放 {pinnedCodec},因此您的直播将使用 {codec}。" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "接受" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "接听" @@ -3178,12 +3163,12 @@ msgstr "添加到群聊" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "添加到已保存媒体" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "添加到仅限 URL 的 GIF 收藏夹" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "高级" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "高级视频设置" @@ -3451,7 +3436,7 @@ msgstr "对齐方式控制仅在宽屏设备上可用" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "允许" msgid "Allow {everyoneMention} and {hereMention}" msgstr "允许提及{everyoneMention}和{hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "请在“{MACOS_SYSTEM_SETTINGS_NAME}”→“{MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME}”→“{MACOS_CAMERA_PERMISSION_NAME}”中允许 {PRODUCT_NAME} 访问你的摄像头。" @@ -3618,7 +3603,7 @@ msgstr "允许机器人私信" msgid "Allow bots to send you direct messages?" msgstr "允许机器人给你发私信吗?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "允许访问摄像头" @@ -4014,13 +3999,13 @@ msgstr "在“动画”选项卡中,你可以控制动态表情、GIF 和贴 #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "GIF 动图" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "GIF 动图" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "动态图标需要社区拥有 {animatedIconFeature} 功能。" #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "动图" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "动图预览" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "上传动态内容需要 {premiumProductName} 订阅。" #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "动态视频" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "应用状态" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "应用窗口" @@ -4361,7 +4346,7 @@ msgstr "应用更新成功" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "应用" @@ -4586,7 +4571,7 @@ msgstr "附件" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "附件 {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "附件已过期" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "附件已过期或不可用" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "附件 ID 已复制到剪贴板" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "音量" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "音频已静音" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "音频丢包率:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "音频播放器" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "音频预览" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "音频处理(聚焦语音)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "音频进度" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "音频设置" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "音频来源:{summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "自动({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "自动增益控制" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "浏览器:后退" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "浏览器默认" @@ -6198,20 +6183,20 @@ msgstr "通话" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "摄像头" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "需要摄像头访问权限才能预览设备" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "未授予摄像头访问权限。请更新摄像头权限后重试。" @@ -6276,13 +6261,13 @@ msgstr "摄像头预览" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "摄像头画质" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "摄像头设置" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "验证码校验失败。请重试。" #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "捕获" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "捕获应用音频" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "捕获桌面音频" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "捕获设备音频" @@ -6736,12 +6721,12 @@ msgstr "已安排更改" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "更改直播源" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "更改直播源" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "频道访问" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "无法访问频道" @@ -7097,7 +7082,7 @@ msgstr "频道 ID 已复制到剪贴板" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "频道链接" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "选择付款方式" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "选择要分享的内容" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "清除受信任的域名({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "更清晰的文字" @@ -8285,7 +8270,7 @@ msgstr "收起频道话题" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "收起设备" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "社区创建者" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "社区拒听" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "社区 MFA 要求提示栏" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "社区静音" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "立即配置" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "配置或结束屏幕共享" @@ -8904,7 +8889,7 @@ msgstr "加入社区语音频道时需确认或双击" msgid "Conflicts with {conflictLabel}" msgstr "与 {conflictLabel} 冲突" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "连接摄像头后重试。" @@ -8913,7 +8898,7 @@ msgstr "连接摄像头后重试。" msgid "Connect a camera or virtual capture device, then try again." msgstr "连接摄像头或虚拟捕捉设备后重试。" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "连接显示器后重试。" @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "连接音量控制" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "连接:{connectionId}" @@ -9277,7 +9262,7 @@ msgstr "已将统计数据 JSON 复制到剪贴板" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "已复制到剪贴板" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "复制附件 ID" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "复制音频" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "复制音频链接" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "复制端点" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "复制文件链接" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "复制 GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "复制 GIF 链接" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "复制标识符" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "复制图片" @@ -9448,7 +9433,7 @@ msgstr "复制图片" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "复制图片链接" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "复制本节链接" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "复制媒体" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "复制值" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "复制视频" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "复制视频链接" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "复制 Webhook 链接" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "正在复制图片…" @@ -10588,7 +10573,7 @@ msgstr "当前:{mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "自定义" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "停用" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "拒听" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "将所有设备设为拒听" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "将设备设为拒听" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "将语音频道中的其他成员设为拒听,使其无法收听或发言。" #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "拒听快捷键" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "将自己设为拒听" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "已拒听" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "被管理员设为拒听" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "默认" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "默认摄像头" @@ -11258,8 +11243,8 @@ msgstr "特拉华州" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "删除 :{emojiName}:?此操作无法撤销。" #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "删除“{memeName}”?此操作无法撤销。" @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "删除邀请" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "删除媒体" @@ -11466,8 +11451,8 @@ msgstr "删除身份组" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "删除已保存媒体" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "桌面离开" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "桌面设备" @@ -11849,13 +11834,13 @@ msgstr "开发者状态" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "开发者工具" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "在频道标题栏中点击员工徽章即可使用开发者工具。" @@ -11879,6 +11864,17 @@ msgstr "设备" msgid "Device alerts" msgstr "设备提醒" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "设备音频({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "仅设备音频" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "设备详情" @@ -11888,7 +11884,7 @@ msgstr "设备详情" msgid "Device revoked" msgstr "设备已撤销" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "选择设备" @@ -11912,7 +11908,7 @@ msgstr "设备:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "设备" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "调暗删除线文本" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "直接输入" @@ -12020,7 +12016,7 @@ msgstr "直接上传已启用" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "停用" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "已禁用值" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "禁用预览后将不再上传新的预览图。在共享结束或预览刷新之前,已有的预览图可能仍然可见。" @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "放弃语音消息" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "断开连接" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "断开所有设备连接" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "断开设备连接" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "显示" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "显示器" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification 并放到你的 <1>.well-known 文件夹中,以便我们验证域名。" #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "下载音频" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "下载桌面版更新 {version}({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "下载文件" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "下载 fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "下载 GIF 动图" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "下载图片" @@ -12714,7 +12710,7 @@ msgstr "下载安装程序" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "下载媒体文件" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "下载安装包" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "下载视频" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "回声" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "回声消除" @@ -12963,7 +12959,7 @@ msgstr "编辑 {0} 的访问权限" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "编辑替代文本" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "编辑键盘快捷键" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "编辑媒体" @@ -13102,8 +13098,8 @@ msgstr "编辑反向图片搜索引擎" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "编辑已保存媒体" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "开启浏览器通知" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "启用相机访问权限,以便在选择要直播的摄像头和捕获设备前进行预览。" @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "启用或停用内置翻译器。已启用的翻译器会在选中文本时显示在消息上下文菜单中。" #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "启用预览" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "结束屏幕共享" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "由于此通话中有一位不受支持的参与者,端到端加密不可用。" #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "由于此语音频道中有不受支持的参与者,端到端加密不可用。" @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "娱乐" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "整个屏幕" @@ -14095,7 +14091,7 @@ msgstr "整个屏幕" msgid "Entire system" msgstr "整个系统" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "整个系统音频" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "排除某个用户" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "从系统音频中排除" @@ -14593,7 +14589,7 @@ msgstr "复制邀请链接失败" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "复制到剪贴板失败" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "邀请加载失败。请重试。" #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "加载可共享的来源失败。" @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "将窗口置于前台" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "人声优化" @@ -15322,10 +15318,6 @@ msgstr "文件夹设置" msgid "Follow us on {blueskyProviderName}" msgstr "在 {blueskyProviderName} 上关注我们" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "跟随语音输入" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "转发" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "快进 {defaultSeekAmount} 秒" @@ -15592,14 +15584,14 @@ msgstr "窗口边框" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "帧率" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "高于 30 FPS 的帧率需要 {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "手柄 Y / 三角" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "游戏" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "正在加载 GIF 选择器" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF 预览" @@ -16429,7 +16421,7 @@ msgstr "授予了 {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "授予所有权限并绕过频道限制。高度敏感。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "精细选择" @@ -16992,7 +16984,7 @@ msgstr "隐藏密码" msgid "Hide picture-in-picture popout?" msgstr "隐藏画中画弹窗?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "隐藏预览缩略图" @@ -17386,7 +17378,7 @@ msgstr "如需让这些成员查看特定日期之后发送的历史消息,请 #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "忽略" @@ -17395,11 +17387,11 @@ msgstr "忽略" msgid "Ignore friend request" msgstr "忽略好友请求" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "忽略硬件设备" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "忽略输入媒体" @@ -17430,7 +17422,7 @@ msgstr "忽略来自 {displayName} 的好友请求?" msgid "Ignore this channel's slowmode cooldown." msgstr "忽略此频道的慢速模式冷却时间。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "忽略虚拟设备" @@ -17468,7 +17460,7 @@ msgstr "伊利诺伊州" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "图片" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "图片素材" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "图片已复制到剪贴板" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "图片选项" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "图片预览" @@ -17540,7 +17532,7 @@ msgstr "图片上传" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "在语音聊天中" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "在语音聊天中" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "排除所选" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "包含的应用" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "输入和输出" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "输入设备" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "输入配置:{processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "输入设置" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "输入状态" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "输入音量" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "共享时已隐藏邀请链接:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "共享时已隐藏邀请链接" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "跳转到 {displayName}" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "跳转到“{labelText}”" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "跳转到当前通话" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "跳转到链接的频道" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "跳转到链接的消息" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "跳转到 {authorNickname} 发送的消息" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "跳转到“{labelText}”中的消息" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "布局" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "了解屏幕共享预览" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "链接样式" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "链接无法打开" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux 应用" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux 默认" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "正在加载主题…" #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "正在加载…" @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS 应用" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS 默认" @@ -20289,7 +20281,7 @@ msgstr "下一曲" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "媒体选项" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "播放/暂停" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "媒体预览" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "消息布局" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "消息链接" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "麦克风测试" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "麦克风、摄像头和屏幕共享内容均已进行端到端加密。" @@ -21019,7 +21011,7 @@ msgstr "未成年人面临风险、成人内容出现在不当位置,或不受 #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "拼写错误" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "移动设备" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "全部静音" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "将所有设备静音" @@ -21653,13 +21645,13 @@ msgstr "已静音" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "麦克风已静音" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "已被管理员静音" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "无 {sendMessagesPermission} 权限" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "无法访问" @@ -22282,7 +22274,7 @@ msgstr "未找到任何高级设置" msgid "No AFK channel" msgstr "无 AFK 频道" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "未找到应用程序窗口" @@ -22300,6 +22292,11 @@ msgstr "暂无素材" msgid "No audio" msgstr "无音频" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "此设备没有音频" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "无已授权应用" @@ -22341,7 +22338,7 @@ msgstr "无书签" msgid "No bot banner" msgstr "无机器人横幅" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "未找到摄像头" @@ -22421,7 +22418,7 @@ msgstr "暂无描述。" msgid "No desktop update is available." msgstr "没有可用的桌面更新。" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "未找到显示器" @@ -22650,7 +22647,7 @@ msgstr "未收到响应正文" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "无结果" @@ -22679,7 +22676,7 @@ msgstr "暂无身份组。在{rolesSettingsPath}中添加身份组" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "没有已保存媒体" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "噪声门" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "降噪" @@ -22877,7 +22874,7 @@ msgstr "无转换" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "无" @@ -23286,7 +23283,7 @@ msgstr "仅在宽屏上生效。" msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "仅接受信用卡。借记卡和预付卡不能用于成人内容验证。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "仅默认扬声器" @@ -23334,7 +23331,7 @@ msgstr "除非你完全了解其作用,否则请勿在此处运行代码。" msgid "Only show message previews for DMs with unread messages" msgstr "仅为有未读消息的私信显示消息预览" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "仅扬声器" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "打开 {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "在设置中打开 {labelText}" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "打开 @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "打开高级媒体设置" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "打开一个应用窗口,然后重试。" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "全屏查看动图" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "全屏播放动图视频" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "全屏播放音频" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "打开音频链接" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "打开浏览器" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "打开浏览器选择器" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "打开收藏夹菜单" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "打开文件链接" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "打开 GIF 链接" @@ -23651,7 +23648,7 @@ msgstr "在浏览器中打开图片" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "全屏查看图片" @@ -23660,7 +23657,7 @@ msgstr "全屏查看图片" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "打开图片链接" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "打开系统私信" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "打开系统选择器" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "全屏播放视频" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "打开视频链接" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "打开语音" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "打开语音和视频设置" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "输出" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "输出设备" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "输出设置" @@ -24094,7 +24091,7 @@ msgstr "输出设置" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "输出音量" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "人数上限" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "{participantDisplayName} 的参与者选项" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "预览已隐藏" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "预览图像由 {productName} 临时存储以便传输,不进行端到端加密。如果你不希望上传屏幕共享画面用于生成缩略图,请关闭预览。" #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "预览图像由 {productName} 临时存储以便传输,不进行端到端加密。此群聊中的成员无需正在观看你的直播,也能看到缩略图。" #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "预览图像由 {productName} 临时存储以便传输,不进行端到端加密。他人仍需有权限才能连接,但无需正在观看你的直播。" @@ -26269,7 +26266,7 @@ msgstr "引用已复制。" msgid "Referral parameters" msgstr "引荐参数" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "刷新音频来源" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "点击了常规按钮。" #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "拒绝" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "移出群聊" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "从已保存媒体中移除" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "取消置顶" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "从仅限 URL 的 GIF 收藏夹中移除" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "已撤销对 {0} 的封禁" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "倒回 {defaultSeekAmount} 秒" @@ -28202,7 +28199,7 @@ msgstr "保存图标" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "从消息中保存一些媒体,即可开始使用!" @@ -28313,7 +28310,7 @@ msgstr "需要屏幕录制权限" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "屏幕共享" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "屏幕共享音频增强" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "屏幕共享音频无法启动" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "屏幕共享编码器设置" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "屏幕共享已结束" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "屏幕共享预览行为" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "屏幕共享预览" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "屏幕共享预览已禁用。" #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "屏幕共享预览已启用。" @@ -28391,13 +28388,13 @@ msgstr "屏幕共享隐私" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "屏幕共享画质" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "屏幕共享设置" @@ -28723,7 +28720,7 @@ msgstr "搜索身份组或成员…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "搜索已保存媒体" @@ -28942,12 +28939,12 @@ msgstr "进度预览" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "选择" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "选择 {accessibleName}" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "发送重置链接" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "发送已保存媒体 {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "为该身份组设置了成员列表中的位置" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "由 {preset} 预设设置。在此处选择一个值将切换到自定义。" @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "为单个声音设置自定义音量。未单独设置音量的声音将遵循主音量设置。" #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "设置拒听快捷键" @@ -29669,11 +29666,6 @@ msgstr "暂缓此检查" msgid "Set this check aside?" msgstr "暂缓此检查?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "设置为以 {frameRate} FPS 发送 {resolution},使用 {codec}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "设置" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "设置链接" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "分享礼物" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "共享屏幕" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "分享给社区管理员。" #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "共享屏幕" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "以高达 60 FPS 的帧率,分享高清 (1080p)、超高清 (1440p) 或原始分辨率的屏幕。" @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "共享窗口" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "共享窗口音频" @@ -30624,6 +30616,10 @@ msgstr "静音来电" msgid "Silent calls from everyone" msgstr "所有人来电静音" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "当捕获设备没有自己的音频输入时保持静默" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "平滑滚动" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "更流畅的视频" @@ -31005,11 +31001,6 @@ msgstr "部分表情无法添加" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "你尝试上传的部分文件超出大小限制,每个文件不能超过 {maxSizeFormatted}。" -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "部分直播设置未能成功应用于你的直播。" - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "声音" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "原画" @@ -31569,7 +31560,7 @@ msgstr "发起语音通话?" msgid "Start call" msgstr "发起通话" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "开始摄像头测试并配置效果" @@ -31910,7 +31901,7 @@ msgstr "停止朗读" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "停止直播" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "停止信任所有链接?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "停止观看" @@ -31982,7 +31973,7 @@ msgstr "防止扬声器声音循环回麦克风。" #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "直播" @@ -32001,11 +31992,6 @@ msgstr "直播已结束" msgid "Stream hidden" msgstr "直播已隐藏" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "直播跟不上" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "直播画质" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "直播设置" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "流设置已调整" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "来自 {productName} 员工的系统公告。你无法在此回复。" #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "系统默认" @@ -33036,13 +33017,8 @@ msgstr "机器人已添加到 <0>{destinationName}。" msgid "The bot has been added." msgstr "机器人已添加。" -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "浏览器发送的是 {deliveredResolution} 而不是 {resolution}。" - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "摄像头预览仍在停止中。请稍后重新开始共享。" @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "该身份组授予了 {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "屏幕共享源已停止发送视频,因此你的屏幕共享已停止。" @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "此浏览器控制台是开发者工具。" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "此通话已端到端加密。" @@ -33645,11 +33621,6 @@ msgstr "此桌面版本无法在 {productName} 中安装更新。请下载最新 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "此开发版本无法自行更新。请下载桌面安装程序以测试更新流程。" -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "此设备上次无法以 {targetFrameRate} FPS 保持 {targetResolution} 的流畅度,因此您的直播以 {frameRate} FPS 开始,分辨率为 {resolution}。" - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "此安装由你的系统管理。请从软件中心或包管理器更新 {productName}。" #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "此实例目前支持最高 720p、30 FPS 的屏幕共享。" @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "此链接频道标记为成人内容,打开的内容可能不适合某些用户。" #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "你的账号无法使用此链接。" @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "此选项为必填项。请输入一个值。" #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "该参与者无法在此频道中发言" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "该参与者已拒听" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "该参与者已被管理员设为拒听" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "此电话号码已被使用。请尝试其他号码或联系支持团队。" #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "此选择器仅在桌面应用中可用。" @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "切换控件" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "切换拒听" @@ -34666,7 +34637,7 @@ msgstr "Linux 系统托盘协议无法可靠地让应用在运行时添加或移 #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "热门 GIF" @@ -34760,7 +34731,7 @@ msgstr "请尝试其他搜索词。" #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "尝试其他搜索词或筛选条件" @@ -34839,11 +34810,6 @@ msgstr "尝试不同的筛选条件或搜索词。" msgid "Try editing your message again." msgstr "请重新尝试编辑消息。" -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "再次尝试完整质量" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "试试搜索“主题”、“通知”或“隐私”" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "关闭你不放心的任何项目。部分功能可能会因此无法使用。" #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "关闭此来源的音频共享,或稍后重试。" @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "检测到 OBS 或 XSplit 时自动开启" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "开启摄像头" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "无法收款" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "取消拒听" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "取消所有设备的拒听" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "取消自己的拒听" @@ -35558,7 +35524,7 @@ msgstr "未知用户" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "未知用户" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "使用 {premiumProductName} 解锁私信中的自定义表情" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "使用 {premiumProductName} 解锁高清屏幕共享" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "取消 {label} 的静音" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "取消所有设备静音" @@ -35741,7 +35707,7 @@ msgstr "未命名群聊" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "未命名输入设备" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "上传新的表情和贴纸,并管理你的作品。" #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "上传屏幕共享的预览帧。" @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "URL" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "网址已复制到剪贴板" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "用户标签(可选)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "用户音量" @@ -37227,7 +37193,7 @@ msgstr "视频丢包率:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "视频预览" @@ -37283,7 +37249,7 @@ msgstr "视频上传" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "语音和视频" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "语音和视频设置" @@ -37685,7 +37651,7 @@ msgstr "语音和视频快捷键" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "语音通话" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "语音连接调试" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "语音拒听" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "语音消息" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "语音消息播放器" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "语音设置" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "语音解除拒听" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "请稍候" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "正在等待连接…" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "在聊天中以链接形式发布时" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "当启用预览时,{productName} 会不时上传屏幕共享的 JPEG 帧,以便此群聊中的其他人可以在观看之前看到缩略图。" #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "当启用预览时,{productName} 会不时上传屏幕共享的 JPEG 帧,以便有权连接此语音频道的人可以在观看之前看到缩略图。" #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "当启用预览时,{productName} 会不时上传屏幕共享的 JPEG 帧,以便此私信中的另一方可以在观看之前看到缩略图。" @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "当窗口在屏幕顶部或底部被截断,或停靠了开发者工具时,可能会显示灰色背景,而不是保持透明。" #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows 默认" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "你已被此社区封禁,无法加入。" #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "你已拒听" @@ -38833,11 +38799,6 @@ msgstr "你正在使用 {productName} 的 {releaseChannel} 版本。" msgid "You aren't in any communities right now." msgstr "你目前不在任何社区中。" -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "您要求以 {frameRate} FPS 的 {resolution}" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "你无法在此社区中发送消息。" #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "你无法在此频道中共享屏幕" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "你无法在此频道发言" @@ -39036,7 +38997,7 @@ msgstr "你无法在此频道发言" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "你无法在此频道中开启摄像头" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "你在 {PREMIUM_PRODUCT_NAME} 期间更改了标签。除非续订,否则你的 {PREMIUM_PRODUCT_NAME} 到期后,标签将随机重新生成。" #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "你无权访问发送此消息的频道。" @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "你会留在 {ownedNames}。所有者无法离开自己的社区。" #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "你已被管理员设为拒听" @@ -39699,11 +39660,6 @@ msgstr "你的申请正在审核中。你仍可以更新展示信息或撤回申 msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "你的浏览器需要用户交互后才能播放音频。请点击下方按钮以启用语音聊天。" -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "您的捕获设备发送的是 {deliveredResolution} 而不是 {resolution}。" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "正在检查你的银行卡,以确定本地价格。这通常需要一点时间。" @@ -39734,36 +39690,11 @@ msgstr "你的社区已列入社区发现。你可以在下方更新展示信息 msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "你的社区至少需要 {minMemberCount, plural, other {# 位成员}} 才能列入社区发现。" -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "您的网络连接跟不上。您的直播设置为 {frameRate} FPS,分辨率为 {resolution},观众收到的帧率约为 {deliveredFrameRate} FPS。" - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "你的信用卡已检查完成。如果信用卡有效,成人内容将很快解锁。你可以关闭此标签页并返回应用。" -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "您的设备跟不上。您的流设置为每秒 {frameRate} 帧,分辨率为 {resolution},观众大约能收到每秒 {deliveredFrameRate} 帧。" - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "您的设备跟不上,因此您的串流现在以 {frameRate} FPS 发送,以保持 {resolution} 清晰。" - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "您的设备跟不上,因此您的直播现在以 {resolution} @ {frameRate} FPS 的速度发送,而不是 {targetResolution} @ {targetFrameRate} FPS。" - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "您的设备跟不上,因此您的直播现在发送 {resolution} 以保持 {frameRate} FPS 流畅。" - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "你的注册需要先完成一项额外的反垃圾信息检查,然后才能继续。" #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "你保存的 {savedResolution} ({savedFrameRate} FPS) 需要 {premiumProductName},因此共享将使用 {resolution} ({frameRate} FPS)。" #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "你的屏幕共享无法使用兼容的视频编解码器发布,因此已停止。请重新共享。" -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "你的源画面帧率约为 {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "你的直播仍在继续" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "您的流已切换到 {codec},因为 {previousCodec} 在此设备上跟不上。观众可能会看到短暂的暂停。" - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "你的自定义邀请链接已设置为 {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "你的视频编码器已停止编码帧,因此屏幕共享已停止。请重新共享。" -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "您的视频编码器已停止,因此您的流已切换到 {codec}。" - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/i18n/locales/zh-TW/messages.po b/fluxer_app/src/features/i18n/locales/zh-TW/messages.po index 771ff6913..d8849344b 100644 --- a/fluxer_app/src/features/i18n/locales/zh-TW/messages.po +++ b/fluxer_app/src/features/i18n/locales/zh-TW/messages.po @@ -862,11 +862,6 @@ msgstr "{clientLabel} 想連結" msgid "{clientName} will use this account for this authorization." msgstr "{clientName} 將使用此帳號進行授權。" -#. Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:389 -msgid "{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one." -msgstr "{codec} 在這部裝置上無法順暢運作。請在「進階設定」中將轉碼器設為「自動」,以便使用更快的轉碼器。" - #. Guild nagbar body shown for staff-only communities. {communityName} is the community name and {productName} is Fluxer. #: src/features/app/components/layout/GuildLayout.tsx:83 msgid "{communityName} is currently only accessible to {productName} staff members" @@ -877,11 +872,11 @@ msgstr "目前只有 {productName} 的員工可以存取「{communityName}」" msgid "{count, plural, =0 {∞ No limit} one {# participant} other {# participants}}" msgstr "{count, plural, =0 {∞ 無上限} one {# 位參與者} other {# 位參與者}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:193 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:141 msgid "{count, plural, one {... (# line left)} other {... (# lines left)}}" msgstr "{count, plural, one {...(剩餘 # 行)} other {...(剩餘 # 行)}}" -#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:210 +#: src/features/channel/components/embeds/attachments/TextualAttachmentPreview.tsx:158 msgid "{count, plural, one {... (# row left)} other {... (# rows left)}}" msgstr "{count, plural, one {...(剩餘 # 列)} other {...(剩餘 # 列)}}" @@ -1075,7 +1070,7 @@ msgstr "{count, plural, one {展開(# 行)} other {展開(# 行)}}" msgid "{count, plural, one {Expand (# row)} other {Expand (# rows)}}" msgstr "{count, plural, one {展開(# 列)} other {展開(# 列)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:324 +#: src/features/voice/components/VoiceParticipantTile.tsx:315 msgid "{count, plural, one {Expand # other device} other {Expand # other devices}}" msgstr "{count, plural, one {展開其他 # 個裝置} other {展開其他 # 個裝置}}" @@ -1096,7 +1091,7 @@ msgstr "{count, plural, one {通話中} other {# 人通話中}}" msgid "{count, plural, one {Join video call (# participant)} other {Join video call (# participants)}}" msgstr "{count, plural, one {加入視訊通話(# 位參與者)} other {加入視訊通話(# 位參與者)}}" -#: src/features/voice/components/VoiceParticipantTile.tsx:682 +#: src/features/voice/components/VoiceParticipantTile.tsx:671 msgid "{count, plural, one {Keep watching # stream and add this one} other {Keep watching # streams and add this one}}" msgstr "{count, plural, one {繼續觀看 # 個直播並新增這個} other {繼續觀看 # 個直播並新增這個}}" @@ -1192,7 +1187,7 @@ msgid "{days, plural, one {Your invite link expires in # day.} other {Your invit msgstr "{days, plural, one {您的邀請連結將於 # 天後過期。} other {您的邀請連結將於 # 天後過期。}}" #. Audio device label for a default route with the concrete microphone or speaker endpoint in parentheses. defaultDeviceLabel is already localized, for example "Windows Default". -#: src/features/voice/utils/VoiceMessageDescriptors.ts:37 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:34 msgid "{defaultDeviceLabel} ({endpointLabel})" msgstr "{defaultDeviceLabel}({endpointLabel})" @@ -1345,13 +1340,13 @@ msgid "{fourHours} hours" msgstr "{fourHours} 小時" #. Footer summary frame-rate label in the screen share picker. {fps} is the integer frame rate. FPS is a technical token. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:251 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:254 msgid "{fps} FPS" msgstr "{fps} FPS" #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. #. Frame rate option label in the video tab. FPS is a technical token and frameRate is a whole number. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:55 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:53 #: src/features/voice/components/StreamSettingsMenuContent.tsx:114 msgid "{frameRate} FPS" msgstr "{frameRate} FPS" @@ -1561,11 +1556,6 @@ msgstr "{overrideCount, plural, one {# 個覆寫} other {# 個覆寫}}" msgid "{paymentProviderName} will first verify that your card is eligible for localized pricing, then take you to payment. Return to {productName} once you've completed it." msgstr "{paymentProviderName} 會先確認您的卡片是否符合當地定價資格,接著帶您前往付款。完成後請返回 {productName}。" -#. Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:405 -msgid "{pinnedCodec} is not available on this device, so your stream uses {codec}." -msgstr "{pinnedCodec} 在此裝置上無法使用,因此您的串流將使用 {codec}。" - #. Badge label with a date in the user profile badges popout. Preserve {premiumProductFullName}, {premiumSinceFormatted}; they are inserted by code. In English, keep "subscriber since" lowercase. Other locales should use natural local capitalization. #: src/features/user/components/popouts/UserProfileBadges.tsx:51 msgid "{premiumProductFullName} subscriber since {premiumSinceFormatted}" @@ -1733,7 +1723,7 @@ msgid "{productName} needs access to your microphone. Allow microphone access in msgstr "{productName} 需要存取您的麥克風。請在作業系統的隱私設定中允許麥克風存取,然後重新啟動應用程式。" #. Camera settings notice shown when camera permission has not been granted. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:63 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:61 msgid "{productName} needs camera access to list your devices." msgstr "{productName} 需要相機存取權限才能列出您的裝置。" @@ -1842,7 +1832,7 @@ msgid "{renderedPresenceCount} online" msgstr "{renderedPresenceCount} 位在線上" #. Compact stream info pill label. {resolution} is a technical token such as 1080p or 4K. {fps} is the frame rate. FPS is a technical token. -#: src/features/voice/components/StreamInfoPill.tsx:12 +#: src/features/voice/components/StreamInfoPill.tsx:14 msgid "{resolution} {fps} FPS" msgstr "{resolution} {fps} FPS" @@ -2510,11 +2500,6 @@ msgstr "訊息文字中輸入的網址" msgid "a user" msgstr "使用者" -#. Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:400 -msgid "A viewer cannot play {pinnedCodec}, so your stream uses {codec}." -msgstr "有觀眾無法播放 {pinnedCodec},因此您的串流會使用 {codec}。" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:55 msgid "A11y" @@ -2573,7 +2558,7 @@ msgid "Accept" msgstr "接受" #. Button label for accepting an incoming direct call. Means answering a ringing call, not approving a request. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:97 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:94 msgctxt "incoming-call-action" msgid "Accept" msgstr "接聽" @@ -3178,12 +3163,12 @@ msgstr "新增到群組" #. Action that adds the selected media to saved media. #. Action that adds the selected media to saved media. #: src/features/expressions/components/modals/AddFavoriteMemeModal.tsx:16 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:177 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:178 msgid "Add to saved media" msgstr "新增至已儲存的媒體" #. Media context menu action that saves a GIF favorite by URL without uploading it. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:169 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:170 msgid "Add to URL-only GIF favorites" msgstr "加入僅限網址的 GIF 最愛" @@ -3364,7 +3349,7 @@ msgid "Advanced" msgstr "進階" #. Subsection title in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:116 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:114 msgid "Advanced video settings" msgstr "進階視訊設定" @@ -3451,7 +3436,7 @@ msgstr "對齊控制項僅適用於較寬的螢幕" #: src/features/app/config/AuditLogConstants.ts:143 #: src/features/channel/components/direct_message/DMFriendsView.tsx:41 #: src/features/channel/components/guild_members_page/GuildMembersPageDescriptors.ts:10 -#: src/features/channel/components/MobileMemesPicker.tsx:42 +#: src/features/channel/components/MobileMemesPicker.tsx:43 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:12 #: src/features/discovery/components/bottomsheets/DiscoveryCategoryBottomSheet.tsx:11 #: src/features/discovery/discovery/DiscoveryNavbar.tsx:21 @@ -3575,7 +3560,7 @@ msgstr "允許" msgid "Allow {everyoneMention} and {hereMention}" msgstr "允許 {everyoneMention} 和 {hereMention}" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:239 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:236 msgid "Allow {PRODUCT_NAME} to access your camera in {MACOS_SYSTEM_SETTINGS_NAME} → {MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME} → {MACOS_CAMERA_PERMISSION_NAME}." msgstr "在「{MACOS_SYSTEM_SETTINGS_NAME}」→「{MACOS_PRIVACY_AND_SECURITY_SETTINGS_NAME}」→「{MACOS_CAMERA_PERMISSION_NAME}」中允許 {PRODUCT_NAME} 存取您的相機。" @@ -3618,7 +3603,7 @@ msgstr "允許機器人傳送私訊" msgid "Allow bots to send you direct messages?" msgstr "允許機器人傳送私訊給您?" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:259 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:256 msgid "Allow camera" msgstr "允許使用相機" @@ -4014,13 +3999,13 @@ msgstr "動態表情符號、GIF 和貼圖仍可在「動畫」分頁中自行 #. Media type chip shown in the media viewer info panel for animated GIFs. #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:67 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:101 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:68 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:102 msgid "Animated GIF" msgstr "動態 GIF" #. Short label in the channel and chat embed gifv. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:63 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:64 msgid "Animated GIF video" msgstr "動態 GIF 影片" @@ -4049,12 +4034,12 @@ msgid "Animated icons require the {animatedIconFeature} community feature." msgstr "動態圖示需要社群具備「{animatedIconFeature}」功能。" #. Media type chip shown in the media viewer info panel for animated images. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:109 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:110 msgid "Animated image" msgstr "動態圖片" #. Accessible label for an animated image (APNG/AVIF) shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:77 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:78 msgid "Animated image preview" msgstr "動態圖片預覽" @@ -4074,7 +4059,7 @@ msgid "Animated uploads require a {premiumProductName} subscription." msgstr "上傳動態檔案需要訂閱 {premiumProductName}。" #. Media type chip shown in the media viewer info panel for short looping video clips. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:105 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:106 msgid "Animated video" msgstr "動態影片" @@ -4268,7 +4253,7 @@ msgid "App state" msgstr "應用程式狀態" #. Fallback label for an app window card in the screen-share picker when the OS does not give us a window title. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:139 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:142 msgid "App window" msgstr "應用程式視窗" @@ -4361,7 +4346,7 @@ msgstr "應用程式已成功更新" #: src/features/user/components/settings_utils/search_index/SharedDescriptors.ts:29 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:66 #: src/features/user/components/settings_utils/SettingsConstants.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:182 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:185 msgid "Applications" msgstr "應用程式" @@ -4586,7 +4571,7 @@ msgstr "附件" #. Accessible label for a thumbnail in the media viewer. index1 is the 1-based attachment index. #. Accessible label for the active attachment in the media viewer. index1 is the 1-based index. #: src/features/messaging/components/modals/media_modal/shared.ts:129 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:73 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:74 msgid "Attachment {index1}" msgstr "附件 {index1}" @@ -4613,12 +4598,12 @@ msgid "Attachment expired" msgstr "附件已過期" #. Toast shown when an attachment URL is no longer accessible. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:133 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:134 msgid "Attachment has expired or is unavailable" msgstr "附件已過期或無法使用" #. Developer-mode toast confirming an attachment ID was copied. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:161 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:162 msgid "Attachment ID copied to clipboard" msgstr "附件 ID 已複製到剪貼簿" @@ -4708,7 +4693,7 @@ msgid "Audio level" msgstr "音量" #. Footer summary status shown when capture-device audio is disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:256 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:259 msgid "Audio muted" msgstr "音訊已靜音" @@ -4728,12 +4713,12 @@ msgid "Audio packet loss:" msgstr "音訊封包遺失:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:34 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 msgid "Audio player" msgstr "音訊播放器" #. Accessible label for an audio clip shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:93 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:94 msgid "Audio preview" msgstr "音訊預覽" @@ -4768,7 +4753,7 @@ msgid "Audio processing (focused voice)" msgstr "音訊處理(語音聚焦)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:38 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 msgid "Audio progress" msgstr "音訊播放進度" @@ -4794,7 +4779,7 @@ msgid "Audio settings" msgstr "音訊設定" #. Toggle / summary row label in the Linux audio source picker. {summaryLabel} is one of the audio-source summary labels. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:43 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:45 msgid "Audio sources: {summaryLabel}" msgstr "音訊來源:{summaryLabel}" @@ -5011,7 +4996,7 @@ msgstr "自動 ({codec})" #. Settings search entry label. Names the settings search entry in the settings UI. #. Voice setting label for automatically evening out microphone volume. #: src/features/user/components/settings_utils/search_index/VoiceVideoIndex.ts:48 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:218 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:215 msgid "Automatic gain control" msgstr "自動增益控制" @@ -5928,7 +5913,7 @@ msgid "Browser back" msgstr "瀏覽器:上一頁" #. Audio device label prefix for the browser-managed default audio device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:33 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:30 msgid "Browser default" msgstr "瀏覽器預設" @@ -6198,20 +6183,20 @@ msgstr "通話" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. #: src/features/i18n/utils/CommonMessageDescriptors.ts:720 -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:100 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:98 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:162 #: src/features/voice/utils/SettingsDeviceOptions.ts:24 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:17 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:14 msgid "Camera" msgstr "相機" #. Title shown in the screen-share Devices tab before camera preview permission is granted. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:154 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:157 msgid "Camera access is needed for device previews" msgstr "需要相機權限才能預覽裝置" #. Description shown after camera preview permission is denied or unavailable. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:162 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:165 msgid "Camera access was not granted. Update camera permissions, then try again." msgstr "相機權限未獲授權。請更新相機權限後再試一次。" @@ -6276,13 +6261,13 @@ msgstr "相機預覽" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:104 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:102 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:202 msgid "Camera quality" msgstr "相機畫質" #. Voice control dropdown label or menu item for camera settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:238 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:235 msgid "Camera settings" msgstr "相機設定" @@ -6479,19 +6464,19 @@ msgid "Captcha verification failed. Try again." msgstr "驗證碼驗證失敗。請再試一次。" #. Section header in the Linux audio source picker. Lists capture-target options (entire system / specific apps). -#: src/features/voice/components/AudioSourcePickerLinux.tsx:48 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:50 msgid "Capture" msgstr "擷取" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:798 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:810 msgid "Capture app audio" msgstr "擷取應用程式音訊" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:800 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:812 msgid "Capture desktop audio" msgstr "擷取桌面音訊" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:797 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:809 msgid "Capture device audio" msgstr "擷取裝置音訊" @@ -6736,12 +6721,12 @@ msgstr "已排定變更" #. Action that opens the source picker for the active screen share. #. Voice screen share menu action that changes the shared source. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:24 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:34 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:25 msgid "Change stream" msgstr "變更串流" #. Modal title for the screen-share picker when switching an ongoing stream to a new source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:215 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:218 msgid "Change stream source" msgstr "變更直播來源" @@ -7032,7 +7017,7 @@ msgid "Channel access" msgstr "頻道存取權" #. Title of the alert shown when clicking a message link the user does not have permission to view. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:117 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:118 msgid "Channel access denied" msgstr "頻道存取遭拒" @@ -7097,7 +7082,7 @@ msgstr "頻道 ID 已複製到剪貼簿" #. Short label in the messaging mention renderer. Keep it concise. #. Type chip suffix in tooltips for inline rendered channel mentions. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:86 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:87 #: src/features/messaging/components/markdown/renderers/MentionRenderer.tsx:39 msgid "channel link" msgstr "頻道連結" @@ -7530,7 +7515,7 @@ msgid "Choose payment method" msgstr "選擇付款方式" #. Modal title for the screen-share picker when starting a new screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:219 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:222 msgid "Choose something to share" msgstr "選擇要分享的內容" @@ -7906,7 +7891,7 @@ msgid "Clear trusted domains ({trustedDomainsCount})" msgstr "清除信任的網域 ({trustedDomainsCount})" #. Footer summary description for the text-focused screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:243 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:246 msgid "Clearer text" msgstr "文字更清晰" @@ -8285,7 +8270,7 @@ msgstr "收合頻道主題" #. Tooltip / aria label on a voice participant tile button that collapses expanded device tiles for one user. #. Voice menu action that collapses expanded device tiles back into a single tile. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:128 -#: src/features/voice/components/VoiceParticipantTile.tsx:185 +#: src/features/voice/components/VoiceParticipantTile.tsx:176 msgid "Collapse devices" msgstr "收合裝置" @@ -8477,7 +8462,7 @@ msgid "Community creator" msgstr "社群建立者" #. Moderation voice menu label. Makes a member unable to hear others in this community voice chat. Distinct from community mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:152 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:149 msgid "Community deafen" msgstr "社群耳機靜音" @@ -8565,7 +8550,7 @@ msgid "Community MFA requirement nagbar" msgstr "社群 MFA 要求提示列" #. Moderation voice menu label. Mutes a member's microphone in this community voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:127 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:124 msgid "Community mute" msgstr "社群麥克風靜音" @@ -8789,7 +8774,7 @@ msgid "Configure now" msgstr "立即設定" #. Tooltip / aria label on the screen-share control while a share is active. Opens the configure / end menu. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:61 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:58 msgid "Configure or end screen share" msgstr "設定或結束螢幕分享" @@ -8904,7 +8889,7 @@ msgstr "社群語音加入時的確認或雙擊動作" msgid "Conflicts with {conflictLabel}" msgstr "與 {conflictLabel} 衝突" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:244 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:241 msgid "Connect a camera and try again." msgstr "請連接相機後再試一次。" @@ -8913,7 +8898,7 @@ msgstr "請連接相機後再試一次。" msgid "Connect a camera or virtual capture device, then try again." msgstr "請連接相機或虛擬擷取裝置,然後再試一次。" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 msgid "Connect a display, then try again." msgstr "請連接顯示器後再試一次。" @@ -9048,7 +9033,7 @@ msgid "Connection volume controls" msgstr "連線音量控制" #. Developer / debug overlay text on a participant tile. {connectionId} is the voice connection identifier. -#: src/features/voice/components/voice_participant_tile/shared.ts:96 +#: src/features/voice/components/voice_participant_tile/shared.ts:91 msgid "Connection: {connectionId}" msgstr "連線:{connectionId}" @@ -9277,7 +9262,7 @@ msgstr "已將統計資料 JSON 複製到剪貼簿" #. Generic success toast confirming that content was copied to the clipboard. #. Toast shown after copying text to the clipboard succeeds. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:145 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:146 #: src/features/ui/commands/TextCopyCommands.ts:11 msgid "Copied to clipboard" msgstr "已複製到剪貼簿" @@ -9312,12 +9297,12 @@ msgid "Copy attachment ID" msgstr "複製附件 ID" #. Media context menu action that copies an audio attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:61 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:62 msgid "Copy audio" msgstr "複製音訊" #. Media context menu action that copies the URL of the audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:81 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:82 msgid "Copy audio link" msgstr "複製音訊連結" @@ -9405,17 +9390,17 @@ msgid "Copy endpoint" msgstr "複製端點" #. Media context menu action that copies the URL of the file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:85 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:86 msgid "Copy file link" msgstr "複製檔案連結" #. Media context menu action that copies a GIF attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:53 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:54 msgid "Copy GIF" msgstr "複製 GIF" #. Media context menu action that copies the URL of the GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:73 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:74 msgid "Copy GIF link" msgstr "複製 GIF 連結" @@ -9440,7 +9425,7 @@ msgid "Copy identifier" msgstr "複製識別碼" #. Media context menu action that copies an image attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:49 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:50 msgid "Copy image" msgstr "複製圖片" @@ -9448,7 +9433,7 @@ msgstr "複製圖片" #. Image context menu action that copies the image URL to the clipboard. #. Image context menu action that copies the image URL to the clipboard. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:44 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:69 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:70 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:44 msgid "Copy image link" msgstr "複製圖片連結" @@ -9493,7 +9478,7 @@ msgid "Copy link to section" msgstr "複製區段連結" #. Generic media context menu action label when the specific type is unknown. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:65 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:66 msgid "Copy media" msgstr "複製媒體" @@ -9600,12 +9585,12 @@ msgid "Copy value" msgstr "複製值" #. Media context menu action that copies a video attachment to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:57 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:58 msgid "Copy video" msgstr "複製影片" #. Media context menu action that copies the URL of the video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:77 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:78 msgid "Copy video link" msgstr "複製影片連結" @@ -9624,7 +9609,7 @@ msgid "Copy webhook URL" msgstr "複製 Webhook 網址" #. Progress toast shown while encoding and copying an image to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:153 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:154 msgid "Copying image..." msgstr "正在複製圖片…" @@ -10588,7 +10573,7 @@ msgstr "目前:{mutedText}" #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:186 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:94 #: src/features/voice/components/bottomsheets/VoiceSettingsBottomSheets.tsx:45 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:235 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:238 #: src/features/voice/components/StreamSettingsMenuContent.tsx:102 msgid "Custom" msgstr "自訂" @@ -11024,17 +11009,17 @@ msgid "Deactivate" msgstr "停用" #. Voice action label. Turns off what the user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:85 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:82 msgid "Deafen" msgstr "耳機靜音" #. Voice menu action that deafens every device or session so this user cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:144 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:141 msgid "Deafen all devices" msgstr "將所有裝置設為耳機靜音" #. Voice menu action. Deafens one active device or session so it stops hearing voice audio. Distinct from muting its microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:139 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:136 msgid "Deafen device" msgstr "將裝置設為耳機靜音" @@ -11054,24 +11039,24 @@ msgid "Deafen other members in voice channels, so they cannot hear or speak." msgstr "將語音頻道中的其他成員設為耳機靜音,讓他們無法聽見或發言。" #. Settings label for the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:162 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:159 msgid "Deafen shortcut" msgstr "耳機靜音快速鍵" #. Voice control label. Turns off what the current user hears in voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:131 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:128 msgid "Deafen yourself" msgstr "將自己設為耳機靜音" #. Accessible label for the deafened voice badge shown on an avatar. #. Voice chat status label. The user cannot hear voice chat. Distinct from muted. #: src/features/ui/avatars/AvatarWithPresence.tsx:25 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:73 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:70 msgid "Deafened" msgstr "已耳機靜音" #. Voice chat status label. A moderator deafened the user in this community, so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:60 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:57 msgid "Deafened by moderators" msgstr "遭管理員設為耳機靜音" @@ -11166,7 +11151,7 @@ msgid "Default" msgstr "預設" #. Fallback label for the system default camera in the screen-share devices tab. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:150 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:153 msgid "Default camera" msgstr "預設相機" @@ -11258,8 +11243,8 @@ msgstr "德拉瓦州" #. Tooltip for the custom emoji delete button. #: src/features/channel/components/embeds/media/EmbedAudio.tsx:29 #: src/features/channel/components/embeds/media/MediaContainer.tsx:23 -#: src/features/channel/components/MobileMemesPicker.tsx:88 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:39 +#: src/features/channel/components/MobileMemesPicker.tsx:89 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:40 #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 @@ -11288,8 +11273,8 @@ msgstr "要刪除 :{emojiName}: 嗎?此動作無法復原。" #. Body of the destructive delete confirmation alert in the saved media picker. memeName is the user-chosen name. Keep quotation marks. #. Error message in the channel and chat mobile memes picker. Preserve {memeName}; it is inserted by code. Keep the tone plain and specific. -#: src/features/channel/components/MobileMemesPicker.tsx:83 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:34 +#: src/features/channel/components/MobileMemesPicker.tsx:84 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:35 msgid "Delete \"{memeName}\"? Can't be undone." msgstr "要刪除「{memeName}」嗎?此動作無法復原。" @@ -11399,7 +11384,7 @@ msgid "Delete invite" msgstr "刪除邀請" #. Accessible label for the delete button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:56 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:57 msgid "Delete media" msgstr "刪除媒體" @@ -11466,8 +11451,8 @@ msgstr "刪除身分組" #. Accessible label and tooltip for the delete button on a saved media tile in the mobile memes picker. #. Title of the destructive delete confirmation alert in the saved media (memes) picker. -#: src/features/channel/components/MobileMemesPicker.tsx:79 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:30 +#: src/features/channel/components/MobileMemesPicker.tsx:80 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:31 msgid "Delete saved media" msgstr "刪除已儲存的媒體" @@ -11719,7 +11704,7 @@ msgid "Desktop away" msgstr "電腦閒置" #. Aria label on a participant tile icon that indicates the participant is on desktop. -#: src/features/voice/components/voice_participant_tile/shared.ts:92 +#: src/features/voice/components/voice_participant_tile/shared.ts:87 msgid "Desktop device" msgstr "電腦裝置" @@ -11849,13 +11834,13 @@ msgstr "開發人員狀態" #. Short label in the channel and chat utility buttons. Keep it concise. #. Title of the info alert shown when clicking an internal developer-tools deep link. #: src/features/channel/components/channel_header_components/UtilityButtons.tsx:20 -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:129 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:130 #: src/features/ui/action_menu/items/StaffDeveloperUserControlsMenuItem.tsx:13 msgid "Developer tools" msgstr "開發人員工具" #. Body of the developer-tools info alert. Refers to the staff badge button in the channel header. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:133 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:134 msgid "Developer tools are available from the staff badge in the channel header." msgstr "開發人員工具可從頻道標題列的員工徽章開啟。" @@ -11879,6 +11864,17 @@ msgstr "裝置" msgid "Device alerts" msgstr "裝置警示" +#. Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:55 +msgid "Device audio ({deviceLabel})" +msgstr "裝置音訊 ({deviceLabel})" + +#. Screen-share audio summary on a video device share that publishes only the audio of the capture device itself. +#: src/features/voice/components/StreamSettingsMenuContent.tsx:866 +#: src/features/voice/utils/ScreenShareAudioSummary.ts:50 +msgid "Device audio only" +msgstr "僅音訊裝置" + #: src/features/user/components/modals/tabs/DevicesTab.tsx:131 msgid "Device details" msgstr "裝置詳細資訊" @@ -11888,7 +11884,7 @@ msgstr "裝置詳細資訊" msgid "Device revoked" msgstr "裝置已撤銷" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:992 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:1004 msgid "Device selection" msgstr "選擇裝置" @@ -11912,7 +11908,7 @@ msgstr "裝置:" #: src/features/user/components/settings_utils/search_index/DevicesIndex.ts:11 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:82 #: src/features/user/components/settings_utils/SettingsConstants.tsx:57 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:190 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:193 msgid "Devices" msgstr "裝置" @@ -11953,7 +11949,7 @@ msgid "Dim strikethrough text" msgstr "調暗刪除線文字" #. Voice input processing profile with raw microphone audio. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:206 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:203 msgid "Direct input" msgstr "直接輸入" @@ -12020,7 +12016,7 @@ msgstr "直接上傳已啟用" #. Short footer action in the screen-share picker that disables screen-share preview frame uploads. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:238 #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:138 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:276 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:279 msgid "Disable" msgstr "停用" @@ -12192,7 +12188,7 @@ msgid "Disabled value" msgstr "已停用值" #. Explains what happens after disabling screen-share preview uploads. Refers to already-uploaded preview thumbnails. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:324 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:327 msgid "Disabling previews stops future preview uploads. Existing preview images may remain visible until the stream ends or the preview refreshes." msgstr "停用預覽功能會停止後續的預覽圖片上傳。已上傳的預覽圖片可能會繼續顯示,直到直播結束或預覽重新整理為止。" @@ -12206,17 +12202,17 @@ msgid "Discard voice message" msgstr "捨棄語音訊息" #. Voice action label. Leaves the current voice call or disconnects a user from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:93 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:90 msgid "Disconnect" msgstr "中斷連線" #. Voice menu action that disconnects every active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:115 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:112 msgid "Disconnect all devices" msgstr "中斷所有裝置連線" #. Voice menu action that disconnects one active device or session from voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:111 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:108 msgid "Disconnect device" msgstr "中斷裝置連線" @@ -12341,7 +12337,7 @@ msgid "Display" msgstr "顯示" #. Fallback label for a display / monitor card in the screen-share picker when the OS does not give us a display name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:144 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:147 msgctxt "display-screen" msgid "Display" msgstr "顯示器" @@ -12651,7 +12647,7 @@ msgid "Download <0>fluxer-verification and place it in your <1>.well-knownfluxer-verification 並將其放置在您的 <1>.well-known 資料夾中,以便我們驗證網域。" #. Media context menu action that downloads an audio attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:121 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:122 msgid "Download audio" msgstr "下載音訊" @@ -12686,7 +12682,7 @@ msgid "Download desktop update {version} ({formatBytes})" msgstr "下載桌面版更新 {version} ({formatBytes})" #. Media context menu action that downloads a file attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:125 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:126 msgid "Download file" msgstr "下載檔案" @@ -12695,12 +12691,12 @@ msgid "Download fluxer-verification" msgstr "下載 fluxer-verification" #. Media context menu action that downloads a GIF attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:113 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:114 msgid "Download GIF" msgstr "下載 GIF" #. Image context menu action that downloads the image to disk. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:109 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:110 msgid "Download image" msgstr "下載圖片" @@ -12714,7 +12710,7 @@ msgstr "下載安裝程式" #. Tooltip on the download button in the media viewer modal. #: src/features/channel/components/embeds/media/MediaContainer.tsx:28 #: src/features/messaging/components/modals/media_modal/shared.ts:73 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:129 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:130 msgid "Download media" msgstr "下載媒體" @@ -12724,7 +12720,7 @@ msgid "Download package" msgstr "下載套件" #. Media context menu action that downloads a video attachment. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:117 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:118 msgid "Download video" msgstr "下載影片" @@ -12930,7 +12926,7 @@ msgid "Echo" msgstr "回音" #. Voice setting label for preventing speaker audio from feeding into the microphone. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:214 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:211 msgid "Echo cancellation" msgstr "回音消除" @@ -12963,7 +12959,7 @@ msgstr "編輯「{0}」的存取權限" #. Accessible label in the edit alt text modal. Keep it concise. #. Action that opens the modal for editing an image or video accessibility description. #: src/features/messaging/components/modals/EditAltTextModal.tsx:32 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:165 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:166 msgid "Edit alt text" msgstr "編輯替代文字" @@ -13053,7 +13049,7 @@ msgid "Edit keyboard shortcut" msgstr "編輯鍵盤快捷鍵" #. Tooltip on the edit button on a saved media tile in the picker. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:48 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:49 msgid "Edit media" msgstr "編輯媒體" @@ -13102,8 +13098,8 @@ msgstr "編輯反向圖片搜尋引擎" #. Accessible label for the edit button on a saved media tile in the picker. #. Action that opens the editor for a saved media (favorite meme) entry. #. Button or menu action label in the channel and chat mobile memes picker. Keep it concise. -#: src/features/channel/components/MobileMemesPicker.tsx:93 -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:52 +#: src/features/channel/components/MobileMemesPicker.tsx:94 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:53 #: src/features/expressions/components/modals/EditFavoriteMemeModal.tsx:18 msgid "Edit saved media" msgstr "編輯已儲存的媒體" @@ -13526,7 +13522,7 @@ msgid "Enable browser notifications" msgstr "啟用瀏覽器通知" #. Description shown before the user explicitly requests camera preview permission. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:158 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:161 msgid "Enable camera access to preview cameras and capture devices before choosing one to stream." msgstr "啟用相機權限,以便在選擇要串流的相機和擷取裝置前預覽它們。" @@ -13642,7 +13638,7 @@ msgid "Enable or disable built-in translators. Enabled translators appear in the msgstr "啟用或停用內建翻譯工具。已啟用的翻譯工具會在選取文字時,顯示於訊息操作選單中。" #. Button that explicitly requests camera permission for device previews. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:166 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:169 msgid "Enable previews" msgstr "啟用預覽" @@ -13794,12 +13790,12 @@ msgid "End screen share" msgstr "結束螢幕分享" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:333 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:330 msgid "End-to-end encryption is unavailable because an unsupported participant is in this call." msgstr "由於通話中有不支援的參與者,因此無法使用端對端加密。" #. Pre-join indicator shown beneath the Join button on a voice channel where at least one connected participant (typically an outdated bot) does not support E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:328 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:325 msgid "End-to-end encryption is unavailable because an unsupported participant is in this voice channel." msgstr "由於語音頻道中有不支援的參與者,因此無法使用端對端加密。" @@ -14086,7 +14082,7 @@ msgid "Entertainment" msgstr "娛樂" #. Tab label in the screen-share picker. Lists shareable monitors / displays. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:186 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:189 msgid "Entire screen" msgstr "整個螢幕" @@ -14095,7 +14091,7 @@ msgstr "整個螢幕" msgid "Entire system" msgstr "整個系統" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:253 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:260 msgid "Entire system audio" msgstr "整個系統音訊" @@ -14268,7 +14264,7 @@ msgid "exclude a user" msgstr "排除某位使用者" #. Section header in the Linux audio source picker for apps excluded from the system mix. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:57 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:59 msgid "Exclude from system" msgstr "從系統排除" @@ -14593,7 +14589,7 @@ msgstr "無法複製邀請連結" #. Error toast shown when copying to the clipboard fails. #. Toast shown after copying text to the clipboard fails. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:149 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:150 #: src/features/ui/commands/TextCopyCommands.ts:15 msgid "Failed to copy to clipboard" msgstr "無法複製到剪貼簿" @@ -14685,7 +14681,7 @@ msgid "Failed to load invites. Try again." msgstr "載入邀請失敗。請再試一次。" #. Error text shown in the screen-share picker when the list of shareable windows/displays fails to load. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:118 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:121 msgid "Failed to load shareable sources." msgstr "無法載入可分享的來源。" @@ -15286,7 +15282,7 @@ msgid "Focus window" msgstr "將視窗移至前景" #. Voice input processing profile optimized for spoken voice. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:202 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:199 msgid "Focused voice" msgstr "語音聚焦" @@ -15322,10 +15318,6 @@ msgstr "資料夾設定" msgid "Follow us on {blueskyProviderName}" msgstr "在 {blueskyProviderName} 上追蹤我們" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:854 -msgid "Follow voice input" -msgstr "跟隨語音輸入" - #. Label in the sounds, shown on a sound row that has no volume override. Preserve {effectiveValue}; it is inserted by code and already holds the locale-formatted percentage, including the percent sign. #: src/features/user/components/modals/tabs/notifications_tab/NotificationsTabSounds.tsx:84 msgid "Following master • {effectiveValue}" @@ -15551,7 +15543,7 @@ msgid "Forward" msgstr "轉傳" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:31 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 msgid "Forward {defaultSeekAmount} seconds" msgstr "快轉 {defaultSeekAmount} 秒" @@ -15592,14 +15584,14 @@ msgstr "視窗外框" #. Section header in the stream settings menu for frame rate options. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:344 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:341 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:132 msgid "Frame rate" msgstr "影格率" #. Video settings note shown when higher frame rates require premium. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:71 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:69 msgid "Frame rates above 30 FPS require {premiumProductName}" msgstr "高於 30 FPS 的影格速率需要 {premiumProductName}" @@ -15923,7 +15915,7 @@ msgstr "控制器 Y / 三角" #. Video settings label for the motion-focused screen share quality preset. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:76 #: src/features/user/components/modals/tabs/UserVideoTabState.ts:24 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:227 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:230 #: src/features/voice/components/StreamSettingsMenuContent.tsx:75 msgid "Gaming" msgstr "遊戲" @@ -16065,7 +16057,7 @@ msgid "GIF picker loading" msgstr "正在載入 GIF 選擇器" #. Accessible label for an animated GIF shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:85 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:86 msgid "GIF preview" msgstr "GIF 預覽" @@ -16429,7 +16421,7 @@ msgstr "已授予 {permissions}" msgid "Grants all permissions and bypasses channel restrictions. Highly sensitive." msgstr "授予所有權限並繞過頻道限制。高度敏感。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:979 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:991 msgid "Granular selection" msgstr "精細選取" @@ -16992,7 +16984,7 @@ msgstr "隱藏密碼" msgid "Hide picture-in-picture popout?" msgstr "要隱藏子母畫面嗎?" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:756 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:768 msgid "Hide preview thumbnail" msgstr "隱藏預覽縮圖" @@ -17386,7 +17378,7 @@ msgstr "如果您希望這些成員能查看特定日期之後傳送的歷史訊 #. Button label for silencing an incoming direct call without joining. #. Button, menu item, or tooltip for ignoring an incoming friend request. #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:21 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:107 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:104 msgid "Ignore" msgstr "忽略" @@ -17395,11 +17387,11 @@ msgstr "忽略" msgid "Ignore friend request" msgstr "忽略好友邀請" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:969 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:981 msgid "Ignore hardware devices" msgstr "忽略硬體裝置" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:945 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:957 msgid "Ignore input media" msgstr "忽略輸入媒體" @@ -17430,7 +17422,7 @@ msgstr "要忽略來自 {displayName} 的好友邀請嗎?" msgid "Ignore this channel's slowmode cooldown." msgstr "忽略此頻道的慢速模式冷卻時間。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:956 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:968 msgid "Ignore virtual" msgstr "忽略虛擬裝置" @@ -17468,7 +17460,7 @@ msgstr "伊利諾州" #. Type label for image media. #: src/features/channel/components/embeds/media/EmbedImage.tsx:47 #: src/features/expressions/utils/FavoriteMemeUtils.ts:14 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:113 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:114 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:25 msgid "Image" msgstr "圖片" @@ -17479,7 +17471,7 @@ msgid "Image assets" msgstr "圖片素材" #. Success toast confirming that an image was copied as a bitmap to the clipboard. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:157 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:158 msgid "Image copied to clipboard" msgstr "圖片已複製到剪貼簿" @@ -17513,7 +17505,7 @@ msgid "Image options" msgstr "圖片選項" #. Accessible label for a static image shown in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:81 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:82 msgid "Image preview" msgstr "圖片預覽" @@ -17540,7 +17532,7 @@ msgstr "上傳圖片" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved images. -#: src/features/channel/components/MobileMemesPicker.tsx:46 +#: src/features/channel/components/MobileMemesPicker.tsx:47 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:16 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:105 msgid "Images" @@ -17721,7 +17713,7 @@ msgid "In voice" msgstr "在語音通話中" #. Short status label shown when the user is currently connected to voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:182 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:179 msgid "In voice chat" msgstr "在語音聊天中" @@ -17786,7 +17778,7 @@ msgid "Include all except selected" msgstr "選取以外的所有社群" #. Section header in the Linux audio source picker for the per-app inclusion list. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:53 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:55 msgid "Include apps" msgstr "包含應用程式" @@ -17976,7 +17968,7 @@ msgid "Input and output" msgstr "輸入與輸出" #. Voice settings label for selecting a microphone input device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:186 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:183 msgid "Input device" msgstr "輸入裝置" @@ -17998,7 +17990,7 @@ msgid "Input profile: {processingModeLabel}" msgstr "輸入設定檔:{processingModeLabel}" #. Voice control dropdown label or menu item for microphone input settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:230 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:227 msgid "Input settings" msgstr "輸入設定" @@ -18007,7 +17999,7 @@ msgid "Input states" msgstr "輸入狀態" #. Voice settings slider label for microphone volume. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:194 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:191 msgid "Input volume" msgstr "輸入音量" @@ -18265,7 +18257,7 @@ msgid "Invite link is hidden while sharing:" msgstr "分享時隱藏邀請連結:" #. Inline replacement text shown for invite links while streaming privacy is active. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:145 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:146 msgid "Invite link masked while sharing" msgstr "分享時已隱藏邀請連結" @@ -18678,7 +18670,7 @@ msgid "Jump to {displayName}" msgstr "跳到「{displayName}」" #. Accessible label for an inline channel mention link. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:100 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:101 msgid "Jump to {labelText}" msgstr "跳到「{labelText}」" @@ -18735,12 +18727,12 @@ msgid "Jump to the current call" msgstr "跳到目前的通話" #. Fallback accessible label for an inline channel mention when the target name is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:104 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:105 msgid "Jump to the linked channel" msgstr "跳到連結的頻道" #. Fallback accessible label for an inline message link when the target channel is not known. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:96 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:97 msgid "Jump to the linked message" msgstr "跳到連結的訊息" @@ -18750,7 +18742,7 @@ msgid "Jump to the message from {authorNickname}" msgstr "跳到 {authorNickname} 的訊息" #. Accessible label for an inline message link that jumps to a specific message in a channel. labelText is the channel display name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:91 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:92 msgid "Jump to the message in {labelText}" msgstr "跳到「{labelText}」中的訊息" @@ -19055,7 +19047,7 @@ msgid "Layout" msgstr "版面配置" #. Accessible label for the screen-share picker footer info button. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:280 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:283 msgid "Learn about screen share previews" msgstr "了解螢幕分享預覽功能" @@ -19398,7 +19390,7 @@ msgid "Link styling" msgstr "連結樣式" #. Title of the alert shown when clicking an internal link that is not available to the current account. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:137 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:138 msgid "Link unavailable" msgstr "連結無法使用" @@ -19448,7 +19440,7 @@ msgid "Linux app" msgstr "Linux 應用程式" #. Audio device label prefix for the operating system default audio device on Linux. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:29 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:26 msgid "Linux default" msgstr "Linux 預設值" @@ -19551,7 +19543,7 @@ msgid "Loading theme..." msgstr "正在載入主題…" #. Generic loading toast or label shown while an operation is in progress. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:141 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:142 msgid "Loading..." msgstr "正在載入…" @@ -19686,7 +19678,7 @@ msgid "macOS app" msgstr "macOS 應用程式" #. Audio device label prefix for the operating system default audio device on macOS. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:25 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:22 msgid "macOS default" msgstr "macOS 預設值" @@ -20289,7 +20281,7 @@ msgstr "下一首" #. Accessible label for the overflow menu button in the media viewer modal. #. Short label in the channel and chat media action bottom sheet. Keep it concise. #: src/features/channel/components/MediaActionBottomSheet.tsx:37 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:69 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:70 msgid "Media options" msgstr "媒體選項" @@ -20299,7 +20291,7 @@ msgid "Media play/pause" msgstr "播放/暫停" #. Generic accessible label for unknown media in the media viewer. -#: src/features/messaging/components/modals/MediaViewerModal.tsx:97 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:98 msgid "Media preview" msgstr "媒體預覽" @@ -20754,7 +20746,7 @@ msgid "Message layout" msgstr "訊息版面配置" #. Type chip suffix in tooltips for inline rendered message links. Lowercase because it follows the channel name. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:81 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:82 msgid "message link" msgstr "訊息連結" @@ -20950,7 +20942,7 @@ msgid "Microphone test" msgstr "麥克風測試" #. Pre-join indicator shown beneath the Join button on a voice channel where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:318 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:315 msgid "Microphone, camera, and screen share content are end-to-end encrypted." msgstr "麥克風、相機和螢幕分享內容已進行端對端加密。" @@ -21019,7 +21011,7 @@ msgstr "未成年人面臨風險、成人內容出現在不當的地方,或不 #. Camera settings menu checkbox for flipping the local camera preview horizontally. #. Switch label in the camera preview modal for flipping the local camera preview horizontally. #. Switch label in the video tab for flipping the local camera preview horizontally. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:108 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:106 #: src/features/voice/components/modals/CameraPreviewModal.tsx:72 #: src/features/voice/components/VoiceSettingsMenus.tsx:114 msgid "Mirror camera" @@ -21069,7 +21061,7 @@ msgid "Misspelled words" msgstr "錯字" #. Aria label on a participant tile icon that indicates the participant is on mobile. -#: src/features/voice/components/voice_participant_tile/shared.ts:88 +#: src/features/voice/components/voice_participant_tile/shared.ts:83 msgid "Mobile device" msgstr "行動裝置" @@ -21518,7 +21510,7 @@ msgid "Mute all" msgstr "全部靜音" #. Voice menu action that mutes every device or session's microphone for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:119 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:116 msgid "Mute all devices" msgstr "將所有裝置設為靜音" @@ -21653,13 +21645,13 @@ msgstr "已靜音" #. Status badge on a voice participant tile. The participant's microphone is muted. #: src/features/app/components/layout/VoiceStateIcons.tsx:19 #: src/features/ui/avatars/AvatarWithPresence.tsx:20 -#: src/features/voice/components/voice_participant_tile/shared.ts:83 +#: src/features/voice/components/voice_participant_tile/shared.ts:78 msgctxt "microphone-state" msgid "Muted" msgstr "麥克風已靜音" #. Voice chat status label. A moderator muted the user in this community, so they cannot speak but can still hear others. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:46 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:43 msgid "Muted by moderators" msgstr "遭管理員設為靜音" @@ -22243,7 +22235,7 @@ msgid "No {sendMessagesPermission} permission" msgstr "沒有 {sendMessagesPermission} 權限" #. Inline text shown inside a custom message link pill when the linked message cannot be accessed. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:125 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:126 msgid "No access" msgstr "無法存取" @@ -22282,7 +22274,7 @@ msgstr "找不到進階設定" msgid "No AFK channel" msgstr "沒有閒置頻道" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:122 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 msgid "No application windows found" msgstr "找不到應用程式視窗" @@ -22300,6 +22292,11 @@ msgstr "尚無素材" msgid "No audio" msgstr "沒有音訊" +#. Screen-share audio summary on a video device share whose capture device has no audio input of its own. +#: src/features/voice/utils/ScreenShareAudioSummary.ts:60 +msgid "No audio from this device" +msgstr "此裝置沒有音訊" + #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:429 msgid "No authorized applications" msgstr "沒有已授權的應用程式" @@ -22341,7 +22338,7 @@ msgstr "沒有書籤" msgid "No bot banner" msgstr "沒有機器人橫幅" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:235 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:232 msgid "No camera found" msgstr "找不到相機" @@ -22421,7 +22418,7 @@ msgstr "沒有說明。" msgid "No desktop update is available." msgstr "沒有可用的桌面版更新。" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:131 msgid "No displays found" msgstr "找不到顯示器" @@ -22650,7 +22647,7 @@ msgstr "未收到回應內容" #. Empty-state text in the channel and chat memes picker view. #. Heading shown when the channel search query returned zero matches. #: src/features/channel/components/channel_search_results/ChannelSearchResultsShared.tsx:74 -#: src/features/channel/components/MobileMemesPicker.tsx:66 +#: src/features/channel/components/MobileMemesPicker.tsx:67 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:32 msgid "No results" msgstr "沒有結果" @@ -22679,7 +22676,7 @@ msgstr "還沒有任何身分組。請在{rolesSettingsPath}新增身分組" #. Empty state title in the mobile memes picker when the user has saved nothing yet. #. Empty-state text in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:58 +#: src/features/channel/components/MobileMemesPicker.tsx:59 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:24 msgid "No saved media" msgstr "沒有已儲存的媒體" @@ -22851,7 +22848,7 @@ msgid "Noise gate" msgstr "雜訊閘" #. Voice setting label for microphone background-noise filtering. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:210 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:207 msgid "Noise suppression" msgstr "雜訊抑制" @@ -22877,7 +22874,7 @@ msgstr "無轉換" #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:220 -#: src/features/voice/components/AudioSourcePickerLinux.tsx:261 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:268 msgid "None" msgstr "無" @@ -23286,7 +23283,7 @@ msgstr "僅適用於寬螢幕。" msgid "Only credit cards are accepted. Debit and prepaid cards cannot be used for the mature content check." msgstr "僅接受信用卡。簽帳金融卡和預付卡無法用於成人內容檢查。" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:934 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:946 msgid "Only default speakers" msgstr "僅限預設揚聲器" @@ -23334,7 +23331,7 @@ msgstr "請僅在您完全了解其作用時,才在此處執行程式碼。" msgid "Only show message previews for DMs with unread messages" msgstr "只顯示有未讀訊息的私訊預覽" -#: src/features/voice/components/StreamSettingsMenuContent.tsx:924 +#: src/features/voice/components/StreamSettingsMenuContent.tsx:936 msgid "Only speakers" msgstr "僅限揚聲器" @@ -23410,7 +23407,7 @@ msgid "Open {displayName}" msgstr "開啟 {displayName}" #. Accessible label for an inline settings deep-link pill. labelText is the resolved settings tab and section breadcrumb. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:108 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:109 msgid "Open {labelText} in settings" msgstr "在設定中開啟 {labelText}" @@ -23440,25 +23437,25 @@ msgid "Open @{displayName}" msgstr "開啟 @{displayName}" #. Button label in the video tab that jumps to the advanced settings media section. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:120 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:118 msgid "Open advanced media settings" msgstr "開啟進階媒體設定" -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:125 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:128 msgid "Open an application window, then try again." msgstr "開啟應用程式視窗後,請再試一次。" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:74 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:55 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:56 msgid "Open animated GIF in full view" msgstr "以全螢幕檢視動畫 GIF" #. Button or menu action label in the channel and chat attachment grid item. Keep it concise. #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:70 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:51 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:52 msgid "Open animated GIF video in full view" msgstr "以全螢幕檢視動畫 GIF 影片" @@ -23468,7 +23465,7 @@ msgid "Open audio in full view" msgstr "以全螢幕檢視音訊" #. Media context menu action that opens the audio URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:101 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:102 msgid "Open audio link" msgstr "開啟音訊連結" @@ -23507,7 +23504,7 @@ msgid "Open browser" msgstr "開啟瀏覽器" #. Primary button in the screen-share picker on web. Hands off to the browser's native getDisplayMedia picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:206 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:209 msgid "Open browser picker" msgstr "開啟瀏覽器選取器" @@ -23621,12 +23618,12 @@ msgid "Open favorites menu" msgstr "開啟我的最愛選單" #. Media context menu action that opens the file URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:105 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:106 msgid "Open file link" msgstr "開啟檔案連結" #. Media context menu action that opens the GIF URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:93 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:94 msgid "Open GIF link" msgstr "開啟 GIF 連結" @@ -23651,7 +23648,7 @@ msgstr "在瀏覽器中開啟圖片" #. Button or menu action label in the channel and chat embed gifv. Keep it concise. #. Button or menu action label in the channel and chat embed image. Keep it concise. #: src/features/channel/components/embeds/attachments/AttachmentGridItem.tsx:78 -#: src/features/channel/components/embeds/media/EmbedGifv.tsx:59 +#: src/features/channel/components/embeds/media/EmbedGifv.tsx:60 #: src/features/channel/components/embeds/media/EmbedImage.tsx:43 msgid "Open image in full view" msgstr "以全螢幕檢視圖片" @@ -23660,7 +23657,7 @@ msgstr "以全螢幕檢視圖片" #. Image context menu action that opens the image URL in an external browser. #. Image context menu action that opens the image URL in an external browser. #: src/features/ui/action_menu/items/EmojiContextMenuItems.tsx:48 -#: src/features/ui/action_menu/items/MediaMenuData.tsx:89 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:90 #: src/features/ui/action_menu/items/StickerContextMenuItems.tsx:48 msgid "Open image link" msgstr "開啟圖片連結" @@ -23775,7 +23772,7 @@ msgid "Open system DM" msgstr "開啟系統私訊" #. Primary button in the screen-share picker on Linux/Wayland. Hands off to the OS xdg-desktop-portal picker. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:211 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:214 msgid "Open system picker" msgstr "開啟系統選取器" @@ -23837,7 +23834,7 @@ msgid "Open video in full view" msgstr "以全螢幕檢視影片" #. Media context menu action that opens the video URL in an external browser. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:97 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:98 msgid "Open video link" msgstr "開啟影片連結" @@ -23847,7 +23844,7 @@ msgid "Open voice" msgstr "開啟語音" #. Accessible button label that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:258 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:255 msgid "Open voice & video settings" msgstr "開啟語音與視訊設定" @@ -24080,12 +24077,12 @@ msgid "Output" msgstr "輸出" #. Voice settings label for selecting a speaker or output device. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:190 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:187 msgid "Output device" msgstr "輸出裝置" #. Voice control dropdown label or menu item for speaker/output settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:234 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:231 msgid "Output settings" msgstr "輸出設定" @@ -24094,7 +24091,7 @@ msgstr "輸出設定" #. Voice settings slider label for speaker or output volume. #: src/features/user/components/settings_utils/search_index/NotificationsIndex.ts:90 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:228 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:198 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:195 msgid "Output volume" msgstr "輸出音量" @@ -24197,7 +24194,7 @@ msgid "Participant limit" msgstr "成員上限" #. Aria label for the participant context-menu trigger button. {participantDisplayName} is the participant's display name. -#: src/features/voice/components/voice_participant_tile/shared.ts:100 +#: src/features/voice/components/voice_participant_tile/shared.ts:95 msgid "Participant options for {participantDisplayName}" msgstr "「{participantDisplayName}」的參與者選項" @@ -25260,17 +25257,17 @@ msgid "Preview hidden" msgstr "預覽已隱藏" #. Privacy explanation for screen-share previews in a one-to-one DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:318 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:321 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. Disable previews if you do not want screen-share frames uploaded for thumbnails." msgstr "預覽圖片會由 {productName} 暫時儲存,以便傳送,且不會進行端對端加密。如果您不希望上傳螢幕分享畫面以產生縮圖,請停用預覽功能。" #. Privacy explanation for screen-share previews in a group DM call. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:312 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:315 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People in this group DM do not need to be actively watching your stream to see the thumbnail." msgstr "預覽圖片會由 {productName} 暫時儲存,以便傳送,且不會進行端對端加密。此群組私訊中的成員不需要主動觀看您的畫面串流,即可看到縮圖。" #. Privacy explanation for screen-share previews in a guild voice channel. productName is the app name. Refers to preview thumbnail images generated from a screen share. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:306 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:309 msgid "Preview images are stored by {productName} temporarily for delivery and are not end-to-end encrypted. People still need permission to connect, but they do not need to be actively watching your stream." msgstr "預覽圖片會由 {productName} 暫時儲存,以便傳送,且不會進行端對端加密。其他人仍需具備權限才能連線,但不需要主動觀看您的畫面串流。" @@ -26269,7 +26266,7 @@ msgstr "已複製參照。" msgid "Referral parameters" msgstr "推薦參數" -#: src/features/voice/components/AudioSourcePickerLinux.tsx:305 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:312 msgid "Refresh audio sources" msgstr "重新整理音訊來源" @@ -26363,7 +26360,7 @@ msgid "Regular button clicked." msgstr "已點擊一般按鈕。" #. Button label for rejecting an incoming direct call. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:103 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:100 msgid "Reject" msgstr "拒絕" @@ -26597,7 +26594,7 @@ msgid "Remove from group" msgstr "從群組中移除" #. Action that removes the selected media from saved media. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:181 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:182 msgid "Remove from saved media" msgstr "從已儲存的媒體中移除" @@ -26609,7 +26606,7 @@ msgid "Remove from top" msgstr "取消置頂" #. Media context menu action that removes a GIF favorite saved by URL. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:173 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:174 msgid "Remove from URL-only GIF favorites" msgstr "從僅限網址的 GIF 最愛中移除" @@ -27902,7 +27899,7 @@ msgid "Revoked ban for {0}" msgstr "已解除 {0} 的停權" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:26 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 msgid "Rewind {defaultSeekAmount} seconds" msgstr "倒轉 {defaultSeekAmount} 秒" @@ -28202,7 +28199,7 @@ msgstr "儲存圖示" #. Button or menu action label in the channel and chat memes picker view. Keep it concise. #. Empty state body in the mobile memes picker explaining how to save media. Tone can be friendly. -#: src/features/channel/components/MobileMemesPicker.tsx:62 +#: src/features/channel/components/MobileMemesPicker.tsx:63 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:28 msgid "Save some media from messages to get started!" msgstr "從訊息儲存一些媒體,即可開始使用!" @@ -28313,7 +28310,7 @@ msgstr "需要螢幕錄影權限" #. Video settings label for the text-focused screen share quality preset. #: src/features/user/components/modals/tabs/UserVideoTabState.ts:28 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:222 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:231 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:234 #: src/features/voice/components/StreamSettingsMenuContent.tsx:88 msgid "Screen share" msgstr "螢幕分享" @@ -28329,7 +28326,7 @@ msgid "Screen share audio boost" msgstr "螢幕分享音訊增強" #. Error modal title shown when the selected native screen-share audio route cannot start safely. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:174 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:177 msgid "Screen share audio couldn't start" msgstr "無法啟動螢幕分享音訊" @@ -28344,7 +28341,7 @@ msgid "Screen share encoder controls" msgstr "螢幕分享編碼器控制項" #. Title of a modal shown when an active screen share stops unexpectedly. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:146 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:119 msgctxt "screen-share" msgid "Screen share ended" msgstr "螢幕分享已結束" @@ -28370,17 +28367,17 @@ msgid "Screen share preview behavior" msgstr "螢幕分享預覽行為" #. Title of an informational modal explaining screen-share preview frame uploads. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:284 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:287 msgid "Screen share previews" msgstr "螢幕分享預覽" #. Compact footer status in the screen-share picker when preview frame uploads are disabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:272 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:275 msgid "Screen share previews are disabled." msgstr "螢幕分享預覽已停用。" #. Compact footer status in the screen-share picker when preview frame uploads are enabled. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:268 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:271 msgid "Screen share previews are enabled." msgstr "螢幕分享預覽已啟用。" @@ -28391,13 +28388,13 @@ msgstr "螢幕分享隱私" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the video tab. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:112 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:110 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:214 msgid "Screen share quality" msgstr "螢幕分享畫質" #. Voice control dropdown label or menu item for screen sharing and stream quality settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:242 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:239 msgid "Screen share settings" msgstr "螢幕分享設定" @@ -28723,7 +28720,7 @@ msgstr "搜尋身分組或成員…" #. Button or menu action label in the channel and chat memes picker header. Keep it concise. #. Placeholder text in the mobile memes picker search input. -#: src/features/channel/components/MobileMemesPicker.tsx:54 +#: src/features/channel/components/MobileMemesPicker.tsx:55 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:24 msgid "Search saved media" msgstr "搜尋已儲存的媒體" @@ -28942,12 +28939,12 @@ msgstr "進度預覽" #. Hover action on a device card that selects the device without starting the stream. #: src/features/app/components/dialogs/components/PricingCard.tsx:65 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:198 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:201 msgid "Select" msgstr "選擇" #. Accessible label for a saved media tile in the mobile memes picker. accessibleName is the media filename or alt text. -#: src/features/channel/components/MobileMemesPicker.tsx:74 +#: src/features/channel/components/MobileMemesPicker.tsx:75 msgid "Select {accessibleName}" msgstr "選取「{accessibleName}」" @@ -29307,7 +29304,7 @@ msgid "Send reset link" msgstr "傳送重設連結" #. Accessible label for a saved media tile in the picker. Activating sends it. memeName is the user-chosen name. -#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:43 +#: src/features/channel/components/pickers/memes/MemeGridItem.tsx:44 msgid "Send saved media {memeName}" msgstr "傳送已儲存的媒體 {memeName}" @@ -29499,7 +29496,7 @@ msgid "Set a member list position for the role" msgstr "為身分組設定成員列表中的位置" #. Video settings note shown when a streaming preset decides the screen share resolution and frame rate. preset is the Gaming or Screen share preset label, and Custom is the third preset label. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:89 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:87 msgid "Set by the {preset} preset. Picking a value here switches to Custom." msgstr "由 {preset} 預設值決定。選擇此處的值將切換至「自訂」。" @@ -29524,7 +29521,7 @@ msgid "Set custom volumes for individual sounds. Sounds without an override foll msgstr "為個別音效設定自訂音量。未覆寫的音效將依循主音量。" #. Settings description for assigning the keyboard shortcut that toggles voice deafen. Deafen controls hearing voice chat, not microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:167 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:164 msgid "Set deafen shortcut" msgstr "設定耳機靜音快速鍵" @@ -29669,11 +29666,6 @@ msgstr "暫緩此驗證" msgid "Set this check aside?" msgstr "暫緩此驗證?" -#. Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:415 -msgid "Set to send {resolution} at {frameRate} FPS with {codec}" -msgstr "設定為以 {frameRate} FPS 和 {codec} 傳送 {resolution}" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:73 msgid "Set up {productName}" @@ -29726,7 +29718,7 @@ msgid "Settings" msgstr "設定" #. Type chip suffix in tooltips for inline rendered fluxer://settings/user deep links. Lowercase. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:113 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:114 msgid "settings link" msgstr "設定連結" @@ -29781,7 +29773,7 @@ msgid "Share gift" msgstr "分享禮物" #. Hover action on an application or display card that starts sharing that source. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:194 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:197 msgid "Share screen" msgstr "分享螢幕" @@ -29823,11 +29815,11 @@ msgid "Share with community mods." msgstr "分享給社群管理員。" #. Voice control button or tooltip label for starting screen sharing. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:226 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:223 msgid "Share your screen" msgstr "分享您的螢幕" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:328 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:325 msgid "Share your screen in high definition (1080p), quad HD (1440p), or native source resolution, at up to 60 FPS." msgstr "以高畫質 (1080p)、Quad HD (1440p) 或原始來源解析度分享您的螢幕,最高可達 60 FPS。" @@ -29856,7 +29848,7 @@ msgid "Shared window" msgstr "分享的視窗" #. Capture option in the Linux audio source picker on a window share. Captures only the audio of the window being shared. -#: src/features/voice/components/AudioSourcePickerLinux.tsx:38 +#: src/features/voice/components/AudioSourcePickerLinux.tsx:40 msgid "Shared window audio" msgstr "分享的視窗音訊" @@ -30624,6 +30616,10 @@ msgstr "靜音來電" msgid "Silent calls from everyone" msgstr "所有人來電靜音" +#: src/features/voice/components/StreamSettingsMenuContent.tsx:872 +msgid "Silent when the capture device has no audio input of its own" +msgstr "當擷取裝置沒有自己的音訊輸入時保持靜音" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:390 msgid "Single click" @@ -30952,7 +30948,7 @@ msgid "Smooth scrolling" msgstr "平滑捲動" #. Footer summary description for the gaming screen-share quality preset. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:239 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:242 msgid "Smoother video" msgstr "畫面更流暢" @@ -31005,11 +31001,6 @@ msgstr "部分表情符號無法新增" msgid "Some files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "您嘗試上傳的某些檔案超出檔案大小上限,每個檔案不得超過 {maxSizeFormatted}。" -#. Screen share notice shown to the person sharing when the app failed to push new settings to a live share. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:410 -msgid "Some stream settings could not be applied to your live stream." -msgstr "部分直播設定無法套用到您的直播。" - #. Title of the unaddable recipients confirmation alert shown when creating a group DM. #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:27 msgid "Some users can't be added" @@ -31217,12 +31208,12 @@ msgstr "音效" #. Footer summary resolution label for native source resolution. #. Resolution option in the stream settings menu meaning the original source resolution (no downscale). -#. Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. +#. Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu. #. Short label in the video tab for the native source resolution option. Keep it concise. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:85 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:247 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:83 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:250 #: src/features/voice/components/StreamSettingsMenuContent.tsx:110 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:425 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:336 msgid "Source" msgstr "來源" @@ -31569,7 +31560,7 @@ msgstr "要開始語音通話嗎?" msgid "Start call" msgstr "開始通話" -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:289 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:286 msgid "Start camera test and configure effects" msgstr "開始相機測試並設定效果" @@ -31910,7 +31901,7 @@ msgstr "停止朗讀" #. Danger action that stops the active screen share. #. Voice screen share menu action that stops the current user stream. #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:20 -#: src/features/voice/components/ActiveScreenShareMenu.tsx:30 +#: src/features/voice/components/ActiveScreenShareMenu.tsx:21 msgid "Stop streaming" msgstr "停止直播" @@ -31920,7 +31911,7 @@ msgid "Stop trusting all links?" msgstr "要停止信任所有連結嗎?" #. Voice control action for stopping the currently focused or selected stream. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:246 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:243 msgid "Stop watching" msgstr "停止觀看" @@ -31982,7 +31973,7 @@ msgstr "避免喇叭的聲音回傳到您的麥克風。" #. Primary footer action that starts streaming the selected capture device. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:236 -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:202 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:205 msgid "Stream" msgstr "直播" @@ -32001,11 +31992,6 @@ msgstr "直播已結束" msgid "Stream hidden" msgstr "已隱藏直播" -#. Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for. -#: src/features/voice/components/voice_participant_tile/shared.ts:78 -msgid "Stream is not keeping up" -msgstr "直播跟不上" - #. Aria label for the small thumbnail preview on the screen-share hover card. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the user settings voice activity card. Keep it concise. @@ -32021,15 +32007,10 @@ msgid "Stream quality" msgstr "直播畫質" #. Toolbar / menu button label in the screen-share picker. Opens the stream quality settings popover. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:223 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:226 msgid "Stream settings" msgstr "直播設定" -#. Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:440 -msgid "Stream settings were adjusted" -msgstr "串流設定已調整" - #. Permission name: allows video streaming or screen sharing in voice. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:467 msgid "Stream video" @@ -32526,7 +32507,7 @@ msgstr "來自 {productName} 團隊的系統公告。您無法在此回覆。" #. Audio device option label meaning the OS default audio input device. #. Footer summary fallback for the default capture-device audio input. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:260 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:263 #: src/features/voice/components/StreamSettingsMenuContent.tsx:140 msgid "System default" msgstr "系統預設" @@ -33036,13 +33017,8 @@ msgstr "機器人已新增至<0>{destinationName}。" msgid "The bot has been added." msgstr "已新增機器人。" -#. Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:373 -msgid "The browser is sending {deliveredResolution} instead of {resolution}." -msgstr "瀏覽器傳送了 {deliveredResolution},而不是 {resolution}。" - #. Status shown when a device preview has not released the camera before the bounded handoff deadline. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:170 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:173 msgid "The camera preview is still stopping. Try streaming again in a moment." msgstr "相機預覽仍在停止中。請稍後再重新開始串流。" @@ -33220,7 +33196,7 @@ msgid "The role granted {permissions}" msgstr "該身分組曾授予 {permissions}" #. Body of a modal shown when a browser screen share track ends outside the app, for example from the browser sharing controls. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:151 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:124 msgctxt "screen-share" msgid "The screen share source stopped sending video, so your screen share was stopped." msgstr "螢幕分享來源已停止傳送視訊,因此您的螢幕分享已停止。" @@ -33462,7 +33438,7 @@ msgid "This browser console is a developer tool." msgstr "這個瀏覽器主控台是開發人員工具。" #. Pre-join indicator shown beneath the Join button on a DM or group DM call where every connected participant supports E2EE. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:323 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:320 msgid "This call is end-to-end encrypted." msgstr "此通話已端對端加密。" @@ -33645,11 +33621,6 @@ msgstr "這個桌面版本無法在 {productName} 內安裝更新。請改為下 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "此開發版本無法自行更新。請下載桌面安裝程式以測試更新流程。" -#. Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:383 -msgid "This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS." -msgstr "上次本裝置無法以 {targetFrameRate} FPS 維持 {targetResolution},因此您的串流以 {resolution} 和 {frameRate} FPS 開始。" - #. Modal body shown when the current device/browser cannot show notifications. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:27 msgid "This device does not support notifications." @@ -33753,7 +33724,7 @@ msgid "This install is managed by your system. Update {productName} from your so msgstr "這個安裝是由您的系統管理。請從您的軟體中心或套件管理器更新 {productName}。" #. Neutral video settings note shown when higher screen share quality is disabled by instance limits. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:75 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:73 msgid "This instance currently allows screen sharing up to 720p at 30 FPS." msgstr "此實例目前支援最高 720p、30 FPS 的螢幕分享。" @@ -33866,7 +33837,7 @@ msgid "This link channel is marked for mature content and may open material that msgstr "此連結頻道已標示為成人內容,可能會開啟不適合部分使用者的內容。" #. Body of the link-unavailable alert. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:141 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:142 msgid "This link is not available for your account." msgstr "您的帳號無法使用此連結。" @@ -33947,17 +33918,17 @@ msgid "This option is required. Please provide a value." msgstr "這個選項是必填的。請提供值。" #. Voice participant status tooltip shown when channel permissions or voice suppression prevent another participant from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:55 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:52 msgid "This participant can't speak in this channel" msgstr "這位參與者無法在此頻道中發言" #. Voice participant status tooltip for another user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:81 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:78 msgid "This participant is deafened" msgstr "此參與者已耳機靜音" #. Voice participant status tooltip for another user. A moderator deafened that participant so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:68 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:65 msgid "This participant was deafened by moderators" msgstr "此參與者遭管理員設為耳機靜音" @@ -33972,7 +33943,7 @@ msgid "This phone number has already been used. Try another number or contact su msgstr "此電話號碼已被使用。請嘗試其他號碼或聯絡客服。" #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:134 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." msgstr "此選擇器僅適用於桌面版應用程式。" @@ -34401,7 +34372,7 @@ msgid "Toggle controls" msgstr "切換控制項" #. Keyboard shortcut label. Toggles voice deafen, which controls whether the user hears voice chat. Distinct from microphone mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:157 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:154 msgid "Toggle deafen" msgstr "切換耳機靜音" @@ -34666,7 +34637,7 @@ msgstr "在 Linux 上,系統匣圖示的變更只有在重新啟動後才會 #. Short label in the channel and chat gif picker grid. Keep it concise. #. Short label in the channel and chat gif picker header. Keep it concise. -#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:25 +#: src/features/channel/components/pickers/gif/GifPickerGrid.tsx:26 #: src/features/channel/components/pickers/gif/GifPickerHeader.tsx:18 msgid "Trending GIFs" msgstr "熱門 GIF" @@ -34760,7 +34731,7 @@ msgstr "請換一個搜尋字詞。" #. Empty state body in the mobile memes picker suggesting query changes. #. Label in the channel and chat memes picker view. -#: src/features/channel/components/MobileMemesPicker.tsx:70 +#: src/features/channel/components/MobileMemesPicker.tsx:71 #: src/features/channel/components/pickers/memes/MemesPickerView.tsx:36 msgid "Try a different search term or filter" msgstr "試試其他搜尋字詞或篩選條件" @@ -34839,11 +34810,6 @@ msgstr "試試不同的篩選條件或搜尋字詞。" msgid "Try editing your message again." msgstr "請再試一次編輯訊息。" -#. Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:435 -msgid "Try full quality again" -msgstr "再次嘗試完整品質" - #: src/features/app/components/dialogs/components/AllSettingsRenderer.tsx:252 msgid "Try searching for something like \"theme\", \"notifications\", or \"privacy\"" msgstr "試試看搜尋「主題」、「通知」或「隱私」等關鍵字" @@ -34904,7 +34870,7 @@ msgid "Turn off anything you're not comfortable with. Some features may stop wor msgstr "關閉任何您不放心的項目。部分功能可能會停止運作。" #. Error modal body shown after a native screen-share audio route fails to start. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:178 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:181 msgid "Turn off audio sharing for this source or try again in a moment." msgstr "關閉此來源的音訊分享,或稍後再試。" @@ -34960,7 +34926,7 @@ msgid "Turn on automatically when OBS or XSplit is detected" msgstr "偵測到 OBS 或 XSplit 時自動開啟" #. Voice control button or tooltip label for enabling the camera. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:222 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:219 msgid "Turn on camera" msgstr "開啟相機" @@ -35310,17 +35276,17 @@ msgid "Uncollectible" msgstr "無法收取" #. Voice action label. Restores what the user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:89 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:86 msgid "Undeafen" msgstr "解除耳機靜音" #. Voice menu action that restores voice audio on every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:148 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:145 msgid "Undeafen all devices" msgstr "解除所有裝置的耳機靜音" #. Voice control label. Restores what the current user hears in voice chat. Distinct from microphone unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:135 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:132 msgid "Undeafen yourself" msgstr "解除自己的耳機靜音" @@ -35558,7 +35524,7 @@ msgstr "不明使用者" #: src/features/guild/components/modals/guild_tabs/GuildAuditLogTab.tsx:102 #: src/features/lexical/composer/nodes/SlashSlotNode.ts:61 #: src/features/voice/components/VoiceParticipantAvatarList.tsx:44 -#: src/features/voice/components/VoiceParticipantTile.tsx:181 +#: src/features/voice/components/VoiceParticipantTile.tsx:172 #: src/features/webhook/components/WebhookListItem.tsx:31 msgid "Unknown user" msgstr "不明使用者" @@ -35602,7 +35568,7 @@ msgid "Unlock custom emojis in DMs with {premiumProductName}" msgstr "使用 {premiumProductName} 在私訊中解鎖自訂表情符號" #. Premium upsell title in video settings. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:67 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:65 msgid "Unlock HD screen share with {premiumProductName}" msgstr "使用 {premiumProductName} 解鎖高畫質螢幕分享" @@ -35659,7 +35625,7 @@ msgid "Unmute {label}" msgstr "將「{label}」解除靜音" #. Voice menu action that unmutes every device or session for this user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:123 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:120 msgid "Unmute all devices" msgstr "解除所有裝置靜音" @@ -35741,7 +35707,7 @@ msgstr "未命名群組" #. Fallback label for an audio input device whose name is not reported by the OS. #. Footer summary fallback for an audio input without a reported name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:264 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:267 #: src/features/voice/components/StreamSettingsMenuContent.tsx:144 msgid "Unnamed input" msgstr "未命名的輸入裝置" @@ -36153,7 +36119,7 @@ msgid "Upload new emoji and stickers, and manage your own creations." msgstr "上傳新的表情符號和貼圖,並管理您自己的創作。" #. Description for the screen-share preview toggle in the informational modal. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:330 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:333 msgid "Upload preview frames for screen shares." msgstr "上傳螢幕分享的預覽畫面。" @@ -36234,7 +36200,7 @@ msgid "URL" msgstr "網址" #. Success toast confirming that a media URL was copied as text fallback. -#: src/features/ui/action_menu/items/MediaMenuData.tsx:137 +#: src/features/ui/action_menu/items/MediaMenuData.tsx:138 msgid "URL copied to clipboard" msgstr "網址已複製到剪貼簿" @@ -36739,7 +36705,7 @@ msgid "User tag (optional)" msgstr "使用者標籤(選填)" #. Voice menu slider label for the saved volume of a specific user. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:250 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:247 msgid "User volume" msgstr "使用者音量" @@ -37227,7 +37193,7 @@ msgstr "視訊封包遺失:" #. Accessible label for a video thumbnail in the media viewer thumbnail strip. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/messaging/components/modals/media_modal/shared.ts:133 -#: src/features/messaging/components/modals/MediaViewerModal.tsx:89 +#: src/features/messaging/components/modals/MediaViewerModal.tsx:90 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:182 msgid "Video preview" msgstr "影片預覽" @@ -37283,7 +37249,7 @@ msgstr "上傳影片" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the channel and chat memes picker header. Keep it concise. #. Tab label in the mobile memes picker. Filters to saved videos. -#: src/features/channel/components/MobileMemesPicker.tsx:50 +#: src/features/channel/components/MobileMemesPicker.tsx:51 #: src/features/channel/components/pickers/memes/MemesPickerHeader.tsx:20 #: src/features/user/components/settings_utils/section_registry/ChatSettingsSections.ts:109 msgid "Videos" @@ -37633,7 +37599,7 @@ msgid "Voice & video" msgstr "語音與視訊" #. Voice menu item that opens the user settings tab for microphone, speaker, camera, and call stats. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:254 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:251 msgid "Voice & video settings" msgstr "語音與視訊設定" @@ -37685,7 +37651,7 @@ msgstr "語音與視訊快速鍵" #. Short label for a voice call (lobby header, DM action, settings section). #: src/features/user/components/modals/UserProfileMobileSheet.tsx:744 -#: src/features/voice/utils/VoiceMessageDescriptors.ts:42 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:39 msgid "Voice call" msgstr "語音通話" @@ -37753,7 +37719,7 @@ msgid "Voice connection debug" msgstr "語音連線偵錯" #. Notification sound label for the event where the user becomes deafened in voice chat. Distinct from voice mute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:172 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:169 msgid "Voice deafen" msgstr "語音耳機靜音" @@ -37780,7 +37746,7 @@ msgid "Voice message" msgstr "語音訊息" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:30 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 msgid "Voice message player" msgstr "語音訊息播放器" @@ -37832,7 +37798,7 @@ msgid "Voice settings" msgstr "語音設定" #. Notification sound label for the event where the user is no longer deafened in voice chat. Distinct from voice unmute. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:177 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:174 msgid "Voice undeafen" msgstr "語音解除耳機靜音" @@ -37904,7 +37870,7 @@ msgid "Wait here" msgstr "請在此等候" #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:48 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." msgstr "正在等待連線…" @@ -38465,17 +38431,17 @@ msgid "When posted as links in chat" msgstr "在聊天中以連結形式張貼時" #. Explanation of screen-share preview uploads in a group DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:294 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:297 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so other people in this group DM can see a thumbnail before they watch." msgstr "啟用預覽時,{productName} 會不定期上傳您螢幕分享的 JPEG 畫面,讓此群組私訊中的其他人在觀看前可以先看到縮圖。" #. Explanation of screen-share preview uploads in a guild voice channel. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:288 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:291 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so people with permission to connect to this voice channel can see a thumbnail before they watch." msgstr "啟用預覽時,{productName} 會不定期上傳您螢幕分享的 JPEG 畫面,讓有權限連線到此語音頻道的人在觀看前可以先看到縮圖。" #. Explanation of screen-share preview uploads in a one-to-one DM call. productName is the app name; JPEG is an image format name. -#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:300 +#: src/features/voice/components/modals/ScreenSharePickerModal.tsx:303 msgid "When previews are enabled, {productName} uploads occasional JPEG frames from your screen share so the other person in this DM can see a thumbnail before they watch." msgstr "啟用預覽時,{productName} 會不定期上傳您螢幕分享的 JPEG 畫面,讓此私訊中的對方在觀看前可以先看到縮圖。" @@ -38627,7 +38593,7 @@ msgid "Windows cut off at the top or bottom of the screen, and docked DevTools, msgstr "視窗在螢幕頂部或底部被裁切,以及停靠的開發人員工具,可能會呈現灰色背景而非保持透明。" #. Audio device label prefix for the operating system default audio device on Windows. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:21 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:18 msgid "Windows default" msgstr "Windows 預設值" @@ -38800,7 +38766,7 @@ msgid "You are banned from this community and cannot join." msgstr "您已被此社群停權,無法加入。" #. Voice participant status tooltip for the current user. They cannot hear voice chat. Distinct from muted. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:77 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:74 msgid "You are deafened" msgstr "您已耳機靜音" @@ -38833,11 +38799,6 @@ msgstr "您正在使用 {productName} 的 {releaseChannel} 版本。" msgid "You aren't in any communities right now." msgstr "您目前沒有加入任何社群。" -#. Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:420 -msgid "You asked for {resolution} at {frameRate} FPS" -msgstr "您要求以 {frameRate} FPS 的畫質 {resolution}" - #. Warning shown before opening or composing a DM with a user the current user has blocked. {userName} is the blocked user. #: src/features/i18n/utils/CommonMessageDescriptors.ts:180 msgid "You blocked {userName}. You won't be able to send messages unless you unblock them." @@ -39022,13 +38983,13 @@ msgstr "您無法在此社群中傳送訊息。" #. Tooltip in the voice control bar when the user lacks the Screen Share permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Screen Share permission in the voice channel. Tone stays plain. -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:57 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:54 #: src/features/voice/components/VoiceControlBar.tsx:137 msgid "You can't share your screen in this channel" msgstr "您無法在此頻道分享螢幕畫面" #. Voice control tooltip shown when channel permissions prevent the current user from speaking. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:51 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:48 msgid "You can't speak in this channel" msgstr "您無法在此頻道中發言" @@ -39036,7 +38997,7 @@ msgstr "您無法在此頻道中發言" #. Tooltip in the voice control bar when the user lacks the Video permission in this channel. Tone stays plain. #. Tooltip shown when the user lacks the Video permission in the voice channel. Tone stays plain. #: src/features/voice/components/modals/CameraPreviewModal.tsx:76 -#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:53 +#: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:50 #: src/features/voice/components/VoiceControlBar.tsx:127 msgid "You can't turn on your camera in this channel" msgstr "您無法在此頻道中開啟相機" @@ -39109,7 +39070,7 @@ msgid "You changed your tag while on {PREMIUM_PRODUCT_NAME}. It will reroll rand msgstr "您在訂閱 {PREMIUM_PRODUCT_NAME} 期間變更了標籤。除非續訂,否則您的 {PREMIUM_PRODUCT_NAME} 到期時,標籤將會隨機重新產生。" #. Body of the access-denied alert for clicked message links. -#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:121 +#: src/features/messaging/components/markdown/renderers/LinkRenderer.tsx:122 msgid "You do not have access to the channel where this message was sent." msgstr "您沒有權限存取傳送此訊息的頻道。" @@ -39350,7 +39311,7 @@ msgid "You stay in {ownedNames}. Owners cannot leave their own community." msgstr "您會留在 {ownedNames}。社群擁有者無法離開自己的社群。" #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:64 +#: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" msgstr "您已遭管理員設為耳機靜音" @@ -39699,11 +39660,6 @@ msgstr "您的申請正在審核中。您仍然可以更新刊登資訊或撤回 msgid "Your browser requires user interaction before audio can be played. Click the button below to enable voice chat." msgstr "您的瀏覽器需要使用者互動才能播放音訊。請點擊下方按鈕以啟用語音聊天。" -#. Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:378 -msgid "Your capture device is sending {deliveredResolution} instead of {resolution}." -msgstr "您的擷取裝置傳送的解析度為 {deliveredResolution},而非 {resolution}。" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:185 msgid "Your card is being checked for localized pricing. This usually takes a moment." msgstr "正在檢查您的卡片是否適用當地定價。這通常很快就會完成。" @@ -39734,36 +39690,11 @@ msgstr "您的社群已列在探索中。您可以在下方更新刊登資訊, msgid "Your community needs at least {minMemberCount, plural, one {# member} other {# members}} before it can be listed in Discovery." msgstr "您的社群至少需要 {minMemberCount, plural, one {# 位成員} other {# 位成員}} 才能列入探索。" -#. Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:367 -msgid "Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "您的連線無法負荷。您的串流設定為每秒 {frameRate} 張畫面,解析度為 {resolution},觀眾收到的畫面約為每秒 {deliveredFrameRate} 張。" - #. Body copy on the mature content check callback page after a successful check submission. #: src/features/auth/components/pages/MatureContentCheckCallbackPage.tsx:14 msgid "Your credit card has been checked. If the card is valid, mature content will unlock shortly. You can close this tab and return to the app." msgstr "您的信用卡已完成檢查。如果卡片有效,成人內容將很快解鎖。您可以關閉此分頁並返回應用程式。" -#. Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:361 -msgid "Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS." -msgstr "你的裝置跟不上。你的串流設定為每秒 {frameRate} FPS,解析度為 {resolution},觀眾收到的約為每秒 {deliveredFrameRate} FPS。" - -#. Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:339 -msgid "Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp." -msgstr "您的裝置無法跟上,因此您的串流現在會以 {frameRate} FPS 傳送,以保持 {resolution} 清晰。" - -#. Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:349 -msgid "Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS." -msgstr "你的裝置無法負荷,因此你的串流現在會以 {resolution} @ {frameRate} FPS 傳送,而不是以 {targetResolution} @ {targetFrameRate} FPS 傳送。" - -#. Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:344 -msgid "Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth." -msgstr "您的裝置無法跟上,因此您的串流現在會傳送 {resolution} 以維持 {frameRate} FPS 的流暢度。" - #. Toast confirmation after the email address has been successfully updated. #: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 msgid "Your email address has been updated." @@ -39950,31 +39881,21 @@ msgid "Your registration needs an extra anti-spam check before you can continue. msgstr "您的註冊需要額外的防垃圾訊息驗證,才能繼續。" #. Video settings note shown when the saved screen share quality is above what this account can send. Resolutions are short labels such as 1440p or Source and rates are whole numbers. FPS is a technical token. -#: src/features/user/components/modals/tabs/UserVideoTab.tsx:94 +#: src/features/user/components/modals/tabs/UserVideoTab.tsx:92 msgid "Your saved {savedResolution} at {savedFrameRate} FPS needs {premiumProductName}, so shares use {resolution} at {frameRate} FPS." msgstr "你儲存的 {savedResolution} @ {savedFrameRate} FPS 需要 {premiumProductName},因此分享會使用 {resolution} @ {frameRate} FPS。" #. Body of a modal shown when the video codec the browser negotiated for an active screen share is outside the codecs the app allows and no allowed codec could be published, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:157 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:130 msgctxt "screen-share" msgid "Your screen share could not be published with a compatible video codec, so it was stopped. Try sharing again." msgstr "由於無法使用相容的視訊編解碼器發布您的螢幕畫面,因此已停止分享。請再試一次。" -#. Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:430 -msgid "Your source is producing about {sourceFrameRate} FPS" -msgstr "你的來源大約產生 {sourceFrameRate} FPS" - #. Subtitle under the preview-paused overlay reassuring the user that the screen share is still live for others. #: src/features/voice/components/voice_participant_tile/shared.ts:64 msgid "Your stream is still live" msgstr "您的直播仍在進行中" -#. Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:355 -msgid "Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause." -msgstr "你的串流已切換至 {codec},因為此裝置的 {previousCodec} 處理速度跟不上。觀眾可能會看到短暫中斷。" - #. Toast error shown when the server refuses to move a Plutonium subscription down to the current price, whatever the reason. #: src/features/app/components/dialogs/components/plutonium/hooks/useSubscriptionActions.ts:106 msgid "Your subscription can't move to the new price right now." @@ -40064,16 +39985,11 @@ msgid "Your vanity URL has been set to {inviteEndpoint}/{vanitySlug}" msgstr "您的自訂網址已設為 {inviteEndpoint}/{vanitySlug}" #. Body of a modal shown when the local video encoder produces no frames for an active screen share, which forces the share to stop. -#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:164 +#: src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx:137 msgctxt "screen-share" msgid "Your video encoder stopped encoding frames, so your screen share was stopped. Try sharing again." msgstr "您的視訊編碼器停止編碼影格,因此您的螢幕分享已停止。請重新嘗試分享。" -#. Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8. -#: src/features/voice/utils/VoiceMessageDescriptors.ts:395 -msgid "Your video encoder stopped, so your stream switched to {codec}." -msgstr "你的視訊編碼器已停止,因此你的串流已切換至 {codec}。" - #. Label for the YouTube enrichment service toggle in the setup wizard. #: src/features/app/components/setup/SetupWizardSteps.tsx:286 msgid "YouTube enrichment" diff --git a/fluxer_app/src/features/user/components/modals/tabs/UserVideoTab.tsx b/fluxer_app/src/features/user/components/modals/tabs/UserVideoTab.tsx index 629f20d79..35c42063c 100644 --- a/fluxer_app/src/features/user/components/modals/tabs/UserVideoTab.tsx +++ b/fluxer_app/src/features/user/components/modals/tabs/UserVideoTab.tsx @@ -32,7 +32,6 @@ import { type OfferedScreenShareResolution, } from '@app/features/voice/components/StreamSettingsMenuContentStateMachine'; import ActiveScreenShareSource from '@app/features/voice/state/ActiveScreenShareSource'; -import ScreenShareDelivery from '@app/features/voice/state/ScreenShareDelivery'; import type VoiceSettings from '@app/features/voice/state/VoiceSettings'; import type {CameraResolution} from '@app/features/voice/state/VoiceSettings'; import { @@ -43,7 +42,6 @@ import { import {buildSettingsDeviceOptions} from '@app/features/voice/utils/SettingsDeviceOptions'; import {hasHigherVideoQuality} from '@app/features/voice/utils/VideoQualityEntitlement'; import {resolveEffectiveDeviceId} from '@app/features/voice/utils/VoiceDeviceManager'; -import {formatScreenShareDeliveryStatus} from '@app/features/voice/utils/VoiceMessageDescriptors'; import type {I18n} from '@lingui/core'; import {msg} from '@lingui/core/macro'; import {Trans, useLingui} from '@lingui/react/macro'; @@ -196,7 +194,6 @@ export const VideoTab: React.FC = observer( value, label: i18n._(FPS_DESCRIPTOR, {frameRate: value}), })); - const deliveryStatus = formatScreenShareDeliveryStatus(i18n, ScreenShareDelivery.plan, ScreenShareDelivery.notice); const handleCameraPreview = async () => { const granted = await requestPermission(); if (granted) { @@ -395,16 +392,6 @@ export const VideoTab: React.FC = observer( })} )} - {deliveryStatus.sending !== null && ( -
- {deliveryStatus.sending} -
- )} - {deliveryStatus.notice !== null && ( -
- {deliveryStatus.notice} -
- )}
diff --git a/fluxer_app/src/features/voice/components/ActiveScreenShareMenu.module.css b/fluxer_app/src/features/voice/components/ActiveScreenShareMenu.module.css deleted file mode 100644 index 7a4a02aeb..000000000 --- a/fluxer_app/src/features/voice/components/ActiveScreenShareMenu.module.css +++ /dev/null @@ -1,24 +0,0 @@ -/* SPDX-License-Identifier: AGPL-3.0-or-later */ - -.statusLabel { - display: flex; - flex-direction: column; - gap: var(--spacing-1); - max-width: 18rem; - padding: 0.375rem 0.5rem 0.25rem; - font-size: 0.75rem; - font-weight: 400; - line-height: 1rem; - letter-spacing: 0; - text-transform: none; - white-space: normal; - overflow-wrap: anywhere; -} - -.statusRow { - color: var(--text-tertiary); -} - -.statusNotice { - color: var(--text-secondary); -} diff --git a/fluxer_app/src/features/voice/components/ActiveScreenShareMenu.tsx b/fluxer_app/src/features/voice/components/ActiveScreenShareMenu.tsx index 65028c0dd..e1228155d 100644 --- a/fluxer_app/src/features/voice/components/ActiveScreenShareMenu.tsx +++ b/fluxer_app/src/features/voice/components/ActiveScreenShareMenu.tsx @@ -1,30 +1,21 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {Logger} from '@app/features/platform/utils/AppLogger'; -import {MenuGroupLabel} from '@app/features/ui/action_menu/ContextMenu'; import {MenuGroup} from '@app/features/ui/action_menu/MenuGroup'; import {MenuItem} from '@app/features/ui/action_menu/MenuItem'; -import styles from '@app/features/voice/components/ActiveScreenShareMenu.module.css'; import { openScreenShareSourceSwitcherModal, type ScreenSharePickerTab, } from '@app/features/voice/components/modals/ScreenSharePickerModal'; import {StreamSettingsMenuContent} from '@app/features/voice/components/StreamSettingsMenuContent'; import MediaEngine from '@app/features/voice/engine/MediaEngineFacade'; -import ScreenShareDelivery from '@app/features/voice/state/ScreenShareDelivery'; import type {DisplayShareEnvironment} from '@app/features/voice/utils/ScreenShareEnvironment'; import {isScreenShareRollbackIncompleteError} from '@app/features/voice/utils/ScreenShareRollbackIncompleteError'; import {handleScreenShareError} from '@app/features/voice/utils/ScreenShareUtils'; import type {StreamSettingsShareContext} from '@app/features/voice/utils/StreamSettingsUpdatePolicy'; -import { - formatScreenShareDeliveryStatus, - SCREEN_SHARE_TRY_FULL_QUALITY_AGAIN_DESCRIPTOR, -} from '@app/features/voice/utils/VoiceMessageDescriptors'; import {msg} from '@lingui/core/macro'; import {useLingui} from '@lingui/react/macro'; -import {ArrowCounterClockwiseIcon, MonitorPlayIcon, StopCircleIcon} from '@phosphor-icons/react'; -import {clsx} from 'clsx'; -import {observer} from 'mobx-react-lite'; +import {MonitorPlayIcon, StopCircleIcon} from '@phosphor-icons/react'; import type React from 'react'; const STOP_STREAMING_DESCRIPTOR = msg({ @@ -44,7 +35,6 @@ export interface ActiveScreenShareMenuProps { shareContextResolved: boolean; iconClassName?: string; additionalActions?: React.ReactNode; - showLiveSettings?: boolean; tail?: React.ReactNode; } @@ -62,67 +52,6 @@ export async function changeActiveScreenShare(shareContext: StreamSettingsShareC await openScreenShareSourceSwitcherModal({initialTab: getSourceSwitcherTab(shareContext)}); } -const ActiveScreenShareStatusGroup: React.FC<{ - onClose: () => void; - iconClassName?: string; - 'data-flx': string; -}> = observer(({onClose, iconClassName, 'data-flx': dataFlx}) => { - const {i18n} = useLingui(); - if (!ScreenShareDelivery.adaptive) return null; - const status = formatScreenShareDeliveryStatus(i18n, ScreenShareDelivery.plan, ScreenShareDelivery.notice); - return ( - - {status.hasRows && ( - - {status.sending !== null && ( - - {status.sending} - - )} - {status.askedFor !== null && ( - - {status.askedFor} - - )} - {status.notice !== null && ( - - {status.notice} - - )} - {status.sourceRate !== null && ( - - {status.sourceRate} - - )} - - )} - {status.canTryFullQuality && ( - - } - onClick={() => { - onClose(); - void MediaEngine.resetScreenShareDeliveryToFullQuality().catch((error) => { - logger.error('Failed to restart the screen share at full quality', error); - }); - }} - data-flx="voice.active-screen-share-menu.try-full-quality" - > - {i18n._(SCREEN_SHARE_TRY_FULL_QUALITY_AGAIN_DESCRIPTOR)} - - )} - - ); -}); - export const ActiveScreenShareMenu: React.FC = ({ onClose, displayShareEnvironment, @@ -130,7 +59,6 @@ export const ActiveScreenShareMenu: React.FC = ({ shareContextResolved, iconClassName, additionalActions, - showLiveSettings = true, tail, }) => { const {i18n} = useLingui(); @@ -144,11 +72,6 @@ export const ActiveScreenShareMenu: React.FC = ({ const handleChangeStream = () => openChangeStream(shareContext); return ( <> - = ({ {i18n._(CHANGE_STREAM_DESCRIPTOR)} {additionalActions} - {showLiveSettings && !isWeb && ( + {!isWeb && ( (EMPTY_SNAPSHOT); - const routesSelectedSources = sourceMode === 'specific' && filterRoutableLinuxAudioSources(includeSources).length > 0; const widenedScope = offersWindowScope ? ('system' as const) : undefined; const refresh = useCallback(() => { setSnapshot((prev) => ({...prev, loading: true})); @@ -218,12 +220,17 @@ export const AudioSourcePickerLinuxSubmenu = observer((props: AudioSourcePickerL includeSources, shareContext, microphoneLabel, + chosenAudioDeviceId: VoiceSettings.getScreenShareAudioDeviceId(), + deviceAudioPairing: resolveDeviceShareAudioPairing( + [...videoDevices, ...inputDevices], + MediaEngine.getActiveScreenShareVideoDeviceId(), + ), displayShareEnvironment, windowAudioScope, usesDeviceMicrophone, }); const showsWideSourceLists = !offersWindowScope || resolvedScope === 'system'; - const wideSourceIsSelected = isDeviceShare ? usesDeviceMicrophone || !routesSelectedSources : sourceMode === 'system'; + const wideSourceIsSelected = isDeviceShare ? usesDeviceMicrophone : sourceMode === 'system'; if (!snapshot.available && !snapshot.loading) { return null; } diff --git a/fluxer_app/src/features/voice/components/StreamInfoPill.tsx b/fluxer_app/src/features/voice/components/StreamInfoPill.tsx index 3578250ab..638b16f8a 100644 --- a/fluxer_app/src/features/voice/components/StreamInfoPill.tsx +++ b/fluxer_app/src/features/voice/components/StreamInfoPill.tsx @@ -4,6 +4,8 @@ import {LiveBadge} from '@app/features/ui/components/LiveBadge'; import type {TooltipPosition} from '@app/features/ui/tooltip/Tooltip'; import styles from '@app/features/voice/components/StreamInfoPill.module.css'; import type {StreamTrackInfo} from '@app/features/voice/components/useStreamTrackInfo'; +import type {ScreenShareTarget} from '@app/features/voice/utils/ScreenShareOptions'; +import {formatScreenShareTargetLabel} from '@app/features/voice/utils/VoiceMessageDescriptors'; import {msg} from '@lingui/core/macro'; import {useLingui} from '@lingui/react/macro'; import {clsx} from 'clsx'; @@ -19,8 +21,19 @@ type ResolutionHeight = 240 | 480 | 720 | 1080 | 1440 | 2160; const RESOLUTION_HEIGHTS: Array = [480, 240, 720, 1080, 1440, 2160]; +const RESOLUTION_LABELS: Record = { + 240: '240p', + 480: '480p', + 720: '720p', + 1080: '1080p', + 1440: '1440p', + 2160: '4K', +}; + type StreamInfoPillTone = 'default' | 'voice_tile'; +export type StreamInfoPillQuality = StreamTrackInfo | {target: ScreenShareTarget}; + function getClosestResolutionHeight(height: number) { let closest: ResolutionHeight = RESOLUTION_HEIGHTS[0]; let smallestDiff = Math.abs(height - closest); @@ -35,7 +48,7 @@ function getClosestResolutionHeight(height: number) { } interface StreamInfoPillProps { - info: StreamTrackInfo; + info: StreamInfoPillQuality; className?: string; showLiveBadge?: boolean; tone?: StreamInfoPillTone; @@ -50,29 +63,17 @@ export function StreamInfoPill({ liveBadgeTooltipPosition, }: StreamInfoPillProps) { const {i18n} = useLingui(); - const resolutionText = useMemo(() => { - const targetHeight = getClosestResolutionHeight(info.height); - switch (targetHeight) { - case 240: - return '240p'; - case 480: - return '480p'; - case 720: - return '720p'; - case 1080: - return '1080p'; - case 1440: - return '1440p'; - case 2160: - return '4K'; - default: - return '720p'; - } - }, [info.height]); const labelText = useMemo(() => { + if ('target' in info) { + return i18n._(RESOLUTION_WITH_FPS_DESCRIPTOR, { + resolution: formatScreenShareTargetLabel(i18n, info.target), + fps: i18n.number(info.target.frameRate), + }); + } + const resolutionText = RESOLUTION_LABELS[getClosestResolutionHeight(info.height)]; if (!Number.isFinite(info.fps) || info.fps <= 0) return resolutionText; return i18n._(RESOLUTION_WITH_FPS_DESCRIPTOR, {resolution: resolutionText, fps: i18n.number(info.fps)}); - }, [info.fps, i18n.locale, resolutionText]); + }, [info, i18n.locale]); return (
| null; -} - -type StreamViewerVoiceStates = Readonly< - Record>>>> ->; - -export function countStreamViewers( - voiceStates: StreamViewerVoiceStates, - streamKey: string, - publisherUserId: string | null, -): number { - const viewers = new Set(); - for (const guildStates of Object.values(voiceStates)) { - for (const channelStates of Object.values(guildStates)) { - for (const voiceState of Object.values(channelStates)) { - if (!voiceState || voiceState.user_id === publisherUserId) continue; - if (!voiceState.viewer_stream_keys?.includes(streamKey)) continue; - viewers.add(voiceState.user_id); - } - } - } - return viewers.size; -} diff --git a/fluxer_app/src/features/voice/components/StreamSettingsMenuContent.tsx b/fluxer_app/src/features/voice/components/StreamSettingsMenuContent.tsx index 1d0a13d36..1c092e7b8 100644 --- a/fluxer_app/src/features/voice/components/StreamSettingsMenuContent.tsx +++ b/fluxer_app/src/features/voice/components/StreamSettingsMenuContent.tsx @@ -24,10 +24,9 @@ import { import MediaEngine, {useMediaEngineVersion} from '@app/features/voice/engine/MediaEngineFacade'; import ScreenShareCodecNegotiation from '@app/features/voice/engine/ScreenShareCodecNegotiation'; import {VoiceTrackSource} from '@app/features/voice/engine/VoiceTrackSource'; -import {resolveConfiguredScreenShareLadder} from '@app/features/voice/engine/voice_screen_share_manager/shared'; +import {resolveConfiguredScreenShareTarget} from '@app/features/voice/engine/voice_screen_share_manager/shared'; import {useMediaDevices} from '@app/features/voice/hooks/useMediaDevices'; import ActiveScreenShareSource from '@app/features/voice/state/ActiveScreenShareSource'; -import ScreenShareDelivery from '@app/features/voice/state/ScreenShareDelivery'; import VoiceSettings, {type StreamingMode} from '@app/features/voice/state/VoiceSettings'; import {filterRoutableLinuxAudioSources} from '@app/features/voice/utils/LinuxAudioSourceRules'; import { @@ -68,7 +67,7 @@ import type {NativeAudioAvailability} from '@app/types/electron.d'; import type {I18n} from '@lingui/core'; import {msg} from '@lingui/core/macro'; import {Trans, useLingui} from '@lingui/react/macro'; -import {CrownSimpleIcon, MicrophoneIcon} from '@phosphor-icons/react'; +import {CrownSimpleIcon, MicrophoneIcon, WaveformIcon} from '@phosphor-icons/react'; import type {Track} from 'livekit-client'; import {observer} from 'mobx-react-lite'; import {useCallback, useEffect, useMemo, useState} from 'react'; @@ -218,9 +217,8 @@ async function runActiveStreamSettingsPush( options: PushActiveStreamSettingsOptions, ): Promise { const sourceDimensions = ActiveScreenShareSource.getSourceDimensions(); - const ladder = resolveConfiguredScreenShareLadder(shareContext, sourceDimensions); - const {target} = ladder; - ScreenShareDelivery.retarget(ladder); + const target = resolveConfiguredScreenShareTarget(shareContext, sourceDimensions); + ActiveScreenShareSource.setTarget(target); const preferredDisplaySurface = getPreferredDisplaySurface(shareContext); const canControlAudio = supportsStreamAudioCapture(shareContext); const includeAudio = @@ -851,7 +849,7 @@ const StreamSettingsAudioGroup = observer((props: StreamSettingsAudioGroupProps) data-flx="voice.stream-settings-menu-content.audio-group.audio-device-default" > - - Follow voice input + Device audio only - {selectedAudioDeviceLabel} + Silent when the capture device has no audio input of its own diff --git a/fluxer_app/src/features/voice/components/VoiceConnectionStatus.module.css b/fluxer_app/src/features/voice/components/VoiceConnectionStatus.module.css index 3e20ae0e1..009632ee2 100644 --- a/fluxer_app/src/features/voice/components/VoiceConnectionStatus.module.css +++ b/fluxer_app/src/features/voice/components/VoiceConnectionStatus.module.css @@ -274,17 +274,6 @@ width: 1.25rem; } -.noticeDot { - position: absolute; - top: 0.25rem; - right: 0.25rem; - height: 0.4375rem; - width: 0.4375rem; - border-radius: 50%; - background-color: var(--status-warning); - pointer-events: none; -} - .popoutContainer { display: flex; flex-direction: column; diff --git a/fluxer_app/src/features/voice/components/VoiceParticipantTile.module.css b/fluxer_app/src/features/voice/components/VoiceParticipantTile.module.css index 16cf38832..6ceb7aaa4 100644 --- a/fluxer_app/src/features/voice/components/VoiceParticipantTile.module.css +++ b/fluxer_app/src/features/voice/components/VoiceParticipantTile.module.css @@ -220,12 +220,6 @@ color: var(--status-danger); } -.streamUnderperformanceSlot { - padding: 0 0.375rem; - color: var(--status-warning); - cursor: default; -} - .avatarFlexShrink { flex-shrink: 0; } diff --git a/fluxer_app/src/features/voice/components/VoiceParticipantTile.tsx b/fluxer_app/src/features/voice/components/VoiceParticipantTile.tsx index 332cdd773..9f59e9c39 100644 --- a/fluxer_app/src/features/voice/components/VoiceParticipantTile.tsx +++ b/fluxer_app/src/features/voice/components/VoiceParticipantTile.tsx @@ -40,7 +40,7 @@ import {usePoppedOutTransition} from '@app/features/voice/components/popout/useP import {VoicePopoutScopeContext} from '@app/features/voice/components/popout/VoicePopoutScopeContext'; import {ScreenShareBufferingFrame} from '@app/features/voice/components/ScreenShareBufferingFrame'; import {registerStreamAudioPrefsTouch} from '@app/features/voice/components/StreamAudioPrefsTouchScheduler'; -import {StreamInfoPill} from '@app/features/voice/components/StreamInfoPill'; +import {StreamInfoPill, type StreamInfoPillQuality} from '@app/features/voice/components/StreamInfoPill'; import {getStreamKey} from '@app/features/voice/components/StreamKeys'; import {StreamSpectatorsPopout} from '@app/features/voice/components/StreamSpectatorsPopout'; import {StreamWatchHoverCard} from '@app/features/voice/components/StreamWatchHoverCard'; @@ -93,7 +93,6 @@ import { STREAM_BUFFERING_DESCRIPTOR, STREAM_ENDED_DESCRIPTOR, STREAM_HIDDEN_DESCRIPTOR, - STREAM_NOT_KEEPING_UP_DESCRIPTOR, TILE_AVATAR_BASE, TILE_AVATAR_MEDIA_SIZE, TILE_AVATAR_STYLE, @@ -108,11 +107,6 @@ import { import {WatchStreamOverlay} from '@app/features/voice/components/voice_participant_tile/WatchStreamOverlay'; import MediaEngine, {useMediaEngineVersion, useVoiceEngineV2Model} from '@app/features/voice/engine/MediaEngineFacade'; import ScreenSharePublicationMigration from '@app/features/voice/engine/ScreenSharePublicationMigration'; -import { - resolveScreenShareDeliveryNoticeTone, - resolveScreenShareDeliverySentInfo, - showsScreenShareDeliverySentInfo, -} from '@app/features/voice/engine/ScreenShareUnderperformance'; import {useStoreVersion} from '@app/features/voice/engine/Store'; import { selectVoiceMediaGraphDeferredStopKeys, @@ -128,10 +122,10 @@ import { VoiceTrackSource, } from '@app/features/voice/engine/VoiceTrackSource'; import {selectVoiceEngineV2AppEffectiveSelfMuteForVoiceStatePayload} from '@app/features/voice/engine/v2/VoiceEngineV2AppSelectors'; +import ActiveScreenShareSource from '@app/features/voice/state/ActiveScreenShareSource'; import CallMediaPrefs from '@app/features/voice/state/CallMediaPrefs'; import LocalVoiceState from '@app/features/voice/state/LocalVoiceState'; import PopoutWindowManager, {getVoiceTilePopoutKey} from '@app/features/voice/state/PopoutWindowManager'; -import ScreenShareDelivery from '@app/features/voice/state/ScreenShareDelivery'; import { getScreenShareWatchFailureForPublicationOperation, ScreenShareWatchFailures, @@ -145,11 +139,9 @@ import { } from '@app/features/voice/utils/ScreenShareSubscriptionPolicy'; import {canViewStreamPreview} from '@app/features/voice/utils/StreamPreviewPermissionUtils'; import { - formatScreenShareDeliveryNotice, getVoiceDeafenedByModeratorsStatusLabel, getVoiceDeafenedStatusLabel, getVoiceNoSpeakPermissionLabel, - SCREEN_SHARE_SETTINGS_ADJUSTED_DESCRIPTOR, VOICE_MUTED_BY_MODERATORS_DESCRIPTOR, VOICE_STOP_WATCHING_DESCRIPTOR, } from '@app/features/voice/utils/VoiceMessageDescriptors'; @@ -166,12 +158,10 @@ import { DeviceMobileIcon, DotsThreeIcon, EyeIcon, - InfoIcon, MicrophoneSlashIcon, PauseIcon, SpeakerSlashIcon, VideoCameraSlashIcon, - WarningIcon, } from '@phosphor-icons/react'; import {clsx} from 'clsx'; import type {Participant, RemoteTrackPublication, Track} from 'livekit-client'; @@ -357,9 +347,6 @@ const VoiceParticipantTileInner = observer(function VoiceParticipantTileInner({ const streamKey = useMemo(() => getStreamKey(guildId, channelId, connectionId), [guildId, channelId, connectionId]); const {viewerIds, viewerUsers, spectatorEntries} = useStreamSpectators(isScreenShare ? streamKey : '', userId); const hasSpectatorDemand = viewerIds.length > 0; - const deliveryNotice = isOwnScreenShare && !isFocusedPlaceholderTile ? ScreenShareDelivery.notice : null; - const isDeliveryWarning = - deliveryNotice !== null && resolveScreenShareDeliveryNoticeTone(deliveryNotice) === 'warning'; const isCameraTile = isCameraSource(trackRef.source); const cameraLocallyDisabled = callId !== '' && isCameraTile && CallMediaPrefs.isVideoDisabled(callId, identity); const screenSharePublicationMigrationVersion = ScreenSharePublicationMigration.version; @@ -552,18 +539,17 @@ const VoiceParticipantTileInner = observer(function VoiceParticipantTileInner({ const {previewUrl, isPreviewLoading} = useStreamPreview(previewEnabled, streamKey); const isStreamPlaceholder = isScreenShare && !isTrackReference(trackRef); const screenShareTrackSid = publication?.trackSid ?? null; - const showsSentDeliveryInfo = showsScreenShareDeliverySentInfo(isOwnScreenShare, ScreenShareDelivery.adaptive); + const committedTarget = isOwnScreenShare && ActiveScreenShareSource.encoding ? ActiveScreenShareSource.target : null; const capturedTrackInfo = useStreamTrackInfo( - isScreenShare && !showsSentDeliveryInfo && !isFocusPresentationTile ? trackRef : null, + isScreenShare && !isOwnScreenShare && !isFocusPresentationTile ? trackRef : null, { nativeSource: isScreenShare ? VoiceTrackSource.ScreenShare : null, nativeTrackSid: screenShareTrackSid, participantIdentity: identity, }, ); - const trackInfo = showsSentDeliveryInfo - ? resolveScreenShareDeliverySentInfo(ScreenShareDelivery.plan) - : capturedTrackInfo; + const ownTargetInfo: StreamInfoPillQuality | null = committedTarget === null ? null : {target: committedTarget}; + const trackInfo = isOwnScreenShare ? ownTargetInfo : capturedTrackInfo; const isPublicationDesired = publication?.isDesired ?? publication?.isSubscribed ?? false; useScreenShareWatchFailure({ enabled: @@ -676,7 +662,6 @@ const VoiceParticipantTileInner = observer(function VoiceParticipantTileInner({ const showTileSpectatorPill = !isFocusPresentationTile && isScreenShare && viewerUsers.length > 0; const showTileControlPill = shouldShowTileControlPill({ isFocusedPlaceholderTile, - hasDeliveryNotice: deliveryNotice !== null, showStreamAudioControls, showSpectatorPill: showTileSpectatorPill, showGroupHiddenPill: isGridTile && groupHiddenCount > 0, @@ -1343,36 +1328,6 @@ const VoiceParticipantTileInner = observer(function VoiceParticipantTileInner({ )} - {deliveryNotice && ( - -
- {isDeliveryWarning ? ( - - ) : ( - - )} -
-
- )} {showTileSpectatorPill && ( { const guildId = MediaEngine.guildId; const canStream = !guildId || !channelId || Permission.can(Permissions.STREAM, {channelId}); const isCameraUserCapReached = useCameraUserCapBlocked(isCameraEnabled); - const screenShareNotice = ScreenShareDelivery.notice; const controlState = selectLocalParticipantControlsViewState({ isConnected, canStream, isCameraEnabled, isCameraUserCapReached, isScreenShareEnabled, - screenShareNoticeTone: screenShareNotice === null ? null : resolveScreenShareDeliveryNoticeTone(screenShareNotice), }); const cameraControlState = controlState.camera; const screenShareControlState = controlState.screenShare; @@ -200,10 +195,6 @@ export const LocalParticipantControls = observer(() => { return i18n._(VOICE_SHARE_SCREEN_DESCRIPTOR); } })(); - const screenShareTooltip = - screenShareControlState.showsNotice && screenShareNotice - ? formatScreenShareDeliveryNotice(i18n, screenShareNotice) - : screenShareLabel; return ( <> @@ -238,7 +229,7 @@ export const LocalParticipantControls = observer(() => { - + { className={styles.mediaIcon} data-flx="voice.voice-connection-status.local-participant-controls.media-icon--3" /> - {screenShareControlState.showsNoticeDot && ( - - )} diff --git a/fluxer_app/src/features/voice/components/voice_connection_status/LocalParticipantControlsStateMachine.ts b/fluxer_app/src/features/voice/components/voice_connection_status/LocalParticipantControlsStateMachine.ts index 7e0c3ea9d..64cc377d2 100644 --- a/fluxer_app/src/features/voice/components/voice_connection_status/LocalParticipantControlsStateMachine.ts +++ b/fluxer_app/src/features/voice/components/voice_connection_status/LocalParticipantControlsStateMachine.ts @@ -1,6 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import type {ScreenShareDeliveryNoticeTone} from '@app/features/voice/engine/ScreenShareUnderperformance'; import {initialTransition, setup, transition} from 'xstate'; export type LocalParticipantMediaControl = 'camera' | 'screenShare'; @@ -29,7 +28,6 @@ export interface LocalParticipantControlSignals { isCameraEnabled: boolean; isCameraUserCapReached: boolean; isScreenShareEnabled: boolean; - screenShareNoticeTone: ScreenShareDeliveryNoticeTone | null; } interface LocalParticipantMediaControlEvent { @@ -52,8 +50,6 @@ export interface LocalParticipantScreenShareControlState { clickAction: LocalParticipantScreenShareClickAction; canOpenMenu: boolean; canPreloadPicker: boolean; - showsNotice: boolean; - showsNoticeDot: boolean; } export interface LocalParticipantControlsViewState { @@ -141,7 +137,6 @@ export function selectLocalParticipantControlsViewState( const screenShareValue = selectLocalParticipantMediaControlState('screenShare', signals); const cameraDisabled = isDisabled(cameraValue); const screenShareDisabled = isDisabled(screenShareValue); - const noticeTone = screenShareValue === 'active' ? signals.screenShareNoticeTone : null; return { camera: { value: cameraValue, @@ -156,8 +151,6 @@ export function selectLocalParticipantControlsViewState( clickAction: screenShareValue === 'active' ? 'openMenu' : screenShareValue === 'ready' ? 'openPicker' : 'none', canOpenMenu: screenShareValue === 'active', canPreloadPicker: screenShareValue === 'ready', - showsNotice: noticeTone !== null, - showsNoticeDot: noticeTone === 'warning', }, }; } diff --git a/fluxer_app/src/features/voice/components/voice_participant_tile/shared.ts b/fluxer_app/src/features/voice/components/voice_participant_tile/shared.ts index e801570d3..62178c713 100644 --- a/fluxer_app/src/features/voice/components/voice_participant_tile/shared.ts +++ b/fluxer_app/src/features/voice/components/voice_participant_tile/shared.ts @@ -75,11 +75,6 @@ export const WATCHING_DESCRIPTOR = msg({ comment: 'Spectator count badge on a screen-share tile. {length} is the integer number of viewers. Consider pluralization on review.', }); -export const STREAM_NOT_KEEPING_UP_DESCRIPTOR = msg({ - message: 'Stream is not keeping up', - comment: - 'Accessible label for a passive badge on your own screen-share tile, shown when the encoder stays below the frame rate you asked for.', -}); export const MUTED_DESCRIPTOR = msg({ message: 'Muted', context: 'microphone-state', diff --git a/fluxer_app/src/features/voice/engine/MediaEngineFacade.ts b/fluxer_app/src/features/voice/engine/MediaEngineFacade.ts index 44ecf34db..c74c4898b 100644 --- a/fluxer_app/src/features/voice/engine/MediaEngineFacade.ts +++ b/fluxer_app/src/features/voice/engine/MediaEngineFacade.ts @@ -2112,10 +2112,6 @@ class MediaEngineFacade extends Store { await voiceEngineV2AppScreenShareExecutionAdapter.startDeviceScreenShare(this.room, options, publishOptions); } - async resetScreenShareDeliveryToFullQuality(): Promise { - await voiceEngineV2AppScreenShareExecutionAdapter.resetScreenShareDeliveryToFullQuality(); - } - private createScreenShareControllerGateway(): VoiceEngineV2AppScreenShareControllerGateway { const plannedScreenOperationIds = (commands: ReadonlyArray): Array => { const operationIds: Array = []; diff --git a/fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.ts b/fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.ts index dc36b4c7f..51de425b6 100644 --- a/fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.ts +++ b/fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.ts @@ -2,7 +2,6 @@ import {getDesktopTroubleshootingSettings} from '@app/features/devtools/utils/DesktopTroubleshootingUtils'; import {Logger} from '@app/features/platform/utils/AppLogger'; -import ScreenShareDelivery from '@app/features/voice/state/ScreenShareDelivery'; import VoiceSettings from '@app/features/voice/state/VoiceSettings'; import { buildScreenShareCodecProfile, @@ -32,7 +31,6 @@ import { VIDEO_CODEC_NAMES, } from '@app/features/voice/utils/ScreenShareCodecSelection'; import { - clearScreenShareDecodeFailures, getScreenShareDecodeFailures, getVideoDecoderExclusionsSync, loadVideoDecoderExclusions, @@ -144,7 +142,6 @@ export function getScreenShareCodecPreferenceOrder( profile: buildScreenShareCodecProfile(), encoderModeSetting: VoiceSettings.getScreenShareEncoderMode(), pin: preference, - verdicts: ScreenShareDelivery.verdicts, }).order; } @@ -525,7 +522,6 @@ class ScreenShareCodecNegotiation { this.answeredIdentities.clear(); this.mediaSessionId = createId('media'); this.negotiationSnapshot = createScreenShareCodecNegotiationSnapshot(); - clearScreenShareDecodeFailures(); } async publishLocalCapabilities( diff --git a/fluxer_app/src/features/voice/engine/ScreenShareUnderperformance.ts b/fluxer_app/src/features/voice/engine/ScreenShareUnderperformance.ts deleted file mode 100644 index f9fde50fa..000000000 --- a/fluxer_app/src/features/voice/engine/ScreenShareUnderperformance.ts +++ /dev/null @@ -1,1059 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import type {ScreenShareEncoderMode} from '@app/features/voice/utils/CodecCapabilityDetector'; -import type { - ScreenShareContext, - ScreenShareKeptAxis, - ScreenShareLevel, -} from '@app/features/voice/utils/ScreenShareOptions'; -import type {VideoCodec} from 'livekit-client'; - -export type ScreenShareQualityLimitationReason = 'none' | 'cpu' | 'bandwidth' | 'other' | 'unknown'; - -export function parseScreenShareQualityLimitationReason(value: unknown): ScreenShareQualityLimitationReason { - if (value === 'none' || value === 'cpu' || value === 'bandwidth' || value === 'other') { - return value; - } - return 'unknown'; -} - -export const SCREEN_SHARE_DELIVERY_FIRST_TICK_MS = 2500; -export const SCREEN_SHARE_DELIVERY_TICK_MS = 2000; -const GAP_MS = 3000; -const WARMUP_MIN_TICKS = 3; -const RAMP_MAX_TICKS = 14; -const RAMP_LOOKBACK_TICKS = 3; -const RAMP_RISE_RATIO = 1.05; -const RAMP_STALL_TICKS = 3; -const STALL_TICKS = 2; -const WINDOW_TICKS = 5; -const ACT_TICKS = 4; -const SHORT_RATIO = 0.85; -const RESOLUTION_SHORT_RATIO = 0.9; -const WATCHABLE_TEXT_FPS = 7.5; -const MOTION_CAP_RATIO = 0.85; -const CONNECTION_TARGET_RATIO = 0.85; -const TARGET_FILL_RATIO = 0.65; -const ENCODE_DUTY_LIMIT = 1.0; -const CPU_REASON_TICKS = 3; -const IDLE_EXPECTED_FPS = 2; -const IDLE_SENT_RATIO = 0.25; -const SOURCE_LIMITED_MIN_FPS = 2; -const CLEAR_OK_TICKS = 5; -const PROBE_BUSY_OK_TICKS = 30; -const MULTI_LAYER_MIN_VIEWERS = 2; -const MULTI_LAYER_ON_TICKS = 5; -const MULTI_LAYER_OFF_TICKS = 30; -const MAX_LAYERING_CHANGES = 2; -const MAX_UP_PROBES = 4; -const MAX_DELIVERY_SWITCHES = 1; -const PROBE_RETRY_MS = 86_400_000; -const MEMORY_TTL_MS = 14 * 24 * 60 * 60 * 1000; -const MAX_MEMORY_ENTRIES = 64; - -interface DeliveryStatsEntry { - type?: string; - id?: string; - kind?: string; - mediaType?: string; - mimeType?: string; - codecId?: string; - mediaSourceId?: string; - active?: boolean; - framesEncoded?: number; - bytesSent?: number; - headerBytesSent?: number; - totalEncodeTime?: number; - frameWidth?: number; - frameHeight?: number; - targetBitrate?: number; - qualityLimitationReason?: unknown; - encoderImplementation?: string; - timestamp?: number; - frames?: number; - framesPerSecond?: number; - width?: number; - height?: number; -} - -export interface ScreenShareDeliveryCounters { - timestamp: number; - framesEncoded: number; - bytesSent: number; - headerBytesSent: number; - totalEncodeTime: number | null; - sourceFrames: number | null; -} - -export interface ScreenShareDeliverySample { - active: boolean; - counters: ScreenShareDeliveryCounters | null; - dtMs: number | null; - encodedFrames: number | null; - encodedFps: number | null; - sourceFrames: number | null; - sourceFps: number | null; - reportedSourceFps: number | null; - sentBps: number | null; - encodeSecondsPerFrame: number | null; - fill: number | null; - sentWidth: number | null; - sentHeight: number | null; - captureWidth: number | null; - captureHeight: number | null; - targetBitrate: number | null; - limitationReason: ScreenShareQualityLimitationReason; - encoderImplementation: string | null; - countersReset: boolean; -} - -export type ScreenShareDeliveryTickKind = 'inactive' | 'gap' | 'stalled' | 'idle' | 'short' | 'resolution-short' | 'ok'; - -export type ScreenShareDeliveryNotice = - | {kind: 'device-framerate'; width: number; height: number; frameRate: number} - | {kind: 'device-resolution'; width: number; height: number; frameRate: number} - | { - kind: 'device-crossover'; - width: number; - height: number; - frameRate: number; - targetWidth: number; - targetHeight: number; - targetFrameRate: number; - } - | {kind: 'codec-switched'; codec: VideoCodec; previousCodec: VideoCodec} - | {kind: 'device-short'; width: number; height: number; frameRate: number; deliveredFrameRate: number} - | {kind: 'connection-short'; width: number; height: number; frameRate: number; deliveredFrameRate: number} - | {kind: 'browser-resolution'; width: number; height: number; deliveredWidth: number; deliveredHeight: number} - | {kind: 'capture-resolution'; width: number; height: number; deliveredWidth: number; deliveredHeight: number} - | { - kind: 'started-lower'; - width: number; - height: number; - frameRate: number; - targetWidth: number; - targetHeight: number; - targetFrameRate: number; - } - | {kind: 'pinned-codec-short'; codec: VideoCodec} - | {kind: 'encoder-recovered'; codec: VideoCodec} - | {kind: 'codec-viewer'; codec: VideoCodec; pinnedCodec: VideoCodec} - | {kind: 'codec-device'; codec: VideoCodec; pinnedCodec: VideoCodec} - | {kind: 'apply-failed'}; - -export type ScreenShareDeliveryDecision = - | {kind: 'none'} - | {kind: 'step'; levelIndex: number} - | {kind: 'probe'; levelIndex: number} - | {kind: 'revert-probe'; levelIndex: number} - | {kind: 'reapply-level'} - | {kind: 'switch-codec'; codec: VideoCodec} - | {kind: 'republish-layering'; multiLayer: boolean} - | {kind: 'recover-stalled'} - | {kind: 'stop-stalled'}; - -export type ScreenShareDeliveryMemoryWrite = - | {kind: 'short'; ratio: number} - | {kind: 'settled'; settledIndex: number} - | {kind: 'probe-blocked'}; - -export interface ScreenShareDeliveryShareCounters { - switches: number; - probes: number; - layerings: number; - probeBlocked: boolean; - toastShown: boolean; -} - -export interface ScreenShareDeliveryContext { - adaptive: boolean; - levels: ReadonlyArray; - keep: ScreenShareKeptAxis; - context: ScreenShareContext; - codec: VideoCodec; - pinned: boolean; - alternativeCodec: VideoCodec | null; - codecFailed: boolean; - lastApplyFailed: boolean; - paused: boolean; - viewers: number; - multiLayer: boolean; - multiLayerAvailable: boolean; - monitoredMaxBitrate: number; - shareCounters: ScreenShareDeliveryShareCounters; -} - -interface ScreenShareDeliveryWindowTick { - kind: ScreenShareDeliveryTickKind; - ratio: number; - encodedFps: number; - sourceFps: number | null; - targetBitrate: number | null; - cpu: boolean; - duty: number | null; - fill: number | null; - sentWidth: number | null; - sentHeight: number | null; -} - -export type ScreenShareDeliveryShortCause = - | 'cpu' - | 'stalled' - | 'duty' - | 'ratio' - | 'ratio-unmeasured' - | 'fill' - | 'connection' - | 'connection-unmeasured'; - -export interface ScreenShareDeliveryState { - ticks: number; - levelIndex: number; - samples: number; - warmedUp: boolean; - targets: Array; - window: Array; - stalledRun: number; - okRun: number; - busyOkRun: number; - multiLayerRun: number; - singleLayerRun: number; - probeFrom: number | null; - settledWritten: boolean; - resolutionReapplied: boolean; - pinnedNoticeShown: boolean; - applyFailed: boolean; - holdingShort: boolean; - notice: ScreenShareDeliveryNotice | null; - shortCause: ScreenShareDeliveryShortCause | null; - sourceFrameRate: number | null; - deliveredFrameRate: number | null; - sentWidth: number | null; - sentHeight: number | null; -} - -export interface ScreenShareDeliveryEvaluation { - kind: ScreenShareDeliveryTickKind; - decision: ScreenShareDeliveryDecision; - notice: ScreenShareDeliveryNotice | null; - noticeChanged: boolean; - memoryWrite: ScreenShareDeliveryMemoryWrite | null; - levelIndex: number; - warmingUp: boolean; - shortCause: ScreenShareDeliveryShortCause | null; -} - -export interface ScreenShareDeliveryDescription { - level: ScreenShareLevel; - levelIndex: number; - deliveredFrameRate: number | null; - sentWidth: number | null; - sentHeight: number | null; - sourceFrameRate: number | null; - notice: ScreenShareDeliveryNotice | null; - holdingShort: boolean; -} - -export function getStatsKind( - report: {kind?: string; mediaType?: string; codecId?: string}, - reportsById: ReadonlyMap, -): string | undefined { - if (report.kind || report.mediaType) return report.kind ?? report.mediaType; - if (!report.codecId) return undefined; - const codec = reportsById.get(report.codecId); - return codec?.mimeType?.startsWith('video/') ? 'video' : undefined; -} - -function finiteOrNull(value: unknown): number | null { - return typeof value === 'number' && Number.isFinite(value) ? value : null; -} - -function median(values: ReadonlyArray): number { - const sorted = [...values].sort((first, second) => first - second); - return sorted[Math.floor((sorted.length - 1) / 2)]; -} - -const INACTIVE_SAMPLE_FIELDS = { - active: false, - counters: null, - dtMs: null, - encodedFrames: null, - encodedFps: null, - sourceFrames: null, - sourceFps: null, - reportedSourceFps: null, - sentBps: null, - encodeSecondsPerFrame: null, - fill: null, - sentWidth: null, - sentHeight: null, - captureWidth: null, - captureHeight: null, - targetBitrate: null, - limitationReason: 'unknown', - encoderImplementation: null, - countersReset: false, -} as const satisfies ScreenShareDeliverySample; - -export function readScreenShareDeliverySample( - stats: RTCStatsReport, - previousCounters: ScreenShareDeliveryCounters | null, -): ScreenShareDeliverySample { - const reportsById = new Map(); - const outbound: Array = []; - for (const raw of stats.values()) { - const report = raw as DeliveryStatsEntry; - if (typeof report.id === 'string') { - reportsById.set(report.id, report); - } - if (report.type === 'outbound-rtp') { - outbound.push(report); - } - } - let selected: DeliveryStatsEntry | null = null; - let selectedPixels = -1; - for (const report of outbound) { - if (getStatsKind(report, reportsById) !== 'video') continue; - if (report.active === false) continue; - const pixels = (finiteOrNull(report.frameWidth) ?? 0) * (finiteOrNull(report.frameHeight) ?? 0); - if (pixels <= selectedPixels) continue; - selected = report; - selectedPixels = pixels; - } - if (selected === null) return {...INACTIVE_SAMPLE_FIELDS}; - const source = selected.mediaSourceId ? reportsById.get(selected.mediaSourceId) : undefined; - const timestamp = finiteOrNull(selected.timestamp) ?? 0; - const framesEncoded = finiteOrNull(selected.framesEncoded) ?? 0; - const bytesSent = finiteOrNull(selected.bytesSent) ?? 0; - const headerBytesSent = finiteOrNull(selected.headerBytesSent) ?? 0; - const totalEncodeTime = finiteOrNull(selected.totalEncodeTime); - const sourceFrames = finiteOrNull(source?.frames); - const countersReset = - previousCounters !== null && - (timestamp < previousCounters.timestamp || - framesEncoded < previousCounters.framesEncoded || - bytesSent < previousCounters.bytesSent || - headerBytesSent < previousCounters.headerBytesSent || - (totalEncodeTime !== null && - previousCounters.totalEncodeTime !== null && - totalEncodeTime < previousCounters.totalEncodeTime) || - (sourceFrames !== null && - previousCounters.sourceFrames !== null && - sourceFrames < previousCounters.sourceFrames)); - const previous = countersReset ? null : previousCounters; - const dtMs = previous === null ? null : timestamp - previous.timestamp; - const seconds = dtMs !== null && dtMs > 0 ? dtMs / 1000 : null; - const encodedFrames = framesEncoded - (previous?.framesEncoded ?? 0); - const previousSourceFrames = previous === null ? 0 : previous.sourceFrames; - const sourceFrameDelta = - sourceFrames === null || previousSourceFrames === null ? null : sourceFrames - previousSourceFrames; - const reportedSourceFps = finiteOrNull(source?.framesPerSecond); - const targetBitrate = finiteOrNull(selected.targetBitrate); - const previousEncodeTime = previous === null ? null : previous.totalEncodeTime; - const sentWithHeaderBps = - seconds === null || previous === null - ? null - : ((bytesSent - previous.bytesSent + headerBytesSent - previous.headerBytesSent) * 8) / seconds; - return { - active: true, - counters: {timestamp, framesEncoded, bytesSent, headerBytesSent, totalEncodeTime, sourceFrames}, - dtMs, - encodedFrames, - encodedFps: seconds === null ? null : encodedFrames / seconds, - sourceFrames: sourceFrameDelta, - sourceFps: seconds !== null && sourceFrameDelta !== null ? sourceFrameDelta / seconds : (reportedSourceFps ?? null), - reportedSourceFps, - sentBps: seconds === null || previous === null ? null : ((bytesSent - previous.bytesSent) * 8) / seconds, - encodeSecondsPerFrame: - totalEncodeTime === null || previousEncodeTime === null || encodedFrames <= 0 - ? null - : (totalEncodeTime - previousEncodeTime) / encodedFrames, - fill: sentWithHeaderBps === null || targetBitrate === null ? null : sentWithHeaderBps / targetBitrate, - sentWidth: finiteOrNull(selected.frameWidth), - sentHeight: finiteOrNull(selected.frameHeight), - captureWidth: finiteOrNull(source?.width), - captureHeight: finiteOrNull(source?.height), - targetBitrate, - limitationReason: parseScreenShareQualityLimitationReason(selected.qualityLimitationReason), - encoderImplementation: typeof selected.encoderImplementation === 'string' ? selected.encoderImplementation : null, - countersReset, - }; -} - -function isStalledSample(sample: ScreenShareDeliverySample): boolean { - if (sample.encodedFrames !== 0) return false; - return (sample.sourceFrames ?? 0) >= 2 || (sample.reportedSourceFps ?? 0) > 0; -} - -function resolveExpectedFrameRate(sample: ScreenShareDeliverySample, level: ScreenShareLevel): number { - if (sample.limitationReason === 'cpu') return level.frameRate; - if (sample.sourceFps === null) return level.frameRate; - return Math.min(level.frameRate, sample.sourceFps); -} - -function resolveExpectedPixels( - sample: ScreenShareDeliverySample, - level: ScreenShareLevel, - context: ScreenShareContext, -): number | null { - const levelPixels = level.width * level.height; - if (context === 'device') return levelPixels; - if (sample.captureWidth === null || sample.captureHeight === null) return null; - return Math.min(levelPixels, sample.captureWidth * sample.captureHeight); -} - -function measureScreenShareTick( - sample: ScreenShareDeliverySample, - level: ScreenShareLevel, - ctx: ScreenShareDeliveryContext, -): {kind: ScreenShareDeliveryTickKind; ratio: number} { - if (!sample.active || ctx.paused) return {kind: 'inactive', ratio: 1}; - if (sample.countersReset || (sample.dtMs !== null && sample.dtMs > GAP_MS)) return {kind: 'gap', ratio: 1}; - if (isStalledSample(sample)) return {kind: 'stalled', ratio: 0}; - if (sample.encodedFps === null) return {kind: 'gap', ratio: 1}; - const expectedFrameRate = resolveExpectedFrameRate(sample, level); - const ratio = expectedFrameRate > 0 ? sample.encodedFps / expectedFrameRate : 1; - if (expectedFrameRate < IDLE_EXPECTED_FPS) return {kind: 'idle', ratio}; - if ( - sample.sourceFps === null && - sample.sentBps !== null && - sample.sentBps < IDLE_SENT_RATIO * ctx.monitoredMaxBitrate - ) { - return {kind: 'idle', ratio}; - } - if (ratio < SHORT_RATIO) return {kind: 'short', ratio}; - if (ctx.multiLayer) return {kind: 'ok', ratio}; - const expectedPixels = resolveExpectedPixels(sample, level, ctx.context); - if (expectedPixels !== null && sample.sentWidth !== null && sample.sentHeight !== null) { - if (sample.sentWidth * sample.sentHeight < RESOLUTION_SHORT_RATIO * expectedPixels) { - return {kind: 'resolution-short', ratio}; - } - } - return {kind: 'ok', ratio}; -} - -export function clampScreenShareLevelIndex(levelIndex: number, levelCount: number): number { - return Math.max(0, Math.min(levelIndex, levelCount - 1)); -} - -export function createScreenShareDeliveryState(levelIndex = 0): ScreenShareDeliveryState { - return { - ticks: 0, - levelIndex, - samples: 0, - warmedUp: false, - targets: [], - window: [], - stalledRun: 0, - okRun: 0, - busyOkRun: 0, - multiLayerRun: 0, - singleLayerRun: 0, - probeFrom: null, - settledWritten: false, - resolutionReapplied: false, - pinnedNoticeShown: false, - applyFailed: false, - holdingShort: false, - notice: null, - shortCause: null, - sourceFrameRate: null, - deliveredFrameRate: null, - sentWidth: null, - sentHeight: null, - }; -} - -export function resetScreenShareDeliveryWindow(state: ScreenShareDeliveryState): void { - state.samples = 0; - state.warmedUp = false; - state.targets = []; - state.window = []; - state.stalledRun = 0; - state.okRun = 0; - state.busyOkRun = 0; - state.multiLayerRun = 0; - state.singleLayerRun = 0; - state.settledWritten = false; - state.sourceFrameRate = null; - state.holdingShort = false; -} - -function isSameNotice(left: ScreenShareDeliveryNotice | null, right: ScreenShareDeliveryNotice | null): boolean { - if (left === null || right === null) return left === right; - if (left.kind !== right.kind) return false; - const leftFields = left as unknown as Record; - const rightFields = right as unknown as Record; - return Object.keys(leftFields).every((field) => leftFields[field] === rightFields[field]); -} - -function setNotice(state: ScreenShareDeliveryState, notice: ScreenShareDeliveryNotice | null): void { - if (isSameNotice(state.notice, notice)) return; - state.notice = notice; -} - -function resolveLevelNotice( - levels: ReadonlyArray, - levelIndex: number, -): ScreenShareDeliveryNotice | null { - const level = levels[levelIndex]; - const target = levels[0]; - if (levelIndex === 0) return null; - const slowerRate = level.frameRate < target.frameRate; - const smallerSize = level.width * level.height < target.width * target.height; - if (slowerRate && smallerSize) { - return { - kind: 'device-crossover', - width: level.width, - height: level.height, - frameRate: level.frameRate, - targetWidth: target.width, - targetHeight: target.height, - targetFrameRate: target.frameRate, - }; - } - if (slowerRate) { - return {kind: 'device-framerate', width: level.width, height: level.height, frameRate: level.frameRate}; - } - return {kind: 'device-resolution', width: level.width, height: level.height, frameRate: level.frameRate}; -} - -function resolveNextLevelIndex( - state: ScreenShareDeliveryState, - ctx: ScreenShareDeliveryContext, - deliveredFrameRate: number, -): number | null { - const levels = ctx.levels; - const index = state.levelIndex; - let lastSegmentZero = 0; - for (const level of levels) { - if (level.segment === 0) lastSegmentZero = level.index; - } - if (index < lastSegmentZero) return index + 1; - if (ctx.keep === 'resolution') { - if (index + 1 >= levels.length) return null; - if (index === lastSegmentZero && deliveredFrameRate >= WATCHABLE_TEXT_FPS) return null; - return index + 1; - } - for (let candidate = Math.max(index + 1, lastSegmentZero + 1); candidate < levels.length; candidate++) { - const level = levels[candidate]; - if (level.frameRate > deliveredFrameRate) continue; - return level.frameRate >= MOTION_CAP_RATIO * deliveredFrameRate ? candidate : null; - } - return null; -} - -function resolveSourceLimitedFrameRate( - window: ReadonlyArray, - level: ScreenShareLevel, -): number | null { - if (window.some((tick) => tick.cpu)) return null; - const rates: Array = []; - for (const tick of window) { - if (tick.sourceFps === null) return null; - rates.push(tick.sourceFps); - } - const sourceFrameRate = median(rates); - if (sourceFrameRate < SOURCE_LIMITED_MIN_FPS) return null; - return sourceFrameRate < SHORT_RATIO * level.frameRate ? sourceFrameRate : null; -} - -function isShortTick(tick: ScreenShareDeliveryWindowTick): boolean { - return tick.kind === 'short' || tick.kind === 'stalled'; -} - -function finish( - state: ScreenShareDeliveryState, - kind: ScreenShareDeliveryTickKind, - decision: ScreenShareDeliveryDecision, - memoryWrite: ScreenShareDeliveryMemoryWrite | null, - previousNotice: ScreenShareDeliveryNotice | null, -): ScreenShareDeliveryEvaluation { - return { - kind, - decision, - notice: state.notice, - noticeChanged: state.notice !== previousNotice, - memoryWrite, - levelIndex: state.levelIndex, - warmingUp: !state.warmedUp, - shortCause: state.shortCause, - }; -} - -export function evaluateScreenShareDelivery( - state: ScreenShareDeliveryState, - sample: ScreenShareDeliverySample, - ctx: ScreenShareDeliveryContext, -): ScreenShareDeliveryEvaluation { - const evaluation = evaluateScreenShareDeliveryTick(state, sample, ctx); - if (evaluation.decision.kind !== 'none') return evaluation; - const multiLayer = resolveScreenShareLayerCrossing(state, ctx); - if (multiLayer === null) return evaluation; - return {...evaluation, decision: {kind: 'republish-layering', multiLayer}}; -} - -function resolveScreenShareLayerCrossing( - state: ScreenShareDeliveryState, - ctx: ScreenShareDeliveryContext, -): boolean | null { - if (state.applyFailed) return null; - if (state.levelIndex !== 0 || state.probeFrom !== null) return null; - if (state.window.length < WINDOW_TICKS) return null; - if (ctx.shareCounters.layerings >= MAX_LAYERING_CHANGES) return null; - if (ctx.multiLayer && !ctx.multiLayerAvailable) return false; - if (!ctx.multiLayer && ctx.multiLayerAvailable && state.multiLayerRun >= MULTI_LAYER_ON_TICKS) return true; - if (ctx.multiLayer && state.singleLayerRun >= MULTI_LAYER_OFF_TICKS) return false; - return null; -} - -function evaluateScreenShareDeliveryTick( - state: ScreenShareDeliveryState, - sample: ScreenShareDeliverySample, - ctx: ScreenShareDeliveryContext, -): ScreenShareDeliveryEvaluation { - const previousNotice = state.notice; - state.shortCause = null; - state.ticks += 1; - state.levelIndex = clampScreenShareLevelIndex(state.levelIndex, ctx.levels.length); - if (state.probeFrom !== null) { - state.probeFrom = clampScreenShareLevelIndex(state.probeFrom, ctx.levels.length); - } - const level = ctx.levels[state.levelIndex]; - const {kind, ratio} = measureScreenShareTick(sample, level, ctx); - if (sample.encodedFps !== null) { - state.deliveredFrameRate = sample.encodedFps; - } - if (sample.sentWidth !== null && sample.sentHeight !== null) { - state.sentWidth = sample.sentWidth; - state.sentHeight = sample.sentHeight; - } - if (ctx.adaptive && ctx.lastApplyFailed && !state.applyFailed) { - state.applyFailed = true; - setNotice(state, {kind: 'apply-failed'}); - } - if (kind === 'inactive' || kind === 'gap') { - resetScreenShareDeliveryWindow(state); - return finish(state, kind, {kind: 'none'}, null, previousNotice); - } - if (kind === 'stalled') { - state.stalledRun += 1; - const stallTicks = state.ticks === 1 ? 1 : state.warmedUp ? STALL_TICKS : RAMP_STALL_TICKS; - if (state.stalledRun >= stallTicks) { - resetScreenShareDeliveryWindow(state); - const recoverable = ctx.alternativeCodec !== null && !ctx.codecFailed; - return finish(state, kind, {kind: recoverable ? 'recover-stalled' : 'stop-stalled'}, null, previousNotice); - } - } else { - state.stalledRun = 0; - } - const wasWarmedUp = state.warmedUp; - state.samples += 1; - if (!wasWarmedUp) { - state.targets.push(sample.targetBitrate); - if (state.targets.length > RAMP_LOOKBACK_TICKS + 1) { - state.targets.shift(); - } - state.warmedUp = isRampOver(state, sample, ctx.monitoredMaxBitrate); - return finish(state, kind, {kind: 'none'}, null, previousNotice); - } - if (!ctx.adaptive) return finish(state, kind, {kind: 'none'}, null, previousNotice); - const manyViewers = ctx.viewers >= MULTI_LAYER_MIN_VIEWERS; - state.multiLayerRun = manyViewers ? state.multiLayerRun + 1 : 0; - state.singleLayerRun = manyViewers ? 0 : state.singleLayerRun + 1; - if (kind === 'ok') { - state.okRun += 1; - const busy = sample.sourceFps === null || sample.sourceFps >= SHORT_RATIO * level.frameRate; - state.busyOkRun = busy ? state.busyOkRun + 1 : 0; - } else { - state.okRun = 0; - state.busyOkRun = 0; - } - if ( - state.okRun >= CLEAR_OK_TICKS && - state.levelIndex === 0 && - state.notice !== null && - state.notice.kind !== 'apply-failed' - ) { - state.notice = null; - } - if (kind === 'idle') return finish(state, kind, {kind: 'none'}, null, previousNotice); - state.window.push({ - kind, - ratio, - encodedFps: sample.encodedFps ?? 0, - sourceFps: sample.sourceFps, - targetBitrate: sample.targetBitrate, - cpu: sample.limitationReason === 'cpu', - duty: sample.encodeSecondsPerFrame === null ? null : sample.encodeSecondsPerFrame * level.frameRate, - fill: sample.fill, - sentWidth: sample.sentWidth, - sentHeight: sample.sentHeight, - }); - if (state.window.length > WINDOW_TICKS) { - state.window.shift(); - } - if (state.window.length < WINDOW_TICKS) return finish(state, kind, {kind: 'none'}, null, previousNotice); - state.sourceFrameRate = resolveSourceLimitedFrameRate(state.window, level); - if (state.applyFailed) return finish(state, kind, {kind: 'none'}, null, previousNotice); - const shortTicks = state.window.filter(isShortTick).length; - const resolutionShortTicks = state.window.filter((tick) => tick.kind === 'resolution-short').length; - if (shortTicks >= ACT_TICKS) return decideShortWindow(state, ctx, level, kind, previousNotice); - if (resolutionShortTicks >= ACT_TICKS) return decideResolutionWindow(state, ctx, level, kind, previousNotice); - if (shortTicks === 0 && resolutionShortTicks === 0) return decideCleanWindow(state, ctx, kind, previousNotice); - return finish(state, kind, {kind: 'none'}, null, previousNotice); -} - -function isRampOver( - state: ScreenShareDeliveryState, - sample: ScreenShareDeliverySample, - monitoredMaxBitrate: number, -): boolean { - if (state.samples < WARMUP_MIN_TICKS) return false; - if (state.samples >= RAMP_MAX_TICKS) return true; - if (sample.targetBitrate === null) return false; - if (sample.targetBitrate >= CONNECTION_TARGET_RATIO * monitoredMaxBitrate) return true; - if (state.targets.length <= RAMP_LOOKBACK_TICKS) return false; - const earlier = state.targets[0]; - return earlier !== null && sample.targetBitrate <= RAMP_RISE_RATIO * earlier; -} - -function canWriteMemory(window: ReadonlyArray): boolean { - if (window.every((tick) => tick.targetBitrate !== null)) return true; - return window.filter((tick) => tick.cpu).length * 2 > window.length; -} - -function windowMedian( - ticks: ReadonlyArray, - read: (tick: ScreenShareDeliveryWindowTick) => number | null, -): number | null { - const values = ticks.map(read).filter((value): value is number => value !== null); - return values.length === ticks.length ? median(values) : null; -} - -function classifyShortWindow( - windowTicks: ReadonlyArray, - monitoredMaxBitrate: number, -): ScreenShareDeliveryShortCause { - if (windowTicks.filter((tick) => tick.cpu).length >= CPU_REASON_TICKS) return 'cpu'; - const measured = windowTicks.filter((tick) => tick.kind !== 'stalled'); - if (measured.length === 0) return 'stalled'; - const dutyMedian = windowMedian(measured, (tick) => tick.duty); - if (dutyMedian !== null && dutyMedian >= ENCODE_DUTY_LIMIT) return 'duty'; - const targetMedian = windowMedian(measured, (tick) => tick.targetBitrate); - if (targetMedian === null) return 'ratio-unmeasured'; - if (targetMedian >= CONNECTION_TARGET_RATIO * monitoredMaxBitrate) return 'ratio'; - const fillMedian = windowMedian(measured, (tick) => tick.fill); - if (fillMedian === null || fillMedian < TARGET_FILL_RATIO) return 'fill'; - return dutyMedian === null ? 'connection-unmeasured' : 'connection'; -} - -function decideShortWindow( - state: ScreenShareDeliveryState, - ctx: ScreenShareDeliveryContext, - level: ScreenShareLevel, - kind: ScreenShareDeliveryTickKind, - previousNotice: ScreenShareDeliveryNotice | null, -): ScreenShareDeliveryEvaluation { - const windowTicks = state.window; - const deliveredFrameRate = median(windowTicks.map((tick) => tick.encodedFps)); - const cause = classifyShortWindow(windowTicks, ctx.monitoredMaxBitrate); - const connection = cause === 'connection' || cause === 'connection-unmeasured'; - state.shortCause = cause; - state.holdingShort = true; - if (connection) { - setNotice(state, { - kind: 'connection-short', - width: level.width, - height: level.height, - frameRate: level.frameRate, - deliveredFrameRate: Math.round(deliveredFrameRate), - }); - state.probeFrom = null; - return finish(state, kind, {kind: 'none'}, null, previousNotice); - } - const writable = canWriteMemory(windowTicks); - if (state.probeFrom !== null) { - const revertTo = state.probeFrom; - state.probeFrom = null; - state.levelIndex = revertTo; - resetScreenShareDeliveryWindow(state); - setNotice(state, resolveLevelNotice(ctx.levels, revertTo)); - return finish( - state, - kind, - {kind: 'revert-probe', levelIndex: revertTo}, - writable ? {kind: 'probe-blocked'} : null, - previousNotice, - ); - } - const memoryWrite: ScreenShareDeliveryMemoryWrite | null = - state.levelIndex === 0 && writable ? {kind: 'short', ratio: median(windowTicks.map((tick) => tick.ratio))} : null; - const replacement = - state.levelIndex === 0 && ctx.shareCounters.switches < MAX_DELIVERY_SWITCHES ? ctx.alternativeCodec : null; - if (replacement !== null && !ctx.pinned) { - resetScreenShareDeliveryWindow(state); - setNotice(state, {kind: 'codec-switched', codec: replacement, previousCodec: ctx.codec}); - return finish(state, kind, {kind: 'switch-codec', codec: replacement}, memoryWrite, previousNotice); - } - if (replacement !== null && !state.pinnedNoticeShown) { - state.pinnedNoticeShown = true; - resetScreenShareDeliveryWindow(state); - state.holdingShort = true; - setNotice(state, {kind: 'pinned-codec-short', codec: ctx.codec}); - return finish(state, kind, {kind: 'none'}, memoryWrite, previousNotice); - } - const nextLevelIndex = resolveNextLevelIndex(state, ctx, deliveredFrameRate); - if (nextLevelIndex === null) { - setNotice(state, { - kind: 'device-short', - width: level.width, - height: level.height, - frameRate: level.frameRate, - deliveredFrameRate: Math.round(deliveredFrameRate), - }); - return finish(state, kind, {kind: 'none'}, memoryWrite, previousNotice); - } - state.levelIndex = nextLevelIndex; - resetScreenShareDeliveryWindow(state); - setNotice(state, resolveLevelNotice(ctx.levels, nextLevelIndex)); - return finish(state, kind, {kind: 'step', levelIndex: nextLevelIndex}, memoryWrite, previousNotice); -} - -function decideResolutionWindow( - state: ScreenShareDeliveryState, - ctx: ScreenShareDeliveryContext, - level: ScreenShareLevel, - kind: ScreenShareDeliveryTickKind, - previousNotice: ScreenShareDeliveryNotice | null, -): ScreenShareDeliveryEvaluation { - if (!state.resolutionReapplied) { - state.resolutionReapplied = true; - resetScreenShareDeliveryWindow(state); - return finish(state, kind, {kind: 'reapply-level'}, null, previousNotice); - } - const last = state.window[state.window.length - 1]; - state.holdingShort = true; - if (last.sentWidth !== null && last.sentHeight !== null) { - setNotice(state, { - kind: ctx.context === 'device' ? 'capture-resolution' : 'browser-resolution', - width: level.width, - height: level.height, - deliveredWidth: last.sentWidth, - deliveredHeight: last.sentHeight, - }); - } - return finish(state, kind, {kind: 'none'}, null, previousNotice); -} - -function decideCleanWindow( - state: ScreenShareDeliveryState, - ctx: ScreenShareDeliveryContext, - kind: ScreenShareDeliveryTickKind, - previousNotice: ScreenShareDeliveryNotice | null, -): ScreenShareDeliveryEvaluation { - state.holdingShort = false; - state.probeFrom = null; - let memoryWrite: ScreenShareDeliveryMemoryWrite | null = null; - if (!state.settledWritten && canWriteMemory(state.window)) { - state.settledWritten = true; - memoryWrite = {kind: 'settled', settledIndex: state.levelIndex}; - } - const probeable = - state.levelIndex > 0 && - state.busyOkRun >= PROBE_BUSY_OK_TICKS && - ctx.shareCounters.probes < MAX_UP_PROBES && - !ctx.shareCounters.probeBlocked; - if (!probeable) return finish(state, kind, {kind: 'none'}, memoryWrite, previousNotice); - const probeFrom = state.levelIndex; - state.levelIndex = probeFrom - 1; - resetScreenShareDeliveryWindow(state); - state.probeFrom = probeFrom; - return finish(state, kind, {kind: 'probe', levelIndex: state.levelIndex}, memoryWrite, previousNotice); -} - -export function describeScreenShareDelivery( - state: ScreenShareDeliveryState, - levels: ReadonlyArray, -): ScreenShareDeliveryDescription { - const levelIndex = clampScreenShareLevelIndex(state.levelIndex, levels.length); - return { - level: levels[levelIndex], - levelIndex, - deliveredFrameRate: state.deliveredFrameRate, - sentWidth: state.sentWidth, - sentHeight: state.sentHeight, - sourceFrameRate: state.sourceFrameRate, - notice: state.notice, - holdingShort: state.holdingShort, - }; -} - -export type ScreenShareDeliveryNoticeTone = 'warning' | 'info'; - -const SCREEN_SHARE_DELIVERY_NOTICE_TONES = { - 'device-framerate': 'info', - 'device-resolution': 'info', - 'device-crossover': 'info', - 'codec-switched': 'info', - 'device-short': 'warning', - 'connection-short': 'warning', - 'browser-resolution': 'warning', - 'capture-resolution': 'warning', - 'started-lower': 'info', - 'pinned-codec-short': 'warning', - 'encoder-recovered': 'info', - 'codec-viewer': 'info', - 'codec-device': 'info', - 'apply-failed': 'warning', -} satisfies Record; - -export function resolveScreenShareDeliveryNoticeTone(notice: ScreenShareDeliveryNotice): ScreenShareDeliveryNoticeTone { - return SCREEN_SHARE_DELIVERY_NOTICE_TONES[notice.kind]; -} - -export interface ScreenShareDeliverySentInfo { - width: number; - height: number; - fps: number; -} - -export function showsScreenShareDeliverySentInfo(isOwnScreenShare: boolean, adaptive: boolean): boolean { - return isOwnScreenShare && adaptive; -} - -export function resolveScreenShareDeliverySentInfo( - description: Pick | null, -): ScreenShareDeliverySentInfo | null { - if (description === null || description.sentWidth === null || description.sentHeight === null) return null; - return { - width: description.sentWidth, - height: description.sentHeight, - fps: description.deliveredFrameRate === null ? 0 : Math.round(description.deliveredFrameRate), - }; -} - -export function shouldToastScreenShareNotice( - shareCounters: ScreenShareDeliveryShareCounters, - notice: ScreenShareDeliveryNotice | null, -): boolean { - return notice !== null && !shareCounters.toastShown; -} - -export interface ScreenShareDeliveryMemoryHeader { - chromiumMajor: number | null; - gpuKey: string; - encoderMode: ScreenShareEncoderMode; - hardwareAccelerationDisabled: boolean; -} - -export interface ScreenShareDeliveryMemoryEntry { - short: boolean; - ratio: number; - settledIndex: number | null; - probeBlockedUntil: number | null; - at: number; -} - -export interface ScreenShareDeliveryMemory { - header: ScreenShareDeliveryMemoryHeader; - entries: Record; -} - -export interface ScreenShareDeliveryMemoryKey { - header: ScreenShareDeliveryMemoryHeader; - memoryKey: string; - hardware: Partial>; - now: number; -} - -function buildEntryKey(codec: VideoCodec, hardware: boolean, memoryKey: string): string { - return `${codec}|${hardware ? 'hardware' : 'software'}|${memoryKey}`; -} - -function isSameHeader(left: ScreenShareDeliveryMemoryHeader, right: ScreenShareDeliveryMemoryHeader): boolean { - return ( - left.chromiumMajor === right.chromiumMajor && - left.gpuKey === right.gpuKey && - left.encoderMode === right.encoderMode && - left.hardwareAccelerationDisabled === right.hardwareAccelerationDisabled - ); -} - -function isStoredEntry(value: unknown): value is ScreenShareDeliveryMemoryEntry { - if (typeof value !== 'object' || value === null) return false; - const entry = value as ScreenShareDeliveryMemoryEntry; - return ( - typeof entry.short === 'boolean' && - typeof entry.ratio === 'number' && - Number.isFinite(entry.ratio) && - (entry.settledIndex === null || (Number.isInteger(entry.settledIndex) && entry.settledIndex >= 0)) && - (entry.probeBlockedUntil === null || Number.isFinite(entry.probeBlockedUntil)) && - Number.isFinite(entry.at) - ); -} - -function getLiveEntries( - stored: ScreenShareDeliveryMemory | null, - header: ScreenShareDeliveryMemoryHeader, - now: number, -): Record { - if (stored === null || !isSameHeader(stored.header, header)) return {}; - const entries: Record = {}; - for (const [key, entry] of Object.entries(stored.entries)) { - if (!isStoredEntry(entry)) continue; - if (now - entry.at > MEMORY_TTL_MS) continue; - entries[key] = entry; - } - return entries; -} - -export function readScreenShareDeliveryMemory( - stored: ScreenShareDeliveryMemory | null, - key: ScreenShareDeliveryMemoryKey, -): Partial> { - const entries = getLiveEntries(stored, key.header, key.now); - const verdicts: Partial> = {}; - for (const [codec, hardware] of Object.entries(key.hardware) as Array<[VideoCodec, boolean]>) { - const entry = entries[buildEntryKey(codec, hardware, key.memoryKey)]; - if (entry) { - verdicts[codec] = entry; - } - } - return verdicts; -} - -export function updateScreenShareDeliveryMemory( - stored: ScreenShareDeliveryMemory | null, - key: ScreenShareDeliveryMemoryKey, - codec: VideoCodec, - write: ScreenShareDeliveryMemoryWrite, -): ScreenShareDeliveryMemory { - const entries = getLiveEntries(stored, key.header, key.now); - const entryKey = buildEntryKey(codec, key.hardware[codec] === true, key.memoryKey); - const previous = entries[entryKey] ?? {short: false, ratio: 1, settledIndex: null, probeBlockedUntil: null, at: 0}; - if (write.kind === 'short') { - entries[entryKey] = {...previous, short: true, ratio: write.ratio, at: key.now}; - } else if (write.kind === 'settled') { - entries[entryKey] = {...previous, short: false, settledIndex: write.settledIndex, at: key.now}; - } else { - entries[entryKey] = {...previous, probeBlockedUntil: key.now + PROBE_RETRY_MS, at: key.now}; - } - const keys = Object.keys(entries); - if (keys.length <= MAX_MEMORY_ENTRIES) return {header: key.header, entries}; - const kept = keys - .sort((left, right) => entries[right].at - entries[left].at) - .slice(0, MAX_MEMORY_ENTRIES) - .map((live): [string, ScreenShareDeliveryMemoryEntry] => [live, entries[live]]); - return {header: key.header, entries: Object.fromEntries(kept)}; -} - -export function clearScreenShareDeliveryMemoryKey( - stored: ScreenShareDeliveryMemory | null, - key: ScreenShareDeliveryMemoryKey, -): ScreenShareDeliveryMemory { - const entries = Object.entries(getLiveEntries(stored, key.header, key.now)).filter( - ([entryKey]) => !entryKey.endsWith(`|${key.memoryKey}`), - ); - return {header: key.header, entries: Object.fromEntries(entries)}; -} diff --git a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppConnectionHostAdapter.ts b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppConnectionHostAdapter.ts index 45b57753c..e063b38bb 100644 --- a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppConnectionHostAdapter.ts +++ b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppConnectionHostAdapter.ts @@ -45,6 +45,7 @@ import { import {setNoiseSuppressionScopeGuildId} from '@app/features/voice/utils/noise_suppression/NoiseSuppressionSelection'; import {SCREEN_SHARE_MAX_VIDEO_BITRATE_BPS} from '@app/features/voice/utils/ScreenShareOptions'; import { + clearScreenShareDecodeFailures, getVideoDecoderExclusionsSync, loadVideoDecoderExclusions, } from '@app/features/voice/utils/VideoDecoderCapabilities'; @@ -118,22 +119,19 @@ const initialHotSwapState: RegionHotSwapState = { const REGION_HOT_SWAP_TIMEOUT_MS = 10000; async function getRoomVideoDecoderExclusions(): Promise { - const cached = getVideoDecoderExclusionsSync(); - if (cached) return cached.length > 0 ? cached : undefined; let timeoutId: NodeJS.Timeout | undefined; const timeout = new Promise((resolve) => { timeoutId = setTimeout(() => resolve(null), VIDEO_DECODER_EXCLUSION_TIMEOUT_MS); }); try { - const exclusions = await Promise.race([loadVideoDecoderExclusions(), timeout]); - if (exclusions && exclusions.length > 0) return exclusions; - const latest = getVideoDecoderExclusionsSync(); - return latest && latest.length > 0 ? latest : undefined; + await Promise.race([loadVideoDecoderExclusions(), timeout]); } finally { if (timeoutId !== undefined) { clearTimeout(timeoutId); } } + const exclusions = getVideoDecoderExclusionsSync(); + return exclusions && exclusions.length > 0 ? exclusions : undefined; } function createWebAudioMixOption(): RoomOptions['webAudioMix'] { @@ -542,6 +540,7 @@ export class VoiceEngineV2AppConnectionHostAdapter extends Store { }); this.throttle.setInFlightConnect(true); const e2eeKey = raw.e2ee_key ?? null; + clearScreenShareDecodeFailures(); const subscriberVideoCodecExclusions = await getRoomVideoDecoderExclusions(); if ( !this.isLatestConnectionAttempt(attemptId) || diff --git a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareDeliveryWiring.test.ts b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareDeliveryWiring.test.ts deleted file mode 100644 index 76b42ab38..000000000 --- a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareDeliveryWiring.test.ts +++ /dev/null @@ -1,4180 +0,0 @@ -// @vitest-environment happy-dom -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {EventEmitter} from 'node:events'; -import type {ScreenShareEncoderVerificationAction} from '@app/features/voice/utils/CodecCapabilityDetector'; -import { - BackupCodecPolicy, - ParticipantEvent, - type Room, - RoomEvent, - Track, - type TrackPublishOptions, - type VideoCodec, -} from 'livekit-client'; -import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'; - -const pushWithKey = vi.fn(); -const createToast = vi.fn(); -const publishLocalCapabilities = vi.fn(async () => null); -const refreshSelection = vi.fn(async () => null); -const selectScreenShareCodec = vi.fn((): VideoCodec => 'vp8'); -const markRuntimeFailure = vi.fn(); -let selfStream = true; -let codecDenial: string | null = null; -let vp8Available = false; -let av1Available = false; -let knownDecode: Array> = []; -let unknownParticipants = 0; -let preferenceOrder: Array = ['h264']; -let selectedCodec: VideoCodec | null = 'vp9'; -let stallAction: ScreenShareEncoderVerificationAction = {kind: 'recover-stalled', codec: 'h264'}; -let menuEntitled = true; -let gpuReport: {gpuLabel: string} | null = null; -let gpuReportLoad: Promise = Promise.resolve(null); -let displayShareEnvironment: 'web' | 'desktop-custom' | 'desktop-wayland' = 'web'; -let voiceConnectionContext: {guildId: string | null; channelId: string | null; connectionId: string | null} | null = - null; -let voiceStates: Record>> = {}; -const settingsUpdate = vi.fn(); -const openPremiumModal = vi.fn(); - -vi.mock('@app/features/voice/utils/GpuEncoderCapabilities', () => ({ - getGpuEncoderReportSync: () => gpuReport, - loadGpuEncoderReport: () => gpuReportLoad, -})); - -vi.mock('@app/features/voice/utils/ScreenShareEnvironment', async (importOriginal) => ({ - ...(await importOriginal()), - getDisplayShareEnvironment: async () => displayShareEnvironment, -})); - -vi.mock('@lingui/core/macro', () => { - const descriptor = (value: unknown): unknown => (typeof value === 'string' ? {message: value} : value); - return {msg: descriptor, t: descriptor, plural: () => '', select: () => '', selectOrdinal: () => ''}; -}); - -vi.mock('@lingui/react/macro', () => ({ - Trans: () => null, - useLingui: () => ({ - i18n: { - locale: 'en-GB', - _: (descriptor: {message?: string}, values?: Record) => - (descriptor.message ?? '').replace(/{(\w+)}/g, (token, key: string) => - values && key in values ? String(values[key]) : token, - ), - number: (value: number) => String(value), - }, - }), -})); - -vi.mock('@app/app/I18n', () => ({default: {_: (descriptor: {message?: string}) => descriptor.message ?? ''}})); - -vi.mock('@app/features/app/components/alerts/GenericErrorModal', () => ({GenericErrorModal: () => null})); - -vi.mock('@app/features/voice/components/StreamKeys', async (importOriginal) => ({ - ...(await importOriginal()), - getStreamKey: () => 'stream', -})); - -vi.mock('@app/features/voice/engine/VoiceMediaGraphStore', () => ({ - voiceMediaGraphStore: {getGraphSnapshot: () => null}, -})); - -vi.mock('@app/features/voice/engine/VoiceMediaGraph', () => ({ - normalizeVoiceMediaGraphViewerStreamKeys: () => [], - selectVoiceMediaGraphViewerStreamKeys: () => [], -})); - -vi.mock('@app/features/voice/engine/VoiceStreamWatchState', () => ({ - addWatchedStreamKey: () => undefined, - stopWatchingStreamKey: () => undefined, -})); - -vi.mock('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareStateSync', () => ({ - applyVoiceEngineV2AppScreenShareState: () => undefined, -})); - -vi.mock('@app/features/voice/engine/voice_screen_share_manager/NativePermissionGate', () => ({ - ensureNativeCameraPermissionForDeviceShare: async () => undefined, - ensureNativeMicrophonePermissionForDeviceShare: async () => undefined, -})); - -vi.mock('@app/features/voice/state/LocalVoiceState', () => ({ - default: { - getSelfStream: () => selfStream, - updateSelfStreamAudio: () => undefined, - getViewerStreamKeys: () => [], - }, -})); - -vi.mock('@app/features/voice/utils/LinuxScreenShareAudio', () => ({disarmVirtmic: () => undefined})); - -vi.mock('@app/features/voice/utils/NativeAudioCaptureBridge', () => ({ - armNativeAudioForLinuxRouting: async () => false, - armNativeAudioForNextCapture: async () => false, - armNativeSystemAudioForNextCapture: async () => false, - captureNativeAudioTrackForLinuxRouting: async () => null, - captureNativeAudioTrackForWindowPid: async () => null, - commitNativeAudioBridgeReplacement: () => undefined, - disarmNativeAudio: () => undefined, - disarmPendingNativeAudio: () => undefined, - getLastNativeAudioArmFailure: () => null, - getNativeAudioAvailabilityCached: async () => null, - getNativeAudioAvailabilitySnapshot: () => null, - reconfigureLinuxNativeAudioRouting: async () => 'unsupported', -})); - -vi.mock('@app/features/voice/utils/ScreenShareUtils', () => ({ - executeScreenShareOperation: async (operation: () => Promise) => { - await operation(); - }, - handleScreenShareError: () => undefined, -})); - -vi.mock('@app/features/voice/engine/MediaEngineFacade', () => ({default: {}, useMediaEngineVersion: () => 0})); - -vi.mock('@app/features/voice/engine/VoiceMediaEngineBridge', () => ({ - getAllVoiceStatesFromMediaEngine: () => voiceStates, - getVoiceConnectionContextFromMediaEngine: () => voiceConnectionContext, - updateLocalParticipantFromRoom: () => undefined, -})); - -vi.mock('@app/features/auth/state/Authentication', () => ({default: {currentUserId: 'publisher'}})); - -vi.mock('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows', () => ({ - VoiceEngineV2AppScreenShareLiveKitFlows: class { - async republishActiveShareWithCodec(): Promise { - return true; - } - }, -})); - -vi.mock('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareControllerRouting', () => ({ - selectVoiceEngineV2AppScreenShareSetEnabledOptions: () => ({}), - VoiceEngineV2AppScreenShareControllerRouting: class {}, -})); - -vi.mock('@app/features/ui/commands/ModalCommands', () => ({ - modal: (render: unknown) => render, - pushWithKey: (...args: Array) => pushWithKey(...args), -})); - -vi.mock('@app/features/ui/commands/SoundCommands', () => ({playSound: () => undefined})); - -vi.mock('@app/features/ui/commands/ToastCommands', () => ({ - createToast: (...args: Array) => createToast(...args), -})); - -vi.mock('@app/features/voice/commands/VoiceSettingsCommands', () => ({ - update: (...args: Array) => settingsUpdate(...args), -})); - -vi.mock('@app/features/premium/commands/PremiumModalCommands', () => ({open: () => openPremiumModal()})); - -vi.mock('@app/features/ui/action_menu/ContextMenu', async () => { - const React = await import('react'); - const box = ({children}: {children?: React.ReactNode}) => React.createElement('div', null, children); - return { - CheckboxItem: box, - MenuGroup: box, - MenuGroupLabel: box, - MenuItem: box, - MenuSeparator: () => null, - SubMenu: ({label, render}: {label: string; render: () => React.ReactNode}) => - React.createElement('div', {'data-submenu': label}, render()), - SelectableMenuItem: ({ - children, - selected, - textValue, - onAction, - }: { - children?: React.ReactNode; - selected: boolean; - textValue: string; - onAction: () => void; - }) => - React.createElement( - 'button', - {type: 'button', 'data-selected': String(selected), 'data-label': textValue, onClick: onAction}, - children, - ), - useContextMenuClose: () => () => undefined, - }; -}); - -vi.mock('@app/features/voice/components/modals/CameraPreviewModal', () => ({ - CameraPreviewModalStandalone: () => null, -})); - -vi.mock('@app/features/user/components/modals/tabs/hooks/useMediaPermission', () => ({ - useMediaPermission: () => ({ - devices: [{deviceId: 'camera-1', kind: 'videoinput', label: 'Camera one'}], - deviceState: { - inputDevices: [], - outputDevices: [], - videoDevices: [{deviceId: 'camera-1', kind: 'videoinput', label: 'Camera one'}], - permissionStatus: {audio: 'granted', video: 'granted'}, - }, - status: 'granted', - requestPermission: async () => true, - }), -})); - -vi.mock('@app/features/user/components/modals/tabs/components/CompactComboboxRow', async () => { - const React = await import('react'); - return { - CompactComboboxRow: ({ - dataFlx, - onChange, - options, - value, - }: { - dataFlx: string; - onChange: (value: unknown) => void; - options: ReadonlyArray<{label: string; value: unknown}>; - value: unknown; - }) => - React.createElement( - 'div', - { - 'data-combobox': dataFlx, - 'data-value': String(value), - 'data-options': options.map((option) => option.label).join(','), - }, - options.map((option) => - React.createElement('button', { - key: String(option.value), - type: 'button', - 'data-option': String(option.value), - onClick: () => onChange(option.value), - }), - ), - ), - }; -}); - -vi.mock('@app/features/voice/utils/VideoQualityEntitlement', () => ({hasHigherVideoQuality: () => menuEntitled})); - -vi.mock('@app/features/voice/engine/ScreenShareCodecNegotiation', () => ({ - default: { - getRemoteDecodeInputs: () => ({knownDecode, unknownParticipants}), - getSelectedCodec: () => selectedCodec, - publishLocalCapabilities: () => publishLocalCapabilities(), - refreshSelection: () => refreshSelection(), - selectScreenShareCodec: () => selectScreenShareCodec(), - }, - getScreenShareCodecPreferenceOrder: () => preferenceOrder, -})); - -vi.mock('@app/features/voice/utils/CodecCapabilityDetector', () => { - const unavailable = {allowed: false, supported: false, hardware: false}; - return { - LIVEKIT_SUPPORTED_CODECS: ['vp8', 'h264', 'vp9', 'av1', 'h265'], - buildScreenShareCodecProfile: () => ({ - browser: 'chromium', - desktop: true, - codecs: { - av1: {allowed: av1Available, supported: av1Available, hardware: false}, - h265: unavailable, - h264: {allowed: true, supported: true, hardware: true}, - vp9: unavailable, - vp8: {allowed: vp8Available, supported: vp8Available, hardware: false}, - }, - }), - findVideoPublishCodecPolicyViolation: () => null, - getCodecCapabilityReport: () => ({h264: {hardwareAccelerated: 'hardware'}}), - getVideoPublishCodecDenial: () => codecDenial, - markScreenShareCodecEncodeRuntimeFailure: (...args: Array) => markRuntimeFailure(...args), - markScreenShareCodecSoftwareEncodeObserved: () => undefined, - resolveScreenShareEncoderVerificationAction: () => stallAction, - resolveVideoPublishCodecPolicy: (requested: string) => ({ - allowed: [requested, 'h264'], - requested, - primary: requested, - backupCodec: requested === 'h264' || requested === 'vp8' ? false : {codec: 'h264'}, - }), - }; -}); - -const BOOTSTRAP_ENDPOINT = 'https://primary.test/api'; - -(globalThis.window as unknown as Record).__FLUXER_BOOTSTRAP__ = { - config: { - releaseChannel: 'stable', - bootstrapApiEndpoint: BOOTSTRAP_ENDPOINT, - bootstrapApiPublicEndpoint: BOOTSTRAP_ENDPOINT, - }, - instance: { - api_code_version: Number.MAX_SAFE_INTEGER, - endpoints: { - api: BOOTSTRAP_ENDPOINT, - api_client: BOOTSTRAP_ENDPOINT, - api_public: BOOTSTRAP_ENDPOINT, - gateway: 'wss://gateway.primary.test', - media: 'https://media.primary.test', - static_cdn: 'https://cdn.primary.test', - marketing: 'https://primary.test', - admin: 'https://admin.primary.test', - invite: 'https://primary.test/invite', - gift: 'https://primary.test/gift', - webapp: 'https://app.primary.test', - upload_relay: 'https://upload.primary.test', - }, - captcha: {provider: 'none', hcaptcha_site_key: null, turnstile_site_key: null}, - features: { - voice_enabled: false, - stripe_enabled: false, - self_hosted: false, - presigned_attachment_uploads: false, - emails_enabled: false, - }, - gif: {provider: 'klipy', display_name: 'Klipy', attribution_required: false}, - sso: {enabled: false, enforced: false, display_name: null, redirect_uri: ''}, - registration: {mode: 'open', admin_registration_urls_enabled: true}, - community: {single_community: false, single_community_guild_id: null, direct_messages_disabled: false}, - services: {gif_enabled: true, youtube_enabled: false, bluesky_enabled: false}, - limits: undefined, - push: {public_vapid_key: null}, - app_public: { - branding: { - product_name: 'Fluxer', - icon_url: null, - symbol_url: null, - logo_url: null, - wordmark_url: null, - favicon_url: null, - theme_color: null, - }, - setup: {configured: true, admin_url: null}, - legal: {terms_url: null, privacy_url: null}, - registration: {collect_date_of_birth: true}, - }, - }, - geoip: { - countryCode: null, - regionCode: null, - latitude: null, - longitude: null, - ageRestrictedGeos: [], - ageBlockedGeos: [], - }, -}; - -const {VoiceEngineV2AppScreenShareExecutionAdapter, shouldRestoreScreenShareAfterReconnect} = await import( - '@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter' -); -const {default: ScreenShareDelivery} = await import('@app/features/voice/state/ScreenShareDelivery'); -const {default: AppStorage} = await import('@app/features/platform/state/PersistentStorage'); -const {default: ActiveScreenShareSource} = await import('@app/features/voice/state/ActiveScreenShareSource'); -const { - applyScreenShareBackupCodecModeRetiredMigrationV1, - applyScreenShareSoftwareQualityRetiredMigrationV1, - default: VoiceSettings, -} = await import('@app/features/voice/state/VoiceSettings'); -const {getRecentScreenShares, recordScreenShareStarted, resetRecentScreenSharesForTests} = await import( - '@app/features/voice/utils/ScreenShareLifecycleLog' -); -const {buildScreenShareDeliveryHeader, getEffectivePublishOptions, resolveConfiguredScreenShareLadder} = await import( - '@app/features/voice/engine/voice_screen_share_manager/shared' -); -const {bindRoomEvents} = await import('@app/features/voice/engine/VoiceRoomEventBinder'); -const {voiceVideoIndex} = await import('@app/features/user/components/settings_utils/search_index/VoiceVideoIndex'); -const {VoiceEngineV2AppScreenShareLiveKitFlows: ScreenShareLiveKitFlows} = await vi.importActual< - typeof import('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows') ->('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows'); -const { - readScreenShareDeliverySample, - resolveScreenShareDeliveryNoticeTone, - resolveScreenShareDeliverySentInfo, - showsScreenShareDeliverySentInfo, -} = await import('@app/features/voice/engine/ScreenShareUnderperformance'); -const {shouldShowTileControlPill} = await import('@app/features/voice/components/VoiceParticipantTileStateMachine'); -const {countStreamViewers, getStreamKey} = await import('@app/features/voice/components/StreamKeys'); - -const FIRST_TICK_MS = 2500; -const TICK_MS = 2000; - -interface StatsFeed { - encodedFps: number; - sourceFps: number; - targetBitrate: number; - fill: number; - headerShare: number; - encodeSecondsPerFrame: number | null; - reason: string; - active: boolean; - sentWidth: number; - sentHeight: number; -} - -interface FakeSender { - sender: RTCRtpSender; - setParameters: ReturnType; - getStats: ReturnType; - getParameters: ReturnType; - current: () => RTCRtpSendParameters; - setRejecting: (reject: boolean) => void; -} - -function createStatsReader(feed: StatsFeed): () => RTCStatsReport { - let last = Date.now(); - let framesEncoded = 0; - let sourceFrames = 0; - let bytesSent = 0; - let headerBytesSent = 0; - let totalEncodeTime = 0; - return () => { - const now = Date.now(); - const seconds = (now - last) / 1000; - last = now; - const encodedDelta = Math.round(feed.encodedFps * seconds); - const sentDelta = Math.round((feed.targetBitrate * feed.fill * seconds) / 8); - const headerDelta = Math.round(sentDelta * feed.headerShare); - framesEncoded += encodedDelta; - sourceFrames += Math.round(feed.sourceFps * seconds); - bytesSent += sentDelta - headerDelta; - headerBytesSent += headerDelta; - if (feed.encodeSecondsPerFrame !== null) { - totalEncodeTime += feed.encodeSecondsPerFrame * encodedDelta; - } - const entries: Array> = [ - {type: 'codec', id: 'codec', mimeType: 'video/H264'}, - { - type: 'media-source', - id: 'source', - kind: 'video', - frames: sourceFrames, - framesPerSecond: feed.sourceFps, - width: 3840, - height: 2160, - }, - { - type: 'outbound-rtp', - id: 'outbound', - kind: 'video', - codecId: 'codec', - mediaSourceId: 'source', - active: feed.active, - framesEncoded, - framesSent: framesEncoded, - bytesSent, - headerBytesSent, - ...(feed.encodeSecondsPerFrame === null ? {} : {totalEncodeTime}), - frameWidth: feed.sentWidth, - frameHeight: feed.sentHeight, - targetBitrate: feed.targetBitrate, - qualityLimitationReason: feed.reason, - encoderImplementation: 'NVENC', - timestamp: now, - }, - ]; - return new Map(entries.map((entry) => [entry.id as string, entry])) as unknown as RTCStatsReport; - }; -} - -function createSender( - feed: StatsFeed, - options: {mimeType?: string; reject?: boolean; encodings?: Array} = {}, -): FakeSender { - let params = { - codecs: [{mimeType: options.mimeType ?? 'video/H264'}], - encodings: options.encodings ?? [{scalabilityMode: 'L1T3'}], - } as unknown as RTCRtpSendParameters; - const getParameters = vi.fn(() => structuredClone(params)); - const readStats = createStatsReader(feed); - const setParameters = vi.fn(async (next: RTCRtpSendParameters) => { - if (options.reject) throw new Error('setParameters rejected'); - params = next; - }); - const getStats = vi.fn(async () => readStats()); - const sender = { - track: {getSettings: () => ({width: 3840, height: 2160}), contentHint: ''}, - getParameters, - setParameters, - getStats, - } as unknown as RTCRtpSender; - return { - sender, - setParameters, - getStats, - getParameters, - current: () => params, - setRejecting: (reject: boolean) => { - options.reject = reject; - }, - }; -} - -function createShare(sender: RTCRtpSender) { - const applyConstraints = vi.fn(async () => undefined); - const track = Object.assign(new EventEmitter(), { - sender, - mediaStreamTrack: Object.assign(new EventTarget(), { - contentHint: '', - readyState: 'live', - getConstraints: () => ({}), - applyConstraints, - }), - simulcastCodecs: new Map(), - attach: () => undefined, - detach: () => undefined, - setDegradationPreference: async () => undefined, - getProcessor: () => null, - }); - const publication = {source: Track.Source.ScreenShare, videoTrack: track, track, options: {videoCodec: 'h264'}}; - const participant = Object.assign(new EventEmitter(), { - isScreenShareEnabled: true, - trackPublications: new Map([['screen', publication]]), - getTrackPublication: (source: Track.Source) => (source === Track.Source.ScreenShare ? publication : undefined), - publishTrack: vi.fn(async () => publication), - unpublishTrack: vi.fn(async () => undefined), - setScreenShareEnabled: vi.fn(async () => undefined), - }); - const room = {localParticipant: participant, on: () => undefined, off: () => undefined} as unknown as Room; - return {track, publication, participant, room, applyConstraints}; -} - -interface ScreenShareReplacementHandle { - captureScreenShareReplacementSnapshot: (participant: unknown, track: unknown, publishOptions: unknown) => unknown; - restorePublishedScreenShareSource: (snapshot: unknown) => void; -} - -function createFlowHooks(queued: Array = []) { - const calls: Array = []; - const adapter = { - isScreenSharePending: false, - encoderVerificationTimer: null, - streamingPriorityHeld: false, - transitionScreenShareLifecycleInternal: (event: {type: string}) => { - calls.push(event.type); - }, - getEffectivePublishOptionsInternal: async ( - _enabled: boolean, - _publishOptions?: TrackPublishOptions, - ): Promise => undefined, - getActiveScreenShareContentSourceInternal: () => 'display', - getActiveScreenShareSourceTypeInternal: () => 'display', - getScreenShareSourceTypeForContentSourceInternal: () => 'display', - setStreamingPriorityInternal: () => undefined, - applyScreenShareStateInternal: () => undefined, - applyScreenShareContentHintInternal: () => undefined, - enforceScreenShareSenderParametersInternal: async () => true, - ensureScreenShareKeepAliveSinkInternal: () => undefined, - applyScreenShareAudioContentHintInternal: () => undefined, - monitorActiveScreenShareEndInternal: () => undefined, - noteScreenShareCodecRecoveryInternal: () => undefined, - cancelEncoderVerificationInternal: () => undefined, - cleanupActiveScreenShareEndListenerInternal: () => undefined, - cleanupLingeringScreenShareTracks: async () => { - calls.push('cleanup'); - ActiveScreenShareSource.clear(); - ScreenShareDelivery.endShare(); - }, - startEncoderVerificationInternal: () => undefined, - syncLocalStreamWatchStateInternal: () => undefined, - syncLocalScreenShareAudioStateInternal: () => undefined, - syncPersistedScreenShareAudioPreferenceInternal: () => undefined, - applyPendingScreenShareRequestsInternal: async () => { - calls.push('drain'); - calls.push(...queued.splice(0, queued.length)); - }, - reconcileScreenShareCodecInternal: async () => { - calls.push('reconcile'); - }, - }; - return {flows: new ScreenShareLiveKitFlows(adapter as never), calls, adapter}; -} - -function createAdapter() { - const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); - const republish = vi.spyOn(adapter.liveKitFlows, 'republishActiveShareWithCodec').mockResolvedValue(true); - const setEnabled = vi.spyOn(adapter, 'setScreenShareEnabled').mockResolvedValue(undefined); - return {adapter, republish, setEnabled}; -} - -function createRealFlowsAdapter() { - const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); - Object.assign(adapter, {liveKitFlows: new ScreenShareLiveKitFlows(adapter as never)}); - const setEnabled = vi.spyOn(adapter, 'setScreenShareEnabled').mockResolvedValue(undefined); - return {adapter, setEnabled}; -} - -function createTeardownAdapter(participant: unknown, afterCleanup: () => void) { - const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); - const routing = adapter.controllerRouting as unknown as {setEnabled: () => Promise}; - routing.setEnabled = async () => { - await adapter.cleanupLingeringScreenShareTracks(participant as never).catch(() => undefined); - afterCleanup(); - }; - return adapter; -} - -function recordedToasts(): number { - return getRecentScreenShares()[0].deliveryDecisions.filter((record) => record.toast).length; -} - -function lastDecision() { - return getRecentScreenShares()[0].deliveryDecisions.at(-1); -} - -async function tickUntilDecision(kind: string, maxTicks: number): Promise { - for (let tick = 0; tick < maxTicks; tick++) { - const before = lastDecision(); - await vi.advanceTimersByTimeAsync(TICK_MS); - const after = lastDecision(); - if (after !== before && after?.decision === kind) return; - } - throw new Error(`no ${kind} decision within ${maxTicks} ticks`); -} - -function sentFrameRate(fake: FakeSender): number | undefined { - return fake.current().encodings[0].maxFramerate; -} - -function capturedSource() { - return { - publishedSource: 'display' as const, - sourceId: 'screen:1', - isOwnWindow: false, - sourceDimensions: {width: 3840, height: 2160}, - }; -} - -function rememberLevel(settledIndex: number, probeBlockedUntil: number | null = null): void { - ScreenShareDelivery.verdicts = { - h264: {short: false, ratio: 1, settledIndex, probeBlockedUntil, at: Date.now()}, - }; -} - -describe('the screen share delivery wiring', () => { - let feed: StatsFeed; - - beforeEach(() => { - vi.useFakeTimers(); - feed = { - encodedFps: 30, - sourceFps: 30, - targetBitrate: 4_500_000, - fill: 1, - headerShare: 0, - encodeSecondsPerFrame: null, - reason: 'none', - active: true, - sentWidth: 1920, - sentHeight: 1080, - }; - codecDenial = null; - vp8Available = false; - av1Available = false; - knownDecode = []; - unknownParticipants = 0; - preferenceOrder = ['h264']; - selectedCodec = 'vp9'; - stallAction = {kind: 'recover-stalled', codec: 'h264'}; - pushWithKey.mockClear(); - createToast.mockClear(); - publishLocalCapabilities.mockReset(); - publishLocalCapabilities.mockImplementation(async () => null); - selectScreenShareCodec.mockReset(); - selectScreenShareCodec.mockImplementation(() => 'vp8'); - markRuntimeFailure.mockReset(); - vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('high'); - vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); - vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); - AppStorage.removeItem('ScreenShareDeliveryMemoryV1'); - resetRecentScreenSharesForTests(); - recordScreenShareStarted(); - ActiveScreenShareSource.setPublishedSource('display', 'screen:1'); - ActiveScreenShareSource.setSourceDimensions({width: 3840, height: 2160}); - ScreenShareDelivery.beginShare({ - header: {chromiumMajor: 140, gpuKey: 'none', encoderMode: 'auto', hardwareAccelerationDisabled: false}, - ...resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160}), - hardware: {h264: true}, - adaptive: true, - }); - }); - - afterEach(() => { - vi.useRealTimers(); - vi.restoreAllMocks(); - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - }); - - it('steps down a level with the new scale and frame rate and drops the H.264 layering', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(primary.current().encodings).toEqual([ - {maxBitrate: 4_500_000, maxFramerate: 30, scaleResolutionDownBy: 2, priority: 'high', networkPriority: 'high'}, - ]); - await vi.advanceTimersByTimeAsync(TICK_MS * 8); - expect(primary.setParameters).toHaveBeenCalledTimes(2); - expect(primary.current().degradationPreference).toBe('maintain-resolution'); - expect(primary.current().encodings).toEqual([ - {maxBitrate: 3_000_000, maxFramerate: 15, scaleResolutionDownBy: 2, priority: 'high', networkPriority: 'high'}, - ]); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'device-framerate', frameRate: 15}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('drives the own tile badge and pill from the store while nobody is watching', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - const notice = ScreenShareDelivery.notice; - expect(notice).toMatchObject({kind: 'device-framerate', frameRate: 15}); - expect(notice && resolveScreenShareDeliveryNoticeTone(notice)).toBe('info'); - expect(resolveScreenShareDeliverySentInfo(ScreenShareDelivery.plan)).toEqual({ - width: 1920, - height: 1080, - fps: 15, - }); - expect( - shouldShowTileControlPill({ - isFocusedPlaceholderTile: false, - hasDeliveryNotice: notice !== null, - showStreamAudioControls: false, - showSpectatorPill: false, - showGroupHiddenPill: false, - showDeviceCollapseControl: false, - }), - ).toBe(true); - adapter.cancelEncoderVerificationInternal(); - }); - - it('keeps the own tile control pill hidden when there is nothing to put in it', () => { - const quiet = { - isFocusedPlaceholderTile: false, - hasDeliveryNotice: false, - showStreamAudioControls: false, - showSpectatorPill: false, - showGroupHiddenPill: false, - showDeviceCollapseControl: false, - }; - expect(shouldShowTileControlPill(quiet)).toBe(false); - expect(shouldShowTileControlPill({...quiet, hasDeliveryNotice: true})).toBe(true); - expect(shouldShowTileControlPill({...quiet, hasDeliveryNotice: true, isFocusedPlaceholderTile: true})).toBe(false); - expect(shouldShowTileControlPill({...quiet, showStreamAudioControls: true})).toBe(true); - expect(shouldShowTileControlPill({...quiet, showSpectatorPill: true})).toBe(true); - expect(shouldShowTileControlPill({...quiet, showGroupHiddenPill: true})).toBe(true); - expect(shouldShowTileControlPill({...quiet, showDeviceCollapseControl: true})).toBe(true); - }); - - it('turns the own tile badge to a warning when the device runs out of room', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - feed.encodedFps = 12; - await vi.advanceTimersByTimeAsync(TICK_MS * 8); - const notice = ScreenShareDelivery.notice; - expect(notice).toMatchObject({kind: 'device-short'}); - expect(notice && resolveScreenShareDeliveryNoticeTone(notice)).toBe('warning'); - adapter.cancelEncoderVerificationInternal(); - }); - - it('clears the own tile badge when full quality is asked for again', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(ScreenShareDelivery.notice).not.toBeNull(); - ScreenShareDelivery.resetToFullQuality(); - expect(ScreenShareDelivery.notice).toBeNull(); - expect( - shouldShowTileControlPill({ - isFocusedPlaceholderTile: false, - hasDeliveryNotice: ScreenShareDelivery.notice !== null, - showStreamAudioControls: false, - showSpectatorPill: false, - showGroupHiddenPill: false, - showDeviceCollapseControl: false, - }), - ).toBe(false); - adapter.cancelEncoderVerificationInternal(); - }); - - it('shows no own tile pill before the first sample carries a sent size', () => { - expect(resolveScreenShareDeliverySentInfo(null)).toBeNull(); - expect(ScreenShareDelivery.plan).toBeNull(); - expect(resolveScreenShareDeliverySentInfo({deliveredFrameRate: 15, sentHeight: null, sentWidth: null})).toBeNull(); - expect(resolveScreenShareDeliverySentInfo({deliveredFrameRate: null, sentHeight: 1080, sentWidth: 1920})).toEqual({ - width: 1920, - height: 1080, - fps: 0, - }); - }); - - it('leaves a control arm own tile on the captured track info', async () => { - ScreenShareDelivery.beginShare({ - header: {chromiumMajor: 140, gpuKey: 'none', encoderMode: 'auto', hardwareAccelerationDisabled: false}, - ...resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160}), - hardware: {h264: true}, - adaptive: false, - }); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(ScreenShareDelivery.plan).toBeNull(); - expect(resolveScreenShareDeliverySentInfo(ScreenShareDelivery.plan)).toBeNull(); - expect(showsScreenShareDeliverySentInfo(true, ScreenShareDelivery.adaptive)).toBe(false); - expect(showsScreenShareDeliverySentInfo(true, true)).toBe(true); - expect(showsScreenShareDeliverySentInfo(false, true)).toBe(false); - adapter.cancelEncoderVerificationInternal(); - }); - - it('shows only one toast for a share whose notices keep changing', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(ScreenShareDelivery.notice?.kind).toBe('device-framerate'); - feed.encodedFps = 12; - await vi.advanceTimersByTimeAsync(TICK_MS * 8); - expect(ScreenShareDelivery.notice?.kind).toBe('device-short'); - expect(recordedToasts()).toBe(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('toasts the first notice of a share and nothing after it', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(ScreenShareDelivery.notice?.kind).toBe('device-framerate'); - expect(createToast).toHaveBeenCalledTimes(1); - expect(createToast).toHaveBeenCalledWith({type: 'info', children: expect.any(String)}); - feed.encodedFps = 12; - await vi.advanceTimersByTimeAsync(TICK_MS * 8); - expect(ScreenShareDelivery.notice?.kind).toBe('device-short'); - expect(createToast).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('toasts the first notice written straight to the store and nothing after it', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('vp9'); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - expect(createToast).toHaveBeenCalledTimes(1); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - expect(ScreenShareDelivery.notice?.kind).toBe('codec-device'); - expect(createToast).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('toasts a warning notice in the tone the badge and the dot use', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 7.5; - feed.targetBitrate = 600_000; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 12); - const notice = ScreenShareDelivery.notice; - expect(notice?.kind).toBe('connection-short'); - expect(notice && resolveScreenShareDeliveryNoticeTone(notice)).toBe('warning'); - expect(createToast).toHaveBeenCalledTimes(1); - expect(createToast).toHaveBeenCalledWith({type: 'error', children: expect.any(String)}); - adapter.cancelEncoderVerificationInternal(); - }); - - async function runShortWindow(primary: FakeSender): Promise { - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 9); - adapter.cancelEncoderVerificationInternal(); - } - - it('calls a short window device when the encoder is not filling the allocation it has', async () => { - feed.encodedFps = 14; - feed.targetBitrate = 1_566_000; - feed.fill = 0.45; - const primary = createSender(feed); - await runShortWindow(primary); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'device-framerate', frameRate: 15}); - expect(sentFrameRate(primary)).toBe(15); - }); - - it('calls a short window device when the encoder is over its frame budget and the link is short too', async () => { - feed.encodedFps = 14; - feed.targetBitrate = 1_012_500; - feed.fill = 0.72; - feed.encodeSecondsPerFrame = 1.55 / 30; - const primary = createSender(feed); - await runShortWindow(primary); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'device-framerate', frameRate: 15}); - expect(sentFrameRate(primary)).toBe(15); - }); - - it('calls a short window device when Chromium has already blamed the processor', async () => { - feed.encodedFps = 14; - feed.reason = 'cpu'; - feed.targetBitrate = 1_012_500; - feed.fill = 0.72; - feed.encodeSecondsPerFrame = 0.6 / 30; - const primary = createSender(feed); - await runShortWindow(primary); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'device-framerate', frameRate: 15}); - expect(sentFrameRate(primary)).toBe(15); - }); - - it('calls a short window device when the encoder holds the whole budget and still falls behind', async () => { - feed.encodedFps = 20; - feed.encodeSecondsPerFrame = 0.6 / 30; - const primary = createSender(feed); - await runShortWindow(primary); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'device-framerate', frameRate: 15}); - expect(sentFrameRate(primary)).toBe(15); - }); - - it('calls a short window connection when the link is the only thing that is short', async () => { - feed.encodedFps = 7.5; - feed.targetBitrate = 600_000; - feed.encodeSecondsPerFrame = 0.8 / 30; - const primary = createSender(feed); - await runShortWindow(primary); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'connection-short', deliveredFrameRate: 8}); - expect(sentFrameRate(primary)).toBe(30); - expect(lastDecision()?.shortCause).toBe('connection'); - }); - - it('calls a short window device when one stalled tick sits in it and the rest are over budget', async () => { - feed.encodedFps = 14; - feed.targetBitrate = 1_012_500; - feed.fill = 0.9; - feed.encodeSecondsPerFrame = 1.5 / 30; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 5); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS); - feed.encodedFps = 14; - await vi.advanceTimersByTimeAsync(TICK_MS * 3); - adapter.cancelEncoderVerificationInternal(); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'device-framerate', frameRate: 15}); - expect(lastDecision()?.shortCause).toBe('duty'); - expect(sentFrameRate(primary)).toBe(15); - }); - - it('records that a connection notice was raised on a browser that never times an encode', async () => { - feed.encodedFps = 7.5; - feed.targetBitrate = 600_000; - const primary = createSender(feed); - await runShortWindow(primary); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'connection-short'}); - expect(lastDecision()?.shortCause).toBe('connection-unmeasured'); - }); - - it('reads the duty and the fill from the outbound report and copes when the browser reports neither', () => { - const report = (fields: Record) => - new Map([ - ['codec', {type: 'codec', id: 'codec', mimeType: 'video/H264'}], - [ - 'outbound', - { - type: 'outbound-rtp', - id: 'outbound', - kind: 'video', - codecId: 'codec', - active: true, - frameWidth: 1920, - frameHeight: 1080, - targetBitrate: 1_250_000, - ...fields, - }, - ], - ]) as unknown as RTCStatsReport; - const start = readScreenShareDeliverySample( - report({timestamp: 0, framesEncoded: 0, bytesSent: 0, headerBytesSent: 0, totalEncodeTime: 0}), - null, - ); - const measured = readScreenShareDeliverySample( - report({timestamp: 2000, framesEncoded: 60, bytesSent: 240_000, headerBytesSent: 10_000, totalEncodeTime: 1}), - start.counters, - ); - expect(measured.fill).toBeCloseTo(0.8, 10); - expect(measured.encodeSecondsPerFrame).toBeCloseTo(1 / 60, 10); - const bareStart = readScreenShareDeliverySample(report({timestamp: 0, framesEncoded: 0, bytesSent: 0}), null); - const bare = readScreenShareDeliverySample( - report({timestamp: 2000, framesEncoded: 60, bytesSent: 240_000}), - bareStart.counters, - ); - expect(bare.encodeSecondsPerFrame).toBeNull(); - expect(bare.fill).toBeCloseTo(0.768, 10); - }); - - it('keeps the live share tracked through the teardown a restart makes', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const adapter = createTeardownAdapter(participant, () => undefined); - rememberLevel(2); - ScreenShareDelivery.counters.switches = 1; - ScreenShareDelivery.counters.probes = 3; - await adapter.setScreenShareEnabled(room, true, {restartIfEnabled: true}); - expect(ScreenShareDelivery.isSharing).toBe(true); - expect(ScreenShareDelivery.counters).toMatchObject({switches: 1, probes: 3}); - expect(ScreenShareDelivery.verdicts.h264?.settledIndex).toBe(2); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - expect(ActiveScreenShareSource.getSourceDimensions()).toEqual({width: 3840, height: 2160}); - }); - - it('keeps writing the delivery plan after a restart tears the publication down', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const adapter = createTeardownAdapter(participant, () => undefined); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(ScreenShareDelivery.plan).not.toBeNull(); - await adapter.setScreenShareEnabled(room, true, {restartIfEnabled: true}); - ScreenShareDelivery.plan = null; - await vi.advanceTimersByTimeAsync(TICK_MS * 2); - expect(ScreenShareDelivery.plan).not.toBeNull(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('drops an apply-failed notice that the restart leaves behind', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const adapter = createTeardownAdapter(participant, () => undefined); - ScreenShareDelivery.setNotice({kind: 'apply-failed'}); - await adapter.setScreenShareEnabled(room, true, {restartIfEnabled: true}); - expect(ScreenShareDelivery.isSharing).toBe(true); - expect(ScreenShareDelivery.notice).toBeNull(); - }); - - it('ends the tracking when a restart leaves no live share behind', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const adapter = createTeardownAdapter(participant, () => { - participant.isScreenShareEnabled = false; - }); - await adapter.setScreenShareEnabled(room, true, {restartIfEnabled: true}); - expect(ScreenShareDelivery.isSharing).toBe(false); - expect(ActiveScreenShareSource.getPublishedSource()).toBeNull(); - }); - - it('keeps the tracking through the stop a source switch makes', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const adapter = createTeardownAdapter(participant, () => { - participant.isScreenShareEnabled = false; - }); - await adapter.setScreenShareEnabled(room, false, { - sendUpdate: false, - preserveStreamAudioPreferences: true, - keepShareTracking: true, - }); - expect(ScreenShareDelivery.isSharing).toBe(true); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - }); - - it('ends the tracking when the server stops the share behind the user', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const adapter = createTeardownAdapter(participant, () => { - participant.isScreenShareEnabled = false; - }); - await adapter.setScreenShareEnabled(room, false, {sendUpdate: false}); - expect(ScreenShareDelivery.isSharing).toBe(false); - expect(ActiveScreenShareSource.getPublishedSource()).toBeNull(); - }); - - it('does not carry an apply-failed notice into the share a reconnect restores', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - ScreenShareDelivery.setNotice({kind: 'apply-failed'}); - const snapshot = adapter.prepareScreenShareReconnect(room); - expect(snapshot?.delivery.notice).toBeNull(); - ScreenShareDelivery.endShare(); - ScreenShareDelivery.restore(snapshot?.delivery as never); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 10); - expect(ScreenShareDelivery.notice).toBeNull(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('carries a notice the share can still clear into the reconnect snapshot', () => { - const {room} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - ScreenShareDelivery.setNotice({kind: 'codec-switched', codec: 'h264', previousCodec: 'vp9'}); - expect(adapter.prepareScreenShareReconnect(room)?.delivery.notice?.kind).toBe('codec-switched'); - }); - - it('clears a notice written straight to the store after five good ticks', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('vp9'); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - expect(ScreenShareDelivery.notice).toEqual({kind: 'codec-device', codec: 'h264', pinnedCodec: 'vp9'}); - expect(createToast).toHaveBeenCalledTimes(1); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 10); - expect(ScreenShareDelivery.notice).toBeNull(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('clears a notice that survived a republish after five good ticks', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - ScreenShareDelivery.setNotice({kind: 'codec-switched', codec: 'h264', previousCodec: 'vp9'}); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - expect(ScreenShareDelivery.notice?.kind).toBe('codec-switched'); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 10); - expect(ScreenShareDelivery.notice).toBeNull(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('gives a backup sender created later maintain-resolution and the current level', async () => { - const primary = createSender(feed); - const backup = createSender(feed, {mimeType: 'video/VP9'}); - const {participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - await adapter.enforceScreenShareSenderParametersInternal(participant as never, {videoCodec: 'vp9'}); - participant.emit(ParticipantEvent.LocalSenderCreated, backup.sender, track, 'h264'); - await vi.advanceTimersByTimeAsync(0); - expect(backup.current().degradationPreference).toBe('maintain-resolution'); - expect(backup.current().encodings).toEqual([ - {maxBitrate: 4_500_000, maxFramerate: 30, scaleResolutionDownBy: 2, priority: 'high', networkPriority: 'high'}, - ]); - expect((backup.sender.track as unknown as {contentHint: string}).contentHint).toBe('text'); - }); - - it('shows no modal when a listener republish takes over during recovery', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish, setEnabled} = createAdapter(); - publishLocalCapabilities.mockImplementationOnce(async () => { - adapter.transitionScreenShareLifecycleInternal({ - type: 'share.replace', - sourceType: 'display', - publicationReplaceInFlight: true, - }); - return null; - }); - feed.encodedFps = 0; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - expect(republish).not.toHaveBeenCalled(); - expect(setEnabled).not.toHaveBeenCalled(); - expect(pushWithKey).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('stops with the modal when an already failed codec stalls again', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, setEnabled} = createAdapter(); - codecDenial = 'runtime-failed'; - vp8Available = true; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS * 2); - expect(pushWithKey).not.toHaveBeenCalled(); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(pushWithKey).toHaveBeenCalledTimes(1); - expect(setEnabled).toHaveBeenCalledWith(room, false, {sendUpdate: true, playSound: true}); - expect(markRuntimeFailure).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('raises apply-failed once and stops retrying a rejecting sender', async () => { - const primary = createSender(feed, {reject: true}); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 10); - expect(primary.setParameters).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.notice).toEqual({kind: 'apply-failed'}); - expect(recordedToasts()).toBe(1); - expect(createToast).toHaveBeenCalledWith({type: 'error', children: expect.any(String)}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('applies the level to the sender the track holds on each tick', async () => { - const first = createSender(feed); - const second = createSender(feed); - const {room, participant, track} = createShare(first.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - track.sender = second.sender; - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(second.getStats).toHaveBeenCalledTimes(1); - expect(second.current().degradationPreference).toBe('maintain-resolution'); - adapter.cancelEncoderVerificationInternal(); - }); - - it('starts at the remembered level and says so', async () => { - rememberLevel(1); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(0); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'started-lower', frameRate: 15, targetFrameRate: 30}); - expect(primary.current().encodings[0].maxFramerate).toBe(15); - await adapter.resetScreenShareDeliveryToFullQuality(); - expect(ScreenShareDelivery.notice).toBeNull(); - expect(primary.current().encodings[0].maxFramerate).toBe(30); - adapter.cancelEncoderVerificationInternal(); - }); - - it('says so when a delivery tick cannot be measured, then keeps measuring', async () => { - const warned = vi.spyOn(console, 'warn').mockImplementation(() => undefined); - const primary = createSender(feed); - primary.getStats.mockRejectedValueOnce(new Error('stats unavailable')); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(warned.mock.calls.some((call) => call.includes('Failed to measure screen share delivery'))).toBe(true); - expect(ScreenShareDelivery.plan).toBeNull(); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(primary.getStats).toHaveBeenCalledTimes(2); - expect(ScreenShareDelivery.plan?.levelIndex).toBe(0); - adapter.cancelEncoderVerificationInternal(); - }); - - it('starts at the top level when the memory holds a level the ladder never had', async () => { - rememberLevel(-2); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(ScreenShareDelivery.notice).toBeNull(); - expect(ScreenShareDelivery.plan?.levelIndex).toBe(0); - expect(sentFrameRate(primary)).toBe(30); - adapter.cancelEncoderVerificationInternal(); - }); - - it('names the substitution when the pinned codec is not what was published', () => { - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('av1'); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - expect(ScreenShareDelivery.notice).toEqual({kind: 'codec-device', codec: 'h264', pinnedCodec: 'av1'}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('reconciles a codec pair once per share', async () => { - const primary = createSender(feed); - const {room} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - await adapter.reconcileScreenShareCodecInternal(room); - await adapter.reconcileScreenShareCodecInternal(room); - expect(republish).toHaveBeenCalledTimes(1); - expect(republish).toHaveBeenCalledWith(room, expect.anything(), 'vp9'); - }); - - it('recovers a codec that stalls after warm-up on another codec and says so', async () => { - vp8Available = true; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, setEnabled} = createRealFlowsAdapter(); - markRuntimeFailure.mockImplementation(() => { - codecDenial = 'runtime-failed'; - }); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 3); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(markRuntimeFailure).not.toHaveBeenCalled(); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(markRuntimeFailure).toHaveBeenCalledWith('h264', 'screen-share-encode-stalled'); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - expect(participant.unpublishTrack).toHaveBeenCalledTimes(1); - expect(participant.publishTrack).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.notice).toEqual({kind: 'encoder-recovered', codec: 'vp8'}); - expect(setEnabled).not.toHaveBeenCalled(); - expect(pushWithKey).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('says the encoder recovered when a negotiated codec republish takes the stalled share over', async () => { - selectedCodec = 'h264'; - codecDenial = 'runtime-failed'; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, setEnabled} = createRealFlowsAdapter(); - publishLocalCapabilities.mockImplementation(async () => { - void adapter.republishActiveScreenShareForNegotiatedCodecInternal(room, 'vp8'); - return null; - }); - feed.encodedFps = 0; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - expect(participant.unpublishTrack).toHaveBeenCalledTimes(1); - expect(participant.publishTrack).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.notice).toEqual({kind: 'encoder-recovered', codec: 'vp8'}); - expect(createToast).toHaveBeenCalledTimes(1); - expect(setEnabled).not.toHaveBeenCalled(); - expect(pushWithKey).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('leaves a codec switch notice alone when the republish did not follow a stalled encoder', async () => { - selectedCodec = 'h264'; - const primary = createSender(feed); - const {room, participant} = createShare(primary.sender); - const {adapter} = createRealFlowsAdapter(); - ScreenShareDelivery.setNotice({kind: 'codec-switched', codec: 'vp8', previousCodec: 'h264'}); - await adapter.republishActiveScreenShareForNegotiatedCodecInternal(room, 'vp8'); - expect(participant.publishTrack).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.notice).toEqual({kind: 'codec-switched', codec: 'vp8', previousCodec: 'h264'}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('needs a full warm-up run of stalls after a failed first tick', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - publishLocalCapabilities.mockImplementation(() => new Promise(() => undefined)); - feed.encodedFps = 0; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - codecDenial = 'runtime-failed'; - await vi.advanceTimersByTimeAsync(TICK_MS * 2); - expect(pushWithKey).not.toHaveBeenCalled(); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(pushWithKey).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('ignores stalled ticks while a share operation is pending', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, setEnabled} = createAdapter(); - codecDenial = 'runtime-failed'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 3); - adapter.transitionScreenShareLifecycleInternal({type: 'share.restore', sourceType: 'display'}); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS * 6); - expect(pushWithKey).not.toHaveBeenCalled(); - expect(setEnabled).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('ignores a viewerless share whose encodings are all paused', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, setEnabled} = createAdapter(); - codecDenial = 'runtime-failed'; - feed.active = false; - feed.encodedFps = 0; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 12); - expect(pushWithKey).not.toHaveBeenCalled(); - expect(setEnabled).not.toHaveBeenCalled(); - expect(ScreenShareDelivery.notice).toBeNull(); - expect(sentFrameRate(primary)).toBe(30); - adapter.cancelEncoderVerificationInternal(); - }); - - it('switches codec once when the top level is short and then steps down', async () => { - vp8Available = true; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.verdicts.h264).toMatchObject({short: true, ratio: 0.5}); - expect(ScreenShareDelivery.counters.switches).toBe(1); - expect(ScreenShareDelivery.notice).toEqual({kind: 'codec-switched', codec: 'vp8', previousCodec: 'h264'}); - expect(sentFrameRate(primary)).toBe(30); - await vi.advanceTimersByTimeAsync(TICK_MS * 40); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - expect(sentFrameRate(primary)).toBe(15); - adapter.cancelEncoderVerificationInternal(); - }); - - it('steps down instead of switching when no viewer can decode the other codec', async () => { - vp8Available = true; - knownDecode = [new Set(['h264'])]; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(publishLocalCapabilities).not.toHaveBeenCalled(); - expect(sentFrameRate(primary)).toBe(15); - adapter.cancelEncoderVerificationInternal(); - }); - - const watchStreamKey = () => getStreamKey('guild', 'channel', 'me'); - - const watchers = (...users: ReadonlyArray) => { - voiceConnectionContext = {guildId: 'guild', channelId: 'channel', connectionId: 'me'}; - voiceStates = { - guild: { - channel: Object.fromEntries( - users.map((user, index) => [ - `connection-${index}`, - {user_id: user, connection_id: `connection-${index}`, viewer_stream_keys: [watchStreamKey()]}, - ]), - ), - }, - }; - }; - - const startMediumShare = () => { - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('medium'); - commitLadder('display', {width: 1280, height: 720}); - feed.targetBitrate = 3_000_000; - feed.sentWidth = 1280; - feed.sentHeight = 720; - }; - - it('counts one viewer per user and leaves the publisher out', () => { - expect( - countStreamViewers( - { - guild: { - channel: { - a: {user_id: 'watcher', viewer_stream_keys: ['stream:me']}, - b: {user_id: 'watcher', viewer_stream_keys: ['stream:me']}, - c: {user_id: 'publisher', viewer_stream_keys: ['stream:me']}, - d: {user_id: 'idle', viewer_stream_keys: ['stream:other']}, - e: {user_id: 'quiet'}, - }, - }, - }, - 'stream:me', - 'publisher', - ), - ).toBe(1); - }); - - it('turns extra layers on for a second viewer and republishes to carry them', async () => { - startMediumShare(); - watchers('first', 'second'); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(republish).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.multiLayer).toBe(true); - expect(ScreenShareDelivery.counters.layerings).toBe(1); - watchers('first'); - await vi.advanceTimersByTimeAsync(TICK_MS * 30); - expect(republish).toHaveBeenCalledTimes(2); - expect(ScreenShareDelivery.multiLayer).toBe(false); - expect(ScreenShareDelivery.counters.layerings).toBe(2); - watchers('first', 'second'); - await vi.advanceTimersByTimeAsync(TICK_MS * 30); - expect(republish).toHaveBeenCalledTimes(2); - adapter.cancelEncoderVerificationInternal(); - }); - - it('republishes a crossing with the layering it crossed to, not the one it left', async () => { - startMediumShare(); - watchers('first', 'second'); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - const {flows, adapter: flowAdapter} = createFlowHooks(); - flowAdapter.getEffectivePublishOptionsInternal = async (enabled: boolean, options?: TrackPublishOptions) => - getEffectivePublishOptions(enabled, options); - republish.mockImplementation((activeRoom, activeTrack, codec) => - flows.republishActiveShareWithCodec(activeRoom, activeTrack, codec), - ); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(republish).toHaveBeenCalledTimes(1); - const [, options] = participant.publishTrack.mock.calls[0] as unknown as [unknown, TrackPublishOptions]; - expect(options.simulcast).toBe(true); - expect(ScreenShareDelivery.multiLayer).toBe(true); - adapter.cancelEncoderVerificationInternal(); - }); - - it('keeps the single layering when the republish a crossing asked for never happens', async () => { - startMediumShare(); - watchers('first', 'second'); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - republish.mockResolvedValue(false); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(republish).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.multiLayer).toBe(false); - expect(ScreenShareDelivery.counters.layerings).toBe(1); - expect((await getEffectivePublishOptions(true, {videoCodec: 'av1'}))?.scalabilityMode).toBe('L1T3'); - await vi.advanceTimersByTimeAsync(TICK_MS * 30); - expect(ScreenShareDelivery.notice).not.toEqual({kind: 'apply-failed'}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('publishes the layering a crossing asked for and refuses simulcast above the medium rung', async () => { - startMediumShare(); - expect((await getEffectivePublishOptions(true, {videoCodec: 'h264'}))?.simulcast).toBe(false); - ScreenShareDelivery.multiLayer = true; - const h264 = await getEffectivePublishOptions(true, {videoCodec: 'h264'}); - expect(h264?.simulcast).toBe(true); - expect(h264?.scalabilityMode).toBeUndefined(); - const av1 = await getEffectivePublishOptions(true, {videoCodec: 'av1'}); - expect(av1?.simulcast).toBe(false); - expect(av1?.scalabilityMode).toBe('L3T3_KEY'); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('high'); - commitLadder('display', {width: 3840, height: 2160}); - ScreenShareDelivery.multiLayer = true; - expect((await getEffectivePublishOptions(true, {videoCodec: 'h264'}))?.simulcast).toBe(false); - expect((await getEffectivePublishOptions(true, {videoCodec: 'av1'}))?.scalabilityMode).toBe('L3T3_KEY'); - }); - - it('keeps a single viewer on one encoding', async () => { - startMediumShare(); - watchers('first'); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 20); - expect(republish).not.toHaveBeenCalled(); - expect(ScreenShareDelivery.multiLayer).toBe(false); - adapter.cancelEncoderVerificationInternal(); - }); - - it('refuses simulcast above the medium rung however many people watch', async () => { - watchers('first', 'second'); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 20); - expect(republish).not.toHaveBeenCalled(); - expect(ScreenShareDelivery.multiLayer).toBe(false); - adapter.cancelEncoderVerificationInternal(); - }); - - it('takes the extra layers off a share retargeted above the rung that admits them', async () => { - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('ultra'); - commitLadder('display', {width: 3840, height: 2160}); - feed.targetBitrate = 5_500_000; - feed.sentWidth = 2560; - feed.sentHeight = 1440; - watchers('first', 'second'); - ScreenShareDelivery.multiLayer = true; - const primary = createSender(feed, {encodings: [{rid: 'f'}, {rid: 'h', scaleResolutionDownBy: 2}]}); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(republish).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.multiLayer).toBe(false); - expect(ScreenShareDelivery.counters.layerings).toBe(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('never crosses to extra layers while an apply failure stands', async () => { - startMediumShare(); - watchers('first', 'second'); - const primary = createSender(feed, {reject: true}); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 20); - expect(ScreenShareDelivery.notice).toEqual({kind: 'apply-failed'}); - expect(republish).not.toHaveBeenCalled(); - expect(ScreenShareDelivery.multiLayer).toBe(false); - adapter.cancelEncoderVerificationInternal(); - }); - - it('never crosses to extra layers while a probe is in flight', async () => { - startMediumShare(); - rememberLevel(1); - watchers('first', 'second'); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - feed.encodedFps = 15; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - await tickUntilDecision('probe', 60); - for (let tick = 0; tick < 24; tick++) { - feed.encodedFps = tick % 2 === 0 ? 30 : 20; - await vi.advanceTimersByTimeAsync(TICK_MS); - } - expect(lastDecision()?.decision).toBe('probe'); - expect(republish).not.toHaveBeenCalled(); - expect(ScreenShareDelivery.multiLayer).toBe(false); - adapter.cancelEncoderVerificationInternal(); - }); - - it('waits for a settled level before it crosses to extra layers', async () => { - startMediumShare(); - watchers('first', 'second'); - feed.encodedFps = 15; - feed.reason = 'cpu'; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 20); - expect(ScreenShareDelivery.plan?.levelIndex).toBeGreaterThan(0); - expect(republish).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('switches to AV1 when every viewer has advertised it', async () => { - av1Available = true; - knownDecode = [new Set(['h264', 'av1'])]; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.notice).toEqual({kind: 'codec-switched', codec: 'av1', previousCodec: 'h264'}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('steps down instead of switching to AV1 while a viewer has not advertised its codecs', async () => { - av1Available = true; - knownDecode = [new Set(['h264', 'av1'])]; - unknownParticipants = 1; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(publishLocalCapabilities).not.toHaveBeenCalled(); - expect(sentFrameRate(primary)).toBe(15); - adapter.cancelEncoderVerificationInternal(); - }); - - it('steps down instead of switching to AV1 in a room where the only viewer is silent', async () => { - av1Available = true; - knownDecode = []; - unknownParticipants = 1; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(publishLocalCapabilities).not.toHaveBeenCalled(); - expect(sentFrameRate(primary)).toBe(15); - adapter.cancelEncoderVerificationInternal(); - }); - - const commitLadder = (context: 'display' | 'device', dimensions: {width: number; height: number} | null) => { - ScreenShareDelivery.endShare(); - ScreenShareDelivery.beginShare({ - header: {chromiumMajor: 140, gpuKey: 'none', encoderMode: 'auto', hardwareAccelerationDisabled: false}, - ...resolveConfiguredScreenShareLadder(context, dimensions), - hardware: {h264: true}, - adaptive: true, - }); - }; - - const leaveStaleSource = ( - published: 'display' | 'device' | null, - dimensions: {width: number; height: number} | null, - ) => { - if (published === null) { - ActiveScreenShareSource.clear(); - return; - } - ActiveScreenShareSource.setPublishedSource(published, published === 'display' ? 'screen:9' : null); - ActiveScreenShareSource.setSourceDimensions(dimensions); - }; - - const expectMonitoredLadderWins = async (stale: { - context: 'display' | 'device'; - dimensions: {width: number; height: number} | null; - }) => { - const committed = ScreenShareDelivery.ladder; - if (!committed) throw new Error('no committed ladder'); - const staleLevel = resolveConfiguredScreenShareLadder(stale.context, stale.dimensions).levels[0]; - expect(staleLevel.maxBitrate).not.toBe(committed.levels[0].maxBitrate); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - await adapter.enforceScreenShareSenderParametersInternal(participant as never, {videoCodec: 'h264'}); - expect(primary.current().encodings[0].maxBitrate).toBe(committed.levels[0].maxBitrate); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(primary.current().encodings[0].maxBitrate).toBe(committed.levels[0].maxBitrate); - expect(primary.current().encodings[0].maxFramerate).toBe(committed.levels[0].frameRate); - adapter.cancelEncoderVerificationInternal(); - }; - - it('monitors the committed ladder on the first share of a session', async () => { - commitLadder('display', {width: 1280, height: 720}); - leaveStaleSource(null, null); - await expectMonitoredLadderWins({context: 'display', dimensions: null}); - }); - - it('monitors the committed ladder when the share kind changes', async () => { - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('source'); - commitLadder('device', null); - leaveStaleSource('display', {width: 3840, height: 2160}); - await expectMonitoredLadderWins({context: 'display', dimensions: {width: 3840, height: 2160}}); - }); - - it('monitors the committed ladder across a source switch', async () => { - commitLadder('display', {width: 1280, height: 720}); - leaveStaleSource('display', {width: 3840, height: 2160}); - await expectMonitoredLadderWins({context: 'display', dimensions: {width: 3840, height: 2160}}); - }); - - it('monitors the ladder the store holds after a failed switch puts it back', async () => { - commitLadder('display', {width: 1280, height: 720}); - const before = ScreenShareDelivery.snapshot(); - const restoredLevel = before.share?.levels[0]; - if (!restoredLevel) throw new Error('no committed ladder'); - ScreenShareDelivery.retarget(resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160})); - const switched = ScreenShareDelivery.ladder; - if (!switched) throw new Error('no retargeted ladder'); - expect(switched.levels[0].maxBitrate).not.toBe(restoredLevel.maxBitrate); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - ScreenShareDelivery.restore(before); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(primary.current().encodings[0].maxBitrate).toBe(restoredLevel.maxBitrate); - adapter.cancelEncoderVerificationInternal(); - }); - - it('names the capture when a device share falls short of the committed resolution', async () => { - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('source'); - commitLadder('device', null); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.sentWidth = 640; - feed.sentHeight = 360; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 20); - expect(ScreenShareDelivery.notice).toMatchObject({kind: 'capture-resolution'}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('spends the kept axis of a committed ladder before it gives the other one up', async () => { - vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('motion'); - vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(60); - commitLadder('display', {width: 3840, height: 2160}); - const ladder = ScreenShareDelivery.ladder; - if (!ladder) throw new Error('no committed ladder'); - expect(ladder.target.keep).toBe('frameRate'); - const bottom = ladder.levels[ladder.levels.length - 1]; - expect([bottom.segment, bottom.frameRate]).toEqual([1, 30]); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 30; - feed.reason = 'cpu'; - feed.targetBitrate = 8_000_000; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 40); - expect(sentFrameRate(primary)).toBe(bottom.frameRate); - expect(primary.current().encodings[0].maxBitrate).toBe(bottom.maxBitrate); - adapter.cancelEncoderVerificationInternal(); - }); - - it('steps past the kept axis only when the committed ladder says the kept one is spent', async () => { - commitLadder('display', {width: 3840, height: 2160}); - const ladder = ScreenShareDelivery.ladder; - if (!ladder) throw new Error('no committed ladder'); - expect(ladder.target.keep).toBe('resolution'); - const bottom = ladder.levels[ladder.levels.length - 1]; - expect(bottom.segment).toBe(1); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 5; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 40); - expect(primary.current().encodings[0].maxBitrate).toBe(bottom.maxBitrate); - expect(sentFrameRate(primary)).toBe(bottom.frameRate); - adapter.cancelEncoderVerificationInternal(); - }); - - it('keeps the failed sender note while the share is held live', async () => { - const primary = createSender(feed, {reject: true}); - const {room, participant, track} = createShare(primary.sender); - const adapter = createTeardownAdapter(participant, () => undefined); - await adapter.enforceScreenShareSenderParametersInternal(participant as never, {videoCodec: 'h264'}); - expect(primary.setParameters).toHaveBeenCalledTimes(1); - await adapter.setScreenShareEnabled(room, false, { - sendUpdate: false, - preserveStreamAudioPreferences: true, - keepShareTracking: true, - }); - primary.setRejecting(false); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS); - expect(primary.setParameters).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('keeps the codec reconcile dedupe while the share is held live', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const adapter = createTeardownAdapter(participant, () => undefined); - const republish = vi.spyOn(adapter.liveKitFlows, 'republishActiveShareWithCodec').mockResolvedValue(true); - await adapter.reconcileScreenShareCodecInternal(room); - await adapter.setScreenShareEnabled(room, false, { - sendUpdate: false, - preserveStreamAudioPreferences: true, - keepShareTracking: true, - }); - await adapter.reconcileScreenShareCodecInternal(room); - expect(republish).toHaveBeenCalledTimes(1); - }); - - it('holds the tracking until the outermost held operation finishes', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const held: Array = []; - const adapter = createTeardownAdapter(participant, () => undefined); - const routing = adapter.controllerRouting as unknown as {setEnabled: () => Promise}; - const inner = routing.setEnabled; - routing.setEnabled = async () => { - routing.setEnabled = inner; - await adapter.setScreenShareEnabled(room, false, { - sendUpdate: false, - preserveStreamAudioPreferences: true, - keepShareTracking: true, - }); - held.push(ScreenShareDelivery.isSharing); - await inner(); - }; - await adapter.setScreenShareEnabled(room, false, { - sendUpdate: false, - preserveStreamAudioPreferences: true, - keepShareTracking: true, - }); - expect(held).toEqual([true]); - expect(ScreenShareDelivery.isSharing).toBe(true); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - }); - - it('runs the reconnect restore whenever a snapshot waits or the stream is meant to come back', () => { - const {room} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - const snapshot = adapter.prepareScreenShareReconnect(room); - expect(snapshot).not.toBeNull(); - expect(shouldRestoreScreenShareAfterReconnect(true, snapshot)).toBe(true); - expect(shouldRestoreScreenShareAfterReconnect(false, snapshot)).toBe(true); - expect(shouldRestoreScreenShareAfterReconnect(true, null)).toBe(true); - expect(shouldRestoreScreenShareAfterReconnect(false, null)).toBe(false); - }); - - it('restores the reconnect tracking when the new room already reports the share', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - ScreenShareDelivery.counters.probes = 2; - const snapshot = adapter.prepareScreenShareReconnect(room); - adapter.resetStreamTracking(); - expect(ScreenShareDelivery.isSharing).toBe(false); - const {flows} = createFlowHooks(); - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(true); - expect(participant.isScreenShareEnabled).toBe(true); - expect(ScreenShareDelivery.counters.probes).toBe(2); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - expect(ActiveScreenShareSource.getSourceDimensions()).toEqual({width: 3840, height: 2160}); - }); - - it('runs the reconnect restore for a snapshot the room already reports as enabled', async () => { - const {room} = createShare(createSender(feed).sender); - const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); - const {flows} = createFlowHooks(); - Object.assign(adapter.liveKitFlows, { - restoreReconnect: (...args: Parameters) => flows.restoreReconnect(...args), - }); - ScreenShareDelivery.counters.probes = 4; - const snapshot = adapter.prepareScreenShareReconnect(room); - adapter.resetStreamTracking(); - expect(ScreenShareDelivery.isSharing).toBe(false); - expect(await adapter.restoreScreenShareAfterReconnect(room, snapshot)).toBe(true); - expect(ScreenShareDelivery.counters.probes).toBe(4); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - }); - - it('commits a ladder for the share a reconnect restarts without a snapshot', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); - const routing = adapter.controllerRouting as unknown as {setEnabled: () => Promise}; - let published: TrackPublishOptions | undefined; - routing.setEnabled = async () => { - published = await getEffectivePublishOptions(true, undefined); - }; - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - expect(await adapter.restoreScreenShareAfterReconnect(room, null)).toBe(true); - const ladder = ScreenShareDelivery.ladder; - if (!ladder) throw new Error('no committed ladder'); - expect(published?.screenShareEncoding).toEqual({ - maxBitrate: ladder.target.maxBitrate, - maxFramerate: ladder.target.frameRate, - priority: 'high', - }); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(primary.current().encodings[0].maxBitrate).toBe(ladder.levels[0].maxBitrate); - adapter.cancelEncoderVerificationInternal(); - }); - - it('publishes the ladder a reconnect restores rather than the settings of the moment', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - commitLadder('display', {width: 1280, height: 720}); - const restored = ScreenShareDelivery.ladder; - if (!restored) throw new Error('no committed ladder'); - const snapshot = adapter.prepareScreenShareReconnect(room); - adapter.resetStreamTracking(); - participant.isScreenShareEnabled = false; - expect(resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160}).target.maxBitrate).not.toBe( - restored.target.maxBitrate, - ); - const {flows, adapter: flowAdapter} = createFlowHooks(); - flowAdapter.getEffectivePublishOptionsInternal = async (enabled: boolean, options?: TrackPublishOptions) => - getEffectivePublishOptions(enabled, options); - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(true); - const [, options] = participant.publishTrack.mock.calls[0] as unknown as [unknown, TrackPublishOptions]; - expect(options.screenShareEncoding?.maxBitrate).toBe(restored.target.maxBitrate); - }); - - it('leaves the reconnect tracking alone when a pending operation has already published', async () => { - const {room} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - const snapshot = adapter.prepareScreenShareReconnect(room); - adapter.resetStreamTracking(); - commitLadder('device', null); - const owned = ScreenShareDelivery.ladder; - const {flows, adapter: flowAdapter} = createFlowHooks(); - flowAdapter.isScreenSharePending = true; - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(false); - expect(ScreenShareDelivery.ladder).toBe(owned); - expect(ActiveScreenShareSource.getPublishedSource()).toBeNull(); - }); - - it('leaves the tracking a reset handed to the room that took over', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); - const routing = adapter.controllerRouting as unknown as {setEnabled: () => Promise}; - routing.setEnabled = async () => { - adapter.resetStreamTracking(); - participant.isScreenShareEnabled = false; - commitLadder('device', null); - ActiveScreenShareSource.setPublishedSource('device', null); - }; - await adapter.setScreenShareEnabled(room, true, {sendUpdate: false, restartIfEnabled: true}); - expect(ScreenShareDelivery.isSharing).toBe(true); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('device'); - }); - - it('holds the tracking until the outermost held restart finishes', async () => { - const {room, participant} = createShare(createSender(feed).sender); - participant.isScreenShareEnabled = false; - const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); - const routing = adapter.controllerRouting as unknown as {setEnabled: () => Promise}; - const held: Array = []; - routing.setEnabled = async () => { - routing.setEnabled = async () => undefined; - await adapter.setScreenShareEnabled(room, true, {sendUpdate: false, restartIfEnabled: true}); - held.push(ScreenShareDelivery.isSharing); - }; - await adapter.setScreenShareEnabled(room, true, {sendUpdate: false, restartIfEnabled: true}); - expect(held).toEqual([true]); - expect(ScreenShareDelivery.isSharing).toBe(false); - }); - - it('restores the reconnect tracking when another screen share operation is pending', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - ScreenShareDelivery.counters.probes = 3; - const snapshot = adapter.prepareScreenShareReconnect(room); - adapter.resetStreamTracking(); - participant.isScreenShareEnabled = false; - const {flows, adapter: flowAdapter} = createFlowHooks(); - flowAdapter.isScreenSharePending = true; - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(false); - expect(ScreenShareDelivery.counters.probes).toBe(3); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - }); - - it('leaves the reconnect tracking alone when a pending operation already owns a share', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - const snapshot = adapter.prepareScreenShareReconnect(room); - adapter.resetStreamTracking(); - participant.isScreenShareEnabled = false; - commitLadder('device', null); - const owned = ScreenShareDelivery.ladder; - const {flows, adapter: flowAdapter} = createFlowHooks(); - flowAdapter.isScreenSharePending = true; - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(false); - expect(ScreenShareDelivery.ladder).toBe(owned); - expect(ActiveScreenShareSource.getPublishedSource()).toBeNull(); - }); - - it('keeps the screen share publication while a codec republish is in flight', () => { - const room = Object.assign(new EventEmitter(), { - localParticipant: Object.assign(new EventEmitter(), {isLocal: true, identity: 'local'}), - remoteParticipants: new Map(), - }) as unknown as Room; - const unpublished: Array = []; - let replaceInFlight = true; - const localStateChanges: Array = []; - bindRoomEvents( - room, - 1, - null, - 'channel', - {} as never, - { - connection: {createGuardedHandler: (_id: number, handler: unknown) => handler}, - media: {}, - mediaState: { - handleLocalTrackStateChange: (source: unknown) => { - localStateChanges.push(source); - return true; - }, - }, - participants: {upsertParticipant: () => undefined}, - permissions: {}, - remoteSpeaking: {}, - screenShare: { - handleLocalScreenShareTrackUnpublished: () => { - unpublished.push(true); - }, - isScreenSharePublicationReplaceInFlight: () => replaceInFlight, - }, - subscriptions: {}, - } as never, - ); - const publication = {source: Track.Source.ScreenShare}; - (room as unknown as EventEmitter).emit(RoomEvent.LocalTrackUnpublished, publication, {isLocal: true}); - expect(unpublished).toEqual([]); - expect(localStateChanges).toEqual([]); - replaceInFlight = false; - (room as unknown as EventEmitter).emit(RoomEvent.LocalTrackUnpublished, publication, {isLocal: true}); - expect(unpublished).toEqual([true]); - expect(localStateChanges).toEqual([Track.Source.ScreenShare]); - }); - - it('never monitors a share the store never began', async () => { - ScreenShareDelivery.endShare(); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 88); - expect(publishLocalCapabilities).not.toHaveBeenCalled(); - expect(primary.setParameters).not.toHaveBeenCalled(); - }); - - it('neither switches nor probes once the store stops tracking a monitored share', async () => { - vp8Available = true; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - ScreenShareDelivery.endShare(); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(publishLocalCapabilities).not.toHaveBeenCalled(); - expect(sentFrameRate(primary)).toBe(15); - feed.reason = 'none'; - await vi.advanceTimersByTimeAsync(TICK_MS * 80); - expect(primary.setParameters.mock.calls.map(([params]) => params.encodings[0].maxFramerate)).toEqual([30, 15]); - adapter.cancelEncoderVerificationInternal(); - }); - - const beginControlArmShare = () => { - ScreenShareDelivery.endShare(); - ScreenShareDelivery.beginShare({ - header: {chromiumMajor: 140, gpuKey: 'none', encoderMode: 'auto', hardwareAccelerationDisabled: false}, - ...resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160}), - hardware: {h264: true}, - adaptive: false, - }); - }; - - it('holds the published target for a control-arm share and stores nothing', async () => { - vp8Available = true; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - beginControlArmShare(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 88); - expect(publishLocalCapabilities).not.toHaveBeenCalled(); - expect(ScreenShareDelivery.notice).toBeNull(); - expect(ScreenShareDelivery.plan).toBeNull(); - expect(primary.setParameters.mock.calls.length).toBeGreaterThan(0); - expect(new Set(primary.setParameters.mock.calls.map(([params]) => params.encodings[0].maxFramerate))).toEqual( - new Set([30]), - ); - adapter.cancelEncoderVerificationInternal(); - }); - - it('recovers a stalled encoder for a control-arm share without showing a notice', async () => { - vp8Available = true; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, republish} = createAdapter(); - beginControlArmShare(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 3); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS * 2); - expect(markRuntimeFailure).toHaveBeenCalledWith('h264', 'screen-share-encode-stalled'); - expect(republish).toHaveBeenCalledWith(room, track, 'vp8'); - expect(ScreenShareDelivery.notice).toBeNull(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('probes up at once after a minute of clean ticks and reverts at once when the probe falls short', async () => { - rememberLevel(1); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(sentFrameRate(primary)).toBe(15); - await tickUntilDecision('probe', 40); - expect(sentFrameRate(primary)).toBe(30); - await tickUntilDecision('revert-probe', 12); - expect(sentFrameRate(primary)).toBe(15); - expect(ScreenShareDelivery.counters.probeBlocked).toBe(true); - await vi.advanceTimersByTimeAsync(TICK_MS * 80); - expect(primary.setParameters.mock.calls.map(([params]) => params.encodings[0].maxFramerate)).toEqual([15, 30, 15]); - adapter.cancelEncoderVerificationInternal(); - }); - - it('reverts a probe onto a level the shrunken ladder still holds', async () => { - expect(ScreenShareDelivery.ladder?.levels).toHaveLength(3); - rememberLevel(2); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - await tickUntilDecision('probe', 60); - const shrunken = resolveConfiguredScreenShareLadder('display', {width: 1280, height: 720}); - expect(shrunken.levels).toHaveLength(2); - ScreenShareDelivery.retarget(shrunken); - feed.encodedFps = 5; - await tickUntilDecision('revert-probe', 20); - expect(lastDecision()).toMatchObject({decision: 'revert-probe', levelIndex: 1}); - expect(ScreenShareDelivery.notice).toEqual({ - kind: 'device-framerate', - width: 1280, - height: 720, - frameRate: 15, - }); - adapter.cancelEncoderVerificationInternal(); - }); - - it('settles onto a level the shrunken ladder still holds when it never probed', async () => { - expect(ScreenShareDelivery.ladder?.levels).toHaveLength(3); - rememberLevel(2, Date.now() + 3_600_000); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 4); - expect(ScreenShareDelivery.plan?.levelIndex).toBe(2); - const shrunken = resolveConfiguredScreenShareLadder('display', {width: 1280, height: 720}); - expect(shrunken.levels).toHaveLength(2); - ScreenShareDelivery.retarget(shrunken); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(ScreenShareDelivery.plan?.levelIndex).toBe(1); - expect(ScreenShareDelivery.plan?.level).toEqual(shrunken.levels[1]); - adapter.cancelEncoderVerificationInternal(); - }); - - it('probes at most four times in one share', async () => { - rememberLevel(1); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - let capacity = 30; - let ticksAtTop = 0; - let probes = 0; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - for (let tick = 0; tick < 400; tick++) { - const before = sentFrameRate(primary) ?? 0; - feed.encodedFps = Math.min(capacity, before); - await vi.advanceTimersByTimeAsync(TICK_MS); - const after = sentFrameRate(primary) ?? 0; - if (after > before) probes += 1; - ticksAtTop = after === 30 ? ticksAtTop + 1 : 0; - capacity = ticksAtTop > 10 ? 15 : after === 15 ? 30 : capacity; - } - expect(probes).toBe(4); - adapter.cancelEncoderVerificationInternal(); - }); - - it('does not probe while the memory blocks it, until Try full quality again', async () => { - rememberLevel(1, Date.now() + 3_600_000); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 60); - expect(sentFrameRate(primary)).toBe(15); - expect(primary.setParameters).toHaveBeenCalledTimes(1); - await adapter.resetScreenShareDeliveryToFullQuality(); - expect(sentFrameRate(primary)).toBe(30); - await tickUntilDecision('step', 12); - expect(sentFrameRate(primary)).toBe(15); - await tickUntilDecision('probe', 40); - expect(sentFrameRate(primary)).toBe(30); - adapter.cancelEncoderVerificationInternal(); - }); - - it('allows a codec switch again after Try full quality again', async () => { - vp8Available = true; - ScreenShareDelivery.counters.switches = 1; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.encodedFps = 15; - feed.reason = 'cpu'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await adapter.resetScreenShareDeliveryToFullQuality(); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 8); - expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('re-applies the level on the tick a resolution-short window closes', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - feed.sentWidth = 1280; - feed.sentHeight = 720; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 6); - let reads = primary.getParameters.mock.calls.length; - await vi.advanceTimersByTimeAsync(TICK_MS); - const plainTickReads = primary.getParameters.mock.calls.length - reads; - expect(lastDecision()).toBeUndefined(); - reads = primary.getParameters.mock.calls.length; - await vi.advanceTimersByTimeAsync(TICK_MS); - const decisionTickReads = primary.getParameters.mock.calls.length - reads; - expect(lastDecision()?.decision).toBe('reapply-level'); - expect(plainTickReads).toBeGreaterThan(0); - expect(decisionTickReads).toBe(plainTickReads * 2); - adapter.cancelEncoderVerificationInternal(); - }); - - it('restarts warm-up on a settings push, so one stalled sample does not stop the share', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - codecDenial = 'runtime-failed'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 3); - expect(await adapter.updateActiveScreenShareSettings(room, {})).toBe(true); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS * 2); - expect(pushWithKey).not.toHaveBeenCalled(); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(pushWithKey).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('restarts warm-up on Try full quality again, so one stalled sample does not stop the share', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - codecDenial = 'runtime-failed'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 3); - await adapter.resetScreenShareDeliveryToFullQuality(); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS * 2); - expect(pushWithKey).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('returns to the top level and clears the notice on a settings push', async () => { - rememberLevel(1); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(0); - expect(sentFrameRate(primary)).toBe(15); - await adapter.updateActiveScreenShareSettings(room, {}); - expect(ScreenShareDelivery.notice).toBeNull(); - expect(sentFrameRate(primary)).toBe(30); - adapter.cancelEncoderVerificationInternal(); - }); - - it('raises apply-failed when a settings push cannot apply the capture constraints', async () => { - const primary = createSender(feed); - const {room, participant, track, applyConstraints} = createShare(primary.sender); - const {adapter} = createAdapter(); - applyConstraints.mockRejectedValue(new Error('rejected')); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - await adapter.updateActiveScreenShareSettings(room, {resolution: {width: 1280, height: 720, frameRate: 30}}); - expect(applyConstraints).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.notice).toBeNull(); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(ScreenShareDelivery.notice).toEqual({kind: 'apply-failed'}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('enforces again on a new sender after apply-failed', async () => { - const rejecting = createSender(feed, {reject: true}); - const accepting = createSender(feed); - const {room, participant, track} = createShare(rejecting.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 2); - track.sender = accepting.sender; - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(accepting.setParameters).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it.each([ - [ - 'a settings push', - (adapter: InstanceType, room: Room) => - adapter.updateActiveScreenShareSettings(room, {}), - ], - [ - 'Try full quality again', - (adapter: InstanceType) => - adapter.resetScreenShareDeliveryToFullQuality(), - ], - ])('clears apply-failed and enforces on every tick again after %s', async (_name, clear) => { - const primary = createSender(feed, {reject: true}); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 2); - expect(ScreenShareDelivery.notice).toEqual({kind: 'apply-failed'}); - primary.setRejecting(false); - await clear(adapter, room); - expect(ScreenShareDelivery.notice).toBeNull(); - const applied = primary.setParameters.mock.calls.length; - primary.current().degradationPreference = undefined; - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(primary.setParameters).toHaveBeenCalledTimes(applied + 1); - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(ScreenShareDelivery.notice).toBeNull(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('gives a backup sender the level current when it arrives', async () => { - rememberLevel(1); - const primary = createSender(feed); - const backup = createSender(feed, {mimeType: 'video/VP9'}); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await adapter.enforceScreenShareSenderParametersInternal(participant as never, {videoCodec: 'h264'}); - expect(sentFrameRate(primary)).toBe(15); - await adapter.resetScreenShareDeliveryToFullQuality(); - participant.emit(ParticipantEvent.LocalSenderCreated, backup.sender, track, 'h264'); - await vi.advanceTimersByTimeAsync(0); - expect(sentFrameRate(backup)).toBe(30); - adapter.cancelEncoderVerificationInternal(); - }); - - it('leaves senders of other tracks and the primary sender to their own paths', async () => { - const primary = createSender(feed); - const other = createSender(feed); - const {participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - await adapter.enforceScreenShareSenderParametersInternal(participant as never, {videoCodec: 'h264'}); - expect(primary.setParameters).toHaveBeenCalledTimes(1); - participant.emit(ParticipantEvent.LocalSenderCreated, other.sender, {}, 'h264'); - primary.current().degradationPreference = undefined; - participant.emit(ParticipantEvent.LocalSenderCreated, primary.sender, track, 'h264'); - await vi.advanceTimersByTimeAsync(0); - expect(other.setParameters).not.toHaveBeenCalled(); - expect(primary.setParameters).toHaveBeenCalledTimes(1); - }); - - it('enforces the backup senders on every tick', async () => { - const primary = createSender(feed); - const backup = createSender(feed, {mimeType: 'video/VP9'}); - const {room, participant, track} = createShare(primary.sender); - track.simulcastCodecs.set('h264', {sender: backup.sender}); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); - expect(backup.current().degradationPreference).toBe('maintain-resolution'); - expect(backup.current().encodings).toEqual([ - {maxBitrate: 4_500_000, maxFramerate: 30, scaleResolutionDownBy: 2, priority: 'high', networkPriority: 'high'}, - ]); - backup.current().encodings[0].maxFramerate = 60; - await vi.advanceTimersByTimeAsync(TICK_MS); - expect(sentFrameRate(backup)).toBe(30); - adapter.cancelEncoderVerificationInternal(); - }); - - it('applies the content hint to the cloned backup tracks', () => { - const primary = createSender(feed); - const backup = createSender(feed, {mimeType: 'video/VP9'}); - const {participant, track} = createShare(primary.sender); - track.simulcastCodecs.set('h264', {sender: backup.sender}); - const {adapter} = createAdapter(); - adapter.applyScreenShareContentHintInternal(participant as never); - expect(track.mediaStreamTrack.contentHint).toBe('text'); - expect((backup.sender.track as unknown as {contentHint: string}).contentHint).toBe('text'); - }); - - it('names the viewer when the pinned codec is advertised but not what was published', () => { - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('av1'); - preferenceOrder = ['av1', 'h264']; - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - expect(ScreenShareDelivery.notice).toEqual({kind: 'codec-viewer', codec: 'h264', pinnedCodec: 'av1'}); - adapter.cancelEncoderVerificationInternal(); - }); - - it('reports the lower start instead of the substitution when both apply', () => { - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('av1'); - rememberLevel(1); - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter} = createAdapter(); - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - expect(ScreenShareDelivery.notice?.kind).toBe('started-lower'); - adapter.cancelEncoderVerificationInternal(); - }); - - it('shows no modal when the stalled track is no longer published', async () => { - const primary = createSender(feed); - const {room, participant, track, publication} = createShare(primary.sender); - const {adapter, setEnabled} = createAdapter(); - codecDenial = 'runtime-failed'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 3); - const replacement = createShare(createSender(feed).sender).track; - Object.assign(publication, {videoTrack: replacement, track: replacement}); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS * 4); - expect(pushWithKey).not.toHaveBeenCalled(); - expect(setEnabled).not.toHaveBeenCalled(); - adapter.cancelEncoderVerificationInternal(); - }); - - it('shows one modal while the stop it started is still running', async () => { - const primary = createSender(feed); - const {room, participant, track} = createShare(primary.sender); - const {adapter, setEnabled} = createAdapter(); - setEnabled.mockImplementation(() => new Promise(() => undefined)); - codecDenial = 'runtime-failed'; - adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); - await vi.advanceTimersByTimeAsync(FIRST_TICK_MS + TICK_MS * 3); - feed.encodedFps = 0; - await vi.advanceTimersByTimeAsync(TICK_MS * 12); - expect(pushWithKey).toHaveBeenCalledTimes(1); - expect(setEnabled).toHaveBeenCalledTimes(1); - adapter.cancelEncoderVerificationInternal(); - }); - - it('does not reconcile while a share operation is pending', async () => { - const {room} = createShare(createSender(feed).sender); - const {adapter, republish} = createAdapter(); - adapter.transitionScreenShareLifecycleInternal({type: 'share.restore', sourceType: 'display'}); - await adapter.reconcileScreenShareCodecInternal(room); - expect(republish).not.toHaveBeenCalled(); - }); - - it('does not reconcile a track that is not published', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter, republish} = createAdapter(); - participant.trackPublications.clear(); - await adapter.reconcileScreenShareCodecInternal(room); - expect(republish).not.toHaveBeenCalled(); - }); - - it('reconciles the same codec pair again in the next share', async () => { - const {room} = createShare(createSender(feed).sender); - const {adapter, republish} = createAdapter(); - await adapter.reconcileScreenShareCodecInternal(room); - adapter.resetStreamTracking(); - await adapter.reconcileScreenShareCodecInternal(room); - expect(republish).toHaveBeenCalledTimes(2); - }); - - it('does not reconcile a codec pair again after a publish policy correction', async () => { - const {room, publication} = createShare(createSender(feed).sender); - const {adapter, republish} = createAdapter(); - await adapter.reconcileScreenShareCodecInternal(room); - publication.options.videoCodec = 'vp9'; - await adapter.reconcileScreenShareCodecInternal(room); - publication.options.videoCodec = 'h264'; - await adapter.reconcileScreenShareCodecInternal(room); - expect(republish).toHaveBeenCalledTimes(1); - }); - - it('reconciles the codec once a share has been enabled', async () => { - const {room} = createShare(createSender(feed).sender); - const {flows, calls} = createFlowHooks(); - await flows.setEnabled(room, true); - expect(calls).toEqual(['share.start', 'share.resolve', 'reconcile']); - }); - - it('drains the queue and then reconciles after a codec republish', async () => { - const {room, track} = createShare(createSender(feed).sender); - const {flows, calls} = createFlowHooks(); - const republished = await flows.republishActiveShareWithCodec(room, track as never, 'vp9'); - expect(republished).toBe(true); - expect(calls).toEqual(['share.replace', 'share.resolve', 'drain', 'reconcile']); - }); - - it('does not reconcile a republish that moved off the negotiated codec', async () => { - const {room, track} = createShare(createSender(feed).sender); - const {flows, calls} = createFlowHooks(); - const republished = await flows.republishActiveShareWithCodec(room, track as never, 'h264'); - expect(republished).toBe(true); - expect(calls).toEqual(['share.replace', 'share.resolve', 'drain']); - }); - - it('reconciles a republish that was made before anything was negotiated', async () => { - selectedCodec = null; - const {room, track} = createShare(createSender(feed).sender); - const {flows, calls} = createFlowHooks(); - await flows.republishActiveShareWithCodec(room, track as never, 'h264'); - expect(calls).toEqual(['share.replace', 'share.resolve', 'drain', 'reconcile']); - }); - - it('reconciles a republish that the negotiation overtook while it was in flight', async () => { - const {room, track, participant, publication} = createShare(createSender(feed).sender); - participant.publishTrack.mockImplementationOnce(async () => { - selectedCodec = 'av1'; - return publication; - }); - const {flows, calls} = createFlowHooks(); - await flows.republishActiveShareWithCodec(room, track as never, 'vp9'); - expect(calls).toEqual(['share.replace', 'share.resolve', 'drain', 'reconcile']); - }); - - it('drains the queue and then reconciles after a device share attempt', async () => { - const {room, participant} = createShare(createSender(feed).sender); - participant.isScreenShareEnabled = false; - participant.trackPublications.clear(); - const {flows, calls} = createFlowHooks(); - await flows.startDeviceScreenShare(room); - expect(calls[0]).toBe('share.start'); - expect(calls.slice(-2)).toEqual(['drain', 'reconcile']); - }); - - it('drains the queue and then reconciles once a reconnect restore has finished', async () => { - const {room, participant, track} = createShare(createSender(feed).sender); - participant.isScreenShareEnabled = false; - participant.trackPublications.clear(); - const {flows, calls} = createFlowHooks(['stop']); - const restored = await flows.restoreReconnect(room, { - videoTrack: track.mediaStreamTrack as never, - audioMuted: false, - contentSource: 'display', - source: capturedSource(), - delivery: ScreenShareDelivery.snapshot(), - }); - expect(restored).toBe(true); - expect(calls).toEqual(['share.restore', 'share.resolve', 'drain', 'stop', 'reconcile']); - }); - - it('drains the queue and then reconciles when a reconnect restore fails', async () => { - const {room, participant, track} = createShare(createSender(feed).sender); - participant.isScreenShareEnabled = false; - participant.trackPublications.clear(); - participant.publishTrack.mockRejectedValueOnce(new Error('publish failed')); - const {flows, calls} = createFlowHooks(); - const restored = await flows.restoreReconnect(room, { - videoTrack: track.mediaStreamTrack as never, - audioMuted: false, - contentSource: 'display', - source: capturedSource(), - delivery: ScreenShareDelivery.snapshot(), - }); - expect(restored).toBe(false); - expect(calls).toEqual(['share.restore', 'share.reject', 'drain', 'reconcile']); - expect(ScreenShareDelivery.isSharing).toBe(false); - expect(ActiveScreenShareSource.getPublishedSource()).toBeNull(); - }); - - it('keeps tracking the same delivery share across a reconnect restore', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - rememberLevel(2); - ScreenShareDelivery.counters.switches = 1; - ScreenShareDelivery.counters.probes = 3; - const snapshot = adapter.prepareScreenShareReconnect(room); - expect(snapshot?.delivery.counters).toMatchObject({switches: 1, probes: 3}); - participant.isScreenShareEnabled = false; - const {flows, calls} = createFlowHooks(); - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(true); - expect(calls).toContain('cleanup'); - expect(ScreenShareDelivery.isSharing).toBe(true); - expect(ScreenShareDelivery.counters).toMatchObject({switches: 1, probes: 3}); - expect(ScreenShareDelivery.verdicts.h264?.settledIndex).toBe(2); - }); - - it('keeps the capture source across a reconnect restore', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - const ladder = resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160}); - const snapshot = adapter.prepareScreenShareReconnect(room); - participant.isScreenShareEnabled = false; - const {flows, calls} = createFlowHooks(); - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(true); - expect(calls).toContain('cleanup'); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - expect(ActiveScreenShareSource.getSourceId()).toBe('screen:1'); - expect(ActiveScreenShareSource.getSourceDimensions()).toEqual({width: 3840, height: 2160}); - expect(ScreenShareDelivery.ladder).toMatchObject(ladder); - expect(snapshot?.delivery.share?.target).toEqual(ladder.target); - }); - - it('keeps the delivery plan across a reconnect restore', async () => { - const {room, participant} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - const {target, levels} = resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160}); - ScreenShareDelivery.plan = { - target, - codec: 'h264', - level: levels[1], - levelIndex: 1, - deliveredFrameRate: 12, - sentWidth: 1920, - sentHeight: 1080, - sourceFrameRate: null, - holdingShort: true, - }; - const snapshot = adapter.prepareScreenShareReconnect(room); - participant.isScreenShareEnabled = false; - const {flows} = createFlowHooks(); - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(true); - expect(ScreenShareDelivery.plan).toMatchObject({levelIndex: 1, deliveredFrameRate: 12, holdingShort: true}); - }); - - it('keeps the delivery share and the capture source when the reconnect finds the share enabled', async () => { - const {room} = createShare(createSender(feed).sender); - const {adapter} = createAdapter(); - rememberLevel(2); - ScreenShareDelivery.counters.probes = 2; - const snapshot = adapter.prepareScreenShareReconnect(room); - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - const {flows} = createFlowHooks(); - expect(await flows.restoreReconnect(room, snapshot as never)).toBe(true); - expect(ScreenShareDelivery.isSharing).toBe(true); - expect(ScreenShareDelivery.counters.probes).toBe(2); - expect(ScreenShareDelivery.verdicts.h264?.settledIndex).toBe(2); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - expect(ActiveScreenShareSource.getSourceDimensions()).toEqual({width: 3840, height: 2160}); - }); - - it('restores the recorded source dimensions when a replacement rolls back', () => { - const {participant, track} = createShare(createSender(feed).sender); - const {flows} = createFlowHooks(); - const replacement = flows as unknown as ScreenShareReplacementHandle; - const snapshot = replacement.captureScreenShareReplacementSnapshot(participant, track, {videoCodec: 'h264'}); - ActiveScreenShareSource.setPublishedSource('app', 'window:2'); - ActiveScreenShareSource.setSourceDimensions({width: 1280, height: 720}); - replacement.restorePublishedScreenShareSource(snapshot); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('display'); - expect(ActiveScreenShareSource.getSourceId()).toBe('screen:1'); - expect(ActiveScreenShareSource.getSourceDimensions()).toEqual({width: 3840, height: 2160}); - }); - - it('clears the source dimensions when the replacement rolls back to no published source', () => { - const {participant, track} = createShare(createSender(feed).sender); - const {flows} = createFlowHooks(); - const replacement = flows as unknown as ScreenShareReplacementHandle; - ActiveScreenShareSource.clear(); - const snapshot = replacement.captureScreenShareReplacementSnapshot(participant, track, {videoCodec: 'h264'}); - ActiveScreenShareSource.setPublishedSource('display', 'screen:2'); - ActiveScreenShareSource.setSourceDimensions({width: 1280, height: 720}); - replacement.restorePublishedScreenShareSource(snapshot); - expect(ActiveScreenShareSource.getPublishedSource()).toBeNull(); - expect(ActiveScreenShareSource.getSourceDimensions()).toBeNull(); - }); - - it('ends the delivery share when the share state is cleaned up', () => { - const {adapter} = createAdapter(); - rememberLevel(1); - ScreenShareDelivery.counters.switches = 1; - ScreenShareDelivery.setNotice({kind: 'apply-failed'}); - adapter.resetStreamTracking(); - expect(ScreenShareDelivery.notice).toBeNull(); - expect(ScreenShareDelivery.verdicts).toEqual({}); - expect(ScreenShareDelivery.counters.switches).toBe(0); - }); -}); - -describe('the retired software encoder quality', () => { - it('turns a stored real-time quality with automatic layering into a single layer, once', () => { - const unset: Record = {screenShareSoftwareQualityPrefV2: 'realtime'}; - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(unset)).toBe(true); - expect(unset.screenShareScalabilityModePrefV2).toBe('single_layer'); - - const automatic: Record = { - screenShareSoftwareQualityPrefV2: 'realtime', - screenShareScalabilityModePrefV2: 'auto', - }; - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(automatic)).toBe(true); - expect(automatic.screenShareScalabilityModePrefV2).toBe('single_layer'); - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(automatic)).toBe(false); - expect(automatic.screenShareScalabilityModePrefV2).toBe('single_layer'); - }); - - it('reads a stored spatial layering as automatic and moves it too', () => { - const spatial: Record = { - screenShareSoftwareQualityPrefV2: 'realtime', - screenShareScalabilityModePrefV2: 'spatial', - }; - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(spatial)).toBe(true); - expect(spatial.screenShareScalabilityModePrefV2).toBe('single_layer'); - }); - - it('leaves stored temporal layers and every other quality alone', () => { - const temporal: Record = { - screenShareSoftwareQualityPrefV2: 'realtime', - screenShareScalabilityModePrefV2: 'temporal', - }; - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(temporal)).toBe(true); - expect(temporal.screenShareScalabilityModePrefV2).toBe('temporal'); - - const balanced: Record = {screenShareSoftwareQualityPrefV2: 'balanced'}; - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(balanced)).toBe(true); - expect(balanced.screenShareScalabilityModePrefV2).toBeUndefined(); - }); - - it('drops the stored quality, even for a store the earlier migration already flagged', () => { - const fresh: Record = {screenShareSoftwareQualityPrefV2: 'quality'}; - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(fresh)).toBe(true); - expect(fresh.screenShareSoftwareQualityPrefV2).toBeUndefined(); - - const flagged: Record = { - screenShareSoftwareQualityPrefV2: 'quality', - screenShareSoftwareQualityRetiredV1: true, - }; - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(flagged)).toBe(true); - expect(flagged.screenShareSoftwareQualityPrefV2).toBeUndefined(); - expect(applyScreenShareSoftwareQualityRetiredMigrationV1(flagged)).toBe(false); - }); - - it('leaves the store with no quality field and no reader for it', () => { - expect(VoiceSettings).not.toHaveProperty('screenShareSoftwareQualityPrefV2'); - expect(VoiceSettings).not.toHaveProperty('getScreenShareSoftwareQuality'); - expect(VoiceSettings).not.toHaveProperty('getScreenShareSoftwareQualityOverride'); - }); -}); - -describe('the retired H.264 backup stream mode', () => { - it('drops the stored mode once', () => { - const stored: Record = {screenShareBackupCodecModePrefV2: 'h264_simulcast'}; - expect(applyScreenShareBackupCodecModeRetiredMigrationV1(stored)).toBe(true); - expect(stored.screenShareBackupCodecModePrefV2).toBeUndefined(); - expect(applyScreenShareBackupCodecModeRetiredMigrationV1(stored)).toBe(false); - - const off: Record = {screenShareBackupCodecModePrefV2: 'off'}; - expect(applyScreenShareBackupCodecModeRetiredMigrationV1(off)).toBe(true); - expect(off.screenShareBackupCodecModePrefV2).toBeUndefined(); - - const untouched: Record = {screenShareScalabilityModePrefV2: 'temporal'}; - expect(applyScreenShareBackupCodecModeRetiredMigrationV1(untouched)).toBe(false); - expect(untouched.screenShareScalabilityModePrefV2).toBe('temporal'); - }); - - it('leaves the store with no mode field and no reader for it', () => { - expect(VoiceSettings).not.toHaveProperty('screenShareBackupCodecModePrefV2'); - expect(VoiceSettings).not.toHaveProperty('getScreenShareBackupCodecMode'); - expect(VoiceSettings).not.toHaveProperty('getScreenShareBackupCodecModeOverride'); - }); - - it('still publishes the automatic H.264 backup simulcast for an SVC primary', async () => { - const svc = await getEffectivePublishOptions(true, {videoCodec: 'av1'}); - expect(svc?.backupCodec).toEqual({codec: 'h264'}); - expect(svc?.backupCodecPolicy).toBe(BackupCodecPolicy.SIMULCAST); - - const h264 = await getEffectivePublishOptions(true, {videoCodec: 'h264'}); - expect(h264?.backupCodec).toBe(false); - expect(h264?.backupCodecPolicy).toBeUndefined(); - }); -}); - -describe('the retired screen share settings on boot', () => { - it('drops both stored keys when the store migrates its persisted settings', () => { - const previous = AppStorage.getItem('VoiceSettings'); - AppStorage.setItem( - 'VoiceSettings', - JSON.stringify({ - screenShareSoftwareQualityPrefV2: 'quality', - screenShareBackupCodecModePrefV2: 'h264_simulcast', - }), - ); - (VoiceSettings as unknown as {migratePersistedSettings: () => void}).migratePersistedSettings(); - const stored = JSON.parse(AppStorage.getItem('VoiceSettings') ?? '{}') as Record; - expect(stored).not.toHaveProperty('screenShareSoftwareQualityPrefV2'); - expect(stored).not.toHaveProperty('screenShareBackupCodecModePrefV2'); - if (previous === null) { - AppStorage.removeItem('VoiceSettings'); - } else { - AppStorage.setItem('VoiceSettings', previous); - } - }); -}); - -describe('the retired screen share settings in the settings search index', () => { - it('no longer sends a backup stream search to the advanced video section', () => { - const entry = voiceVideoIndex.find((candidate) => candidate.id === 'voice-video-screen-share-encoder-controls'); - expect(entry?.description).toEqual({ - message: 'Encoder, SVC, and bitrate presets', - comment: 'Settings search entry description. One-line summary of what the settings search entry controls.', - }); - }); -}); - -const {resolveUserVideoTabScreenShareState, SCREEN_SHARE_PRESET_DESCRIPTORS} = await import( - '@app/features/user/components/modals/tabs/UserVideoTabState' -); -const {selectScreenShareEncoderPathDescription} = await import( - '@app/features/user/components/modals/tabs/advanced_settings_tab/AdvancedVideoControlsState' -); -const { - resolveScreenShareLevels, - resolveScreenShareQualityPick, - resolveScreenShareTarget, - SUPPORTED_SCREEN_SHARE_FRAME_RATES, -} = await import('@app/features/voice/utils/ScreenShareOptions'); - -describe('the video settings tab', () => { - const FREE_RESOLUTION_OPTIONS = [ - {value: 'low_480p', isDisabled: false}, - {value: 'medium', isDisabled: false}, - {value: 'high', isDisabled: true}, - {value: 'ultra', isDisabled: true}, - {value: 'source', isDisabled: true}, - ]; - const PREMIUM_RESOLUTION_OPTIONS = [ - {value: 'low_480p', isDisabled: false}, - {value: 'medium', isDisabled: false}, - {value: 'high', isDisabled: false}, - {value: 'ultra', isDisabled: false}, - {value: 'source', isDisabled: false}, - ]; - const stateOf = (quality: Parameters[0], selfHosted = false) => - resolveUserVideoTabScreenShareState({quality, hintSetting: 'auto', selfHosted}); - - it('shows a free account the clamped values, the saved ones and no preset note', () => { - const quality = { - mode: 'custom', - storedResolution: 'source', - storedFrameRate: 30, - entitled: false, - context: 'display', - } as const; - expect(stateOf(quality)).toEqual({ - resolution: 'medium', - frameRate: 30, - resolutionOptions: FREE_RESOLUTION_OPTIONS, - frameRateOptions: [15, 30], - preset: null, - presetOverriddenByContext: false, - saved: {resolution: 'source', frameRate: 30}, - }); - }); - - it('shows a premium Screen share account what the preset sends and writes nothing for those values', () => { - const quality = { - mode: 'screenshare', - storedResolution: 'medium', - storedFrameRate: 30, - entitled: true, - context: 'display', - } as const; - expect(stateOf(quality)).toEqual({ - resolution: 'source', - frameRate: 15, - resolutionOptions: PREMIUM_RESOLUTION_OPTIONS, - frameRateOptions: [15, 30, 60], - preset: 'screenshare', - presetOverriddenByContext: false, - saved: null, - }); - expect(resolveScreenShareQualityPick(quality, {axis: 'resolution', resolution: 'source'})).toBeNull(); - expect(resolveScreenShareQualityPick(quality, {axis: 'frameRate', frameRate: 15})).toBeNull(); - }); - - it('names the preset that owns a free Gaming account and keeps the saved values out of the note', () => { - expect( - stateOf({ - mode: 'gaming', - storedResolution: 'high', - storedFrameRate: 60, - entitled: false, - context: 'display', - }), - ).toEqual({ - resolution: 'medium', - frameRate: 30, - resolutionOptions: FREE_RESOLUTION_OPTIONS, - frameRateOptions: [15, 30], - preset: 'gaming', - presetOverriddenByContext: false, - saved: null, - }); - }); - - it('offers a self-hosted free account nothing it cannot send', () => { - expect( - stateOf( - {mode: 'custom', storedResolution: 'medium', storedFrameRate: 30, entitled: false, context: 'display'}, - true, - ), - ).toMatchObject({ - resolutionOptions: [ - {value: 'low_480p', isDisabled: false}, - {value: 'medium', isDisabled: false}, - ], - frameRateOptions: [15, 30], - }); - }); - - it('always offers the value it says the share uses', () => { - const resolutions = ['low_240p', 'low_480p', 'medium', 'high', 'ultra', 'source'] as const; - for (const mode of ['custom', 'gaming', 'screenshare'] as const) { - for (const storedResolution of resolutions) { - for (const storedFrameRate of SUPPORTED_SCREEN_SHARE_FRAME_RATES) { - for (const entitled of [false, true]) { - for (const selfHosted of [false, true]) { - const state = stateOf( - {mode, storedResolution, storedFrameRate, entitled, context: 'display'}, - selfHosted, - ); - const scenario = `${mode}|${storedResolution}|${storedFrameRate}|${entitled}|${selfHosted}`; - expect(`${scenario}|${state.frameRateOptions.includes(state.frameRate)}`).toBe(`${scenario}|true`); - const option = state.resolutionOptions.find((entry) => entry.value === state.resolution); - expect(`${scenario}|${option?.isDisabled}`).toBe(`${scenario}|false`); - } - } - } - } - } - }); - - it('never writes a premium resolution for a free frame rate pick', () => { - const quality = { - mode: 'screenshare', - storedResolution: 'source', - storedFrameRate: 60, - entitled: false, - context: 'display', - } as const; - expect(resolveScreenShareQualityPick(quality, {axis: 'frameRate', frameRate: 60})).toBeNull(); - expect(resolveScreenShareQualityPick(quality, {axis: 'frameRate', frameRate: 15})).toEqual({ - streamingMode: 'custom', - videoFrameRate: 15, - }); - }); - - it('labels each preset with its own name', () => { - expect(SCREEN_SHARE_PRESET_DESCRIPTORS.gaming.message).toBe('Gaming'); - expect(SCREEN_SHARE_PRESET_DESCRIPTORS.screenshare.message).toBe('Screen share'); - }); - - it('explains the encoder path only when this device has no hardware encoder', () => { - expect(selectScreenShareEncoderPathDescription(true).message).toBe( - 'No hardware encoder was found on this device, so Prefer hardware works like Automatic.', - ); - expect(selectScreenShareEncoderPathDescription(false).message).toBe('Encoder preference for new screen shares.'); - }); -}); - -const { - selectStreamSettingsPresetOverriddenByContext, - selectStreamSettingsQualityMenuState, - selectStreamSettingsQualityWrite, -} = await import('@app/features/voice/components/StreamSettingsMenuContentStateMachine'); -const {StreamSettingsMenuContent} = await import('@app/features/voice/components/StreamSettingsMenuContent'); -const {act, createElement} = await import('react'); -const {createRoot} = await import('react-dom/client'); - -describe('the in-call stream menu', () => { - const freeScreenShare = { - mode: 'screenshare', - storedResolution: 'medium', - storedFrameRate: 30, - entitled: false, - context: 'display', - } as const; - const writeFor = ( - quality: Parameters[0], - pick: Parameters[1], - premiumOption = false, - ) => selectStreamSettingsQualityWrite({quality, pick, premiumOption, showPremiumFeatures: true}); - const menuStateOf = (quality: Parameters[0], showPremiumFeatures = true) => - selectStreamSettingsQualityMenuState({ - quality, - target: resolveScreenShareTarget({...quality, sourceDimensions: null, hintSetting: 'auto'}), - showPremiumFeatures, - }); - const selectedValues = (options: ReadonlyArray<{value: T; selected: boolean}>) => - options.filter((option) => option.selected).map((option) => option.value); - - it('keeps the frame rate of a free account that picks a resolution', () => { - expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'low_480p'})).toEqual({ - kind: 'write', - patch: {streamingMode: 'custom', screenshareResolution: 'low_480p'}, - }); - }); - - it('writes no premium resolution when a free account picks a frame rate', () => { - expect(writeFor(freeScreenShare, {axis: 'frameRate', frameRate: 15})).toEqual({ - kind: 'write', - patch: {streamingMode: 'custom', videoFrameRate: 15}, - }); - }); - - it('offers premium instead of writing a premium pick for a free account', () => { - expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'ultra'}, true)).toEqual({kind: 'premium'}); - expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'source'}, true)).toEqual({kind: 'premium'}); - expect(writeFor(freeScreenShare, {axis: 'frameRate', frameRate: 60}, true)).toEqual({kind: 'premium'}); - expect( - selectStreamSettingsQualityWrite({ - quality: freeScreenShare, - pick: {axis: 'frameRate', frameRate: 60}, - premiumOption: true, - showPremiumFeatures: false, - }), - ).toEqual({kind: 'none'}); - }); - - it('writes nothing for the value a preset already sends', () => { - expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'medium'})).toEqual({kind: 'none'}); - expect(writeFor(freeScreenShare, {axis: 'frameRate', frameRate: 30})).toEqual({kind: 'none'}); - }); - - it('offers the resolution the share actually uses and marks it selected', () => { - const state = menuStateOf({ - mode: 'custom', - storedResolution: 'high', - storedFrameRate: 30, - entitled: true, - context: 'display', - }); - expect(state.resolutions.map((option) => option.value)).toEqual(['low_480p', 'medium', 'high', 'ultra', 'source']); - expect(selectedValues(state.resolutions)).toEqual(['high']); - }); - - it('offers no retired 240p rung and lands a persisted 240p store on the lowest real one', () => { - const restore = { - mode: VoiceSettings.getStreamingMode(), - resolution: VoiceSettings.getScreenshareResolution(), - frameRate: VoiceSettings.getVideoFrameRate(), - }; - VoiceSettings.updateSettings({streamingMode: 'custom', screenshareResolution: 'low_240p', videoFrameRate: 30}); - expect(VoiceSettings.getScreenshareResolution()).toBe('low_480p'); - const quality = { - mode: VoiceSettings.getStreamingMode(), - storedResolution: VoiceSettings.getScreenshareResolution(), - storedFrameRate: VoiceSettings.getVideoFrameRate(), - entitled: true, - context: 'display', - } as const; - const menuState = menuStateOf(quality); - expect(menuState.resolutions.map((option) => option.value)).toEqual([ - 'low_480p', - 'medium', - 'high', - 'ultra', - 'source', - ]); - expect(selectedValues(menuState.resolutions)).toEqual(['low_480p']); - const tabState = resolveUserVideoTabScreenShareState({quality, hintSetting: 'auto', selfHosted: false}); - expect(tabState.resolution).toBe('low_480p'); - expect(tabState.resolutionOptions.map((option) => option.value)).toEqual([ - 'low_480p', - 'medium', - 'high', - 'ultra', - 'source', - ]); - VoiceSettings.updateSettings({ - streamingMode: restore.mode, - screenshareResolution: restore.resolution, - videoFrameRate: restore.frameRate, - }); - }); - - it('offers no 240p rung for any value the store can hold', () => { - const restore = { - mode: VoiceSettings.getStreamingMode(), - resolution: VoiceSettings.getScreenshareResolution(), - frameRate: VoiceSettings.getVideoFrameRate(), - }; - for (const stored of ['low_240p', 'low_480p', 'medium', 'high', 'ultra', 'source'] as const) { - VoiceSettings.updateSettings({streamingMode: 'custom', screenshareResolution: stored, videoFrameRate: 30}); - const quality = { - mode: 'custom', - storedResolution: VoiceSettings.getScreenshareResolution(), - storedFrameRate: 30, - entitled: true, - context: 'display', - } as const; - expect( - `${stored}|${menuStateOf(quality) - .resolutions.map((option) => option.value) - .join()}`, - ).toBe(`${stored}|low_480p,medium,high,ultra,source`); - const tabState = resolveUserVideoTabScreenShareState({quality, hintSetting: 'auto', selfHosted: false}); - expect(`${stored}|${tabState.resolutionOptions.map((option) => option.value).join()}`).toBe( - `${stored}|low_480p,medium,high,ultra,source`, - ); - } - VoiceSettings.updateSettings({ - streamingMode: restore.mode, - screenshareResolution: restore.resolution, - videoFrameRate: restore.frameRate, - }); - }); - - it('selects what a capture device sends rather than the saved value', () => { - const state = menuStateOf({ - mode: 'custom', - storedResolution: 'source', - storedFrameRate: 60, - entitled: true, - context: 'device', - }); - expect(state.resolutions.map((option) => option.value)).toEqual(['low_480p', 'medium', 'high', 'ultra']); - expect(selectedValues(state.resolutions)).toEqual(['ultra']); - expect(state.resolutions.find((option) => option.value === 'ultra')?.write).toEqual({kind: 'none'}); - expect(state.frameRates.map((option) => option.value)).toEqual([15, 30, 60]); - expect(selectedValues(state.frameRates)).toEqual([60]); - }); - - it('routes every menu pick through the picker', () => { - const state = menuStateOf(freeScreenShare); - expect(state.resolutions.map((option) => [option.value, option.write])).toEqual([ - ['low_480p', {kind: 'write', patch: {streamingMode: 'custom', screenshareResolution: 'low_480p'}}], - ['medium', {kind: 'none'}], - ['high', {kind: 'premium'}], - ['ultra', {kind: 'premium'}], - ['source', {kind: 'premium'}], - ]); - expect(state.frameRates.map((option) => [option.value, option.write])).toEqual([ - [15, {kind: 'write', patch: {streamingMode: 'custom', videoFrameRate: 15}}], - [30, {kind: 'none'}], - [60, {kind: 'premium'}], - ]); - }); - - it('keeps the premium rungs for an entitled account that sees no premium upsell', () => { - const state = menuStateOf( - {mode: 'custom', storedResolution: 'ultra', storedFrameRate: 30, entitled: true, context: 'display'}, - false, - ); - expect(state.resolutions.map((option) => option.value)).toEqual(['low_480p', 'medium', 'high', 'ultra', 'source']); - expect(state.frameRates.map((option) => option.value)).toEqual([15, 30, 60]); - }); - - it('always offers the value it says the share uses', () => { - const resolutions = ['low_240p', 'low_480p', 'medium', 'high', 'ultra', 'source'] as const; - for (const mode of ['custom', 'gaming', 'screenshare'] as const) { - for (const storedResolution of resolutions) { - for (const storedFrameRate of SUPPORTED_SCREEN_SHARE_FRAME_RATES) { - for (const entitled of [false, true]) { - for (const context of ['display', 'app', 'device'] as const) { - for (const showPremiumFeatures of [false, true]) { - const quality = {mode, storedResolution, storedFrameRate, entitled, context}; - const target = resolveScreenShareTarget({...quality, sourceDimensions: null, hintSetting: 'auto'}); - const state = menuStateOf(quality, showPremiumFeatures); - const scenario = `${mode}|${storedResolution}|${storedFrameRate}|${entitled}|${context}|${showPremiumFeatures}`; - expect(`${scenario}|${selectedValues(state.resolutions).join()}`).toBe( - `${scenario}|${target.resolution === 'low_240p' ? 'low_480p' : target.resolution}`, - ); - expect(`${scenario}|${selectedValues(state.frameRates).join()}`).toBe( - `${scenario}|${target.frameRate}`, - ); - } - } - } - } - } - } - }); - - const mounted: Array<{root: ReturnType; container: HTMLElement}> = []; - const renderStreamMenu = async (input: { - variant: 'full' | 'compactLive'; - shareContext: 'display' | 'app' | 'device'; - mode: 'custom' | 'gaming' | 'screenshare'; - storedResolution: 'low_480p' | 'medium' | 'high' | 'ultra' | 'source'; - storedFrameRate: number; - entitled: boolean; - }) => { - menuEntitled = input.entitled; - vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue(input.mode); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue(input.storedResolution); - vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(input.storedFrameRate); - vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('auto'); - const container = document.createElement('div'); - document.body.append(container); - const root = createRoot(container); - mounted.push({root, container}); - await act(async () => { - root.render( - createElement(StreamSettingsMenuContent, { - applyToLiveStream: false, - shareContext: input.shareContext, - displayShareEnvironment: 'web', - variant: input.variant, - }), - ); - }); - return container; - }; - const radios = (container: HTMLElement, submenu: string) => - Array.from(container.querySelectorAll(`[data-submenu="${submenu}"] button`)).map((node) => ({ - label: node.getAttribute('data-label') ?? '', - selected: node.getAttribute('data-selected') === 'true', - })); - const pick = async (container: HTMLElement, submenu: string, label: string) => { - const node = Array.from(container.querySelectorAll(`[data-submenu="${submenu}"] button`)).find( - (candidate) => candidate.getAttribute('data-label') === label, - ); - if (node == null) throw new Error(`no ${label} option in ${submenu}`); - await act(async () => { - (node as HTMLButtonElement).click(); - }); - }; - - afterEach(async () => { - for (const entry of mounted) { - await act(async () => { - entry.root.unmount(); - }); - entry.container.remove(); - } - mounted.length = 0; - menuEntitled = true; - settingsUpdate.mockClear(); - openPremiumModal.mockClear(); - vi.restoreAllMocks(); - }); - - it('shows a capture device what it sends rather than the saved value', async () => { - const container = await renderStreamMenu({ - variant: 'full', - shareContext: 'device', - mode: 'custom', - storedResolution: 'source', - storedFrameRate: 60, - entitled: true, - }); - expect(radios(container, 'Resolution')).toEqual([ - {label: '480p', selected: false}, - {label: '720p', selected: false}, - {label: '1080p', selected: false}, - {label: '1440p', selected: true}, - ]); - expect(radios(container, 'Frame rate')).toEqual([ - {label: '15 FPS', selected: false}, - {label: '30 FPS', selected: false}, - {label: '60 FPS', selected: true}, - ]); - }); - - it('offers the 90 FPS a stored preference asks for', async () => { - const container = await renderStreamMenu({ - variant: 'full', - shareContext: 'display', - mode: 'custom', - storedResolution: 'medium', - storedFrameRate: 90, - entitled: true, - }); - expect(radios(container, 'Frame rate')).toEqual([ - {label: '15 FPS', selected: false}, - {label: '30 FPS', selected: false}, - {label: '60 FPS', selected: false}, - {label: '90 FPS', selected: true}, - ]); - }); - - it('sends a menu pick through the picker instead of storing the raw value', async () => { - const container = await renderStreamMenu({ - variant: 'full', - shareContext: 'display', - mode: 'custom', - storedResolution: 'medium', - storedFrameRate: 30, - entitled: false, - }); - await pick(container, 'Resolution', '1080p'); - expect(openPremiumModal).toHaveBeenCalledTimes(1); - expect(settingsUpdate).not.toHaveBeenCalled(); - await pick(container, 'Frame rate', '60 FPS'); - expect(openPremiumModal).toHaveBeenCalledTimes(2); - expect(settingsUpdate).not.toHaveBeenCalled(); - await pick(container, 'Resolution', '480p'); - expect(settingsUpdate).toHaveBeenCalledWith({streamingMode: 'custom', screenshareResolution: 'low_480p'}); - }); - - it('sends a compact menu pick through the picker as well', async () => { - const container = await renderStreamMenu({ - variant: 'compactLive', - shareContext: 'display', - mode: 'screenshare', - storedResolution: 'medium', - storedFrameRate: 30, - entitled: false, - }); - expect(radios(container, 'Stream quality')).toEqual([ - {label: '15 FPS', selected: false}, - {label: '30 FPS', selected: true}, - {label: '60 FPS', selected: false}, - {label: '480p', selected: false}, - {label: '720p', selected: true}, - {label: '1080p', selected: false}, - {label: '1440p', selected: false}, - {label: 'Source', selected: false}, - ]); - await pick(container, 'Stream quality', '60 FPS'); - expect(openPremiumModal).toHaveBeenCalledTimes(1); - expect(settingsUpdate).not.toHaveBeenCalled(); - await pick(container, 'Stream quality', '480p'); - expect(settingsUpdate).toHaveBeenCalledWith({streamingMode: 'custom', screenshareResolution: 'low_480p'}); - }); - - it('serves a capture device the Gaming preset and says so', () => { - expect(selectStreamSettingsPresetOverriddenByContext('screenshare', 'device')).toBe(true); - expect(selectStreamSettingsPresetOverriddenByContext('gaming', 'device')).toBe(false); - expect(selectStreamSettingsPresetOverriddenByContext('screenshare', 'display')).toBe(false); - }); -}); - -const {default: MediaEngine} = await import('@app/features/voice/engine/MediaEngineFacade'); -const { - buildConfiguredScreenShareOptions, - resolveScreenShareDeliveryOutcome, - startConfiguredDeviceScreenShare, - startConfiguredDisplayScreenShare, - switchConfiguredDeviceScreenShare, - switchConfiguredDisplayScreenShare, -} = await import('@app/features/voice/utils/ScreenShareStartFlow'); -const {resolveConfiguredScreenShareTarget} = await import( - '@app/features/voice/engine/voice_screen_share_manager/shared' -); - -describe('the configured screen share start flow', () => { - const engine = MediaEngine as unknown as { - startDeviceScreenShare: ReturnType; - replaceActiveDeviceScreenShare: ReturnType; - }; - let storedResolution: 'high' | 'medium' | 'source' = 'high'; - let order: Array = []; - let started: Array<{resolution: unknown; publishOptions: unknown}> = []; - - beforeEach(() => { - selfStream = true; - storedResolution = 'high'; - order = []; - started = []; - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - AppStorage.removeItem('ScreenShareDeliveryMemoryV1'); - vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockImplementation(() => storedResolution); - vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); - vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); - vi.spyOn(VoiceSettings, 'getShareDeviceAudio').mockReturnValue(false); - refreshSelection.mockReset(); - refreshSelection.mockImplementation(async () => { - order.push(`refresh:${ScreenShareDelivery.isSharing}`); - return null; - }); - selectScreenShareCodec.mockReset(); - selectScreenShareCodec.mockImplementation(() => { - order.push(`codec:${ScreenShareDelivery.isSharing}`); - return 'h264'; - }); - engine.startDeviceScreenShare = vi.fn(async (options: {resolution: unknown}, publishOptions: unknown) => { - started.push({resolution: options.resolution, publishOptions}); - }); - engine.replaceActiveDeviceScreenShare = vi.fn(async () => true); - }); - - afterEach(() => { - vi.restoreAllMocks(); - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - selfStream = true; - gpuReport = null; - gpuReportLoad = Promise.resolve(null); - }); - - it('loads the delivery memory before it ranks a codec', async () => { - expect(await startConfiguredDeviceScreenShare('camera-1')).toBe(true); - expect(order).toEqual(['refresh:true', 'codec:true']); - expect(ScreenShareDelivery.isSharing).toBe(true); - }); - - it('publishes the target the settings push builds', async () => { - await startConfiguredDeviceScreenShare('camera-1'); - const target = resolveConfiguredScreenShareTarget('device', null); - const expected = buildConfiguredScreenShareOptions({ - target, - sourceDimensions: null, - includeAudio: false, - videoCodec: 'h264', - }); - expect(started).toEqual([ - {resolution: expected.captureOptions.resolution, publishOptions: expected.publishOptions}, - ]); - expect(expected.publishOptions.videoCodec).toBe('h264'); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(target); - }); - - it('clears the recorded source dimensions for a capture device', async () => { - ActiveScreenShareSource.setPublishedSource('display', 'screen:1'); - ActiveScreenShareSource.setSourceDimensions({width: 3840, height: 2160}); - await startConfiguredDeviceScreenShare('camera-1'); - expect(ActiveScreenShareSource.getPublishedSource()).toBe('device'); - expect(ActiveScreenShareSource.getSourceDimensions()).toBeNull(); - }); - - it('ends the delivery share and the capture source when the capture never starts', async () => { - selfStream = false; - ActiveScreenShareSource.setPublishedSource('display', 'screen:1'); - ActiveScreenShareSource.setSourceDimensions({width: 3840, height: 2160}); - engine.startDeviceScreenShare = vi.fn(async () => { - throw new Error('capture failed'); - }); - expect(await startConfiguredDeviceScreenShare('camera-1')).toBe(false); - expect(ScreenShareDelivery.isSharing).toBe(false); - expect(ScreenShareDelivery.snapshot().share).toBeNull(); - expect(ActiveScreenShareSource.getPublishedSource()).toBeNull(); - expect(ActiveScreenShareSource.getSourceDimensions()).toBeNull(); - }); - - it('keeps the share counters across a source switch', async () => { - await startConfiguredDeviceScreenShare('camera-1'); - ScreenShareDelivery.counters.switches = 1; - ScreenShareDelivery.counters.probes = 2; - const startedLevels = ScreenShareDelivery.snapshot().share?.levels; - storedResolution = 'medium'; - expect(await switchConfiguredDeviceScreenShare('camera-2')).toBe(true); - expect(ScreenShareDelivery.counters.switches).toBe(1); - expect(ScreenShareDelivery.counters.probes).toBe(2); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(resolveConfiguredScreenShareTarget('device', null)); - const switchedLevels = resolveConfiguredScreenShareLadder('device', null).levels; - expect(switchedLevels).not.toEqual(startedLevels); - expect(ScreenShareDelivery.snapshot().share?.levels).toEqual(switchedLevels); - }); - - it('builds the ladder from the share the start flow asked for', async () => { - storedResolution = 'source'; - expect(await startConfiguredDeviceScreenShare('camera-1')).toBe(true); - const device = resolveConfiguredScreenShareLadder('device', null); - expect(device.target).not.toEqual(resolveConfiguredScreenShareTarget('display', null)); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(device.target); - expect(ScreenShareDelivery.snapshot().share?.levels).toEqual(device.levels); - expect(started).toEqual([ - { - resolution: buildConfiguredScreenShareOptions({ - target: device.target, - sourceDimensions: null, - includeAudio: false, - videoCodec: 'h264', - }).captureOptions.resolution, - publishOptions: buildConfiguredScreenShareOptions({ - target: device.target, - sourceDimensions: null, - includeAudio: false, - videoCodec: 'h264', - }).publishOptions, - }, - ]); - }); - - it('restores the live share when a switch does not take', async () => { - await startConfiguredDeviceScreenShare('camera-1'); - ScreenShareDelivery.counters.switches = 1; - ScreenShareDelivery.setNotice({kind: 'apply-failed'}); - const before = ScreenShareDelivery.snapshot(); - engine.replaceActiveDeviceScreenShare = vi.fn(async () => false); - storedResolution = 'medium'; - expect(await switchConfiguredDeviceScreenShare('camera-2')).toBe(false); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(before.share?.target); - expect(ScreenShareDelivery.notice).toEqual({kind: 'apply-failed'}); - expect(ScreenShareDelivery.counters.switches).toBe(1); - }); - - it('waits for the GPU report before it commits the delivery header', async () => { - let reportLoaded: (() => void) | undefined; - gpuReportLoad = new Promise((resolve) => { - reportLoaded = resolve; - }); - const starting = startConfiguredDeviceScreenShare('camera-1'); - await new Promise((resolve) => setTimeout(resolve, 0)); - expect(ScreenShareDelivery.isSharing).toBe(false); - gpuReport = {gpuLabel: 'proof-gpu'}; - reportLoaded?.(); - expect(await starting).toBe(true); - expect(ScreenShareDelivery.snapshot().share?.header.gpuKey).toBe('proof-gpu'); - }); - - it('keys the delivery memory on the browser, the encoder and the GPU', () => { - vi.spyOn(VoiceSettings, 'getScreenShareEncoderMode').mockReturnValue('software'); - const original = Object.getOwnPropertyDescriptor(navigator, 'userAgent'); - Object.defineProperty(navigator, 'userAgent', { - value: 'Mozilla/5.0 (Macintosh) AppleWebKit/537.36 Chrome/141.0.0.0 Safari/537.36', - configurable: true, - }); - expect(buildScreenShareDeliveryHeader()).toEqual({ - chromiumMajor: 141, - gpuKey: 'none', - encoderMode: 'software', - hardwareAccelerationDisabled: false, - }); - gpuReport = {gpuLabel: 'header-gpu'}; - expect(buildScreenShareDeliveryHeader().gpuKey).toBe('header-gpu'); - Object.defineProperty(navigator, 'userAgent', {value: 'Mozilla/5.0 (Macintosh) Gecko/20100101 Firefox/141.0'}); - expect(buildScreenShareDeliveryHeader().chromiumMajor).toBeNull(); - if (original === undefined) Reflect.deleteProperty(navigator, 'userAgent'); - else Object.defineProperty(navigator, 'userAgent', original); - }); - - it('keeps the delivery share only while the operation holds', () => { - expect(resolveScreenShareDeliveryOutcome(true, true)).toBe('keep'); - expect(resolveScreenShareDeliveryOutcome(true, false)).toBe('keep'); - expect(resolveScreenShareDeliveryOutcome(false, true)).toBe('restore'); - expect(resolveScreenShareDeliveryOutcome(false, false)).toBe('end'); - }); -}); - -describe('the configured display screen share start flow', () => { - const engine = MediaEngine as unknown as { - setScreenShareEnabled: ReturnType; - replaceActiveDisplayScreenShare: ReturnType; - }; - const electronHost = window as unknown as {electron?: {platform: string}}; - - beforeEach(() => { - selfStream = true; - displayShareEnvironment = 'desktop-custom'; - electronHost.electron = {platform: 'win32'}; - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - AppStorage.removeItem('ScreenShareDeliveryMemoryV1'); - vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('source'); - vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); - vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); - vi.spyOn(VoiceSettings, 'getShareDesktopAudio').mockReturnValue(false); - vi.spyOn(VoiceSettings, 'getShareAppAudio').mockReturnValue(false); - refreshSelection.mockReset(); - refreshSelection.mockResolvedValue(null); - selectScreenShareCodec.mockReset(); - selectScreenShareCodec.mockReturnValue('h264'); - engine.setScreenShareEnabled = vi.fn(async () => undefined); - engine.replaceActiveDisplayScreenShare = vi.fn(async () => true); - }); - - afterEach(() => { - vi.restoreAllMocks(); - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - displayShareEnvironment = 'web'; - Reflect.deleteProperty(electronHost, 'electron'); - }); - - it('builds the ladder from the picked source rather than the one still recorded', async () => { - ActiveScreenShareSource.setPublishedSource('display', 'screen:0'); - ActiveScreenShareSource.setSourceDimensions({width: 3840, height: 2160}); - const picked = {width: 1280, height: 720}; - const pickedLadder = resolveConfiguredScreenShareLadder('display', picked); - const staleLadder = resolveConfiguredScreenShareLadder('display', {width: 3840, height: 2160}); - expect(pickedLadder.target).not.toEqual(staleLadder.target); - expect(await startConfiguredDisplayScreenShare('screen:1', {sourceDimensions: picked})).toBe(true); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(pickedLadder.target); - expect(ScreenShareDelivery.snapshot().share?.levels).toEqual(pickedLadder.levels); - }); - - it('rebuilds the ladder from the newly picked source on a switch', async () => { - const first = {width: 1280, height: 720}; - const second = {width: 3840, height: 2160}; - expect(await startConfiguredDisplayScreenShare('screen:1', {sourceDimensions: first})).toBe(true); - ActiveScreenShareSource.setSourceDimensions(first); - const secondLadder = resolveConfiguredScreenShareLadder('display', second); - expect(secondLadder.target).not.toEqual(resolveConfiguredScreenShareLadder('display', first).target); - expect(await switchConfiguredDisplayScreenShare('screen:2', {sourceDimensions: second})).toBe(true); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(secondLadder.target); - expect(ScreenShareDelivery.snapshot().share?.levels).toEqual(secondLadder.levels); - expect(ActiveScreenShareSource.getSourceDimensions()).toEqual(second); - }); - - it('asks for the tracking to be held when it stops the share a Wayland source switch restarts', async () => { - displayShareEnvironment = 'desktop-wayland'; - electronHost.electron = {platform: 'linux'}; - const stops: Array = []; - engine.setScreenShareEnabled = vi.fn(async (enabled: boolean, options: unknown) => { - if (!enabled) stops.push(options); - }); - expect(await startConfiguredDisplayScreenShare(null, {preferredDisplaySurface: 'monitor'})).toBe(true); - expect(await switchConfiguredDisplayScreenShare(null, {preferredDisplaySurface: 'monitor'})).toBe(true); - expect(stops).toEqual([ - {sendUpdate: false, playSound: false, preserveStreamAudioPreferences: true, keepShareTracking: true}, - ]); - }); -}); - -const {pushActiveStreamSettings} = await import('@app/features/voice/components/StreamSettingsMenuContent'); - -describe('a live settings push', () => { - const engine = MediaEngine as unknown as { - startDeviceScreenShare: ReturnType; - replaceActiveDeviceScreenShare: ReturnType; - updateActiveScreenShareSettings: ReturnType; - }; - - beforeEach(() => { - selfStream = true; - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - AppStorage.removeItem('ScreenShareDeliveryMemoryV1'); - vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('high'); - vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); - vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); - vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); - vi.spyOn(VoiceSettings, 'getShareDeviceAudio').mockReturnValue(false); - refreshSelection.mockReset(); - refreshSelection.mockResolvedValue(null); - selectScreenShareCodec.mockReset(); - selectScreenShareCodec.mockReturnValue('h264'); - }); - - afterEach(() => { - vi.restoreAllMocks(); - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - }); - - it('waits behind an in-flight source switch', async () => { - const order: Array = []; - let releaseSwitch: (() => void) | undefined; - let switchStarted: (() => void) | undefined; - const switchRunning = new Promise((resolve) => { - switchStarted = resolve; - }); - const gate = new Promise((resolve) => { - releaseSwitch = resolve; - }); - engine.startDeviceScreenShare = vi.fn(async () => undefined); - engine.replaceActiveDeviceScreenShare = vi.fn(async () => { - order.push('switch:start'); - switchStarted?.(); - await gate; - order.push('switch:end'); - return true; - }); - engine.updateActiveScreenShareSettings = vi.fn(async () => { - order.push('push'); - }); - await startConfiguredDeviceScreenShare('camera-1'); - const switching = switchConfiguredDeviceScreenShare('camera-2'); - await switchRunning; - const pushing = pushActiveStreamSettings('device', 'desktop-custom'); - await Promise.resolve(); - expect(order).toEqual(['switch:start']); - releaseSwitch?.(); - expect(await switching).toBe(true); - await pushing; - expect(order).toEqual(['switch:start', 'switch:end', 'push']); - }); - - it('puts the committed ladder back when the live share refuses the push', async () => { - engine.startDeviceScreenShare = vi.fn(async () => undefined); - engine.updateActiveScreenShareSettings = vi.fn(async () => false); - await startConfiguredDeviceScreenShare('camera-1'); - const before = ScreenShareDelivery.snapshot(); - ScreenShareDelivery.setNotice({kind: 'apply-failed'}); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('low_480p'); - const retargeted = resolveConfiguredScreenShareLadder('device', null); - expect(retargeted.target).not.toEqual(before.share?.target); - await pushActiveStreamSettings('device', 'desktop-custom'); - expect(engine.updateActiveScreenShareSettings).toHaveBeenCalledTimes(1); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(before.share?.target); - expect(ScreenShareDelivery.snapshot().share?.levels).toEqual(before.share?.levels); - expect(ScreenShareDelivery.notice).toEqual({kind: 'apply-failed'}); - }); - - it('keeps the retargeted ladder when the live share takes the push', async () => { - engine.startDeviceScreenShare = vi.fn(async () => undefined); - engine.updateActiveScreenShareSettings = vi.fn(async () => true); - await startConfiguredDeviceScreenShare('camera-1'); - vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('low_480p'); - const retargeted = resolveConfiguredScreenShareLadder('device', null); - await pushActiveStreamSettings('device', 'desktop-custom'); - expect(ScreenShareDelivery.snapshot().share?.target).toEqual(retargeted.target); - expect(ScreenShareDelivery.snapshot().share?.levels).toEqual(retargeted.levels); - }); - - it('sends the live share what the start flow published', async () => { - const published: Array<{resolution: unknown; publishOptions: unknown}> = []; - engine.startDeviceScreenShare = vi.fn(async (options: {resolution: unknown}, publishOptions: unknown) => { - published.push({resolution: options.resolution, publishOptions}); - }); - engine.updateActiveScreenShareSettings = vi.fn( - async (captureOptions: {resolution: unknown}, publishOptions: unknown) => { - published.push({resolution: captureOptions.resolution, publishOptions}); - }, - ); - await startConfiguredDeviceScreenShare('camera-1'); - ScreenShareDelivery.counters.switches = 1; - await pushActiveStreamSettings('device', 'desktop-custom'); - expect(published).toHaveLength(2); - expect(published[1]).toEqual(published[0]); - expect(ScreenShareDelivery.counters.switches).toBe(1); - }); -}); - -const {VideoTab} = await import('@app/features/user/components/modals/tabs/UserVideoTab'); - -describe('the video settings tab of a live share', () => { - const mountedTabs: Array<{root: ReturnType; container: HTMLElement}> = []; - const storedBeforeTab = { - mode: VoiceSettings.getStreamingMode(), - resolution: VoiceSettings.getScreenshareResolution(), - frameRate: VoiceSettings.getVideoFrameRate(), - }; - const renderVideoTab = async () => { - const container = document.createElement('div'); - document.body.append(container); - const root = createRoot(container); - mountedTabs.push({root, container}); - await act(async () => { - root.render(createElement(VideoTab, {voiceSettings: VoiceSettings, hasPremium: true})); - }); - return container; - }; - const comboboxOf = (container: HTMLElement, dataFlx: string) => { - const node = container.querySelector(`[data-combobox="${dataFlx}"]`); - if (node == null) throw new Error(`no ${dataFlx} combobox`); - return {value: node.getAttribute('data-value'), options: node.getAttribute('data-options')}; - }; - const rowOf = (container: HTMLElement, dataFlx: string) => - container.querySelector(`[data-flx="${dataFlx}"]`)?.textContent ?? null; - const rowOrder = (container: HTMLElement, dataFlxList: ReadonlyArray) => - Array.from(container.querySelectorAll(dataFlxList.map((dataFlx) => `[data-flx="${dataFlx}"]`).join(','))).map( - (node) => node.getAttribute('data-flx'), - ); - const pickOption = async (container: HTMLElement, dataFlx: string, option: string) => { - const node = container.querySelector(`[data-combobox="${dataFlx}"] [data-option="${option}"]`); - if (node == null) throw new Error(`no ${option} option in ${dataFlx}`); - await act(async () => { - (node as HTMLButtonElement).click(); - }); - }; - const startLiveDeviceShare = () => { - ActiveScreenShareSource.setPublishedSource('device', 'camera-1'); - const target = resolveConfiguredScreenShareTarget('device', null); - const level = resolveScreenShareLevels(target, null)[1]; - ScreenShareDelivery.restore({ - share: { - header: buildScreenShareDeliveryHeader(), - ...resolveConfiguredScreenShareLadder('device', null), - hardware: {}, - adaptive: true, - }, - notice: {kind: 'device-framerate', width: level.width, height: level.height, frameRate: level.frameRate}, - plan: { - target, - codec: 'vp9', - level, - levelIndex: 1, - deliveredFrameRate: level.frameRate, - sentWidth: level.width, - sentHeight: level.height, - sourceFrameRate: null, - holdingShort: false, - }, - counters: {switches: 0, probes: 0, layerings: 0, probeBlocked: false, toastShown: false}, - verdicts: {}, - multiLayer: false, - }); - }; - - beforeEach(() => { - menuEntitled = true; - VoiceSettings.updateSettings({streamingMode: 'custom', screenshareResolution: 'source', videoFrameRate: 30}); - }); - - afterEach(async () => { - for (const entry of mountedTabs) { - await act(async () => { - entry.root.unmount(); - }); - entry.container.remove(); - } - mountedTabs.length = 0; - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - VoiceSettings.updateSettings({ - streamingMode: storedBeforeTab.mode, - screenshareResolution: storedBeforeTab.resolution, - videoFrameRate: storedBeforeTab.frameRate, - }); - settingsUpdate.mockClear(); - vi.restoreAllMocks(); - }); - - const recordLiveDeviceShare = (adaptive: boolean) => { - ActiveScreenShareSource.setPublishedSource('device', 'camera-1'); - const target = resolveConfiguredScreenShareTarget('device', null); - const level = resolveScreenShareLevels(target, null)[1]; - ScreenShareDelivery.endShare(); - ScreenShareDelivery.beginShare({ - header: buildScreenShareDeliveryHeader(), - ...resolveConfiguredScreenShareLadder('device', null), - hardware: {}, - adaptive, - }); - ScreenShareDelivery.record( - 'vp9', - { - kind: 'ok', - decision: {kind: 'none'}, - notice: null, - noticeChanged: false, - memoryWrite: null, - shortCause: null, - levelIndex: 1, - warmingUp: false, - }, - { - level, - levelIndex: 1, - deliveredFrameRate: level.frameRate, - sentWidth: level.width, - sentHeight: level.height, - sourceFrameRate: null, - notice: null, - holdingShort: false, - }, - ); - }; - - it('reports what a live share is sending to the sharer only in the treatment arm', async () => { - recordLiveDeviceShare(true); - expect(rowOf(await renderVideoTab(), 'user.video-tab.sending-note')).toBe('Set to send 1440p at 15 FPS with VP9'); - recordLiveDeviceShare(false); - expect(ScreenShareDelivery.plan).toBeNull(); - expect(rowOf(await renderVideoTab(), 'user.video-tab.sending-note')).toBeNull(); - }); - - it('offers a live capture device only what it can send and agrees with the live plan', async () => { - startLiveDeviceShare(); - const container = await renderVideoTab(); - expect(comboboxOf(container, 'user.video-tab.select.screenshare-resolution-change')).toEqual({ - value: 'ultra', - options: '480p,720p,1080p,1440p', - }); - expect(rowOf(container, 'user.video-tab.sending-note')).toBe('Set to send 1440p at 15 FPS with VP9'); - }); - - it('explains the step down beside the row that reports it', async () => { - startLiveDeviceShare(); - const container = await renderVideoTab(); - expect(rowOf(container, 'user.video-tab.delivery-notice')).toBe( - 'Your device could not keep up, so your stream now sends 15 FPS to keep 1440p sharp.', - ); - }); - - it('puts the delivery notice after the row it explains', async () => { - startLiveDeviceShare(); - const container = await renderVideoTab(); - expect(rowOrder(container, ['user.video-tab.sending-note', 'user.video-tab.delivery-notice'])).toEqual([ - 'user.video-tab.sending-note', - 'user.video-tab.delivery-notice', - ]); - }); - - it('names the preset the user picked and says what a capture device does with it', async () => { - VoiceSettings.updateSettings({streamingMode: 'screenshare', screenshareResolution: 'medium', videoFrameRate: 30}); - startLiveDeviceShare(); - const container = await renderVideoTab(); - expect(VoiceSettings.getStreamingMode()).toBe('screenshare'); - expect(rowOf(container, 'user.video-tab.preset-note')).toBe( - 'Set by the Screen share preset. Picking a value here switches to Custom.', - ); - expect(rowOf(container, 'user.video-tab.preset-context-note')).toBe('Capture devices use the Gaming preset.'); - }); - - it('keeps the capture device note off a display share', async () => { - VoiceSettings.updateSettings({streamingMode: 'screenshare', screenshareResolution: 'medium', videoFrameRate: 30}); - const container = await renderVideoTab(); - expect(rowOf(container, 'user.video-tab.preset-note')).toBe( - 'Set by the Screen share preset. Picking a value here switches to Custom.', - ); - expect(rowOf(container, 'user.video-tab.preset-context-note')).toBeNull(); - }); - - it('sends a tab pick through the picker instead of storing the raw value', async () => { - VoiceSettings.updateSettings({streamingMode: 'screenshare', screenshareResolution: 'medium', videoFrameRate: 30}); - startLiveDeviceShare(); - const container = await renderVideoTab(); - await pickOption(container, 'user.video-tab.select.screenshare-resolution-change', 'high'); - expect(settingsUpdate).toHaveBeenCalledWith({ - streamingMode: 'custom', - screenshareResolution: 'high', - videoFrameRate: 60, - }); - settingsUpdate.mockClear(); - await pickOption(container, 'user.video-tab.select.frame-rate-change', '15'); - expect(settingsUpdate).toHaveBeenCalledWith({ - streamingMode: 'custom', - screenshareResolution: 'ultra', - videoFrameRate: 15, - }); - }); - - it('shows the stored display quality when no share is live', async () => { - const container = await renderVideoTab(); - expect(comboboxOf(container, 'user.video-tab.select.screenshare-resolution-change')).toEqual({ - value: 'source', - options: '480p,720p,1080p,1440p,Source', - }); - expect(rowOf(container, 'user.video-tab.sending-note')).toBeNull(); - expect(rowOf(container, 'user.video-tab.delivery-notice')).toBeNull(); - }); -}); - -const {beginScreenShareDelivery} = await import('@app/features/voice/engine/voice_screen_share_manager/shared'); -const {default: ExperimentAssignments} = await import('@app/features/experiment/state/ExperimentAssignments'); -const {http} = await import('@app/features/platform/transport/RestTransport'); -const {INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT} = await import( - '@fluxer/schema/src/domains/admin/VoiceNoiseSuppressionSchemas' -); - -describe('the screen share delivery experiment assignment', () => { - const assign = (enabled: boolean, userTargeted: boolean) => { - ExperimentAssignments.response = { - poll_interval_seconds: 300, - poll_jitter_percent: 15, - assignments: { - screen_share_delivery: {enabled, config_version: 1, user_targeted: userTargeted, source: null}, - }, - }; - }; - - afterEach(() => { - ScreenShareDelivery.endShare(); - ExperimentAssignments.reset(); - vi.restoreAllMocks(); - }); - - const startShare = async (enabled: boolean, userTargeted: boolean) => { - ScreenShareDelivery.endShare(); - assign(enabled, userTargeted); - await beginScreenShareDelivery(resolveConfiguredScreenShareLadder('display', {width: 1920, height: 1080})); - return ScreenShareDelivery.adaptive; - }; - - it('takes the arm from the assignment when the share starts', async () => { - expect(await startShare(true, false)).toBe(false); - expect(await startShare(true, true)).toBe(true); - }); - - it('holds the control arm for an answer that never names the experiment', async () => { - ScreenShareDelivery.endShare(); - ExperimentAssignments.reset(); - vi.spyOn(http, 'get').mockResolvedValue({ - ok: true, - status: 200, - statusText: '', - headers: {}, - body: JSON.parse('{"poll_interval_seconds":600,"poll_jitter_percent":20,"assignments":{}}'), - }); - const answered = new Promise((resolve) => { - const unsubscribe = ExperimentAssignments.subscribe(() => { - unsubscribe(); - resolve(); - }); - }); - ExperimentAssignments.start(); - await answered; - expect(ExperimentAssignments.response.poll_interval_seconds).toBe(600); - await beginScreenShareDelivery(resolveConfiguredScreenShareLadder('display', {width: 1920, height: 1080})); - expect(ScreenShareDelivery.adaptive).toBe(false); - }); - - it('holds the control arm for an answer that names only another experiment', async () => { - ScreenShareDelivery.endShare(); - ExperimentAssignments.response = { - poll_interval_seconds: 300, - poll_jitter_percent: 15, - assignments: { - voice_noise_suppression: {...INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT, enabled: true, user_targeted: true}, - }, - }; - await beginScreenShareDelivery(resolveConfiguredScreenShareLadder('display', {width: 1920, height: 1080})); - expect(ScreenShareDelivery.adaptive).toBe(false); - }); - - it('holds the control arm for an experiment that is switched off', async () => { - expect(await startShare(false, true)).toBe(false); - expect(await startShare(false, false)).toBe(false); - }); - - it('freezes that arm for the life of the share', async () => { - expect(await startShare(true, false)).toBe(false); - assign(true, true); - expect(ScreenShareDelivery.adaptive).toBe(false); - ScreenShareDelivery.retarget(resolveConfiguredScreenShareLadder('display', {width: 1280, height: 720})); - expect(ScreenShareDelivery.adaptive).toBe(false); - }); -}); - -const {ActiveScreenShareMenu} = await import('@app/features/voice/components/ActiveScreenShareMenu'); - -describe('the active screen share menu in each experiment arm', () => { - const mountedMenus: Array<{root: ReturnType; container: HTMLElement}> = []; - - afterEach(() => { - for (const mounted of mountedMenus.splice(0)) { - act(() => { - mounted.root.unmount(); - }); - mounted.container.remove(); - } - ScreenShareDelivery.endShare(); - }); - - const renderMenu = async (adaptive: boolean) => { - const target = resolveConfiguredScreenShareTarget('device', null); - const level = resolveScreenShareLevels(target, null)[0]; - ScreenShareDelivery.restore({ - share: { - header: buildScreenShareDeliveryHeader(), - ...resolveConfiguredScreenShareLadder('device', null), - hardware: {}, - adaptive, - }, - notice: null, - plan: { - target, - codec: 'vp9', - level, - levelIndex: 0, - deliveredFrameRate: level.frameRate, - sentWidth: level.width, - sentHeight: level.height, - sourceFrameRate: null, - holdingShort: false, - }, - counters: {switches: 0, probes: 0, layerings: 0, probeBlocked: false, toastShown: false}, - verdicts: {}, - multiLayer: false, - }); - const container = document.createElement('div'); - document.body.append(container); - const root = createRoot(container); - mountedMenus.push({root, container}); - await act(async () => { - root.render( - createElement(ActiveScreenShareMenu, { - onClose: () => undefined, - displayShareEnvironment: 'desktop-custom', - shareContext: 'device', - shareContextResolved: true, - showLiveSettings: false, - }), - ); - }); - return container; - }; - - it('reports what the share is sending only in the treatment arm', async () => { - const treatment = await renderMenu(true); - expect(treatment.querySelector('[data-flx="voice.active-screen-share-menu.status-sending"]')?.textContent).toBe( - 'Set to send 1440p at 60 FPS with VP9', - ); - expect(treatment.textContent).toContain('Stop streaming'); - expect(treatment.textContent).toContain('Change stream'); - }); - - it('leaves the control arm with the actions the menu had before the rollout', async () => { - const control = await renderMenu(false); - expect(control.querySelector('[data-flx="voice.active-screen-share-menu.status-sending"]')).toBeNull(); - expect(control.querySelector('[data-flx="voice.active-screen-share-menu.status-notice"]')).toBeNull(); - expect(control.textContent).not.toContain('Try full quality again'); - expect(control.textContent).toBe('Stop streamingChange stream'); - }); -}); diff --git a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx index 7746090b4..03d92acb4 100644 --- a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx +++ b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsx @@ -3,32 +3,16 @@ import assert from 'node:assert/strict'; import i18n from '@app/app/I18n'; import {GenericErrorModal} from '@app/features/app/components/alerts/GenericErrorModal'; -import Authentication from '@app/features/auth/state/Authentication'; import {SoundType} from '@app/features/notification/utils/SoundUtils'; import {Platform} from '@app/features/platform/types/Platform'; import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; import * as SoundCommands from '@app/features/ui/commands/SoundCommands'; -import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; import {getElectronAPI} from '@app/features/ui/utils/NativeUtils'; import * as VoiceSettingsCommands from '@app/features/voice/commands/VoiceSettingsCommands'; -import {countStreamViewers, getStreamKey} from '@app/features/voice/components/StreamKeys'; -import ScreenShareCodecNegotiation, { - getScreenShareCodecPreferenceOrder, -} from '@app/features/voice/engine/ScreenShareCodecNegotiation'; -import { - clampScreenShareLevelIndex, - createScreenShareDeliveryState, - describeScreenShareDelivery, - evaluateScreenShareDelivery, - resolveScreenShareDeliveryNoticeTone, - type ScreenShareDeliveryEvaluation, - type ScreenShareDeliveryNotice, - type ScreenShareDeliverySample, - type ScreenShareDeliveryState, -} from '@app/features/voice/engine/ScreenShareUnderperformance'; +import {getStreamKey} from '@app/features/voice/components/StreamKeys'; +import ScreenShareCodecNegotiation from '@app/features/voice/engine/ScreenShareCodecNegotiation'; import {Store} from '@app/features/voice/engine/Store'; import { - getAllVoiceStatesFromMediaEngine, getVoiceConnectionContextFromMediaEngine, updateLocalParticipantFromRoom, } from '@app/features/voice/engine/VoiceMediaEngineBridge'; @@ -65,33 +49,26 @@ import { captureScreenSharePublicationCleanup, type DeviceScreenShareCaptureOptions, type DisplayScreenShareCaptureContext, - getScreenShareLayeringForCodec, + ensureCommittedScreenShareTarget, logger, mergeScreenShareCaptureCleanupSnapshots, releaseScreenShareCaptureCleanup, getEffectivePublishOptions as resolveEffectivePublishOptions, type ScreenShareCaptureCleanupSnapshot, type ScreenShareCodecReadinessStatus, - startScreenShareDeliveryMonitor, + startScreenShareEncoderMonitor, stopMediaTrack, } from '@app/features/voice/engine/voice_screen_share_manager/shared'; import ActiveScreenShareSource, { type PublishedScreenShareSource, } from '@app/features/voice/state/ActiveScreenShareSource'; import LocalVoiceState from '@app/features/voice/state/LocalVoiceState'; -import ScreenShareDelivery, { - type ScreenShareDeliveryLadder, - type ScreenShareDeliverySnapshot, -} from '@app/features/voice/state/ScreenShareDelivery'; import VoiceSettings from '@app/features/voice/state/VoiceSettings'; import { prepareHighFidelityScreenShareAudioTrack, SCREEN_SHARE_AUDIO_PUBLISH_OPTIONS, } from '@app/features/voice/utils/AudioPublishOptions'; import { - buildScreenShareCodecProfile, - getVideoPublishCodecDenial, - markScreenShareCodecEncodeRuntimeFailure, resolveScreenShareEncoderVerificationAction, type ScreenShareContentSource, type ScreenShareEncoderVerificationAction, @@ -105,12 +82,6 @@ import { reconfigureLinuxNativeAudioRouting, } from '@app/features/voice/utils/NativeAudioCaptureBridge'; import { - rankScreenShareCodecs, - resolveScreenShareAlternativeCodec, - resolveScreenShareCodecSubstitution, -} from '@app/features/voice/utils/ScreenShareCodecSelection'; -import { - recordScreenShareDeliveryDecision, recordScreenShareEncoderVerification, recordScreenShareEndedModal, recordScreenShareRequestedCodec, @@ -119,10 +90,12 @@ import { recordScreenShareStopped, type ScreenShareEndedModal, } from '@app/features/voice/utils/ScreenShareLifecycleLog'; -import {SCREEN_SHARE_DEGRADATION_PREFERENCE, type ScreenShareLevel} from '@app/features/voice/utils/ScreenShareOptions'; +import { + resolveScreenShareDegradationPreference, + type ScreenShareTarget, +} from '@app/features/voice/utils/ScreenShareOptions'; import {ScreenShareRollbackIncompleteError} from '@app/features/voice/utils/ScreenShareRollbackIncompleteError'; import {handleScreenShareError} from '@app/features/voice/utils/ScreenShareUtils'; -import {formatScreenShareDeliveryNotice} from '@app/features/voice/utils/VoiceMessageDescriptors'; import type {NativeAudioStartOptions} from '@app/types/electron.d'; import type {VoiceEngineV2ScreenOptions} from '@fluxer/voice_engine_v2'; import {msg} from '@lingui/core/macro'; @@ -178,6 +151,7 @@ export interface ScreenShareSourceSnapshot { sourceId: string | null; isOwnWindow: boolean; sourceDimensions: {width: number; height: number} | null; + target: ScreenShareTarget | null; } export interface ScreenShareReconnectSnapshot { @@ -186,7 +160,6 @@ export interface ScreenShareReconnectSnapshot { audioMuted: boolean; contentSource: ScreenShareContentSource; source: ScreenShareSourceSnapshot; - delivery: ScreenShareDeliverySnapshot; } export function shouldRestoreScreenShareAfterReconnect( @@ -196,47 +169,15 @@ export function shouldRestoreScreenShareAfterReconnect( return restoreStream || snapshot !== null; } -interface ScreenShareDeliveryMonitor { - readonly room: Room | null; - readonly participant: LocalParticipant; - readonly track: LocalVideoTrack; - readonly codec: VideoCodec; - readonly adaptive: boolean; - ladder: ScreenShareDeliveryLadder; - state: ScreenShareDeliveryState; - probeBlocked: boolean; - monitoredMaxBitrate: number; - multiLayer: boolean; -} - const selectScreenShareSetEnabledOptions = selectVoiceEngineV2AppScreenShareSetEnabledOptions; const SCREEN_SHARE_VERIFIED_CODEC_CORRECTION_MAX = 1; -function buildStartedLowerNotice( - levels: ReadonlyArray, - levelIndex: number, -): ScreenShareDeliveryNotice { - const level = levels[levelIndex]; - const target = levels[0]; - return { - kind: 'started-lower', - width: level.width, - height: level.height, - frameRate: level.frameRate, - targetWidth: target.width, - targetHeight: target.height, - targetFrameRate: target.frameRate, - }; -} - class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { private readonly lifecycle: VoiceScreenShareLifecycleStore; private readonly trackPlumbing: VoiceEngineV2AppScreenShareTrackPlumbing; private activeScreenShareEndListener: (() => void) | null = null; private endedScreenShareStopInFlight: Promise | null = null; encoderVerificationTimer: (() => void) | null = null; - private deliveryMonitor: ScreenShareDeliveryMonitor | null = null; - private applyFailedSender: RTCRtpSender | null = null; private screenShareTrackingHolds = 0; private screenShareTrackingGeneration = 0; private readonly reconciledCodecPairs = new Set(); @@ -251,8 +192,6 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { this.lifecycle = new VoiceScreenShareLifecycleStore({update: (fn) => this.update(fn)}); this.trackPlumbing = new VoiceEngineV2AppScreenShareTrackPlumbing({ getActiveContentSource: () => this.getActiveScreenShareContentSourceInternal(), - getActiveLevel: () => this.getActiveScreenShareLevelInternal(), - noteSenderParametersApplied: (track, applied) => this.noteScreenShareApplyResultInternal(track, applied), }); this.liveKitFlows = new VoiceEngineV2AppScreenShareLiveKitFlows(this); this.controllerRouting = new VoiceEngineV2AppScreenShareControllerRouting(this); @@ -385,81 +324,10 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { return this.trackPlumbing.enforceSenderParameters(participant, publishOptions?.videoCodec); } - private syncMonitoredScreenShareLadderInternal(monitor: ScreenShareDeliveryMonitor): ScreenShareDeliveryLadder { - const committed = ScreenShareDelivery.ladder; - if (committed !== null) monitor.ladder = committed; - return monitor.ladder; - } - - private getActiveScreenShareLevelInternal(): ScreenShareLevel | null { - const monitor = this.deliveryMonitor; - if (monitor !== null) { - const {levels} = this.syncMonitoredScreenShareLadderInternal(monitor); - return levels[clampScreenShareLevelIndex(monitor.state.levelIndex, levels.length)]; - } - const ladder = ScreenShareDelivery.ladder; - return ladder === null ? null : ladder.levels[0]; - } - - private noteScreenShareApplyResultInternal(track: LocalVideoTrack, applied: boolean): void { - if (applied || !track.sender) return; - this.applyFailedSender = track.sender; - } - - private isScreenShareApplyFailedInternal(track: LocalVideoTrack): boolean { - return track.sender !== undefined && track.sender === this.applyFailedSender; - } - - private toastScreenShareDeliveryNoticeInternal(notice: ScreenShareDeliveryNotice): void { - ToastCommands.createToast({ - type: resolveScreenShareDeliveryNoticeTone(notice) === 'warning' ? 'error' : 'info', - children: formatScreenShareDeliveryNotice(i18n, notice), - }); - } - - noteScreenShareCodecRecoveryInternal(previousCodec: VideoCodec | undefined, codec: VideoCodec): void { - if (previousCodec === undefined || previousCodec === codec) return; - if (getVideoPublishCodecDenial(previousCodec) !== 'runtime-failed') return; - this.setScreenShareDeliveryNoticeInternal({kind: 'encoder-recovered', codec}); - } - - private setScreenShareDeliveryNoticeInternal(notice: ScreenShareDeliveryNotice | null): void { - if (!ScreenShareDelivery.adaptive) return; - if (this.deliveryMonitor) { - this.deliveryMonitor.state.notice = notice; - } - if (ScreenShareDelivery.setNotice(notice) && notice !== null) { - this.toastScreenShareDeliveryNoticeInternal(notice); - } - } - - private restartScreenShareDeliveryPlanInternal(): void { - this.applyFailedSender = null; - this.setScreenShareDeliveryNoticeInternal(null); - const monitor = this.deliveryMonitor; - if (!monitor) return; - monitor.state = {...createScreenShareDeliveryState(), ticks: monitor.state.ticks}; - } - - async resetScreenShareDeliveryToFullQuality(): Promise { - ScreenShareDelivery.resetToFullQuality(); - this.restartScreenShareDeliveryPlanInternal(); - const monitor = this.deliveryMonitor; - if (!monitor) return; - monitor.probeBlocked = false; - await this.trackPlumbing.enforceTrackSenderParameters(monitor.track, monitor.codec); - } - applyScreenShareAudioContentHintInternal(participant: LocalParticipant): void { this.trackPlumbing.applyAudioContentHint(participant); } - private countScreenShareViewersInternal(): number { - const streamKey = this.getLocalStreamKey(); - if (streamKey === null) return 0; - return countStreamViewers(getAllVoiceStatesFromMediaEngine(), streamKey, Authentication.currentUserId); - } - private getLocalStreamKey(): string | null { const connection = getVoiceConnectionContextFromMediaEngine(); const {guildId, channelId, connectionId} = connection ?? {}; @@ -491,7 +359,6 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { screenShareAudioPublication?.audioTrack?.mediaStreamTrack ?? (screenShareAudioPublication?.track as LocalAudioTrack | undefined)?.mediaStreamTrack; const liveAudioTrack = audioTrack && audioTrack.readyState !== 'ended' ? audioTrack : undefined; - const delivery = ScreenShareDelivery.snapshot(); return { videoTrack, ...(liveAudioTrack ? {audioTrack: liveAudioTrack} : {}), @@ -502,8 +369,8 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { sourceId: ActiveScreenShareSource.getSourceId(), isOwnWindow: ActiveScreenShareSource.isOwnWindow(), sourceDimensions: ActiveScreenShareSource.getSourceDimensions(), + target: ActiveScreenShareSource.getTarget(), }, - delivery: delivery.notice?.kind === 'apply-failed' ? {...delivery, notice: null} : delivery, }; } @@ -534,8 +401,6 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { private endScreenShareTracking(): void { ActiveScreenShareSource.clear(); - ScreenShareDelivery.endShare(); - this.applyFailedSender = null; this.reconciledCodecPairs.clear(); } @@ -543,10 +408,6 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { this.cleanupScreenShareAudioCaptureRouting(); if (this.screenShareTrackingHolds === 0) { this.endScreenShareTracking(); - return; - } - if (ScreenShareDelivery.notice?.kind === 'apply-failed') { - this.setScreenShareDeliveryNoticeInternal(null); } } @@ -581,7 +442,6 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { cancelEncoderVerificationInternal(): void { this.encoderVerificationTimer?.(); this.encoderVerificationTimer = null; - this.deliveryMonitor = null; this.trackPlumbing.cleanupKeyFrameRequests(); this.transitionScreenShareLifecycleInternal({type: 'share.encoderVerification.cleared'}); } @@ -729,175 +589,33 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { const publication = preferredTrack ? undefined : participant.getTrackPublication(Track.Source.ScreenShare); const track = preferredTrack ?? (publication?.videoTrack as LocalVideoTrack | undefined); if (!track?.sender) { - logger.warn('No sender found for screen share delivery monitoring'); + logger.warn('No sender found for screen share encoder monitoring'); return; } - const ladder = ScreenShareDelivery.ladder; - if (ladder === null) { - logger.warn('No delivery ladder found for screen share delivery monitoring'); - return; - } - const memory = ScreenShareDelivery.verdicts[codec]; - const startIndex = clampScreenShareLevelIndex(memory?.settledIndex ?? 0, ladder.levels.length); - const state = createScreenShareDeliveryState(startIndex); - state.notice = ScreenShareDelivery.notice; - const monitor: ScreenShareDeliveryMonitor = { - room, - participant, + this.encoderVerificationTimer = startScreenShareEncoderMonitor({ track, codec, - adaptive: ScreenShareDelivery.adaptive, - ladder, - state, - probeBlocked: memory?.probeBlockedUntil != null && memory.probeBlockedUntil > Date.now(), - monitoredMaxBitrate: ladder.levels[startIndex].maxBitrate, - multiLayer: getScreenShareLayeringForCodec( - codec, - ladder.levels[0].width * ladder.levels[0].height, - ScreenShareDelivery.multiLayer, - ).multiLayer, - }; - this.deliveryMonitor = monitor; - if (startIndex > 0) { - this.setScreenShareDeliveryNoticeInternal(buildStartedLowerNotice(ladder.levels, startIndex)); - void this.trackPlumbing.enforceTrackSenderParameters(track, codec); - } else { - const substitution = this.resolveScreenShareSubstitutionNoticeInternal(codec); - if (substitution) this.setScreenShareDeliveryNoticeInternal(substitution); - } - this.encoderVerificationTimer = startScreenShareDeliveryMonitor({ - track, - codec, - onEncodeFailure: (failure) => { - monitor.state.ticks += 1; - this.handleScreenShareEncoderVerificationAction(monitor, resolveScreenShareEncoderVerificationAction(failure)); + onEncodeFailure: (failure) => + this.handleScreenShareEncoderVerificationAction( + room, + participant, + track, + resolveScreenShareEncoderVerificationAction(failure), + ), + reEnforce: async () => { + await this.trackPlumbing.enforceTrackSenderParameters(track, codec); }, - onSample: (sample) => this.handleScreenShareDeliverySampleInternal(monitor, sample), }); this.trackPlumbing.bindKeyFrameRequests(room, participant, track); this.transitionScreenShareLifecycleInternal({type: 'share.encoderVerification.scheduled'}); } - private resolveScreenShareSubstitutionNoticeInternal(codec: VideoCodec): ScreenShareDeliveryNotice | null { - const pin = VoiceSettings.getPreferredScreenShareCodec(); - if (pin === 'auto') return null; - const substitution = resolveScreenShareCodecSubstitution(pin, getScreenShareCodecPreferenceOrder(pin), codec); - if (substitution === null) return null; - return {kind: substitution === 'viewer' ? 'codec-viewer' : 'codec-device', codec, pinnedCodec: pin}; - } - - private resolveAlternativeScreenShareCodecInternal(codec: VideoCodec): VideoCodec | null { - const {order} = rankScreenShareCodecs({ - profile: buildScreenShareCodecProfile(), - encoderModeSetting: VoiceSettings.getScreenShareEncoderMode(), - pin: VoiceSettings.getPreferredScreenShareCodec(), - verdicts: {...ScreenShareDelivery.verdicts, [codec]: {short: true, ratio: 0}}, - }); - const {knownDecode, unknownParticipants} = ScreenShareCodecNegotiation.getRemoteDecodeInputs(); - return resolveScreenShareAlternativeCodec(order, codec, knownDecode, unknownParticipants); - } - - private async handleScreenShareDeliverySampleInternal( - monitor: ScreenShareDeliveryMonitor, - sample: ScreenShareDeliverySample, - ): Promise { - if (this.deliveryMonitor !== monitor) return; - if (!this.isScreenShareApplyFailedInternal(monitor.track)) { - const enforcement = await this.trackPlumbing.enforceTrackSenderParameters(monitor.track, monitor.codec); - if (this.deliveryMonitor !== monitor) return; - monitor.monitoredMaxBitrate = enforcement.monitoredMaxBitrate; - monitor.multiLayer = enforcement.multiLayer; - } - const ladder = this.syncMonitoredScreenShareLadderInternal(monitor); - const levelZeroPixels = ladder.levels[0].width * ladder.levels[0].height; - const counters = ScreenShareDelivery.counters; - const shareTracked = ScreenShareDelivery.isSharing; - const evaluation = evaluateScreenShareDelivery(monitor.state, sample, { - adaptive: monitor.adaptive, - levels: ladder.levels, - keep: ladder.target.keep, - context: ladder.context, - codec: monitor.codec, - pinned: VoiceSettings.getPreferredScreenShareCodec() === monitor.codec, - alternativeCodec: this.resolveAlternativeScreenShareCodecInternal(monitor.codec), - codecFailed: getVideoPublishCodecDenial(monitor.codec) === 'runtime-failed', - lastApplyFailed: this.isScreenShareApplyFailedInternal(monitor.track), - paused: this.isScreenSharePending || this.isScreenSharePublicationReplaceInFlight(), - viewers: this.countScreenShareViewersInternal(), - multiLayer: monitor.multiLayer, - multiLayerAvailable: getScreenShareLayeringForCodec(monitor.codec, levelZeroPixels, true).multiLayer, - monitoredMaxBitrate: monitor.monitoredMaxBitrate, - shareCounters: shareTracked - ? {...counters, probeBlocked: counters.probeBlocked || monitor.probeBlocked} - : {...counters, switches: Number.POSITIVE_INFINITY, probeBlocked: true}, - }); - const toast = ScreenShareDelivery.record( - monitor.codec, - evaluation, - describeScreenShareDelivery(monitor.state, ladder.levels), - ); - if (toast && evaluation.notice !== null) { - this.toastScreenShareDeliveryNoticeInternal(evaluation.notice); - } - if (evaluation.decision.kind !== 'none' || evaluation.noticeChanged) { - recordScreenShareDeliveryDecision({ - codec: monitor.codec, - decision: evaluation.decision.kind, - levelIndex: evaluation.levelIndex, - notice: evaluation.notice?.kind ?? null, - shortCause: evaluation.shortCause, - toast, - }); - } - await this.applyScreenShareDeliveryDecisionInternal(monitor, evaluation); - } - - private async applyScreenShareDeliveryDecisionInternal( - monitor: ScreenShareDeliveryMonitor, - evaluation: ScreenShareDeliveryEvaluation, - ): Promise { - switch (evaluation.decision.kind) { - case 'none': - return; - case 'step': - case 'probe': - case 'revert-probe': - case 'reapply-level': - await this.trackPlumbing.enforceTrackSenderParameters(monitor.track, monitor.codec); - return; - case 'republish-layering': { - const previous = ScreenShareDelivery.multiLayer; - ScreenShareDelivery.setMultiLayer(evaluation.decision.multiLayer); - const republished = await this.liveKitFlows.republishActiveShareWithCodec( - monitor.room, - monitor.track, - monitor.codec, - ); - if (!republished) ScreenShareDelivery.setMultiLayer(previous); - return; - } - case 'switch-codec': - ScreenShareDelivery.demoteForShare( - monitor.codec, - evaluation.memoryWrite?.kind === 'short' ? evaluation.memoryWrite.ratio : 0, - ); - await ScreenShareCodecNegotiation.publishLocalCapabilities(monitor.room, 'manual'); - return; - case 'recover-stalled': - markScreenShareCodecEncodeRuntimeFailure(monitor.codec, 'screen-share-encode-stalled'); - this.handleScreenShareEncoderVerificationAction(monitor, {kind: 'recover-stalled', codec: monitor.codec}); - return; - case 'stop-stalled': - this.handleScreenShareEncoderVerificationAction(monitor, {kind: 'stop-stalled', codec: monitor.codec}); - return; - } - } - private handleScreenShareEncoderVerificationAction( - monitor: ScreenShareDeliveryMonitor, + room: Room | null, + participant: LocalParticipant, + track: LocalVideoTrack, action: ScreenShareEncoderVerificationAction, ): void { - const {room, participant, track} = monitor; switch (action.kind) { case 'stop-stalled': recordScreenShareEncoderVerification('stop-stalled', null); @@ -1425,18 +1143,18 @@ class VoiceEngineV2AppScreenShareExecutionAdapter extends Store { logger.warn('No active screen share track to update'); return false; } - this.restartScreenShareDeliveryPlanInternal(); if (typeof options?.audio === 'boolean') { await this.applyActiveScreenShareAudioSetting(participant, options.audio); } if (options?.resolution) { - const applied = await this.applyActiveScreenShareResolutionSetting(screenShareTrack, options.resolution); - this.noteScreenShareApplyResultInternal(screenShareTrack, applied); + await this.applyActiveScreenShareResolutionSetting(screenShareTrack, options.resolution); } if (options && Object.hasOwn(options, 'contentHint')) { screenShareTrack.mediaStreamTrack.contentHint = options.contentHint ?? ''; } - await screenShareTrack.setDegradationPreference(SCREEN_SHARE_DEGRADATION_PREFERENCE); + await screenShareTrack.setDegradationPreference( + resolveScreenShareDegradationPreference(ensureCommittedScreenShareTarget()), + ); await this.enforceScreenShareSenderParametersInternal(participant, publishOptions); this.ensureScreenShareKeepAliveSinkInternal(participant); updateLocalParticipantFromRoom(room); diff --git a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows.ts b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows.ts index 9d146c072..33b5a964c 100644 --- a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows.ts +++ b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows.ts @@ -48,7 +48,6 @@ import { } from '@app/features/voice/engine/voice_screen_share_manager/shared'; import ActiveScreenShareSource from '@app/features/voice/state/ActiveScreenShareSource'; import type LocalVoiceState from '@app/features/voice/state/LocalVoiceState'; -import ScreenShareDelivery from '@app/features/voice/state/ScreenShareDelivery'; import SoftwareEncoderWarning from '@app/features/voice/state/SoftwareEncoderWarning'; import VoiceSettings from '@app/features/voice/state/VoiceSettings'; import { @@ -354,7 +353,12 @@ export class VoiceEngineV2AppScreenShareLiveKitFlows { if (enabled) this.adapter.setStreamingPriorityInternal(true); try { const requestedPublishOptions = await this.adapter.getEffectivePublishOptionsInternal(enabled, publishOptions); - await participant.setScreenShareEnabled(enabled, restOptions, requestedPublishOptions); + await participant.setScreenShareEnabled( + enabled, + restOptions, + requestedPublishOptions, + SCREEN_SHARE_AUDIO_PUBLISH_OPTIONS, + ); const effectivePublishOptions = enabled ? (await this.enforcePublishCodecPolicy(participant, requestedPublishOptions)).effectivePublishOptions : requestedPublishOptions; @@ -857,7 +861,6 @@ export class VoiceEngineV2AppScreenShareLiveKitFlows { }), }, }); - this.adapter.noteScreenShareCodecRecoveryInternal(previousOptions.videoCodec, codec); logger.info('Republished active screen share with a different codec', { previousCodec: previousOptions.videoCodec, codec, @@ -929,6 +932,7 @@ export class VoiceEngineV2AppScreenShareLiveKitFlows { sourceId: ActiveScreenShareSource.getSourceId(), isOwnWindow: ActiveScreenShareSource.isOwnWindow(), sourceDimensions: ActiveScreenShareSource.getSourceDimensions(), + target: ActiveScreenShareSource.getTarget(), publishOptions, }; } @@ -942,6 +946,7 @@ export class VoiceEngineV2AppScreenShareLiveKitFlows { }); } ActiveScreenShareSource.setSourceDimensions(snapshot.sourceDimensions); + ActiveScreenShareSource.setTarget(snapshot.target); } private async restoreScreenShareReplacement( @@ -1645,7 +1650,6 @@ export class VoiceEngineV2AppScreenShareLiveKitFlows { applyState: (actualNow) => applyScreenShareState(this.adapter, actualNow, false), onInactiveAfterSync: () => { ActiveScreenShareSource.clear(); - ScreenShareDelivery.endShare(); stopMediaTrack(snapshot.videoTrack); stopMediaTrack(snapshot.audioTrack); }, @@ -1662,9 +1666,8 @@ export class VoiceEngineV2AppScreenShareLiveKitFlows { } private restoreReconnectTracking(snapshot: ScreenShareReconnectSnapshot): void { - if (ScreenShareDelivery.isSharing) return; + if (ActiveScreenShareSource.getTarget() !== null) return; this.restorePublishedScreenShareSource(snapshot.source); - ScreenShareDelivery.restore(snapshot.delivery); } async restoreReconnect( diff --git a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareTrackPlumbing.ts b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareTrackPlumbing.ts index 727b9e5ed..e6b628515 100644 --- a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareTrackPlumbing.ts +++ b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareTrackPlumbing.ts @@ -7,12 +7,11 @@ import { getScreenShareBackupSenders, logger, resolveActiveScreenShareTarget, - type ScreenShareSenderEnforcement, } from '@app/features/voice/engine/voice_screen_share_manager/shared'; +import ActiveScreenShareSource from '@app/features/voice/state/ActiveScreenShareSource'; import VoiceSettings from '@app/features/voice/state/VoiceSettings'; import {prepareHighFidelityScreenShareAudioTrack} from '@app/features/voice/utils/AudioPublishOptions'; import type {ScreenShareContentSource} from '@app/features/voice/utils/CodecCapabilityDetector'; -import type {ScreenShareLevel} from '@app/features/voice/utils/ScreenShareOptions'; import { type LocalAudioTrack, type LocalParticipant, @@ -32,8 +31,6 @@ function isVideoCodecValue(value: unknown): value is VideoCodec { export interface VoiceEngineV2AppScreenShareTrackPlumbingHost { getActiveContentSource(): ScreenShareContentSource; - getActiveLevel(): ScreenShareLevel | null; - noteSenderParametersApplied(track: LocalVideoTrack, applied: boolean): void; } export class VoiceEngineV2AppScreenShareTrackPlumbing { @@ -46,8 +43,6 @@ export class VoiceEngineV2AppScreenShareTrackPlumbing { constructor(host: VoiceEngineV2AppScreenShareTrackPlumbingHost) { assert.ok(host, 'track plumbing host is required'); assert.equal(typeof host.getActiveContentSource, 'function', 'host must expose getActiveContentSource'); - assert.equal(typeof host.getActiveLevel, 'function', 'host must expose getActiveLevel'); - assert.equal(typeof host.noteSenderParametersApplied, 'function', 'host must expose noteSenderParametersApplied'); this.host = host; } @@ -157,35 +152,29 @@ export class VoiceEngineV2AppScreenShareTrackPlumbing { logger.warn('No screen share track found for sender parameter enforcement'); return false; } - const {applied} = await this.enforceTrackSenderParameters(track, publishedCodec); + const applied = await this.enforceTrackSenderParameters(track, publishedCodec); this.bindSenderParameterReapply(participant, track, publishedCodec); return applied; } - async enforceTrackSenderParameters( - track: LocalVideoTrack, - publishedCodec: VideoCodec | undefined, - ): Promise { - const level = this.host.getActiveLevel(); - if (level === null) return {applied: false, monitoredMaxBitrate: 0, multiLayer: false}; - const primary = track.sender - ? await enforceScreenShareSenderParameters(track.sender, level, {publishedCodec}) - : {applied: false, monitoredMaxBitrate: level.maxBitrate, multiLayer: false}; - let applied = primary.applied; + async enforceTrackSenderParameters(track: LocalVideoTrack, publishedCodec: VideoCodec | undefined): Promise { + const target = ActiveScreenShareSource.getTarget(); + if (target === null) return false; + let applied = track.sender + ? (await enforceScreenShareSenderParameters(track.sender, target, {publishedCodec})).applied + : false; for (const backup of getScreenShareBackupSenders(track)) { const codecOverride = isVideoCodecValue(backup.codec) ? backup.codec : undefined; - const backupApplied = await enforceScreenShareSenderParameters(backup.sender, level, { + const backupApplied = await enforceScreenShareSenderParameters(backup.sender, target, { codecOverride, publishedCodec, }); applied = applied && backupApplied.applied; } - this.host.noteSenderParametersApplied(track, applied); - return {applied, monitoredMaxBitrate: primary.monitoredMaxBitrate, multiLayer: primary.multiLayer}; + return applied; } private async enforceBackupSenderParameters( - track: LocalVideoTrack, sender: RTCRtpSender, codecOverride: VideoCodec | undefined, publishedCodec: VideoCodec | undefined, @@ -194,13 +183,9 @@ export class VoiceEngineV2AppScreenShareTrackPlumbing { sender.track ?? undefined, resolveActiveScreenShareTarget(this.host.getActiveContentSource()).contentHint, ); - const level = this.host.getActiveLevel(); - if (level === null) return; - const {applied} = await enforceScreenShareSenderParameters(sender, level, { - codecOverride, - publishedCodec, - }); - this.host.noteSenderParametersApplied(track, applied); + const target = ActiveScreenShareSource.getTarget(); + if (target === null) return; + await enforceScreenShareSenderParameters(sender, target, {codecOverride, publishedCodec}); } cleanupSenderParameterReapply(): void { @@ -221,7 +206,7 @@ export class VoiceEngineV2AppScreenShareTrackPlumbing { }; const onLocalSenderCreated = (sender: RTCRtpSender, senderTrack: SdkTrack, codec?: VideoCodec): void => { if (senderTrack !== track || sender === track.sender) return; - void this.enforceBackupSenderParameters(track, sender, codec, publishedCodec).catch((error) => { + void this.enforceBackupSenderParameters(sender, codec, publishedCodec).catch((error) => { logger.warn('Failed to apply screen share sender parameters to a backup sender', {error, codec}); }); }; diff --git a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts new file mode 100644 index 000000000..7a4cb6ed0 --- /dev/null +++ b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts @@ -0,0 +1,1814 @@ +// @vitest-environment happy-dom +// SPDX-License-Identifier: AGPL-3.0-or-later + +import {EventEmitter} from 'node:events'; +import type {ScreenShareEncoderVerificationAction} from '@app/features/voice/utils/CodecCapabilityDetector'; +import type {ScreenShareAudioSummaryInput} from '@app/features/voice/utils/ScreenShareAudioSummary'; +import {BackupCodecPolicy, ParticipantEvent, type Room, Track, type VideoCodec} from 'livekit-client'; +import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'; + +const pushWithKey = vi.fn(); +const publishLocalCapabilities = vi.fn(async () => null); +const refreshSelection = vi.fn(async () => null); +const selectScreenShareCodec = vi.fn((): VideoCodec => 'vp8'); +const markRuntimeFailure = vi.fn(); +let selfStream = true; +let codecDenial: string | null = null; +let vp8Available = false; +let av1Available = false; +let knownDecode: Array> = []; +let unknownParticipants = 0; +let preferenceOrder: Array = ['h264']; +let selectedCodec: VideoCodec | null = 'vp9'; +let stallAction: ScreenShareEncoderVerificationAction = {kind: 'recover-stalled', codec: 'h264'}; +let menuEntitled = true; +const gpuReport: {gpuLabel: string} | null = null; +const gpuReportLoad: Promise = Promise.resolve(null); +let displayShareEnvironment: 'web' | 'desktop-custom' | 'desktop-wayland' = 'web'; +const voiceConnectionContext: {guildId: string | null; channelId: string | null; connectionId: string | null} | null = + null; +const voiceStates: Record>> = {}; +const settingsUpdate = vi.fn(); +const openPremiumModal = vi.fn(); + +vi.mock('@app/features/voice/utils/GpuEncoderCapabilities', () => ({ + getGpuEncoderReportSync: () => gpuReport, + loadGpuEncoderReport: () => gpuReportLoad, +})); + +vi.mock('@app/features/voice/utils/ScreenShareEnvironment', async (importOriginal) => ({ + ...(await importOriginal()), + getDisplayShareEnvironment: async () => displayShareEnvironment, +})); + +vi.mock('@lingui/core/macro', () => { + const descriptor = (value: unknown): unknown => (typeof value === 'string' ? {message: value} : value); + return {msg: descriptor, t: descriptor, plural: () => '', select: () => '', selectOrdinal: () => ''}; +}); + +vi.mock('@lingui/react/macro', () => ({ + Trans: () => null, + useLingui: () => ({ + i18n: { + locale: 'en-GB', + _: (descriptor: {message?: string}, values?: Record) => + (descriptor.message ?? '').replace(/{(\w+)}/g, (token, key: string) => + values && key in values ? String(values[key]) : token, + ), + number: (value: number) => String(value), + }, + }), +})); + +vi.mock('@app/app/I18n', () => ({default: {_: (descriptor: {message?: string}) => descriptor.message ?? ''}})); + +vi.mock('@app/features/app/components/alerts/GenericErrorModal', () => ({GenericErrorModal: () => null})); + +vi.mock('@app/features/voice/components/StreamKeys', async (importOriginal) => ({ + ...(await importOriginal()), + getStreamKey: () => 'stream', +})); + +vi.mock('@app/features/voice/engine/VoiceMediaGraphStore', () => ({ + voiceMediaGraphStore: {getGraphSnapshot: () => null}, +})); + +vi.mock('@app/features/voice/engine/VoiceMediaGraph', () => ({ + normalizeVoiceMediaGraphViewerStreamKeys: () => [], + selectVoiceMediaGraphViewerStreamKeys: () => [], +})); + +vi.mock('@app/features/voice/engine/VoiceStreamWatchState', () => ({ + addWatchedStreamKey: () => undefined, + stopWatchingStreamKey: () => undefined, +})); + +vi.mock('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareStateSync', () => ({ + applyVoiceEngineV2AppScreenShareState: () => undefined, +})); + +vi.mock('@app/features/voice/engine/voice_screen_share_manager/NativePermissionGate', () => ({ + ensureNativeCameraPermissionForDeviceShare: async () => undefined, + ensureNativeMicrophonePermissionForDeviceShare: async () => undefined, +})); + +vi.mock('@app/features/voice/state/LocalVoiceState', () => ({ + default: { + getSelfStream: () => selfStream, + updateSelfStreamAudio: () => undefined, + getViewerStreamKeys: () => [], + }, +})); + +vi.mock('@app/features/voice/utils/LinuxScreenShareAudio', () => ({disarmVirtmic: () => undefined})); + +vi.mock('@app/features/voice/utils/NativeAudioCaptureBridge', () => ({ + armNativeAudioForLinuxRouting: async () => false, + armNativeAudioForNextCapture: async () => false, + armNativeSystemAudioForNextCapture: async () => false, + captureNativeAudioTrackForLinuxRouting: async () => null, + captureNativeAudioTrackForWindowPid: async () => null, + commitNativeAudioBridgeReplacement: () => undefined, + disarmNativeAudio: () => undefined, + disarmPendingNativeAudio: () => undefined, + getLastNativeAudioArmFailure: () => null, + getNativeAudioAvailabilityCached: async () => null, + getNativeAudioAvailabilitySnapshot: () => null, + reconfigureLinuxNativeAudioRouting: async () => 'unsupported', +})); + +vi.mock('@app/features/voice/utils/ScreenShareUtils', () => ({ + executeScreenShareOperation: async (operation: () => Promise) => { + await operation(); + }, + handleScreenShareError: () => undefined, +})); + +vi.mock('@app/features/voice/engine/MediaEngineFacade', () => ({default: {}, useMediaEngineVersion: () => 0})); + +vi.mock('@app/features/voice/engine/VoiceMediaEngineBridge', () => ({ + getAllVoiceStatesFromMediaEngine: () => voiceStates, + getVoiceConnectionContextFromMediaEngine: () => voiceConnectionContext, + updateLocalParticipantFromRoom: () => undefined, +})); + +vi.mock('@app/features/auth/state/Authentication', () => ({default: {currentUserId: 'publisher'}})); + +vi.mock('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows', () => ({ + VoiceEngineV2AppScreenShareLiveKitFlows: class { + async republishActiveShareWithCodec(): Promise { + return true; + } + }, +})); + +vi.mock('@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareControllerRouting', () => ({ + selectVoiceEngineV2AppScreenShareSetEnabledOptions: () => ({}), + VoiceEngineV2AppScreenShareControllerRouting: class {}, +})); + +vi.mock('@app/features/ui/commands/ModalCommands', () => ({ + modal: (render: unknown) => render, + pushWithKey: (...args: Array) => pushWithKey(...args), +})); + +vi.mock('@app/features/ui/commands/SoundCommands', () => ({playSound: () => undefined})); + +vi.mock('@app/features/ui/commands/ToastCommands', () => ({createToast: () => undefined})); + +vi.mock('@app/features/voice/commands/VoiceSettingsCommands', () => ({ + update: (...args: Array) => settingsUpdate(...args), +})); + +vi.mock('@app/features/premium/commands/PremiumModalCommands', () => ({open: () => openPremiumModal()})); + +vi.mock('@app/features/ui/action_menu/ContextMenu', async () => { + const React = await import('react'); + const box = ({children}: {children?: React.ReactNode}) => React.createElement('div', null, children); + return { + CheckboxItem: box, + MenuGroup: box, + MenuGroupLabel: box, + MenuItem: box, + MenuSeparator: () => null, + SubMenu: ({label, render}: {label: string; render: () => React.ReactNode}) => + React.createElement('div', {'data-submenu': label}, render()), + SelectableMenuItem: ({ + children, + selected, + textValue, + onAction, + }: { + children?: React.ReactNode; + selected: boolean; + textValue: string; + onAction: () => void; + }) => + React.createElement( + 'button', + {type: 'button', 'data-selected': String(selected), 'data-label': textValue, onClick: onAction}, + children, + ), + useContextMenuClose: () => () => undefined, + }; +}); + +vi.mock('@app/features/voice/components/modals/CameraPreviewModal', () => ({ + CameraPreviewModalStandalone: () => null, +})); + +vi.mock('@app/features/user/components/modals/tabs/hooks/useMediaPermission', () => ({ + useMediaPermission: () => ({ + devices: [{deviceId: 'camera-1', kind: 'videoinput', label: 'Camera one'}], + deviceState: { + inputDevices: [], + outputDevices: [], + videoDevices: [{deviceId: 'camera-1', kind: 'videoinput', label: 'Camera one'}], + permissionStatus: {audio: 'granted', video: 'granted'}, + }, + status: 'granted', + requestPermission: async () => true, + }), +})); + +vi.mock('@app/features/user/components/modals/tabs/components/CompactComboboxRow', async () => { + const React = await import('react'); + return { + CompactComboboxRow: ({ + dataFlx, + onChange, + options, + value, + }: { + dataFlx: string; + onChange: (value: unknown) => void; + options: ReadonlyArray<{label: string; value: unknown}>; + value: unknown; + }) => + React.createElement( + 'div', + { + 'data-combobox': dataFlx, + 'data-value': String(value), + 'data-options': options.map((option) => option.label).join(','), + }, + options.map((option) => + React.createElement('button', { + key: String(option.value), + type: 'button', + 'data-option': String(option.value), + onClick: () => onChange(option.value), + }), + ), + ), + }; +}); + +vi.mock('@app/features/voice/utils/VideoQualityEntitlement', () => ({hasHigherVideoQuality: () => menuEntitled})); + +vi.mock('@app/features/voice/engine/ScreenShareCodecNegotiation', () => ({ + default: { + getRemoteDecodeInputs: () => ({knownDecode, unknownParticipants}), + getSelectedCodec: () => selectedCodec, + publishLocalCapabilities: () => publishLocalCapabilities(), + refreshSelection: () => refreshSelection(), + selectScreenShareCodec: () => selectScreenShareCodec(), + }, + getScreenShareCodecPreferenceOrder: () => preferenceOrder, +})); + +vi.mock('@app/features/voice/utils/CodecCapabilityDetector', () => { + const unavailable = {allowed: false, supported: false, hardware: false}; + return { + LIVEKIT_SUPPORTED_CODECS: ['vp8', 'h264', 'vp9', 'av1', 'h265'], + buildScreenShareCodecProfile: () => ({ + browser: 'chromium', + desktop: true, + codecs: { + av1: {allowed: av1Available, supported: av1Available, hardware: false}, + h265: unavailable, + h264: {allowed: true, supported: true, hardware: true}, + vp9: unavailable, + vp8: {allowed: vp8Available, supported: vp8Available, hardware: false}, + }, + }), + findVideoPublishCodecPolicyViolation: () => null, + getCodecCapabilityReport: () => ({h264: {hardwareAccelerated: 'hardware'}}), + getVideoPublishCodecDenial: () => codecDenial, + markScreenShareCodecEncodeRuntimeFailure: (...args: Array) => markRuntimeFailure(...args), + markScreenShareCodecSoftwareEncodeObserved: () => undefined, + resolveScreenShareEncoderVerificationAction: () => stallAction, + resolveVideoPublishCodecPolicy: (requested: string) => ({ + allowed: [requested, 'h264'], + requested, + primary: requested, + backupCodec: requested === 'h264' || requested === 'vp8' ? false : {codec: 'h264'}, + }), + }; +}); + +const BOOTSTRAP_ENDPOINT = 'https://primary.test/api'; + +(globalThis.window as unknown as Record).__FLUXER_BOOTSTRAP__ = { + config: { + releaseChannel: 'stable', + bootstrapApiEndpoint: BOOTSTRAP_ENDPOINT, + bootstrapApiPublicEndpoint: BOOTSTRAP_ENDPOINT, + }, + instance: { + api_code_version: Number.MAX_SAFE_INTEGER, + endpoints: { + api: BOOTSTRAP_ENDPOINT, + api_client: BOOTSTRAP_ENDPOINT, + api_public: BOOTSTRAP_ENDPOINT, + gateway: 'wss://gateway.primary.test', + media: 'https://media.primary.test', + static_cdn: 'https://cdn.primary.test', + marketing: 'https://primary.test', + admin: 'https://admin.primary.test', + invite: 'https://primary.test/invite', + gift: 'https://primary.test/gift', + webapp: 'https://app.primary.test', + upload_relay: 'https://upload.primary.test', + }, + captcha: {provider: 'none', hcaptcha_site_key: null, turnstile_site_key: null}, + features: { + voice_enabled: false, + stripe_enabled: false, + self_hosted: false, + presigned_attachment_uploads: false, + emails_enabled: false, + }, + gif: {provider: 'klipy', display_name: 'Klipy', attribution_required: false}, + sso: {enabled: false, enforced: false, display_name: null, redirect_uri: ''}, + registration: {mode: 'open', admin_registration_urls_enabled: true}, + community: {single_community: false, single_community_guild_id: null, direct_messages_disabled: false}, + services: {gif_enabled: true, youtube_enabled: false, bluesky_enabled: false}, + limits: undefined, + push: {public_vapid_key: null}, + app_public: { + branding: { + product_name: 'Fluxer', + icon_url: null, + symbol_url: null, + logo_url: null, + wordmark_url: null, + favicon_url: null, + theme_color: null, + }, + setup: {configured: true, admin_url: null}, + legal: {terms_url: null, privacy_url: null}, + registration: {collect_date_of_birth: true}, + }, + }, + geoip: { + countryCode: null, + regionCode: null, + latitude: null, + longitude: null, + ageRestrictedGeos: [], + ageBlockedGeos: [], + }, +}; + +const {VoiceEngineV2AppScreenShareExecutionAdapter, shouldRestoreScreenShareAfterReconnect} = await import( + '@app/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter' +); +const {default: ActiveScreenShareSource} = await import('@app/features/voice/state/ActiveScreenShareSource'); +const {default: AppStorage} = await import('@app/features/platform/state/PersistentStorage'); +const { + applyScreenShareBackupCodecModeRetiredMigrationV1, + applyScreenShareSoftwareQualityRetiredMigrationV1, + default: VoiceSettings, +} = await import('@app/features/voice/state/VoiceSettings'); +const {recordScreenShareStarted, resetRecentScreenSharesForTests} = await import( + '@app/features/voice/utils/ScreenShareLifecycleLog' +); +const {ensureCommittedScreenShareTarget, getEffectivePublishOptions, resolveConfiguredScreenShareTarget} = await import( + '@app/features/voice/engine/voice_screen_share_manager/shared' +); +const {resolveScreenShareDegradationPreference} = await import('@app/features/voice/utils/ScreenShareOptions'); +const {rankScreenShareCodecs} = await import('@app/features/voice/utils/ScreenShareCodecSelection'); +const {voiceVideoIndex} = await import('@app/features/user/components/settings_utils/search_index/VoiceVideoIndex'); + +const FIRST_TICK_MS = 2500; +const TICK_MS = 2000; + +interface StatsFeed { + encodedFps: number; + sourceFps: number; + targetBitrate: number; + active: boolean; + sentWidth: number; + sentHeight: number; +} + +interface FakeSender { + sender: RTCRtpSender; + setParameters: ReturnType; + getStats: ReturnType; + getParameters: ReturnType; + current: () => RTCRtpSendParameters; +} + +function createStatsReader(feed: StatsFeed): () => RTCStatsReport { + let last = Date.now(); + let framesEncoded = 0; + let sourceFrames = 0; + let bytesSent = 0; + return () => { + const now = Date.now(); + const seconds = (now - last) / 1000; + last = now; + framesEncoded += Math.round(feed.encodedFps * seconds); + sourceFrames += Math.round(feed.sourceFps * seconds); + bytesSent += Math.round((feed.targetBitrate * seconds) / 8); + const entries: Array> = [ + {type: 'codec', id: 'codec', mimeType: 'video/H264'}, + { + type: 'media-source', + id: 'source', + kind: 'video', + frames: sourceFrames, + framesPerSecond: feed.sourceFps, + width: 3840, + height: 2160, + }, + { + type: 'outbound-rtp', + id: 'outbound', + kind: 'video', + codecId: 'codec', + mediaSourceId: 'source', + active: feed.active, + framesEncoded, + framesSent: framesEncoded, + bytesSent, + headerBytesSent: 0, + frameWidth: feed.sentWidth, + frameHeight: feed.sentHeight, + targetBitrate: feed.targetBitrate, + qualityLimitationReason: 'none', + encoderImplementation: 'NVENC', + timestamp: now, + }, + ]; + return new Map(entries.map((entry) => [entry.id as string, entry])) as unknown as RTCStatsReport; + }; +} + +function createSender( + feed: StatsFeed, + options: {mimeType?: string; encodings?: Array} = {}, +): FakeSender { + let params = { + codecs: [{mimeType: options.mimeType ?? 'video/H264'}], + encodings: options.encodings ?? [{scalabilityMode: 'L1T3'}], + } as unknown as RTCRtpSendParameters; + const getParameters = vi.fn(() => structuredClone(params)); + const readStats = createStatsReader(feed); + const setParameters = vi.fn(async (next: RTCRtpSendParameters) => { + params = next; + }); + const getStats = vi.fn(async () => readStats()); + const sender = { + track: {getSettings: () => ({width: 3840, height: 2160}), contentHint: ''}, + getParameters, + setParameters, + getStats, + } as unknown as RTCRtpSender; + return {sender, setParameters, getStats, getParameters, current: () => params}; +} + +function createShare(sender: RTCRtpSender) { + const applyConstraints = vi.fn(async () => undefined); + const track = Object.assign(new EventEmitter(), { + sender, + mediaStreamTrack: Object.assign(new EventTarget(), { + contentHint: '', + readyState: 'live', + getConstraints: () => ({}), + applyConstraints, + }), + simulcastCodecs: new Map(), + attach: () => undefined, + detach: () => undefined, + setDegradationPreference: async () => undefined, + getProcessor: () => null, + }); + const publication = {source: Track.Source.ScreenShare, videoTrack: track, track, options: {videoCodec: 'h264'}}; + const participant = Object.assign(new EventEmitter(), { + isScreenShareEnabled: true, + trackPublications: new Map([['screen', publication]]), + getTrackPublication: (source: Track.Source) => (source === Track.Source.ScreenShare ? publication : undefined), + publishTrack: vi.fn(async () => publication), + unpublishTrack: vi.fn(async () => undefined), + setScreenShareEnabled: vi.fn(async () => undefined), + }); + const room = {localParticipant: participant, on: () => undefined, off: () => undefined} as unknown as Room; + return {track, publication, participant, room, applyConstraints}; +} + +function createAdapter() { + const adapter = new VoiceEngineV2AppScreenShareExecutionAdapter(); + const republish = vi.spyOn(adapter.liveKitFlows, 'republishActiveShareWithCodec').mockResolvedValue(true); + const setEnabled = vi.spyOn(adapter, 'setScreenShareEnabled').mockResolvedValue(undefined); + return {adapter, republish, setEnabled}; +} + +function sentFrameRate(fake: FakeSender): number | undefined { + return fake.current().encodings[0].maxFramerate; +} + +describe('the screen share wiring', () => { + let feed: StatsFeed; + + beforeEach(() => { + vi.useFakeTimers(); + feed = { + encodedFps: 30, + sourceFps: 30, + targetBitrate: 4_500_000, + active: true, + sentWidth: 1920, + sentHeight: 1080, + }; + codecDenial = null; + vp8Available = false; + av1Available = false; + knownDecode = []; + unknownParticipants = 0; + preferenceOrder = ['h264']; + selectedCodec = 'vp9'; + stallAction = {kind: 'recover-stalled', codec: 'h264'}; + pushWithKey.mockClear(); + publishLocalCapabilities.mockReset(); + publishLocalCapabilities.mockImplementation(async () => null); + selectScreenShareCodec.mockReset(); + selectScreenShareCodec.mockImplementation(() => 'vp8'); + markRuntimeFailure.mockReset(); + vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('high'); + vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); + vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); + vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); + resetRecentScreenSharesForTests(); + recordScreenShareStarted(); + ActiveScreenShareSource.setPublishedSource('display', 'screen:1'); + ActiveScreenShareSource.setSourceDimensions({width: 3840, height: 2160}); + ensureCommittedScreenShareTarget(); + }); + + afterEach(() => { + vi.useRealTimers(); + vi.restoreAllMocks(); + ActiveScreenShareSource.clear(); + }); + + it('keeps the committed target across a reconnect restore', () => { + const primary = createSender(feed); + const {room} = createShare(primary.sender); + const {adapter} = createAdapter(); + const committed = ActiveScreenShareSource.getTarget(); + const snapshot = adapter.prepareScreenShareReconnect(room); + expect(snapshot).not.toBeNull(); + expect(shouldRestoreScreenShareAfterReconnect(false, snapshot)).toBe(true); + expect(ActiveScreenShareSource.getTarget()).toEqual(committed); + }); + + it('recovers a stalled encoder once and stops the share when it stalls again', async () => { + const primary = createSender(feed); + const {room, participant, track} = createShare(primary.sender); + const {adapter, republish, setEnabled} = createAdapter(); + feed.encodedFps = 0; + adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); + await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); + expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); + expect(setEnabled).not.toHaveBeenCalled(); + expect(pushWithKey).not.toHaveBeenCalled(); + republish.mockClear(); + stallAction = {kind: 'stop-stalled', codec: 'h264'}; + adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); + await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); + expect(setEnabled).toHaveBeenCalledWith(room, false, {sendUpdate: true, playSound: true}); + expect(pushWithKey).toHaveBeenCalledTimes(1); + adapter.cancelEncoderVerificationInternal(); + }); + + it('keeps verifying until a sample shows frames, and reports encoding only while they keep coming', async () => { + const primary = createSender(feed); + const {room, participant, track} = createShare(primary.sender); + const {adapter} = createAdapter(); + feed.encodedFps = 0; + feed.sourceFps = 0; + adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); + await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); + expect(ActiveScreenShareSource.encoding).toBe(false); + expect(publishLocalCapabilities).not.toHaveBeenCalled(); + feed.sourceFps = 30; + await vi.advanceTimersByTimeAsync(TICK_MS); + expect(publishLocalCapabilities).toHaveBeenCalledTimes(1); + expect(ActiveScreenShareSource.encoding).toBe(false); + adapter.cancelEncoderVerificationInternal(); + }); + + it('reports the share as encoding only once frames arrive and stops when they stop', async () => { + const primary = createSender(feed); + const {room, participant, track} = createShare(primary.sender); + const {adapter} = createAdapter(); + adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); + await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); + expect(ActiveScreenShareSource.encoding).toBe(false); + await vi.advanceTimersByTimeAsync(TICK_MS); + expect(ActiveScreenShareSource.encoding).toBe(true); + feed.encodedFps = 0; + await vi.advanceTimersByTimeAsync(TICK_MS); + expect(ActiveScreenShareSource.encoding).toBe(false); + adapter.cancelEncoderVerificationInternal(); + }); + + it('re-enforces the sender parameters on every tick', async () => { + const first = createSender(feed); + const second = createSender(feed); + const {room, participant, track} = createShare(first.sender); + const {adapter} = createAdapter(); + adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); + await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); + expect(first.current().degradationPreference).toBe('maintain-resolution'); + expect(first.current().encodings).toEqual([ + {maxBitrate: 4_500_000, maxFramerate: 30, scaleResolutionDownBy: 2, priority: 'high', networkPriority: 'high'}, + ]); + track.sender = second.sender; + await vi.advanceTimersByTimeAsync(TICK_MS); + expect(second.current().degradationPreference).toBe('maintain-resolution'); + expect(sentFrameRate(second)).toBe(30); + adapter.cancelEncoderVerificationInternal(); + }); + + it('enforces a backup sender created later and on every tick after it', async () => { + const primary = createSender(feed); + const later = createSender(feed, {mimeType: 'video/VP9'}); + const {room, participant, track} = createShare(primary.sender); + const {adapter} = createAdapter(); + await adapter.enforceScreenShareSenderParametersInternal(participant as never, {videoCodec: 'h264'}); + participant.emit(ParticipantEvent.LocalSenderCreated, later.sender, track, 'h264'); + await vi.advanceTimersByTimeAsync(0); + expect(later.current().degradationPreference).toBe('maintain-resolution'); + expect(later.current().encodings).toEqual([ + {maxBitrate: 4_500_000, maxFramerate: 30, scaleResolutionDownBy: 2, priority: 'high', networkPriority: 'high'}, + ]); + track.simulcastCodecs.set('h264', {sender: later.sender}); + adapter.startEncoderVerificationInternal(room, participant as never, 'h264', track as never); + later.current().encodings[0].maxFramerate = 60; + await vi.advanceTimersByTimeAsync(FIRST_TICK_MS); + expect(sentFrameRate(later)).toBe(30); + adapter.cancelEncoderVerificationInternal(); + }); + + it('leaves an encoding that is not active alone', async () => { + const primary = createSender(feed, { + encodings: [{rid: 'q', active: false, scaleResolutionDownBy: 4}, {rid: 'f'}], + }); + const {participant} = createShare(primary.sender); + const {adapter} = createAdapter(); + await adapter.enforceScreenShareSenderParametersInternal(participant as never, {videoCodec: 'h264'}); + expect(primary.current().encodings[0]).toEqual({rid: 'q', active: false, scaleResolutionDownBy: 4}); + expect(primary.current().encodings[1]).toMatchObject({rid: 'f', maxFramerate: 30, priority: 'high'}); + }); + + it('never lets a screen share trade resolution for frame rate', () => { + expect(resolveScreenShareDegradationPreference(resolveConfiguredScreenShareTarget('display', null))).toBe( + 'maintain-resolution', + ); + expect(resolveScreenShareDegradationPreference(resolveConfiguredScreenShareTarget('app', null))).toBe( + 'maintain-resolution', + ); + expect(resolveScreenShareDegradationPreference(resolveConfiguredScreenShareTarget('device', null))).toBe( + 'balanced', + ); + }); + + it('drops a codec the sender cannot encode instead of flooring the order to it', () => { + const entry = (supported: boolean) => ({allowed: supported, supported, hardware: false}); + const {order} = rankScreenShareCodecs({ + profile: { + browser: 'chromium', + desktop: true, + codecs: {vp8: entry(true), vp9: entry(true), h264: entry(false), h265: entry(false), av1: entry(true)}, + }, + encoderModeSetting: 'auto', + pin: 'auto', + }); + expect(order).toEqual(['av1', 'vp9', 'vp8']); + }); + + it('ranks hardware encoders ahead of software ones unless software encoding is forced', () => { + const entry = (hardware: boolean) => ({allowed: true, supported: true, hardware}); + const profile = { + browser: 'chromium' as const, + desktop: true, + codecs: {vp8: entry(false), vp9: entry(false), h264: entry(true), h265: entry(true), av1: entry(false)}, + }; + expect(rankScreenShareCodecs({profile, encoderModeSetting: 'auto', pin: 'auto'}).order).toEqual([ + 'h265', + 'h264', + 'av1', + 'vp9', + 'vp8', + ]); + expect(rankScreenShareCodecs({profile, encoderModeSetting: 'software', pin: 'auto'}).order).toEqual([ + 'av1', + 'h264', + 'vp9', + 'vp8', + ]); + }); + + it('refuses to publish h264 when the sender cannot encode it', async () => { + const detector = await vi.importActual( + '@app/features/voice/utils/CodecCapabilityDetector', + ); + const capabilities = {codecs: [{mimeType: 'video/vp8'}, {mimeType: 'video/vp9'}]}; + const host = globalThis as Record; + host.RTCRtpSender = {getCapabilities: () => capabilities}; + host.RTCRtpReceiver = {getCapabilities: () => capabilities}; + try { + detector.resetCachedCodecCapabilities(); + expect(detector.getVideoPublishCodecDenial('h264')).toBe('sender-cannot-encode'); + expect(detector.getAllowedVideoPublishCodecs()).not.toContain('h264'); + expect(detector.resolveVideoPublishCodecPolicy('h264').primary).toBe('vp9'); + expect(detector.resolveVideoPublishCodecPolicy('vp9').backupCodec).toBe(false); + } finally { + detector.resetCachedCodecCapabilities(); + Reflect.deleteProperty(host, 'RTCRtpSender'); + Reflect.deleteProperty(host, 'RTCRtpReceiver'); + } + }); + + it('refuses to publish a codec the decode probe excluded', async () => { + const decoder = await vi.importActual( + '@app/features/voice/utils/VideoDecoderCapabilities', + ); + const detector = await vi.importActual( + '@app/features/voice/utils/CodecCapabilityDetector', + ); + const capabilities = {codecs: [{mimeType: 'video/h265'}, {mimeType: 'video/h264'}]}; + const host = globalThis as Record; + host.RTCRtpSender = {getCapabilities: () => capabilities}; + host.RTCRtpReceiver = {getCapabilities: () => capabilities}; + vi.spyOn(VoiceSettings, 'getScreenShareHevcOptIn').mockReturnValue(true); + try { + detector.resetCachedCodecCapabilities(); + expect(detector.isVideoCodecAllowedForPublish('h265')).toBe(true); + expect(decoder.markScreenShareDecodeFailure('h265', 'decode stall')).toBe(true); + detector.resetCachedCodecCapabilities(); + expect(detector.getVideoPublishCodecDenial('h265')).toBe('decoder-excluded'); + expect(detector.isVideoCodecAllowedForPublish('h265')).toBe(false); + expect(detector.isVideoCodecAllowedForPublish('h264')).toBe(true); + expect(detector.getAllowedVideoPublishCodecs()).toContain('h264'); + expect(detector.resolveVideoPublishCodecPolicy('h265').primary).not.toBe('h265'); + } finally { + decoder.resetVideoDecoderExclusions(); + detector.resetCachedCodecCapabilities(); + Reflect.deleteProperty(host, 'RTCRtpSender'); + Reflect.deleteProperty(host, 'RTCRtpReceiver'); + } + }); +}); + +describe('the retired software encoder quality', () => { + it('turns a stored real-time quality with automatic layering into a single layer, once', () => { + const unset: Record = {screenShareSoftwareQualityPrefV2: 'realtime'}; + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(unset)).toBe(true); + expect(unset.screenShareScalabilityModePrefV2).toBe('single_layer'); + + const automatic: Record = { + screenShareSoftwareQualityPrefV2: 'realtime', + screenShareScalabilityModePrefV2: 'auto', + }; + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(automatic)).toBe(true); + expect(automatic.screenShareScalabilityModePrefV2).toBe('single_layer'); + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(automatic)).toBe(false); + expect(automatic.screenShareScalabilityModePrefV2).toBe('single_layer'); + }); + + it('reads a stored spatial layering as automatic and moves it too', () => { + const spatial: Record = { + screenShareSoftwareQualityPrefV2: 'realtime', + screenShareScalabilityModePrefV2: 'spatial', + }; + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(spatial)).toBe(true); + expect(spatial.screenShareScalabilityModePrefV2).toBe('single_layer'); + }); + + it('leaves stored temporal layers and every other quality alone', () => { + const temporal: Record = { + screenShareSoftwareQualityPrefV2: 'realtime', + screenShareScalabilityModePrefV2: 'temporal', + }; + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(temporal)).toBe(true); + expect(temporal.screenShareScalabilityModePrefV2).toBe('temporal'); + + const balanced: Record = {screenShareSoftwareQualityPrefV2: 'balanced'}; + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(balanced)).toBe(true); + expect(balanced.screenShareScalabilityModePrefV2).toBeUndefined(); + }); + + it('drops the stored quality, even for a store the earlier migration already flagged', () => { + const fresh: Record = {screenShareSoftwareQualityPrefV2: 'quality'}; + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(fresh)).toBe(true); + expect(fresh.screenShareSoftwareQualityPrefV2).toBeUndefined(); + + const flagged: Record = { + screenShareSoftwareQualityPrefV2: 'quality', + screenShareSoftwareQualityRetiredV1: true, + }; + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(flagged)).toBe(true); + expect(flagged.screenShareSoftwareQualityPrefV2).toBeUndefined(); + expect(applyScreenShareSoftwareQualityRetiredMigrationV1(flagged)).toBe(false); + }); + + it('leaves the store with no quality field and no reader for it', () => { + expect(VoiceSettings).not.toHaveProperty('screenShareSoftwareQualityPrefV2'); + expect(VoiceSettings).not.toHaveProperty('getScreenShareSoftwareQuality'); + expect(VoiceSettings).not.toHaveProperty('getScreenShareSoftwareQualityOverride'); + }); +}); + +describe('the retired H.264 backup stream mode', () => { + it('drops the stored mode once', () => { + const stored: Record = {screenShareBackupCodecModePrefV2: 'h264_simulcast'}; + expect(applyScreenShareBackupCodecModeRetiredMigrationV1(stored)).toBe(true); + expect(stored.screenShareBackupCodecModePrefV2).toBeUndefined(); + expect(applyScreenShareBackupCodecModeRetiredMigrationV1(stored)).toBe(false); + + const off: Record = {screenShareBackupCodecModePrefV2: 'off'}; + expect(applyScreenShareBackupCodecModeRetiredMigrationV1(off)).toBe(true); + expect(off.screenShareBackupCodecModePrefV2).toBeUndefined(); + + const untouched: Record = {screenShareScalabilityModePrefV2: 'temporal'}; + expect(applyScreenShareBackupCodecModeRetiredMigrationV1(untouched)).toBe(false); + expect(untouched.screenShareScalabilityModePrefV2).toBe('temporal'); + }); + + it('leaves the store with no mode field and no reader for it', () => { + expect(VoiceSettings).not.toHaveProperty('screenShareBackupCodecModePrefV2'); + expect(VoiceSettings).not.toHaveProperty('getScreenShareBackupCodecMode'); + expect(VoiceSettings).not.toHaveProperty('getScreenShareBackupCodecModeOverride'); + }); + + it('still publishes the automatic H.264 backup simulcast for an SVC primary', async () => { + const svc = await getEffectivePublishOptions(true, {videoCodec: 'av1'}); + expect(svc?.backupCodec).toEqual({codec: 'h264'}); + expect(svc?.backupCodecPolicy).toBe(BackupCodecPolicy.SIMULCAST); + + const h264 = await getEffectivePublishOptions(true, {videoCodec: 'h264'}); + expect(h264?.backupCodec).toBe(false); + expect(h264?.backupCodecPolicy).toBeUndefined(); + }); +}); + +describe('the retired screen share settings on boot', () => { + it('drops both stored keys when the store migrates its persisted settings', () => { + const previous = AppStorage.getItem('VoiceSettings'); + AppStorage.setItem( + 'VoiceSettings', + JSON.stringify({ + screenShareSoftwareQualityPrefV2: 'quality', + screenShareBackupCodecModePrefV2: 'h264_simulcast', + }), + ); + (VoiceSettings as unknown as {migratePersistedSettings: () => void}).migratePersistedSettings(); + const stored = JSON.parse(AppStorage.getItem('VoiceSettings') ?? '{}') as Record; + expect(stored).not.toHaveProperty('screenShareSoftwareQualityPrefV2'); + expect(stored).not.toHaveProperty('screenShareBackupCodecModePrefV2'); + if (previous === null) { + AppStorage.removeItem('VoiceSettings'); + } else { + AppStorage.setItem('VoiceSettings', previous); + } + }); +}); + +describe('the retired screen share settings in the settings search index', () => { + it('no longer sends a backup stream search to the advanced video section', () => { + const entry = voiceVideoIndex.find((candidate) => candidate.id === 'voice-video-screen-share-encoder-controls'); + expect(entry?.description).toEqual({ + message: 'Encoder, SVC, and bitrate presets', + comment: 'Settings search entry description. One-line summary of what the settings search entry controls.', + }); + }); +}); + +const {resolveUserVideoTabScreenShareState, SCREEN_SHARE_PRESET_DESCRIPTORS} = await import( + '@app/features/user/components/modals/tabs/UserVideoTabState' +); +const {selectScreenShareEncoderPathDescription} = await import( + '@app/features/user/components/modals/tabs/advanced_settings_tab/AdvancedVideoControlsState' +); +const {resolveScreenShareQualityPick, resolveScreenShareTarget, SUPPORTED_SCREEN_SHARE_FRAME_RATES} = await import( + '@app/features/voice/utils/ScreenShareOptions' +); + +describe('the video settings tab', () => { + const FREE_RESOLUTION_OPTIONS = [ + {value: 'low_480p', isDisabled: false}, + {value: 'medium', isDisabled: false}, + {value: 'high', isDisabled: true}, + {value: 'ultra', isDisabled: true}, + {value: 'source', isDisabled: true}, + ]; + const PREMIUM_RESOLUTION_OPTIONS = [ + {value: 'low_480p', isDisabled: false}, + {value: 'medium', isDisabled: false}, + {value: 'high', isDisabled: false}, + {value: 'ultra', isDisabled: false}, + {value: 'source', isDisabled: false}, + ]; + const stateOf = (quality: Parameters[0], selfHosted = false) => + resolveUserVideoTabScreenShareState({quality, hintSetting: 'auto', selfHosted}); + + it('shows a free account the clamped values, the saved ones and no preset note', () => { + const quality = { + mode: 'custom', + storedResolution: 'source', + storedFrameRate: 30, + entitled: false, + context: 'display', + } as const; + expect(stateOf(quality)).toEqual({ + resolution: 'medium', + frameRate: 30, + resolutionOptions: FREE_RESOLUTION_OPTIONS, + frameRateOptions: [15, 30], + preset: null, + presetOverriddenByContext: false, + saved: {resolution: 'source', frameRate: 30}, + }); + }); + + it('shows a premium Screen share account what the preset sends and writes nothing for those values', () => { + const quality = { + mode: 'screenshare', + storedResolution: 'medium', + storedFrameRate: 30, + entitled: true, + context: 'display', + } as const; + expect(stateOf(quality)).toEqual({ + resolution: 'source', + frameRate: 15, + resolutionOptions: PREMIUM_RESOLUTION_OPTIONS, + frameRateOptions: [15, 30, 60], + preset: 'screenshare', + presetOverriddenByContext: false, + saved: null, + }); + expect(resolveScreenShareQualityPick(quality, {axis: 'resolution', resolution: 'source'})).toBeNull(); + expect(resolveScreenShareQualityPick(quality, {axis: 'frameRate', frameRate: 15})).toBeNull(); + }); + + it('names the preset that owns a free Gaming account and keeps the saved values out of the note', () => { + expect( + stateOf({ + mode: 'gaming', + storedResolution: 'high', + storedFrameRate: 60, + entitled: false, + context: 'display', + }), + ).toEqual({ + resolution: 'medium', + frameRate: 30, + resolutionOptions: FREE_RESOLUTION_OPTIONS, + frameRateOptions: [15, 30], + preset: 'gaming', + presetOverriddenByContext: false, + saved: null, + }); + }); + + it('offers a self-hosted free account nothing it cannot send', () => { + expect( + stateOf( + {mode: 'custom', storedResolution: 'medium', storedFrameRate: 30, entitled: false, context: 'display'}, + true, + ), + ).toMatchObject({ + resolutionOptions: [ + {value: 'low_480p', isDisabled: false}, + {value: 'medium', isDisabled: false}, + ], + frameRateOptions: [15, 30], + }); + }); + + it('always offers the value it says the share uses', () => { + const resolutions = ['low_240p', 'low_480p', 'medium', 'high', 'ultra', 'source'] as const; + for (const mode of ['custom', 'gaming', 'screenshare'] as const) { + for (const storedResolution of resolutions) { + for (const storedFrameRate of SUPPORTED_SCREEN_SHARE_FRAME_RATES) { + for (const entitled of [false, true]) { + for (const selfHosted of [false, true]) { + const state = stateOf( + {mode, storedResolution, storedFrameRate, entitled, context: 'display'}, + selfHosted, + ); + const scenario = `${mode}|${storedResolution}|${storedFrameRate}|${entitled}|${selfHosted}`; + expect(`${scenario}|${state.frameRateOptions.includes(state.frameRate)}`).toBe(`${scenario}|true`); + const option = state.resolutionOptions.find((entry) => entry.value === state.resolution); + expect(`${scenario}|${option?.isDisabled}`).toBe(`${scenario}|false`); + } + } + } + } + } + }); + + it('never writes a premium resolution for a free frame rate pick', () => { + const quality = { + mode: 'screenshare', + storedResolution: 'source', + storedFrameRate: 60, + entitled: false, + context: 'display', + } as const; + expect(resolveScreenShareQualityPick(quality, {axis: 'frameRate', frameRate: 60})).toBeNull(); + expect(resolveScreenShareQualityPick(quality, {axis: 'frameRate', frameRate: 15})).toEqual({ + streamingMode: 'custom', + videoFrameRate: 15, + }); + }); + + it('labels each preset with its own name', () => { + expect(SCREEN_SHARE_PRESET_DESCRIPTORS.gaming.message).toBe('Gaming'); + expect(SCREEN_SHARE_PRESET_DESCRIPTORS.screenshare.message).toBe('Screen share'); + }); + + it('explains the encoder path only when this device has no hardware encoder', () => { + expect(selectScreenShareEncoderPathDescription(true).message).toBe( + 'No hardware encoder was found on this device, so Prefer hardware works like Automatic.', + ); + expect(selectScreenShareEncoderPathDescription(false).message).toBe('Encoder preference for new screen shares.'); + }); +}); + +const { + selectStreamSettingsPresetOverriddenByContext, + selectStreamSettingsQualityMenuState, + selectStreamSettingsQualityWrite, +} = await import('@app/features/voice/components/StreamSettingsMenuContentStateMachine'); +const {StreamSettingsMenuContent} = await import('@app/features/voice/components/StreamSettingsMenuContent'); +const {act, createElement} = await import('react'); +const {createRoot} = await import('react-dom/client'); + +describe('the in-call stream menu', () => { + const freeScreenShare = { + mode: 'screenshare', + storedResolution: 'medium', + storedFrameRate: 30, + entitled: false, + context: 'display', + } as const; + const writeFor = ( + quality: Parameters[0], + pick: Parameters[1], + premiumOption = false, + ) => selectStreamSettingsQualityWrite({quality, pick, premiumOption, showPremiumFeatures: true}); + const menuStateOf = (quality: Parameters[0], showPremiumFeatures = true) => + selectStreamSettingsQualityMenuState({ + quality, + target: resolveScreenShareTarget({...quality, sourceDimensions: null, hintSetting: 'auto'}), + showPremiumFeatures, + }); + const selectedValues = (options: ReadonlyArray<{value: T; selected: boolean}>) => + options.filter((option) => option.selected).map((option) => option.value); + + it('keeps the frame rate of a free account that picks a resolution', () => { + expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'low_480p'})).toEqual({ + kind: 'write', + patch: {streamingMode: 'custom', screenshareResolution: 'low_480p'}, + }); + }); + + it('writes no premium resolution when a free account picks a frame rate', () => { + expect(writeFor(freeScreenShare, {axis: 'frameRate', frameRate: 15})).toEqual({ + kind: 'write', + patch: {streamingMode: 'custom', videoFrameRate: 15}, + }); + }); + + it('offers premium instead of writing a premium pick for a free account', () => { + expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'ultra'}, true)).toEqual({kind: 'premium'}); + expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'source'}, true)).toEqual({kind: 'premium'}); + expect(writeFor(freeScreenShare, {axis: 'frameRate', frameRate: 60}, true)).toEqual({kind: 'premium'}); + expect( + selectStreamSettingsQualityWrite({ + quality: freeScreenShare, + pick: {axis: 'frameRate', frameRate: 60}, + premiumOption: true, + showPremiumFeatures: false, + }), + ).toEqual({kind: 'none'}); + }); + + it('writes nothing for the value a preset already sends', () => { + expect(writeFor(freeScreenShare, {axis: 'resolution', resolution: 'medium'})).toEqual({kind: 'none'}); + expect(writeFor(freeScreenShare, {axis: 'frameRate', frameRate: 30})).toEqual({kind: 'none'}); + }); + + it('offers the resolution the share actually uses and marks it selected', () => { + const state = menuStateOf({ + mode: 'custom', + storedResolution: 'high', + storedFrameRate: 30, + entitled: true, + context: 'display', + }); + expect(state.resolutions.map((option) => option.value)).toEqual(['low_480p', 'medium', 'high', 'ultra', 'source']); + expect(selectedValues(state.resolutions)).toEqual(['high']); + }); + + it('offers no retired 240p rung and lands a persisted 240p store on the lowest real one', () => { + const restore = { + mode: VoiceSettings.getStreamingMode(), + resolution: VoiceSettings.getScreenshareResolution(), + frameRate: VoiceSettings.getVideoFrameRate(), + }; + VoiceSettings.updateSettings({streamingMode: 'custom', screenshareResolution: 'low_240p', videoFrameRate: 30}); + expect(VoiceSettings.getScreenshareResolution()).toBe('low_480p'); + const quality = { + mode: VoiceSettings.getStreamingMode(), + storedResolution: VoiceSettings.getScreenshareResolution(), + storedFrameRate: VoiceSettings.getVideoFrameRate(), + entitled: true, + context: 'display', + } as const; + const menuState = menuStateOf(quality); + expect(menuState.resolutions.map((option) => option.value)).toEqual([ + 'low_480p', + 'medium', + 'high', + 'ultra', + 'source', + ]); + expect(selectedValues(menuState.resolutions)).toEqual(['low_480p']); + const tabState = resolveUserVideoTabScreenShareState({quality, hintSetting: 'auto', selfHosted: false}); + expect(tabState.resolution).toBe('low_480p'); + expect(tabState.resolutionOptions.map((option) => option.value)).toEqual([ + 'low_480p', + 'medium', + 'high', + 'ultra', + 'source', + ]); + VoiceSettings.updateSettings({ + streamingMode: restore.mode, + screenshareResolution: restore.resolution, + videoFrameRate: restore.frameRate, + }); + }); + + it('offers no 240p rung for any value the store can hold', () => { + const restore = { + mode: VoiceSettings.getStreamingMode(), + resolution: VoiceSettings.getScreenshareResolution(), + frameRate: VoiceSettings.getVideoFrameRate(), + }; + for (const stored of ['low_240p', 'low_480p', 'medium', 'high', 'ultra', 'source'] as const) { + VoiceSettings.updateSettings({streamingMode: 'custom', screenshareResolution: stored, videoFrameRate: 30}); + const quality = { + mode: 'custom', + storedResolution: VoiceSettings.getScreenshareResolution(), + storedFrameRate: 30, + entitled: true, + context: 'display', + } as const; + expect( + `${stored}|${menuStateOf(quality) + .resolutions.map((option) => option.value) + .join()}`, + ).toBe(`${stored}|low_480p,medium,high,ultra,source`); + const tabState = resolveUserVideoTabScreenShareState({quality, hintSetting: 'auto', selfHosted: false}); + expect(`${stored}|${tabState.resolutionOptions.map((option) => option.value).join()}`).toBe( + `${stored}|low_480p,medium,high,ultra,source`, + ); + } + VoiceSettings.updateSettings({ + streamingMode: restore.mode, + screenshareResolution: restore.resolution, + videoFrameRate: restore.frameRate, + }); + }); + + it('selects what a capture device sends rather than the saved value', () => { + const state = menuStateOf({ + mode: 'custom', + storedResolution: 'source', + storedFrameRate: 60, + entitled: true, + context: 'device', + }); + expect(state.resolutions.map((option) => option.value)).toEqual(['low_480p', 'medium', 'high', 'ultra']); + expect(selectedValues(state.resolutions)).toEqual(['ultra']); + expect(state.resolutions.find((option) => option.value === 'ultra')?.write).toEqual({kind: 'none'}); + expect(state.frameRates.map((option) => option.value)).toEqual([15, 30, 60]); + expect(selectedValues(state.frameRates)).toEqual([60]); + }); + + it('routes every menu pick through the picker', () => { + const state = menuStateOf(freeScreenShare); + expect(state.resolutions.map((option) => [option.value, option.write])).toEqual([ + ['low_480p', {kind: 'write', patch: {streamingMode: 'custom', screenshareResolution: 'low_480p'}}], + ['medium', {kind: 'none'}], + ['high', {kind: 'premium'}], + ['ultra', {kind: 'premium'}], + ['source', {kind: 'premium'}], + ]); + expect(state.frameRates.map((option) => [option.value, option.write])).toEqual([ + [15, {kind: 'write', patch: {streamingMode: 'custom', videoFrameRate: 15}}], + [30, {kind: 'none'}], + [60, {kind: 'premium'}], + ]); + }); + + it('keeps the premium rungs for an entitled account that sees no premium upsell', () => { + const state = menuStateOf( + {mode: 'custom', storedResolution: 'ultra', storedFrameRate: 30, entitled: true, context: 'display'}, + false, + ); + expect(state.resolutions.map((option) => option.value)).toEqual(['low_480p', 'medium', 'high', 'ultra', 'source']); + expect(state.frameRates.map((option) => option.value)).toEqual([15, 30, 60]); + }); + + it('always offers the value it says the share uses', () => { + const resolutions = ['low_240p', 'low_480p', 'medium', 'high', 'ultra', 'source'] as const; + for (const mode of ['custom', 'gaming', 'screenshare'] as const) { + for (const storedResolution of resolutions) { + for (const storedFrameRate of SUPPORTED_SCREEN_SHARE_FRAME_RATES) { + for (const entitled of [false, true]) { + for (const context of ['display', 'app', 'device'] as const) { + for (const showPremiumFeatures of [false, true]) { + const quality = {mode, storedResolution, storedFrameRate, entitled, context}; + const target = resolveScreenShareTarget({...quality, sourceDimensions: null, hintSetting: 'auto'}); + const state = menuStateOf(quality, showPremiumFeatures); + const scenario = `${mode}|${storedResolution}|${storedFrameRate}|${entitled}|${context}|${showPremiumFeatures}`; + expect(`${scenario}|${selectedValues(state.resolutions).join()}`).toBe( + `${scenario}|${target.resolution === 'low_240p' ? 'low_480p' : target.resolution}`, + ); + expect(`${scenario}|${selectedValues(state.frameRates).join()}`).toBe( + `${scenario}|${target.frameRate}`, + ); + } + } + } + } + } + } + }); + + const mounted: Array<{root: ReturnType; container: HTMLElement}> = []; + const renderStreamMenu = async (input: { + variant: 'full' | 'compactLive'; + shareContext: 'display' | 'app' | 'device'; + mode: 'custom' | 'gaming' | 'screenshare'; + storedResolution: 'low_480p' | 'medium' | 'high' | 'ultra' | 'source'; + storedFrameRate: number; + entitled: boolean; + }) => { + menuEntitled = input.entitled; + vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue(input.mode); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue(input.storedResolution); + vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(input.storedFrameRate); + vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('auto'); + const container = document.createElement('div'); + document.body.append(container); + const root = createRoot(container); + mounted.push({root, container}); + await act(async () => { + root.render( + createElement(StreamSettingsMenuContent, { + applyToLiveStream: false, + shareContext: input.shareContext, + displayShareEnvironment: 'web', + variant: input.variant, + }), + ); + }); + return container; + }; + const radios = (container: HTMLElement, submenu: string) => + Array.from(container.querySelectorAll(`[data-submenu="${submenu}"] button`)).map((node) => ({ + label: node.getAttribute('data-label') ?? '', + selected: node.getAttribute('data-selected') === 'true', + })); + const pick = async (container: HTMLElement, submenu: string, label: string) => { + const node = Array.from(container.querySelectorAll(`[data-submenu="${submenu}"] button`)).find( + (candidate) => candidate.getAttribute('data-label') === label, + ); + if (node == null) throw new Error(`no ${label} option in ${submenu}`); + await act(async () => { + (node as HTMLButtonElement).click(); + }); + }; + + afterEach(async () => { + for (const entry of mounted) { + await act(async () => { + entry.root.unmount(); + }); + entry.container.remove(); + } + mounted.length = 0; + menuEntitled = true; + settingsUpdate.mockClear(); + openPremiumModal.mockClear(); + vi.restoreAllMocks(); + }); + + it('shows a capture device what it sends rather than the saved value', async () => { + const container = await renderStreamMenu({ + variant: 'full', + shareContext: 'device', + mode: 'custom', + storedResolution: 'source', + storedFrameRate: 60, + entitled: true, + }); + expect(radios(container, 'Resolution')).toEqual([ + {label: '480p', selected: false}, + {label: '720p', selected: false}, + {label: '1080p', selected: false}, + {label: '1440p', selected: true}, + ]); + expect(radios(container, 'Frame rate')).toEqual([ + {label: '15 FPS', selected: false}, + {label: '30 FPS', selected: false}, + {label: '60 FPS', selected: true}, + ]); + }); + + it('offers the 90 FPS a stored preference asks for', async () => { + const container = await renderStreamMenu({ + variant: 'full', + shareContext: 'display', + mode: 'custom', + storedResolution: 'medium', + storedFrameRate: 90, + entitled: true, + }); + expect(radios(container, 'Frame rate')).toEqual([ + {label: '15 FPS', selected: false}, + {label: '30 FPS', selected: false}, + {label: '60 FPS', selected: false}, + {label: '90 FPS', selected: true}, + ]); + }); + + it('sends a menu pick through the picker instead of storing the raw value', async () => { + const container = await renderStreamMenu({ + variant: 'full', + shareContext: 'display', + mode: 'custom', + storedResolution: 'medium', + storedFrameRate: 30, + entitled: false, + }); + await pick(container, 'Resolution', '1080p'); + expect(openPremiumModal).toHaveBeenCalledTimes(1); + expect(settingsUpdate).not.toHaveBeenCalled(); + await pick(container, 'Frame rate', '60 FPS'); + expect(openPremiumModal).toHaveBeenCalledTimes(2); + expect(settingsUpdate).not.toHaveBeenCalled(); + await pick(container, 'Resolution', '480p'); + expect(settingsUpdate).toHaveBeenCalledWith({streamingMode: 'custom', screenshareResolution: 'low_480p'}); + }); + + it('sends a compact menu pick through the picker as well', async () => { + const container = await renderStreamMenu({ + variant: 'compactLive', + shareContext: 'display', + mode: 'screenshare', + storedResolution: 'medium', + storedFrameRate: 30, + entitled: false, + }); + expect(radios(container, 'Stream quality')).toEqual([ + {label: '15 FPS', selected: false}, + {label: '30 FPS', selected: true}, + {label: '60 FPS', selected: false}, + {label: '480p', selected: false}, + {label: '720p', selected: true}, + {label: '1080p', selected: false}, + {label: '1440p', selected: false}, + {label: 'Source', selected: false}, + ]); + await pick(container, 'Stream quality', '60 FPS'); + expect(openPremiumModal).toHaveBeenCalledTimes(1); + expect(settingsUpdate).not.toHaveBeenCalled(); + await pick(container, 'Stream quality', '480p'); + expect(settingsUpdate).toHaveBeenCalledWith({streamingMode: 'custom', screenshareResolution: 'low_480p'}); + }); + + it('serves a capture device the Gaming preset and says so', () => { + expect(selectStreamSettingsPresetOverriddenByContext('screenshare', 'device')).toBe(true); + expect(selectStreamSettingsPresetOverriddenByContext('gaming', 'device')).toBe(false); + expect(selectStreamSettingsPresetOverriddenByContext('screenshare', 'display')).toBe(false); + }); +}); + +const {default: MediaEngine} = await import('@app/features/voice/engine/MediaEngineFacade'); +const { + buildConfiguredScreenShareOptions, + startConfiguredDeviceScreenShare, + startConfiguredDisplayScreenShare, + switchConfiguredDeviceScreenShare, + switchConfiguredDisplayScreenShare, +} = await import('@app/features/voice/utils/ScreenShareStartFlow'); + +describe('the configured screen share start flow', () => { + const engine = MediaEngine as unknown as { + startDeviceScreenShare: ReturnType; + replaceActiveDeviceScreenShare: ReturnType; + }; + let storedResolution: 'high' | 'medium' | 'source' = 'high'; + let started: Array<{resolution: unknown; publishOptions: unknown}> = []; + + beforeEach(() => { + selfStream = true; + storedResolution = 'high'; + started = []; + ActiveScreenShareSource.clear(); + vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockImplementation(() => storedResolution); + vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); + vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); + vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); + vi.spyOn(VoiceSettings, 'getShareDeviceAudio').mockReturnValue(false); + refreshSelection.mockReset(); + refreshSelection.mockResolvedValue(null); + selectScreenShareCodec.mockReset(); + selectScreenShareCodec.mockReturnValue('h264'); + engine.startDeviceScreenShare = vi.fn(async (options: {resolution: unknown}, publishOptions: unknown) => { + started.push({resolution: options.resolution, publishOptions}); + }); + engine.replaceActiveDeviceScreenShare = vi.fn(async () => true); + }); + + afterEach(() => { + vi.restoreAllMocks(); + ActiveScreenShareSource.clear(); + selfStream = true; + }); + + it('publishes the target the settings push builds', async () => { + expect(await startConfiguredDeviceScreenShare('camera-1')).toBe(true); + const target = resolveConfiguredScreenShareTarget('device', null); + const expected = buildConfiguredScreenShareOptions({ + target, + sourceDimensions: null, + includeAudio: false, + videoCodec: 'h264', + }); + expect(started).toEqual([ + {resolution: expected.captureOptions.resolution, publishOptions: expected.publishOptions}, + ]); + expect(expected.publishOptions.videoCodec).toBe('h264'); + expect(expected.publishOptions.degradationPreference).toBe('balanced'); + expect(ActiveScreenShareSource.getTarget()).toEqual(target); + }); + + it('clears the recorded source dimensions for a capture device', async () => { + ActiveScreenShareSource.setPublishedSource('display', 'screen:1'); + ActiveScreenShareSource.setSourceDimensions({width: 3840, height: 2160}); + await startConfiguredDeviceScreenShare('camera-1'); + expect(ActiveScreenShareSource.getPublishedSource()).toBe('device'); + expect(ActiveScreenShareSource.getSourceDimensions()).toBeNull(); + }); + + it('commits the target of the share the start flow asked for', async () => { + storedResolution = 'source'; + expect(await startConfiguredDeviceScreenShare('camera-1')).toBe(true); + const device = resolveConfiguredScreenShareTarget('device', null); + expect(device).not.toEqual(resolveConfiguredScreenShareTarget('display', null)); + expect(ActiveScreenShareSource.getTarget()).toEqual(device); + expect(started).toEqual([ + { + resolution: buildConfiguredScreenShareOptions({ + target: device, + sourceDimensions: null, + includeAudio: false, + videoCodec: 'h264', + }).captureOptions.resolution, + publishOptions: buildConfiguredScreenShareOptions({ + target: device, + sourceDimensions: null, + includeAudio: false, + videoCodec: 'h264', + }).publishOptions, + }, + ]); + }); + + it('retargets the committed target on a source switch', async () => { + await startConfiguredDeviceScreenShare('camera-1'); + const startedTarget = ActiveScreenShareSource.getTarget(); + storedResolution = 'medium'; + expect(await switchConfiguredDeviceScreenShare('camera-2')).toBe(true); + const switched = resolveConfiguredScreenShareTarget('device', null); + expect(switched).not.toEqual(startedTarget); + expect(ActiveScreenShareSource.getTarget()).toEqual(switched); + }); + + it('puts the committed target back when a switch does not take', async () => { + await startConfiguredDeviceScreenShare('camera-1'); + const before = ActiveScreenShareSource.getTarget(); + engine.replaceActiveDeviceScreenShare = vi.fn(async () => false); + storedResolution = 'medium'; + expect(await switchConfiguredDeviceScreenShare('camera-2')).toBe(false); + expect(ActiveScreenShareSource.getTarget()).toEqual(before); + }); +}); + +describe('the configured display screen share start flow', () => { + const engine = MediaEngine as unknown as { + setScreenShareEnabled: ReturnType; + replaceActiveDisplayScreenShare: ReturnType; + }; + const electronHost = window as unknown as {electron?: {platform: string}}; + + beforeEach(() => { + selfStream = true; + displayShareEnvironment = 'desktop-custom'; + electronHost.electron = {platform: 'win32'}; + ActiveScreenShareSource.clear(); + vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('source'); + vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); + vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); + vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); + vi.spyOn(VoiceSettings, 'getShareDesktopAudio').mockReturnValue(false); + vi.spyOn(VoiceSettings, 'getShareAppAudio').mockReturnValue(false); + refreshSelection.mockReset(); + refreshSelection.mockResolvedValue(null); + selectScreenShareCodec.mockReset(); + selectScreenShareCodec.mockReturnValue('h264'); + engine.setScreenShareEnabled = vi.fn(async () => undefined); + engine.replaceActiveDisplayScreenShare = vi.fn(async () => true); + }); + + afterEach(() => { + vi.restoreAllMocks(); + ActiveScreenShareSource.clear(); + displayShareEnvironment = 'web'; + Reflect.deleteProperty(electronHost, 'electron'); + }); + + it('commits the target of the picked source rather than the one still recorded', async () => { + ActiveScreenShareSource.setPublishedSource('display', 'screen:0'); + ActiveScreenShareSource.setSourceDimensions({width: 3840, height: 2160}); + const picked = {width: 1280, height: 720}; + const pickedTarget = resolveConfiguredScreenShareTarget('display', picked); + expect(pickedTarget).not.toEqual(resolveConfiguredScreenShareTarget('display', {width: 3840, height: 2160})); + expect(await startConfiguredDisplayScreenShare('screen:1', {sourceDimensions: picked})).toBe(true); + expect(ActiveScreenShareSource.getTarget()).toEqual(pickedTarget); + }); + + it('rebuilds the target from the newly picked source on a switch', async () => { + const first = {width: 1280, height: 720}; + const second = {width: 3840, height: 2160}; + expect(await startConfiguredDisplayScreenShare('screen:1', {sourceDimensions: first})).toBe(true); + ActiveScreenShareSource.setSourceDimensions(first); + const secondTarget = resolveConfiguredScreenShareTarget('display', second); + expect(secondTarget).not.toEqual(resolveConfiguredScreenShareTarget('display', first)); + expect(await switchConfiguredDisplayScreenShare('screen:2', {sourceDimensions: second})).toBe(true); + expect(ActiveScreenShareSource.getTarget()).toEqual(secondTarget); + expect(ActiveScreenShareSource.getSourceDimensions()).toEqual(second); + }); + + it('asks for the tracking to be held when it stops the share a Wayland source switch restarts', async () => { + displayShareEnvironment = 'desktop-wayland'; + electronHost.electron = {platform: 'linux'}; + const stops: Array = []; + engine.setScreenShareEnabled = vi.fn(async (enabled: boolean, options: unknown) => { + if (!enabled) stops.push(options); + }); + expect(await startConfiguredDisplayScreenShare(null, {preferredDisplaySurface: 'monitor'})).toBe(true); + expect(await switchConfiguredDisplayScreenShare(null, {preferredDisplaySurface: 'monitor'})).toBe(true); + expect(stops).toEqual([ + {sendUpdate: false, playSound: false, preserveStreamAudioPreferences: true, keepShareTracking: true}, + ]); + }); +}); + +const {pushActiveStreamSettings} = await import('@app/features/voice/components/StreamSettingsMenuContent'); + +describe('a live settings push', () => { + const engine = MediaEngine as unknown as { + startDeviceScreenShare: ReturnType; + updateActiveScreenShareSettings: ReturnType; + }; + + beforeEach(() => { + selfStream = true; + ActiveScreenShareSource.clear(); + vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('high'); + vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); + vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); + vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); + vi.spyOn(VoiceSettings, 'getShareDeviceAudio').mockReturnValue(false); + refreshSelection.mockReset(); + refreshSelection.mockResolvedValue(null); + selectScreenShareCodec.mockReset(); + selectScreenShareCodec.mockReturnValue('h264'); + }); + + afterEach(() => { + vi.restoreAllMocks(); + ActiveScreenShareSource.clear(); + }); + + it('puts the committed target back when the live share refuses the push', async () => { + engine.startDeviceScreenShare = vi.fn(async () => undefined); + engine.updateActiveScreenShareSettings = vi.fn(async () => false); + await startConfiguredDeviceScreenShare('camera-1'); + const before = ActiveScreenShareSource.getTarget(); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('low_480p'); + expect(resolveConfiguredScreenShareTarget('device', null)).not.toEqual(before); + await pushActiveStreamSettings('device', 'desktop-custom'); + expect(engine.updateActiveScreenShareSettings).toHaveBeenCalledTimes(1); + expect(ActiveScreenShareSource.getTarget()).toEqual(before); + }); + + it('keeps the retargeted target when the live share takes the push', async () => { + engine.startDeviceScreenShare = vi.fn(async () => undefined); + engine.updateActiveScreenShareSettings = vi.fn(async () => true); + await startConfiguredDeviceScreenShare('camera-1'); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('low_480p'); + const retargeted = resolveConfiguredScreenShareTarget('device', null); + await pushActiveStreamSettings('device', 'desktop-custom'); + expect(ActiveScreenShareSource.getTarget()).toEqual(retargeted); + }); + + it('sends the live share what the start flow published', async () => { + const published: Array<{resolution: unknown; publishOptions: unknown}> = []; + engine.startDeviceScreenShare = vi.fn(async (options: {resolution: unknown}, publishOptions: unknown) => { + published.push({resolution: options.resolution, publishOptions}); + }); + engine.updateActiveScreenShareSettings = vi.fn( + async (captureOptions: {resolution: unknown}, publishOptions: unknown) => { + published.push({resolution: captureOptions.resolution, publishOptions}); + }, + ); + await startConfiguredDeviceScreenShare('camera-1'); + await pushActiveStreamSettings('device', 'desktop-custom'); + expect(published).toHaveLength(2); + expect(published[1]).toEqual(published[0]); + }); +}); + +const {reconfigureActiveDeviceShareAudio} = await import('@app/features/voice/utils/ScreenShareStartFlow'); +const { + DEVICE_AUDIO_ONLY_DESCRIPTOR, + DEVICE_AUDIO_WITH_DEVICE_DESCRIPTOR, + MICROPHONE_WITH_DEVICE_DESCRIPTOR, + NO_DEVICE_AUDIO_DESCRIPTOR, + resolveDeviceShareAudioPairing, + resolveScreenShareAudioSummary, +} = await import('@app/features/voice/utils/ScreenShareAudioSummary'); + +describe('the device share audio input', () => { + const engine = MediaEngine as unknown as { + startDeviceScreenShare: ReturnType; + ensureDeviceScreenShareMicPublication: ReturnType; + getActiveScreenShareVideoDeviceId: ReturnType; + setScreenShareAudioMuted: ReturnType; + }; + const CARD = {deviceId: 'card-video', groupId: 'card', kind: 'videoinput', label: 'Capture card'} as MediaDeviceInfo; + const CARD_AUDIO = { + deviceId: 'card-audio', + groupId: 'card', + kind: 'audioinput', + label: 'Capture card audio', + } as MediaDeviceInfo; + const HEADSET = { + deviceId: 'microphone-1', + groupId: 'headset', + kind: 'audioinput', + label: 'Headset', + } as MediaDeviceInfo; + let devices: Array = []; + let published: Array = []; + let chosenAudioDeviceId = 'default'; + let usesMicrophone = false; + + beforeEach(() => { + selfStream = true; + devices = [CARD, HEADSET]; + published = []; + chosenAudioDeviceId = 'default'; + usesMicrophone = false; + ActiveScreenShareSource.clear(); + Object.defineProperty(navigator, 'mediaDevices', { + configurable: true, + value: {enumerateDevices: async () => devices}, + }); + vi.spyOn(VoiceSettings, 'getStreamingMode').mockReturnValue('custom'); + vi.spyOn(VoiceSettings, 'getScreenshareResolution').mockReturnValue('high'); + vi.spyOn(VoiceSettings, 'getVideoFrameRate').mockReturnValue(30); + vi.spyOn(VoiceSettings, 'getScreenShareContentHint').mockReturnValue('text'); + vi.spyOn(VoiceSettings, 'getPreferredScreenShareCodec').mockReturnValue('auto'); + vi.spyOn(VoiceSettings, 'getShareDeviceAudio').mockReturnValue(true); + vi.spyOn(VoiceSettings, 'getInputDeviceId').mockReturnValue('microphone-1'); + vi.spyOn(VoiceSettings, 'getScreenShareAudioDeviceId').mockImplementation(() => chosenAudioDeviceId); + vi.spyOn(VoiceSettings, 'getScreenShareDeviceAudioUsesMicrophone').mockImplementation(() => usesMicrophone); + refreshSelection.mockReset(); + refreshSelection.mockResolvedValue(null); + selectScreenShareCodec.mockReset(); + selectScreenShareCodec.mockReturnValue('h264'); + engine.startDeviceScreenShare = vi.fn(async (options: {audioDeviceId?: string}) => { + published.push(options.audioDeviceId); + }); + engine.ensureDeviceScreenShareMicPublication = vi.fn(async (audioDeviceId: string) => { + published.push(audioDeviceId); + return true; + }); + engine.getActiveScreenShareVideoDeviceId = vi.fn(() => 'card-video'); + engine.setScreenShareAudioMuted = vi.fn(); + }); + + afterEach(() => { + vi.restoreAllMocks(); + ActiveScreenShareSource.clear(); + selfStream = true; + }); + + it('never publishes the voice input for a capture device that has no audio of its own', async () => { + expect(await startConfiguredDeviceScreenShare('card-video')).toBe(true); + expect(published).toEqual([undefined]); + }); + + it('publishes the capture device own audio input when it has one', async () => { + devices = [CARD, CARD_AUDIO, HEADSET]; + expect(await startConfiguredDeviceScreenShare('card-video')).toBe(true); + expect(published).toEqual(['card-audio']); + }); + + it('publishes the input the user picked in the audio device menu', async () => { + chosenAudioDeviceId = 'microphone-1'; + expect(await startConfiguredDeviceScreenShare('card-video')).toBe(true); + expect(published).toEqual(['microphone-1']); + }); + + it('publishes the voice input when the audio source picker asked for the microphone', async () => { + usesMicrophone = true; + expect(await startConfiguredDeviceScreenShare('card-video')).toBe(true); + expect(published).toEqual(['microphone-1']); + }); + + it('silences a live device share rather than leaving an earlier input publishing', async () => { + expect(await reconfigureActiveDeviceShareAudio()).toBe(true); + expect(engine.setScreenShareAudioMuted).toHaveBeenCalledWith(true); + expect(engine.ensureDeviceScreenShareMicPublication).not.toHaveBeenCalled(); + }); + + const summarise = (input: Partial) => + resolveScreenShareAudioSummary({ + sourceMode: 'system', + includeSources: [], + shareContext: 'device', + microphoneLabel: 'Headset', + ...input, + }); + + it('never names the microphone for a capture device that has no audio of its own', () => { + expect(summarise({deviceAudioPairing: resolveDeviceShareAudioPairing([CARD, HEADSET], 'card-video')})).toEqual({ + kind: 'message', + descriptor: NO_DEVICE_AUDIO_DESCRIPTOR, + }); + }); + + it('names the capture device own audio input when it has one', () => { + expect( + summarise({deviceAudioPairing: resolveDeviceShareAudioPairing([CARD, CARD_AUDIO, HEADSET], 'card-video')}), + ).toEqual({ + kind: 'message', + descriptor: DEVICE_AUDIO_WITH_DEVICE_DESCRIPTOR, + values: {deviceLabel: 'Capture card audio'}, + }); + }); + + it('names the input the user picked in the audio device menu', () => { + expect( + summarise({ + chosenAudioDeviceId: 'microphone-1', + deviceAudioPairing: resolveDeviceShareAudioPairing([CARD, HEADSET], 'card-video'), + }), + ).toEqual({ + kind: 'message', + descriptor: MICROPHONE_WITH_DEVICE_DESCRIPTOR, + values: {deviceLabel: 'Headset'}, + }); + }); + + it('names the microphone when the audio source picker asked for it', () => { + expect( + summarise({ + usesDeviceMicrophone: true, + deviceAudioPairing: resolveDeviceShareAudioPairing([CARD, HEADSET], 'card-video'), + }), + ).toEqual({ + kind: 'message', + descriptor: MICROPHONE_WITH_DEVICE_DESCRIPTOR, + values: {deviceLabel: 'Headset'}, + }); + }); + + it('promises nothing about a device the user has not picked yet', () => { + expect(summarise({deviceAudioPairing: resolveDeviceShareAudioPairing([CARD, CARD_AUDIO], '')})).toEqual({ + kind: 'message', + descriptor: DEVICE_AUDIO_ONLY_DESCRIPTOR, + }); + }); +}); diff --git a/fluxer_app/src/features/voice/engine/voice_screen_share_manager/DisplayMediaCapture.ts b/fluxer_app/src/features/voice/engine/voice_screen_share_manager/DisplayMediaCapture.ts index d81a3bc12..bf9d07f62 100644 --- a/fluxer_app/src/features/voice/engine/voice_screen_share_manager/DisplayMediaCapture.ts +++ b/fluxer_app/src/features/voice/engine/voice_screen_share_manager/DisplayMediaCapture.ts @@ -6,6 +6,7 @@ import { stopMediaTrack, stopUnselectedStreamTracks, } from '@app/features/voice/engine/voice_screen_share_manager/shared'; +import {rememberCapturedDisplayAudioTrack} from '@app/features/voice/utils/NativeAudioCaptureBridge'; import {ScreenShareAudioCaptureError} from '@app/features/voice/utils/ScreenShareAudioCaptureError'; import type {ScreenShareCaptureOptions} from 'livekit-client'; @@ -131,6 +132,7 @@ export async function createDisplayScreenShareTracks( .catch(() => undefined); const capturedAudioTrack = stream.getAudioTracks()[0]; const audioTrack = capturedAudioTrack?.readyState === 'live' ? capturedAudioTrack : undefined; + rememberCapturedDisplayAudioTrack(capturedAudioTrack, Boolean(capturedAudioTrack) && !audioTrack); if (captureContext?.requireAudio && !audioTrack) { throw new ScreenShareAudioCaptureError({ sourceId: captureContext.sourceId, diff --git a/fluxer_app/src/features/voice/engine/voice_screen_share_manager/shared.ts b/fluxer_app/src/features/voice/engine/voice_screen_share_manager/shared.ts index b37844ee6..b59a0a68e 100644 --- a/fluxer_app/src/features/voice/engine/voice_screen_share_manager/shared.ts +++ b/fluxer_app/src/features/voice/engine/voice_screen_share_manager/shared.ts @@ -1,46 +1,29 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import { - getCachedDesktopTroubleshootingSettings, - getDesktopTroubleshootingSettings, -} from '@app/features/devtools/utils/DesktopTroubleshootingUtils'; +import {getDesktopTroubleshootingSettings} from '@app/features/devtools/utils/DesktopTroubleshootingUtils'; import {Logger} from '@app/features/platform/utils/AppLogger'; import ScreenShareCodecNegotiation from '@app/features/voice/engine/ScreenShareCodecNegotiation'; -import { - getStatsKind, - readScreenShareDeliverySample, - SCREEN_SHARE_DELIVERY_FIRST_TICK_MS, - SCREEN_SHARE_DELIVERY_TICK_MS, - type ScreenShareDeliveryCounters, - type ScreenShareDeliveryMemoryHeader, - type ScreenShareDeliverySample, -} from '@app/features/voice/engine/ScreenShareUnderperformance'; import ActiveScreenShareSource from '@app/features/voice/state/ActiveScreenShareSource'; -import ScreenShareDelivery, {type ScreenShareDeliveryLadder} from '@app/features/voice/state/ScreenShareDelivery'; -import ScreenShareDeliveryRollout from '@app/features/voice/state/ScreenShareDeliveryRollout'; import SoftwareEncoderWarning from '@app/features/voice/state/SoftwareEncoderWarning'; import VoiceSettings from '@app/features/voice/state/VoiceSettings'; import { - buildScreenShareCodecProfile, getCodecCapabilityReport, LIVEKIT_SUPPORTED_CODECS, markScreenShareCodecSoftwareEncodeObserved, resolveVideoPublishCodecPolicy, type VideoPublishCodecPolicy, } from '@app/features/voice/utils/CodecCapabilityDetector'; -import {getGpuEncoderReportSync, loadGpuEncoderReport} from '@app/features/voice/utils/GpuEncoderCapabilities'; +import {loadGpuEncoderReport} from '@app/features/voice/utils/GpuEncoderCapabilities'; import {loadNativeHardwareEncoderCapabilities} from '@app/features/voice/utils/NativeHardwareEncoderCapabilities'; import { buildScreenShareSenderParameters, + resolveScreenShareDegradationPreference, resolveScreenShareLayering, - resolveScreenShareLevels, resolveScreenShareSenderCodec, resolveScreenShareTarget, - SCREEN_SHARE_DEGRADATION_PREFERENCE, SCREEN_SHARE_MAX_VIDEO_BITRATE_BPS, type ScreenShareContext, type ScreenShareLayering, - type ScreenShareLevel, type ScreenShareTarget, } from '@app/features/voice/utils/ScreenShareOptions'; import {ScreenShareRollbackIncompleteError} from '@app/features/voice/utils/ScreenShareRollbackIncompleteError'; @@ -60,6 +43,8 @@ import { export const logger = new Logger('VoiceEngineV2ScreenShareSupport'); const GPU_ENCODER_REPORT_START_TIMEOUT_MS = 500; +const SCREEN_SHARE_MONITOR_FIRST_TICK_MS = 2500; +const SCREEN_SHARE_MONITOR_TICK_MS = 2000; export interface DeviceScreenShareCaptureOptions { videoDeviceId?: string; @@ -242,54 +227,22 @@ export function resolveActiveScreenShareTarget( return resolveConfiguredScreenShareTarget(context, ActiveScreenShareSource.getSourceDimensions()); } -export function resolveConfiguredScreenShareLadder( - context: ScreenShareContext, - sourceDimensions: {width: number; height: number} | null, -): ScreenShareDeliveryLadder { - const target = resolveConfiguredScreenShareTarget(context, sourceDimensions); - return {target, context, levels: resolveScreenShareLevels(target, sourceDimensions)}; -} - -export function buildScreenShareDeliveryHeader(): ScreenShareDeliveryMemoryHeader { - const chromiumMajor = /Chrome\/(\d+)/.exec(navigator.userAgent)?.[1]; - return { - chromiumMajor: chromiumMajor === undefined ? null : Number(chromiumMajor), - gpuKey: getGpuEncoderReportSync()?.gpuLabel ?? 'none', - encoderMode: VoiceSettings.getScreenShareEncoderMode(), - hardwareAccelerationDisabled: getCachedDesktopTroubleshootingSettings()?.disableHardwareAcceleration === true, - }; -} - -export async function beginScreenShareDelivery(ladder: ScreenShareDeliveryLadder): Promise { - if (ScreenShareDelivery.isSharing) { - ScreenShareDelivery.retarget(ladder); - return; - } - await waitForScreenShareCapabilityLoads(); - const {codecs} = buildScreenShareCodecProfile(); - ScreenShareDelivery.beginShare({ - ...ladder, - adaptive: ScreenShareDeliveryRollout.enabled, - header: buildScreenShareDeliveryHeader(), - hardware: { - av1: codecs.av1.hardware, - h265: codecs.h265.hardware, - h264: codecs.h264.hardware, - vp9: codecs.vp9.hardware, - vp8: codecs.vp8.hardware, - }, - }); -} - -export async function ensureScreenShareDeliveryLadder(): Promise { - const committed = ScreenShareDelivery.ladder; +export function ensureCommittedScreenShareTarget(): ScreenShareTarget { + const committed = ActiveScreenShareSource.getTarget(); if (committed !== null) return committed; - const ladder = resolveConfiguredScreenShareLadder( - resolveActiveScreenShareContext(), - ActiveScreenShareSource.getSourceDimensions(), - ); - await beginScreenShareDelivery(ladder); - return ladder; + const target = resolveActiveScreenShareTarget(); + ActiveScreenShareSource.setTarget(target); + return target; +} + +export function getStatsKind( + report: {kind?: string; mediaType?: string; codecId?: string}, + reportsById: ReadonlyMap, +): string | undefined { + if (report.kind || report.mediaType) return report.kind ?? report.mediaType; + if (!report.codecId) return undefined; + const codec = reportsById.get(report.codecId); + return codec?.mimeType?.startsWith('video/') ? 'video' : undefined; } function resolveScreenShareEncoding(target: ScreenShareTarget, publishOptions?: TrackPublishOptions): VideoEncoding { @@ -297,29 +250,13 @@ function resolveScreenShareEncoding(target: ScreenShareTarget, publishOptions?: return {maxBitrate: target.maxBitrate, maxFramerate: target.frameRate, priority: 'high'}; } -export function getScreenShareLayeringForCodec( - codec: VideoCodec | undefined, - levelPixels: number, - multiLayer: boolean, -): ScreenShareLayering { +function getScreenShareLayeringForCodec(codec: VideoCodec | undefined): ScreenShareLayering { return resolveScreenShareLayering({ codec, svcSetting: VoiceSettings.getScreenShareScalabilityModeOverride(), - levelPixels, - multiLayer, }); } -function getActiveScreenShareLayering(codec: VideoCodec | undefined): ScreenShareLayering { - const levels = ScreenShareDelivery.ladder?.levels; - const levelZero = levels === undefined ? null : levels[0]; - return getScreenShareLayeringForCodec( - codec, - levelZero === null ? 0 : levelZero.width * levelZero.height, - ScreenShareDelivery.multiLayer, - ); -} - function resolveBackupCodecWithinPolicy( configured: TrackPublishOptions['backupCodec'] | undefined, policy: VideoPublishCodecPolicy, @@ -371,23 +308,19 @@ export async function getEffectivePublishOptions( if (!enabled) { return publishOptions; } - const {target} = await ensureScreenShareDeliveryLadder(); + const target = ensureCommittedScreenShareTarget(); await waitForGpuEncoderReportForPublish(options); const policy = resolveVideoPublishCodecPolicy(publishOptions?.videoCodec ?? getPreferredScreenShareCodec()); const preferredVideoCodec = policy.primary; const backupCodec = resolveBackupCodecWithinPolicy(publishOptions?.backupCodec, policy); const backupCodecPolicy = publishOptions?.backupCodecPolicy ?? (backupCodec ? BackupCodecPolicy.SIMULCAST : undefined); - const layering = getScreenShareLayeringForCodec( - preferredVideoCodec, - target.width * target.height, - ScreenShareDelivery.multiLayer, - ); + const layering = getScreenShareLayeringForCodec(preferredVideoCodec); return { ...publishOptions, videoCodec: preferredVideoCodec, screenShareEncoding: resolveScreenShareEncoding(target, publishOptions), - degradationPreference: SCREEN_SHARE_DEGRADATION_PREFERENCE, + degradationPreference: resolveScreenShareDegradationPreference(target), simulcast: layering.simulcast, scalabilityMode: layering.scalabilityMode, backupCodec, @@ -450,15 +383,13 @@ function isSameScreenShareEncoding(current: RTCRtpEncodingParameters, next: RTCR ); } -export interface ScreenShareSenderEnforcement { +interface ScreenShareSenderEnforcement { applied: boolean; - monitoredMaxBitrate: number; - multiLayer: boolean; } export async function enforceScreenShareSenderParameters( sender: RTCRtpSender, - level: ScreenShareLevel, + target: ScreenShareTarget, options: ScreenShareSenderCodecOptions = {}, ): Promise { try { @@ -469,14 +400,12 @@ export async function enforceScreenShareSenderParameters( ); const params = sender.getParameters(); const encodings = params.encodings?.length ? params.encodings : [{}]; - const layering = getActiveScreenShareLayering(codec); const next = buildScreenShareSenderParameters({ encodings, - level, + target, capture: readScreenShareCaptureSize(sender), - scalabilityMode: layering.scalabilityMode, + scalabilityMode: getScreenShareLayeringForCodec(codec).scalabilityMode, }); - const multiLayer = encodings.length > 1 || layering.multiLayer; const applied = next.encodings.map((encoding, index) => encodings[index].active === false ? encodings[index] : encoding, ); @@ -484,14 +413,14 @@ export async function enforceScreenShareSenderParameters( params.degradationPreference === next.degradationPreference && params.encodings?.length === applied.length && applied.every((encoding, index) => isSameScreenShareEncoding(encodings[index], encoding)); - if (inSync) return {applied: true, monitoredMaxBitrate: next.monitoredMaxBitrate, multiLayer}; + if (inSync) return {applied: true}; params.degradationPreference = next.degradationPreference; params.encodings = applied; await sender.setParameters(params); - return {applied: true, monitoredMaxBitrate: next.monitoredMaxBitrate, multiLayer}; + return {applied: true}; } catch (error) { - logger.warn('Failed to enforce screen share sender parameters', {error, level}); - return {applied: false, monitoredMaxBitrate: level.maxBitrate, multiLayer: false}; + logger.warn('Failed to enforce screen share sender parameters', {error, target}); + return {applied: false}; } } @@ -723,28 +652,51 @@ export function findMissingExpectedVideoEncoder( }; } +function countEncodedVideoFrames(stats: RTCStatsReport): number | null { + const reportsById = new Map(); + const reports: Array = []; + for (const raw of stats.values()) { + const report = raw as CodecStatsEntry & OutboundVideoStatsEntry; + if (typeof report.id === 'string') { + reportsById.set(report.id, report); + } + if (report.type === 'outbound-rtp') { + reports.push(report); + } + } + let total: number | null = null; + for (const report of reports) { + if (getStatsKind(report, reportsById) !== 'video') continue; + const framesEncoded = finiteNumber(report.framesEncoded); + if (framesEncoded === null) continue; + total = (total ?? 0) + framesEncoded; + } + return total; +} + function verifyScreenShareEncoderStart( stats: RTCStatsReport, codec: VideoCodec, onEncodeFailure: (failure: ScreenShareEncoderVerificationFailure) => void, -): boolean { +): ScreenShareEncoderVerification { const expectedHardware = getCodecCapabilityReport()[codec].hardwareAccelerated; const stalledEncoder = findStalledVideoEncoder(stats, codec); if (stalledEncoder) { logger.warn('Screen share video encode is stalled', stalledEncoder); onEncodeFailure({...stalledEncoder, reason: 'stalled'}); - return true; + return 'failed'; } const missingExpectedEncoder = findMissingExpectedVideoEncoder(stats, codec); if (missingExpectedEncoder) { logger.warn('Screen share video encoder is using a different codec than requested', missingExpectedEncoder); onEncodeFailure(missingExpectedEncoder); - return true; + return 'failed'; } + if ((countEncodedVideoFrames(stats) ?? 0) === 0) return 'inconclusive'; const encoder = findSoftwareVideoEncoder(stats, codec); if (!encoder) { logger.info('Screen share encoder verified', {codec}); - return false; + return 'verified'; } logger.warn('Screen share is using a software encoder', { codec, @@ -759,7 +711,7 @@ function verifyScreenShareEncoderStart( if (warnAboutSoftwareEncoder) { SoftwareEncoderWarning.triggerWarning(codec, encoder.implementation); } - return false; + return 'verified'; } export function getScreenShareBackupSenders(track: LocalVideoTrack): Array<{sender: RTCRtpSender; codec: unknown}> { @@ -772,56 +724,49 @@ export function getScreenShareBackupSenders(track: LocalVideoTrack): Array<{send return senders; } -export interface ScreenShareDeliveryMonitorOptions { +type ScreenShareEncoderVerification = 'failed' | 'verified' | 'inconclusive'; + +export interface ScreenShareEncoderMonitorOptions { track: LocalVideoTrack; codec: VideoCodec; onEncodeFailure: (failure: ScreenShareEncoderVerificationFailure) => void; - onSample: (sample: ScreenShareDeliverySample) => Promise; + reEnforce: () => Promise; } -export function startScreenShareDeliveryMonitor(options: ScreenShareDeliveryMonitorOptions): () => void { +export function startScreenShareEncoderMonitor(options: ScreenShareEncoderMonitorOptions): () => void { let cancelled = false; let timer: ReturnType | undefined; - let ticks = 0; - let monitoredSender: RTCRtpSender | null = null; - let counters: ScreenShareDeliveryCounters | null = null; - const baselineFor = (sender: RTCRtpSender): ScreenShareDeliveryCounters | null => - sender === monitoredSender ? counters : null; + let verified = false; + let framesEncoded: number | null = null; const tick = async (): Promise => { - const primarySender = options.track.sender; - if (!primarySender) return; - const primaryStats = await primarySender.getStats(); - ticks += 1; - let sender = primarySender; - let sample = readScreenShareDeliverySample(primaryStats, baselineFor(primarySender)); - if (!sample.active) { - for (const backup of getScreenShareBackupSenders(options.track)) { - const backupSample = readScreenShareDeliverySample(await backup.sender.getStats(), baselineFor(backup.sender)); - if (!backupSample.active) continue; - sender = backup.sender; - sample = backupSample; - break; - } + const sender = options.track.sender; + if (!sender) return; + const stats = await sender.getStats(); + const encoded = countEncodedVideoFrames(stats); + ActiveScreenShareSource.setEncoding(encoded !== null && framesEncoded !== null && encoded > framesEncoded); + framesEncoded = encoded; + if (!verified) { + const verification = verifyScreenShareEncoderStart(stats, options.codec, options.onEncodeFailure); + if (verification === 'failed') return; + verified = verification === 'verified'; } - monitoredSender = sender; - counters = sample.counters; - if (ticks === 1 && verifyScreenShareEncoderStart(primaryStats, options.codec, options.onEncodeFailure)) return; - await options.onSample(sample); + await options.reEnforce(); }; const schedule = (delayMs: number): void => { timer = setTimeout(() => { void tick() .catch((error) => { - logger.warn('Failed to measure screen share delivery', {error}); + logger.warn('Failed to verify the screen share encoder', {error}); }) .finally(() => { - if (!cancelled) schedule(SCREEN_SHARE_DELIVERY_TICK_MS); + if (!cancelled) schedule(SCREEN_SHARE_MONITOR_TICK_MS); }); }, delayMs); }; - schedule(SCREEN_SHARE_DELIVERY_FIRST_TICK_MS); + schedule(SCREEN_SHARE_MONITOR_FIRST_TICK_MS); return () => { cancelled = true; clearTimeout(timer); + ActiveScreenShareSource.setEncoding(false); }; } diff --git a/fluxer_app/src/features/voice/state/ActiveScreenShareSource.ts b/fluxer_app/src/features/voice/state/ActiveScreenShareSource.ts index f71e9e593..1cf0a8675 100644 --- a/fluxer_app/src/features/voice/state/ActiveScreenShareSource.ts +++ b/fluxer_app/src/features/voice/state/ActiveScreenShareSource.ts @@ -1,5 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later +import type {ScreenShareTarget} from '@app/features/voice/utils/ScreenShareOptions'; import type { StreamSettingsShareContext, WindowShareAudioScope, @@ -19,6 +20,8 @@ class ActiveScreenShareSource { windowAudioScope: WindowShareAudioScope = 'window'; pendingWindowAudioScope: WindowShareAudioScope | null = null; sourceDimensions: {width: number; height: number} | null = null; + target: ScreenShareTarget | null = null; + encoding = false; constructor() { makeAutoObservable(this, {}, {autoBind: true}); @@ -54,6 +57,19 @@ class ActiveScreenShareSource { return this.sourceDimensions; } + setTarget(target: ScreenShareTarget | null): void { + this.target = target; + this.encoding = false; + } + + setEncoding(encoding: boolean): void { + this.encoding = encoding; + } + + getTarget(): ScreenShareTarget | null { + return this.target; + } + getWindowAudioScope(): WindowShareAudioScope { return this.windowAudioScope; } @@ -88,6 +104,8 @@ class ActiveScreenShareSource { this.windowAudioScope = 'window'; this.pendingWindowAudioScope = null; this.sourceDimensions = null; + this.target = null; + this.encoding = false; } } diff --git a/fluxer_app/src/features/voice/state/ScreenShareDelivery.ts b/fluxer_app/src/features/voice/state/ScreenShareDelivery.ts deleted file mode 100644 index 086005b0c..000000000 --- a/fluxer_app/src/features/voice/state/ScreenShareDelivery.ts +++ /dev/null @@ -1,252 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import AppStorage from '@app/features/platform/state/PersistentStorage'; -import {Logger} from '@app/features/platform/utils/AppLogger'; -import { - clearScreenShareDeliveryMemoryKey, - readScreenShareDeliveryMemory, - type ScreenShareDeliveryDescription, - type ScreenShareDeliveryEvaluation, - type ScreenShareDeliveryMemory, - type ScreenShareDeliveryMemoryEntry, - type ScreenShareDeliveryMemoryHeader, - type ScreenShareDeliveryMemoryKey, - type ScreenShareDeliveryMemoryWrite, - type ScreenShareDeliveryNotice, - type ScreenShareDeliveryShareCounters, - shouldToastScreenShareNotice, - updateScreenShareDeliveryMemory, -} from '@app/features/voice/engine/ScreenShareUnderperformance'; -import type { - ScreenShareContext, - ScreenShareLevel, - ScreenShareTarget, -} from '@app/features/voice/utils/ScreenShareOptions'; -import type {VideoCodec} from 'livekit-client'; -import {makeAutoObservable} from 'mobx'; - -const logger = new Logger('ScreenShareDelivery'); -const MEMORY_STORAGE_KEY = 'ScreenShareDeliveryMemoryV1'; - -export interface ScreenShareDeliveryLadder { - target: ScreenShareTarget; - context: ScreenShareContext; - levels: ReadonlyArray; -} - -export interface ScreenShareDeliveryShareInput extends ScreenShareDeliveryLadder { - header: ScreenShareDeliveryMemoryHeader; - hardware: Partial>; - adaptive: boolean; -} - -export interface ScreenShareDeliverySnapshot { - share: ScreenShareDeliveryShareInput | null; - notice: ScreenShareDeliveryNotice | null; - plan: ScreenShareDeliveryPlan | null; - counters: ScreenShareDeliveryShareCounters; - verdicts: Partial>; - multiLayer: boolean; -} - -export interface ScreenShareDeliveryPlan { - target: ScreenShareTarget; - codec: VideoCodec; - level: ScreenShareLevel; - levelIndex: number; - deliveredFrameRate: number | null; - sentWidth: number | null; - sentHeight: number | null; - sourceFrameRate: number | null; - holdingShort: boolean; -} - -function createShareCounters(): ScreenShareDeliveryShareCounters { - return {switches: 0, probes: 0, layerings: 0, probeBlocked: false, toastShown: false}; -} - -function isStoredMemory(value: unknown): value is ScreenShareDeliveryMemory { - if (typeof value !== 'object' || value === null) return false; - const memory = value as ScreenShareDeliveryMemory; - return ( - typeof memory.header === 'object' && - memory.header !== null && - typeof memory.entries === 'object' && - memory.entries !== null - ); -} - -function readStoredMemory(): ScreenShareDeliveryMemory | null { - try { - const raw = AppStorage.getItem(MEMORY_STORAGE_KEY); - if (raw === null) return null; - const parsed: unknown = JSON.parse(raw); - return isStoredMemory(parsed) ? parsed : null; - } catch (error) { - logger.warn('Failed to read the screen share delivery memory', error); - return null; - } -} - -function writeStoredMemory(memory: ScreenShareDeliveryMemory): void { - try { - AppStorage.setItem(MEMORY_STORAGE_KEY, JSON.stringify(memory)); - } catch (error) { - logger.warn('Failed to store the screen share delivery memory', error); - } -} - -class ScreenShareDelivery { - notice: ScreenShareDeliveryNotice | null = null; - plan: ScreenShareDeliveryPlan | null = null; - counters: ScreenShareDeliveryShareCounters = createShareCounters(); - verdicts: Partial> = {}; - multiLayer = false; - private share: ScreenShareDeliveryShareInput | null = null; - - constructor() { - makeAutoObservable(this, undefined, {autoBind: true}); - } - - get isSharing(): boolean { - return this.share !== null; - } - - get ladder(): ScreenShareDeliveryLadder | null { - return this.share; - } - - get adaptive(): boolean { - return this.share?.adaptive === true; - } - - snapshot(): ScreenShareDeliverySnapshot { - return { - share: this.share, - notice: this.notice, - plan: this.plan, - counters: {...this.counters}, - verdicts: this.verdicts, - multiLayer: this.multiLayer, - }; - } - - restore(snapshot: ScreenShareDeliverySnapshot): void { - this.share = snapshot.share; - this.notice = snapshot.notice; - this.plan = snapshot.plan; - this.counters = {...snapshot.counters}; - this.verdicts = snapshot.verdicts; - this.multiLayer = snapshot.multiLayer; - } - - beginShare(share: ScreenShareDeliveryShareInput): void { - this.share = share; - this.notice = null; - this.plan = null; - this.counters = createShareCounters(); - this.verdicts = this.readVerdicts(); - this.multiLayer = false; - } - - retarget(ladder: ScreenShareDeliveryLadder): void { - if (this.share === null) return; - this.share = {...this.share, ...ladder}; - this.notice = null; - this.plan = null; - this.verdicts = this.readVerdicts(); - } - - demoteForShare(codec: VideoCodec, ratio: number): void { - if (this.share === null) return; - this.verdicts = { - ...this.verdicts, - [codec]: {short: true, ratio, settledIndex: null, probeBlockedUntil: null, at: Date.now()}, - }; - } - - record( - codec: VideoCodec, - evaluation: ScreenShareDeliveryEvaluation, - description: ScreenShareDeliveryDescription, - ): boolean { - if (this.share === null || !this.share.adaptive) return false; - this.plan = { - target: this.share.target, - codec, - level: description.level, - levelIndex: description.levelIndex, - deliveredFrameRate: description.deliveredFrameRate, - sentWidth: description.sentWidth, - sentHeight: description.sentHeight, - sourceFrameRate: description.sourceFrameRate, - holdingShort: description.holdingShort, - }; - if (evaluation.decision.kind === 'switch-codec') { - this.counters.switches += 1; - } else if (evaluation.decision.kind === 'republish-layering') { - this.counters.layerings += 1; - } else if (evaluation.decision.kind === 'probe') { - this.counters.probes += 1; - } else if (evaluation.decision.kind === 'revert-probe') { - this.counters.probeBlocked = true; - } - if (evaluation.memoryWrite !== null) { - this.writeMemory(codec, evaluation.memoryWrite); - } - return evaluation.noticeChanged ? this.setNotice(evaluation.notice) : false; - } - - setMultiLayer(multiLayer: boolean): void { - this.multiLayer = multiLayer; - } - - setNotice(notice: ScreenShareDeliveryNotice | null): boolean { - this.notice = notice; - if (!shouldToastScreenShareNotice(this.counters, notice)) return false; - this.counters.toastShown = true; - return true; - } - - resetToFullQuality(): void { - const key = this.buildKey(); - if (key !== null) { - writeStoredMemory(clearScreenShareDeliveryMemoryKey(readStoredMemory(), key)); - } - this.notice = null; - this.counters = createShareCounters(); - this.verdicts = {}; - } - - endShare(): void { - this.share = null; - this.notice = null; - this.plan = null; - this.counters = createShareCounters(); - this.verdicts = {}; - this.multiLayer = false; - } - - private buildKey(): ScreenShareDeliveryMemoryKey | null { - if (this.share === null || !this.share.adaptive) return null; - return { - header: this.share.header, - memoryKey: this.share.target.memoryKey, - hardware: this.share.hardware, - now: Date.now(), - }; - } - - private readVerdicts(): Partial> { - const key = this.buildKey(); - return key === null ? {} : readScreenShareDeliveryMemory(readStoredMemory(), key); - } - - private writeMemory(codec: VideoCodec, write: ScreenShareDeliveryMemoryWrite): void { - const key = this.buildKey(); - if (key === null) return; - writeStoredMemory(updateScreenShareDeliveryMemory(readStoredMemory(), key, codec, write)); - } -} - -export default new ScreenShareDelivery(); diff --git a/fluxer_app/src/features/voice/state/ScreenShareDeliveryRollout.ts b/fluxer_app/src/features/voice/state/ScreenShareDeliveryRollout.ts deleted file mode 100644 index d040cadba..000000000 --- a/fluxer_app/src/features/voice/state/ScreenShareDeliveryRollout.ts +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import ExperimentAssignments from '@app/features/experiment/state/ExperimentAssignments'; -import {readScreenShareDeliveryAssignment} from '@fluxer/schema/src/domains/experiment/ExperimentSchemas'; -import type {ScreenShareDeliveryAssignmentResponse} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; - -class ScreenShareDeliveryRolloutSelector { - get assignment(): ScreenShareDeliveryAssignmentResponse { - return readScreenShareDeliveryAssignment(ExperimentAssignments.response); - } - - get enabled(): boolean { - const assignment = this.assignment; - return assignment.enabled && assignment.user_targeted; - } -} - -export const ScreenShareDeliveryRollout = new ScreenShareDeliveryRolloutSelector(); - -export default ScreenShareDeliveryRollout; diff --git a/fluxer_app/src/features/voice/utils/CodecCapabilityDetector.ts b/fluxer_app/src/features/voice/utils/CodecCapabilityDetector.ts index 610f2d6bf..66b5d505c 100644 --- a/fluxer_app/src/features/voice/utils/CodecCapabilityDetector.ts +++ b/fluxer_app/src/features/voice/utils/CodecCapabilityDetector.ts @@ -18,6 +18,7 @@ import { } from '@app/features/voice/utils/NativeHardwareEncoderCapabilities'; import {getOpenH264StatusSync, resetOpenH264Status} from '@app/features/voice/utils/OpenH264Status'; import { + LAST_RESORT_VIDEO_CODEC, rankScreenShareCodecs, type ScreenShareCodecBrowser, type ScreenShareCodecProfile, @@ -25,13 +26,13 @@ import { type ScreenShareCodecRanking, } from '@app/features/voice/utils/ScreenShareCodecSelection'; import {normaliseStreamingModeForContext} from '@app/features/voice/utils/ScreenShareOptions'; +import {isVideoCodecDecodeExcluded} from '@app/features/voice/utils/VideoDecoderCapabilities'; import type {TrackPublishDefaults, TrackPublishOptions} from 'livekit-client'; import {BackupCodecPolicy, supportsVideoCodec, type VideoCodec, type VideoEncoding} from 'livekit-client'; const logger = new Logger('CodecCapabilityDetector'); export const LIVEKIT_SUPPORTED_CODECS: ReadonlyArray = ['vp8', 'h264', 'vp9', 'av1', 'h265']; const PUBLISH_CODEC_FALLBACK_ORDER: ReadonlyArray = ['h264', 'vp9', 'vp8', 'av1', 'h265']; -const LAST_RESORT_PUBLISH_CODEC: VideoCodec = 'vp8'; export interface CodecCapabilities { vp8: boolean; @@ -238,11 +239,7 @@ function buildReport(): CodecCapabilityReport { if (hasPublishPathNativeHardwareEncoder(codec)) { return 'hardware'; } - const gpu = gpuReport ? gpuReport[codec] : 'unknown'; - if (codec === 'h264') { - return gpu === 'hardware' ? 'hardware' : 'software'; - } - return gpu; + return gpuReport ? gpuReport[codec] : 'unknown'; } type DescribedUnsupported = Omit; function unsupported(codec: keyof CodecCapabilities, info: DescribedUnsupported): CodecSupportInfo { @@ -433,7 +430,7 @@ function rankAutomaticScreenShareCodecs( profile: ScreenShareCodecProfile, encoderModeSetting: ScreenShareEncoderMode, ): ScreenShareCodecRanking { - return rankScreenShareCodecs({profile, encoderModeSetting, pin: 'auto', verdicts: {}}); + return rankScreenShareCodecs({profile, encoderModeSetting, pin: 'auto'}); } function describeAutomaticScreenShareCodecReason( @@ -494,7 +491,7 @@ export function markScreenShareCodecSoftwareEncodeObserved(codec: VideoCodec): b return true; } -export type VideoPublishCodecDenial = 'sender-cannot-encode' | 'policy' | 'runtime-failed'; +export type VideoPublishCodecDenial = 'sender-cannot-encode' | 'policy' | 'runtime-failed' | 'decoder-excluded'; export interface VideoPublishCodecPolicy { allowed: ReadonlyArray; @@ -524,6 +521,7 @@ export function getVideoPublishCodecDenial(codec: VideoCodec): VideoPublishCodec if (!supportsVideoCodec(codec)) return 'sender-cannot-encode'; if (getScreenShareCodecPolicyUnsupported(codec, buildScreenShareCodecPolicyContext())) return 'policy'; if (runtimeEncodeFailureCodecs.has(codec)) return 'runtime-failed'; + if (isVideoCodecDecodeExcluded(codec)) return 'decoder-excluded'; return null; } @@ -545,7 +543,7 @@ export function resolveVideoPublishCodecPolicy(requested: VideoCodec): VideoPubl const allowed = getAllowedVideoPublishCodecs(); const primary = allowed.includes(requested) ? requested - : (PUBLISH_CODEC_FALLBACK_ORDER.find((codec) => allowed.includes(codec)) ?? LAST_RESORT_PUBLISH_CODEC); + : (PUBLISH_CODEC_FALLBACK_ORDER.find((codec) => allowed.includes(codec)) ?? LAST_RESORT_VIDEO_CODEC); if (primary !== requested) { logger.warn('Requested publish codec is outside the publish policy; substituting', { requested, diff --git a/fluxer_app/src/features/voice/utils/GpuEncoderCapabilities.ts b/fluxer_app/src/features/voice/utils/GpuEncoderCapabilities.ts index 297dbf16c..7b54aacff 100644 --- a/fluxer_app/src/features/voice/utils/GpuEncoderCapabilities.ts +++ b/fluxer_app/src/features/voice/utils/GpuEncoderCapabilities.ts @@ -1,12 +1,7 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {Logger} from '@app/features/platform/utils/AppLogger'; -import { - getElectronAPI, - getNativePlatformSync, - isDesktop, - type NativePlatform, -} from '@app/features/ui/utils/NativeUtils'; +import {getElectronAPI, isDesktop} from '@app/features/ui/utils/NativeUtils'; import type {GpuDeviceInfo, GpuInfo} from '@app/types/electron.d'; import type {VideoCodec} from 'livekit-client'; @@ -236,13 +231,16 @@ export function reportFromGpuInfo(info: GpuInfo): HardwareEncodeReport { }; } -export const NEGOTIABLE_H264_PROBE_CONTENT_TYPE = - 'video/H264;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f'; +export const H264_PROBE_PROFILE_LEVEL_IDS: ReadonlyArray = ['640028', '4d0028', '420028', '42e028']; -const WEBRTC_ENCODE_PROBE_CONTENT_TYPES: Record> = { +export const H264_ENCODE_PROBE_CONTENT_TYPES: ReadonlyArray = H264_PROBE_PROFILE_LEVEL_IDS.map( + (profileLevelId) => `video/H264;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=${profileLevelId}`, +); + +export const WEBRTC_ENCODE_PROBE_CONTENT_TYPES: Record> = { av1: ['video/AV1'], h265: ['video/H265'], - h264: [NEGOTIABLE_H264_PROBE_CONTENT_TYPE], + h264: H264_ENCODE_PROBE_CONTENT_TYPES, vp9: ['video/VP9'], vp8: ['video/VP8'], }; @@ -314,25 +312,18 @@ export async function probeWebRtcEncodeEfficiency(): Promise | null, - platform: NativePlatform, - vendorId: number, ): HardwareEncodeReport { - const isNvidiaReport = vendorId === PCI_VENDOR_NVIDIA || report.gpuFamily?.startsWith('nvidia-') === true; - const adjust = (codec: VideoCodec): HardwareEncodeAnswer => { - if (report[codec] !== 'hardware') return report[codec]; - return efficiency?.[codec] === 'hardware' ? 'hardware' : 'software'; + if (!efficiency) return report; + const adjust = (codec: VideoCodec): HardwareEncodeAnswer => + efficiency[codec] === 'unknown' ? report[codec] : efficiency[codec]; + return { + ...report, + av1: adjust('av1'), + h265: adjust('h265'), + h264: adjust('h264'), + vp9: adjust('vp9'), + vp8: adjust('vp8'), }; - if (platform === 'linux' && isNvidiaReport) { - return { - ...report, - av1: adjust('av1'), - h265: adjust('h265'), - h264: adjust('h264'), - vp9: adjust('vp9'), - vp8: adjust('vp8'), - }; - } - return {...report, h264: adjust('h264')}; } let cachedReport: HardwareEncodeReport | null = null; @@ -350,12 +341,15 @@ function fetchReport(): Promise { const info = gpuResult.value; const baseReport = reportFromGpuInfo(info); const efficiency = probeResult.status === 'fulfilled' ? probeResult.value : null; - const report = reconcileHardwareEncodeReport( - baseReport, - efficiency, - getNativePlatformSync(), - pickPrimaryDevice(info.devices)?.vendorId ?? 0, - ); + const report = reconcileHardwareEncodeReport(baseReport, efficiency); + logger.info('Reconciled hardware-encode answers against the WebRTC encode probe', { + probe: efficiency, + av1: report.av1, + h265: report.h265, + h264: report.h264, + vp9: report.vp9, + vp8: report.vp8, + }); cachedReport = report; return report; }); diff --git a/fluxer_app/src/features/voice/utils/NativeAudioCaptureBridge.ts b/fluxer_app/src/features/voice/utils/NativeAudioCaptureBridge.ts index 579d8c255..4b11c3ec2 100644 --- a/fluxer_app/src/features/voice/utils/NativeAudioCaptureBridge.ts +++ b/fluxer_app/src/features/voice/utils/NativeAudioCaptureBridge.ts @@ -176,6 +176,29 @@ function rememberStartedCapture(capture: NativeAudioStartedCaptureDiagnostic): v }; } +type CapturedDisplayAudioDiagnostic = { + readyState: MediaStreamTrackState; + label: string; + deviceId: string | null; + discarded: boolean; +}; + +let lastCapturedDisplayAudio: CapturedDisplayAudioDiagnostic | null = null; + +export function rememberCapturedDisplayAudioTrack(track: MediaStreamTrack | undefined, discarded: boolean): void { + if (!track) { + lastCapturedDisplayAudio = null; + return; + } + let deviceId: string | null = null; + try { + deviceId = track.getSettings().deviceId ?? null; + } catch { + deviceId = null; + } + lastCapturedDisplayAudio = {readyState: track.readyState, label: track.label, deviceId, discarded}; +} + export function getNativeAudioCaptureDiagnosticState(): Record { const started = lastStartedCapture ? { @@ -192,6 +215,7 @@ export function getNativeAudioCaptureDiagnosticState(): Record bridgeStats: getNativeAudioBridgeStats(), endedBridgeCaptures: getEndedBridgeCaptures(), lifecycleFaults: lifecycleFaults.map((fault) => ({...fault})), + capturedDisplayAudio: lastCapturedDisplayAudio ? {...lastCapturedDisplayAudio} : null, }; } diff --git a/fluxer_app/src/features/voice/utils/ScreenShareAudioSummary.ts b/fluxer_app/src/features/voice/utils/ScreenShareAudioSummary.ts index 24ecb90e4..266997b1a 100644 --- a/fluxer_app/src/features/voice/utils/ScreenShareAudioSummary.ts +++ b/fluxer_app/src/features/voice/utils/ScreenShareAudioSummary.ts @@ -47,12 +47,59 @@ export const MICROPHONE_WITH_DEVICE_DESCRIPTOR = msg({ comment: 'Screen-share audio summary on a video device share. {deviceLabel} is the name of the selected audio input device.', }); +export const DEVICE_AUDIO_ONLY_DESCRIPTOR = msg({ + message: 'Device audio only', + comment: + 'Screen-share audio summary on a video device share that publishes only the audio of the capture device itself.', +}); +export const DEVICE_AUDIO_WITH_DEVICE_DESCRIPTOR = msg({ + message: 'Device audio ({deviceLabel})', + comment: + 'Screen-share audio summary on a video device share. {deviceLabel} is the name of the audio input paired with the capture device.', +}); +export const NO_DEVICE_AUDIO_DESCRIPTOR = msg({ + message: 'No audio from this device', + comment: 'Screen-share audio summary on a video device share whose capture device has no audio input of its own.', +}); + +export type DeviceShareAudioPairing = + | {readonly kind: 'unknown'} + | {readonly kind: 'none'} + | {readonly kind: 'paired'; readonly label: string}; + +export function findPairedDeviceShareAudioInput( + devices: ReadonlyArray, + videoDeviceId: string, +): MediaDeviceInfo | undefined { + if (videoDeviceId === '' || videoDeviceId === 'default') return undefined; + const videoDevice = devices.find((device) => device.kind === 'videoinput' && device.deviceId === videoDeviceId); + if (!videoDevice?.groupId) return undefined; + return devices.find( + (device) => + device.kind === 'audioinput' && + device.groupId === videoDevice.groupId && + device.deviceId !== '' && + device.deviceId !== 'default' && + device.deviceId !== 'communications', + ); +} + +export function resolveDeviceShareAudioPairing( + devices: ReadonlyArray, + videoDeviceId: string, +): DeviceShareAudioPairing { + if (videoDeviceId === '') return {kind: 'unknown'}; + const pairedInput = findPairedDeviceShareAudioInput(devices, videoDeviceId); + return pairedInput === undefined ? {kind: 'none'} : {kind: 'paired', label: pairedInput.label}; +} export interface ScreenShareAudioSummaryInput { sourceMode: ScreenShareAudioSourceMode; includeSources: ReadonlyArray; shareContext: StreamSettingsShareContext; microphoneLabel?: string | null; + chosenAudioDeviceId?: string; + deviceAudioPairing?: DeviceShareAudioPairing; displayShareEnvironment?: DisplayShareEnvironment; windowAudioScope?: WindowShareAudioScope; usesDeviceMicrophone?: boolean; @@ -81,13 +128,29 @@ function summariseMicrophone(microphoneLabel?: string | null): ScreenShareAudioS return {kind: 'message', descriptor: MICROPHONE_WITH_DEVICE_DESCRIPTOR, values: {deviceLabel: microphoneLabel}}; } +function publishesTheMicrophone(input: ScreenShareAudioSummaryInput): boolean { + const chosenAudioDeviceId = input.chosenAudioDeviceId ?? ''; + if (chosenAudioDeviceId !== '' && chosenAudioDeviceId !== 'default') return true; + return input.usesDeviceMicrophone === true; +} + +function summariseDeviceShareAudio(input: ScreenShareAudioSummaryInput): ScreenShareAudioSummary { + if (publishesTheMicrophone(input)) return summariseMicrophone(input.microphoneLabel); + const pairing = input.deviceAudioPairing; + if (pairing?.kind === 'none') return {kind: 'message', descriptor: NO_DEVICE_AUDIO_DESCRIPTOR}; + if (pairing?.kind === 'paired' && pairing.label !== '') { + return {kind: 'message', descriptor: DEVICE_AUDIO_WITH_DEVICE_DESCRIPTOR, values: {deviceLabel: pairing.label}}; + } + return {kind: 'message', descriptor: DEVICE_AUDIO_ONLY_DESCRIPTOR}; +} + export function resolveScreenShareAudioSummary(input: ScreenShareAudioSummaryInput): ScreenShareAudioSummary { const selected = filterRoutableLinuxAudioSources(input.includeSources); const routesSelectedSources = input.sourceMode === 'specific' && selected.length > 0; if (input.shareContext === 'device') { return routesSelectedSources && input.usesDeviceMicrophone !== true ? summariseSelectedSources(selected) - : summariseMicrophone(input.microphoneLabel); + : summariseDeviceShareAudio(input); } if (supportsWindowShareAudioScope(input)) { const route = selectAppShareAudioRoute({ diff --git a/fluxer_app/src/features/voice/utils/ScreenShareCodecSelection.ts b/fluxer_app/src/features/voice/utils/ScreenShareCodecSelection.ts index d3a20718e..62c00a249 100644 --- a/fluxer_app/src/features/voice/utils/ScreenShareCodecSelection.ts +++ b/fluxer_app/src/features/voice/utils/ScreenShareCodecSelection.ts @@ -4,11 +4,9 @@ import type {CodecPreference, ScreenShareEncoderMode} from '@app/features/voice/ import type {VideoCodec} from 'livekit-client'; export const CODEC_PREFERENCE: ReadonlyArray = ['av1', 'h265', 'h264', 'vp9', 'vp8']; -export const SOFTWARE_CODEC_PREFERENCE: ReadonlyArray = ['av1', 'vp9', 'h264', 'vp8']; -export const GECKO_SOFTWARE_CODEC_PREFERENCE: ReadonlyArray = ['vp8', 'h264']; -export const NON_CHROMIUM_CODEC_PREFERENCE: ReadonlyArray = ['h264', 'vp8']; -const COMPATIBILITY_FALLBACK_CODEC_PREFERENCE: ReadonlyArray = ['h264', 'vp9', 'vp8']; -const BASELINE_VIDEO_CODEC: VideoCodec = 'vp8'; +const COMPATIBILITY_CODECS: ReadonlySet = new Set(['h264', 'vp9', 'vp8']); +export const LAST_RESORT_VIDEO_CODEC: VideoCodec = 'vp8'; +const BASELINE_BROWSER_CODECS: ReadonlySet = new Set(['h264', 'vp8']); export const SCREEN_SHARE_CODEC_ADVERTISEMENT_GRACE_MS = 3_000; export const VIDEO_CODEC_NAMES: Record = { av1: 'AV1', @@ -50,7 +48,6 @@ export type NegotiationReason = | 'reconnected' | 'manual'; export type ScreenShareCodecBrowser = 'chromium' | 'firefox' | 'other'; -export type ScreenShareCodecSubstitution = 'device' | 'viewer'; export interface FluxerCodecAdvertisement { name: FluxerCodecName; @@ -81,16 +78,10 @@ export interface ScreenShareCodecProfile { codecs: Record; } -export interface ScreenShareCodecVerdict { - short: boolean; - ratio: number; -} - export interface ScreenShareCodecRankingInput { profile: ScreenShareCodecProfile; encoderModeSetting: ScreenShareEncoderMode; pin: CodecPreference; - verdicts: Partial>; } export interface ScreenShareCodecRanking { @@ -98,61 +89,31 @@ export interface ScreenShareCodecRanking { hardwareUnavailable: boolean; } -function resolveBaseScreenShareCodecOrder( - input: ScreenShareCodecRankingInput, - isHardware: (codec: VideoCodec) => boolean, - hardwareAvailable: boolean, -): Array { - if (input.profile.browser === 'firefox') return [...GECKO_SOFTWARE_CODEC_PREFERENCE]; - if (input.profile.browser !== 'chromium' && !input.profile.desktop) return [...NON_CHROMIUM_CODEC_PREFERENCE]; - if (input.encoderModeSetting === 'software' || !hardwareAvailable) return [...SOFTWARE_CODEC_PREFERENCE]; - return [ - ...CODEC_PREFERENCE.filter((codec) => isHardware(codec)), - ...CODEC_PREFERENCE.filter((codec) => !isHardware(codec)), - ]; -} - -function demoteShortScreenShareCodecs( - order: Array, - verdicts: Partial>, -): Array { - const short = order.filter((codec) => verdicts[codec]?.short === true); - if (short.length === 0) return order; - return [ - ...order.filter((codec) => verdicts[codec]?.short !== true), - ...short.sort((left, right) => (verdicts[right]?.ratio ?? 0) - (verdicts[left]?.ratio ?? 0)), - ]; -} - export function rankScreenShareCodecs(input: ScreenShareCodecRankingInput): ScreenShareCodecRanking { const {codecs} = input.profile; const isHardware = (codec: VideoCodec): boolean => codecs[codec].supported && codecs[codec].hardware; const hardwareAvailable = CODEC_PREFERENCE.some((codec) => isHardware(codec)); - const ranked = demoteShortScreenShareCodecs( - resolveBaseScreenShareCodecOrder(input, isHardware, hardwareAvailable), - input.verdicts, - ); const pin = input.pin !== 'auto' && codecs[input.pin].allowed && codecs[input.pin].supported ? input.pin : null; - const pinnedFirst = pin ? [pin, ...ranked.filter((codec) => codec !== pin)] : ranked; - const order = pinnedFirst.filter( - (codec) => - codecs[codec].allowed && codecs[codec].supported && (codec !== 'h265' || isHardware('h265') || pin === 'h265'), - ); + const baselineOnly = + input.profile.browser === 'firefox' || (input.profile.browser !== 'chromium' && !input.profile.desktop); + const survives = (codec: VideoCodec): boolean => { + if (!codecs[codec].allowed || !codecs[codec].supported) return false; + if (baselineOnly && !BASELINE_BROWSER_CODECS.has(codec)) return false; + if (codec === 'h265') return pin === 'h265' || (input.encoderModeSetting !== 'software' && isHardware('h265')); + return true; + }; + const survivors = CODEC_PREFERENCE.filter(survives); + const ranked = + input.encoderModeSetting === 'software' + ? survivors + : [...survivors.filter(isHardware), ...survivors.filter((codec) => !isHardware(codec))]; + const ordered = pin === null ? ranked : [pin, ...ranked.filter((codec) => codec !== pin)]; return { - order: order.length > 0 ? order : [BASELINE_VIDEO_CODEC], + order: ordered.length > 0 ? ordered : [LAST_RESORT_VIDEO_CODEC], hardwareUnavailable: input.encoderModeSetting === 'hardware' && !hardwareAvailable, }; } -export function resolveScreenShareCodecSubstitution( - pin: CodecPreference, - order: ReadonlyArray, - negotiated: VideoCodec, -): ScreenShareCodecSubstitution | null { - if (pin === 'auto' || pin === negotiated) return null; - return order.includes(pin) ? 'viewer' : 'device'; -} - export function buildScreenShareCodecAdvertisements( order: ReadonlyArray, decode: Record, @@ -213,10 +174,11 @@ function selectCompatibilityFallbackCodec( localEncode: ReadonlySet, remoteDecode: ReadonlyArray>, ): VideoCodec { - for (const codec of COMPATIBILITY_FALLBACK_CODEC_PREFERENCE) { + for (const codec of CODEC_PREFERENCE) { + if (!COMPATIBILITY_CODECS.has(codec)) continue; if (localEncode.has(codec) && remoteDecode.every((decode) => decode.has(codec))) return codec; } - return BASELINE_VIDEO_CODEC; + return LAST_RESORT_VIDEO_CODEC; } function negotiateVideoCodec( @@ -227,7 +189,7 @@ function negotiateVideoCodec( ): {codec: VideoCodec; candidates: Array} { const candidates = codecPreference.filter((codec) => { if (!localEncode.has(codec)) return false; - if (unknownParticipants > 0 && !COMPATIBILITY_FALLBACK_CODEC_PREFERENCE.includes(codec)) return false; + if (unknownParticipants > 0 && !COMPATIBILITY_CODECS.has(codec)) return false; return remoteDecode.every((decode) => decode.has(codec)); }); return {codec: candidates[0] ?? selectCompatibilityFallbackCodec(localEncode, remoteDecode), candidates}; @@ -247,13 +209,3 @@ export function computeNegotiatedVideoCodec( ); return {codec, reason: 'manual', candidates, unknownParticipants}; } - -export function resolveScreenShareAlternativeCodec( - order: ReadonlyArray, - current: VideoCodec, - remoteDecode: ReadonlyArray>, - unknownParticipants: number, -): VideoCodec | null { - const remaining = order.filter((codec) => codec !== current); - return negotiateVideoCodec(new Set(remaining), remoteDecode, unknownParticipants, remaining).candidates[0] ?? null; -} diff --git a/fluxer_app/src/features/voice/utils/ScreenShareLifecycleLog.ts b/fluxer_app/src/features/voice/utils/ScreenShareLifecycleLog.ts index 424cd7589..30fe79f56 100644 --- a/fluxer_app/src/features/voice/utils/ScreenShareLifecycleLog.ts +++ b/fluxer_app/src/features/voice/utils/ScreenShareLifecycleLog.ts @@ -1,17 +1,11 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import type { - ScreenShareDeliveryDecision, - ScreenShareDeliveryNotice, - ScreenShareDeliveryShortCause, -} from '@app/features/voice/engine/ScreenShareUnderperformance'; import ActiveScreenShareSource, { type PublishedScreenShareSource, } from '@app/features/voice/state/ActiveScreenShareSource'; import type {VideoCodec} from 'livekit-client'; const MAX_RETAINED_SCREEN_SHARES = 8; -const MAX_RETAINED_DELIVERY_DECISIONS = 16; export type ScreenShareStopTrigger = | 'user' @@ -28,16 +22,6 @@ export type ScreenShareEncoderVerification = | 'accept-negotiated' | 'correct-negotiated'; -export interface ScreenShareDeliveryDecisionRecord { - at: number; - codec: VideoCodec; - decision: ScreenShareDeliveryDecision['kind']; - levelIndex: number; - notice: ScreenShareDeliveryNotice['kind'] | null; - shortCause: ScreenShareDeliveryShortCause | null; - toast: boolean; -} - export interface ScreenShareLifecycleEntry { startedAt: number; sourceKind: PublishedScreenShareSource | null; @@ -48,7 +32,6 @@ export interface ScreenShareLifecycleEntry { stoppedAt: number | null; stopTrigger: ScreenShareStopTrigger | null; modalShown: ScreenShareEndedModal | null; - deliveryDecisions: ReadonlyArray; } let entries: Array = []; @@ -70,7 +53,6 @@ export function recordScreenShareStarted(): void { stoppedAt: null, stopTrigger: null, modalShown: null, - deliveryDecisions: [], }); if (entries.length > MAX_RETAINED_SCREEN_SHARES) { entries = entries.slice(-MAX_RETAINED_SCREEN_SHARES); @@ -100,14 +82,6 @@ export function recordScreenShareEncoderVerification( entry.negotiatedCodecs = negotiatedCodecs; } -export function recordScreenShareDeliveryDecision(record: Omit): void { - const entry = getOpenEntry(); - if (!entry) return; - entry.deliveryDecisions = [...entry.deliveryDecisions, {...record, at: Date.now()}].slice( - -MAX_RETAINED_DELIVERY_DECISIONS, - ); -} - export function recordScreenShareEndedModal(modal: ScreenShareEndedModal): void { const entry = getOpenEntry(); if (!entry) return; diff --git a/fluxer_app/src/features/voice/utils/ScreenShareOptions.ts b/fluxer_app/src/features/voice/utils/ScreenShareOptions.ts index baf8b75b1..07dc5e195 100644 --- a/fluxer_app/src/features/voice/utils/ScreenShareOptions.ts +++ b/fluxer_app/src/features/voice/utils/ScreenShareOptions.ts @@ -22,8 +22,6 @@ const DIMENSIONS: Record< source: {width: 3840, height: 2160}, }; export const SCREEN_SHARE_MAX_VIDEO_BITRATE_BPS = 6_000_000; -export const SCREEN_SHARE_DEGRADATION_PREFERENCE: NonNullable = - 'maintain-resolution'; export const SUPPORTED_SCREEN_SHARE_FRAME_RATES = [15, 30, 60, 90, 120] as const; export type SupportedScreenShareFrameRate = (typeof SUPPORTED_SCREEN_SHARE_FRAME_RATES)[number]; @@ -67,10 +65,6 @@ function resolveBitrateRungForPixels(pixels: number): ScreenshareResolution { return rung; } -function resolveBitrateRungForDimensions(dimensions: {width: number; height: number}): ScreenshareResolution { - return resolveBitrateRungForPixels(dimensions.width * dimensions.height); -} - function resolveBitrateRung( resolution: ScreenshareResolution, sourceDimensions?: { @@ -92,20 +86,6 @@ export function getScreenShareBitrateBps( return BITRATE_KBPS[resolveBitrateRung(resolution, sourceDimensions)][frameRate] * 1000; } -export function capScreenShareEncodingToDimensions( - encoding: VideoEncoding, - dimensions: {width?: number; height?: number} | undefined, -): VideoEncoding { - if (typeof encoding.maxBitrate !== 'number') return encoding; - const width = dimensions?.width; - const height = dimensions?.height; - if (!width || !height || width <= 0 || height <= 0) return encoding; - const frameRate = resolveScreenShareFrameRate(encoding.maxFramerate ?? 60); - const ceiling = BITRATE_KBPS[resolveBitrateRungForDimensions({width, height})][frameRate] * 1000; - if (encoding.maxBitrate <= ceiling) return encoding; - return {...encoding, maxBitrate: ceiling}; -} - export function getScreenShareEncoding( resolution: ScreenshareResolution, frameRate: number, @@ -151,6 +131,7 @@ export interface BuiltScreenShareOptions { export interface ScreenShareBuildConfig { resolution: ScreenshareResolution; frameRate: number; + context: ScreenShareContext; includeAudio: boolean; contentHint?: ScreenShareCaptureOptions['contentHint']; sourceDimensions?: { @@ -207,16 +188,7 @@ export function resolveEffectiveScreenShareDimensions( }; } -export function buildScreenShareOptions(config: ScreenShareBuildConfig): BuiltScreenShareOptions; -export function buildScreenShareOptions(resolution: ScreenshareResolution, frameRate: number): BuiltScreenShareOptions; -export function buildScreenShareOptions( - configOrResolution: ScreenShareBuildConfig | ScreenshareResolution, - maybeFrameRate?: number, -): BuiltScreenShareOptions { - const config: ScreenShareBuildConfig = - typeof configOrResolution === 'object' - ? configOrResolution - : {resolution: configOrResolution, frameRate: maybeFrameRate ?? 30, includeAudio: true}; +export function buildScreenShareOptions(config: ScreenShareBuildConfig): BuiltScreenShareOptions { const {width, height} = resolveEffectiveScreenShareDimensions(config.resolution, config.sourceDimensions); const resolvedFrameRate = resolveScreenShareFrameRate(config.frameRate); const video: ScreenShareVideoOptions = { @@ -236,7 +208,7 @@ export function buildScreenShareOptions( video, }, publishOptions: { - degradationPreference: SCREEN_SHARE_DEGRADATION_PREFERENCE, + degradationPreference: resolveScreenShareDegradationPreference(config), screenShareEncoding: getScreenShareEncoding(config.resolution, resolvedFrameRate, config.sourceDimensions), }, }; @@ -308,15 +280,8 @@ export function normaliseResolutionForContext( } const PREMIUM_SCREEN_SHARE_RESOLUTIONS: ReadonlyArray = ['high', 'ultra', 'source']; -const KEPT_RESOLUTION_RUNG_FLOOR: ScreenshareResolution = 'medium'; -const KEPT_RESOLUTION_FRAME_RATE_FLOOR: SupportedScreenShareFrameRate = 15; -const KEPT_FRAME_RATE_RUNG_FLOOR: ScreenshareResolution = 'low_480p'; -const KEPT_FRAME_RATE_FLOOR: SupportedScreenShareFrameRate = 30; const SENT_PIXEL_FILL_RATIO = 0.98; -export type ScreenShareKeptAxis = 'resolution' | 'frameRate'; -export type ScreenShareHintClass = 'screen' | 'motion'; - export interface ScreenShareQualityInput { mode: StreamingMode; storedResolution: ScreenshareResolution; @@ -334,26 +299,21 @@ export interface ScreenShareTarget { mode: StreamingMode; resolution: ScreenshareResolution; frameRate: SupportedScreenShareFrameRate; + context: ScreenShareContext; width: number; height: number; rung: ScreenshareResolution; maxBitrate: number; contentHint: ScreenShareCaptureOptions['contentHint']; - keep: ScreenShareKeptAxis; presetOwned: boolean; tierLimited: boolean; deviceMapped: boolean; - memoryKey: string; } -export interface ScreenShareLevel { - index: number; - segment: 0 | 1; - frameRate: SupportedScreenShareFrameRate; - width: number; - height: number; - rung: ScreenshareResolution; - maxBitrate: number; +export function resolveScreenShareDegradationPreference(target: { + context: ScreenShareContext; +}): NonNullable { + return target.context === 'device' ? 'balanced' : 'maintain-resolution'; } function resolveEffectiveScreenShareQuality(input: ScreenShareQualityInput): { @@ -380,18 +340,16 @@ export function resolveScreenShareTarget(input: ScreenShareTargetInput): ScreenS const effective = resolveEffectiveScreenShareQuality(input); const onDisplay = resolveEffectiveScreenShareQuality({...input, context: 'display'}); const fit = resolveEffectiveScreenShareDimensions(effective.resolution, input.sourceDimensions); - const contentHint = resolveScreenShareContentHintForMode(effective.mode, input.hintSetting); - const hintClass: ScreenShareHintClass = contentHint === 'motion' ? 'motion' : 'screen'; return { mode: effective.mode, resolution: effective.resolution, frameRate: effective.frameRate, + context: input.context, width: fit.width, height: fit.height, rung: fit.rung, maxBitrate: BITRATE_KBPS[fit.rung][effective.frameRate] * 1000, - contentHint, - keep: hintClass === 'motion' ? 'frameRate' : 'resolution', + contentHint: resolveScreenShareContentHintForMode(effective.mode, input.hintSetting), presetOwned: effective.mode !== 'custom', tierLimited: !input.entitled && @@ -402,129 +360,32 @@ export function resolveScreenShareTarget(input: ScreenShareTargetInput): ScreenS effective.mode !== onDisplay.mode || effective.resolution !== onDisplay.resolution || effective.frameRate !== onDisplay.frameRate, - memoryKey: `${effective.resolution}@${fit.rung}|${effective.frameRate}|${hintClass}`, }; } -function getFrameRatesBelow( - frameRate: SupportedScreenShareFrameRate, - floor: SupportedScreenShareFrameRate, -): Array { - return [...SUPPORTED_SCREEN_SHARE_FRAME_RATES] - .reverse() - .filter((candidate) => candidate < frameRate && candidate >= floor); -} - -function getRungsBelow(pixels: number, floor: ScreenshareResolution): Array { - const floorPixels = getScreenShareRungPixels(floor); - return [...BITRATE_RUNGS] - .reverse() - .filter((rung) => getScreenShareRungPixels(rung) < pixels && getScreenShareRungPixels(rung) >= floorPixels); -} - -export function resolveScreenShareLevels( - target: ScreenShareTarget, - sourceDimensions: {width: number; height: number} | null, -): Array { - const levels: Array> = [ - { - segment: 0, - frameRate: target.frameRate, - width: target.width, - height: target.height, - rung: target.rung, - maxBitrate: target.maxBitrate, - }, - ]; - const targetPixels = target.width * target.height; - if (target.keep === 'resolution') { - for (const frameRate of getFrameRatesBelow(target.frameRate, KEPT_RESOLUTION_FRAME_RATE_FLOOR)) { - levels.push({ - segment: 0, - frameRate, - width: target.width, - height: target.height, - rung: target.rung, - maxBitrate: BITRATE_KBPS[target.rung][frameRate] * 1000, - }); - } - for (const rung of getRungsBelow(targetPixels, KEPT_RESOLUTION_RUNG_FLOOR)) { - const fit = resolveEffectiveScreenShareDimensions(rung, sourceDimensions); - levels.push({ - segment: 1, - frameRate: KEPT_RESOLUTION_FRAME_RATE_FLOOR, - width: fit.width, - height: fit.height, - rung: fit.rung, - maxBitrate: BITRATE_KBPS[fit.rung][KEPT_RESOLUTION_FRAME_RATE_FLOOR] * 1000, - }); - } - } else { - for (const rung of getRungsBelow(targetPixels, KEPT_FRAME_RATE_RUNG_FLOOR)) { - const fit = resolveEffectiveScreenShareDimensions(rung, sourceDimensions); - levels.push({ - segment: 0, - frameRate: target.frameRate, - width: fit.width, - height: fit.height, - rung: fit.rung, - maxBitrate: BITRATE_KBPS[fit.rung][target.frameRate] * 1000, - }); - } - if (target.frameRate > KEPT_FRAME_RATE_FLOOR) { - const smallest = levels[levels.length - 1]; - for (const frameRate of getFrameRatesBelow(target.frameRate, KEPT_FRAME_RATE_FLOOR)) { - levels.push({ - segment: 1, - frameRate, - width: smallest.width, - height: smallest.height, - rung: smallest.rung, - maxBitrate: BITRATE_KBPS[smallest.rung][frameRate] * 1000, - }); - } - } - } - return levels.map((level, index) => ({...level, index})); -} - -const MULTI_LAYER_SIMULCAST_MAX_PIXELS = DIMENSIONS.medium.width * DIMENSIONS.medium.height; - export interface ScreenShareLayeringInput { codec: VideoCodec | undefined; svcSetting: ScreenShareScalabilityModePreference | undefined; - levelPixels: number; - multiLayer: boolean; } export interface ScreenShareLayering { - multiLayer: boolean; simulcast: boolean; scalabilityMode: TrackPublishOptions['scalabilityMode']; } export function resolveScreenShareLayering(input: ScreenShareLayeringInput): ScreenShareLayering { - if (input.codec === 'av1' || input.codec === 'vp9') { - if (input.codec === 'av1' && input.multiLayer && (input.svcSetting === undefined || input.svcSetting === 'auto')) { - return {multiLayer: true, simulcast: false, scalabilityMode: 'L3T3_KEY'}; - } - return { - multiLayer: false, - simulcast: false, - scalabilityMode: input.svcSetting === 'single_layer' ? 'L1T1' : 'L1T3', - }; + if (input.codec !== 'av1' && input.codec !== 'vp9') { + return {simulcast: false, scalabilityMode: undefined}; } - const simulcast = - input.codec === 'h264' && - input.multiLayer && - input.svcSetting !== 'single_layer' && - input.levelPixels <= MULTI_LAYER_SIMULCAST_MAX_PIXELS; - return {multiLayer: simulcast, simulcast, scalabilityMode: undefined}; + return { + simulcast: false, + scalabilityMode: input.svcSetting === 'single_layer' ? 'L1T1' : 'L1T3', + }; } export interface ScreenShareSenderParametersInput { encodings: ReadonlyArray; - level: ScreenShareLevel; + target: ScreenShareTarget; capture: {width: number; height: number} | null; scalabilityMode: TrackPublishOptions['scalabilityMode']; } @@ -532,7 +393,6 @@ export interface ScreenShareSenderParametersInput { export interface ScreenShareSenderParameters { degradationPreference: NonNullable; encodings: Array; - monitoredMaxBitrate: number; } function distributeScreenShareBitrate( @@ -558,44 +418,30 @@ export function resolveScreenShareSenderCodec( return codecOverride ?? negotiatedCodec ?? publishedCodec; } -function resolveMonitoredScreenShareEncodingIndex(encodings: ReadonlyArray): number { - let monitored = 0; - let monitoredScale = Number.POSITIVE_INFINITY; - for (const [index, encoding] of encodings.entries()) { - if (encoding.active === false) continue; - const scale = encoding.scaleResolutionDownBy ?? 1; - if (scale >= monitoredScale) continue; - monitored = index; - monitoredScale = scale; - } - return monitored; -} - export function buildScreenShareSenderParameters(input: ScreenShareSenderParametersInput): ScreenShareSenderParameters { - const levelPixels = input.level.width * input.level.height; + const targetPixels = input.target.width * input.target.height; const capturePixels = input.capture ? input.capture.width * input.capture.height : null; const baseScale = Math.min(...input.encodings.map((encoding) => encoding.scaleResolutionDownBy ?? 1)); - const levelScale = capturePixels === null ? 1 : Math.max(1, Math.sqrt(capturePixels / levelPixels)); - const sentPixels = capturePixels === null ? null : capturePixels / (levelScale * levelScale); + const targetScale = capturePixels === null ? 1 : Math.max(1, Math.sqrt(capturePixels / targetPixels)); + const sentPixels = capturePixels === null ? null : capturePixels / (targetScale * targetScale); const maxBitrate = - sentPixels !== null && sentPixels < levelPixels * SENT_PIXEL_FILL_RATIO + sentPixels !== null && sentPixels < targetPixels * SENT_PIXEL_FILL_RATIO ? Math.min( - input.level.maxBitrate, - BITRATE_KBPS[resolveBitrateRungForPixels(sentPixels)][input.level.frameRate] * 1000, + input.target.maxBitrate, + BITRATE_KBPS[resolveBitrateRungForPixels(sentPixels)][input.target.frameRate] * 1000, ) - : input.level.maxBitrate; + : input.target.maxBitrate; const bitrates = distributeScreenShareBitrate(input.encodings, maxBitrate); return { - degradationPreference: SCREEN_SHARE_DEGRADATION_PREFERENCE, - monitoredMaxBitrate: bitrates[resolveMonitoredScreenShareEncodingIndex(input.encodings)], + degradationPreference: resolveScreenShareDegradationPreference(input.target), encodings: input.encodings.map((encoding, index) => { const applied: RTCRtpEncodingParameters = { ...encoding, maxBitrate: bitrates[index], - maxFramerate: input.level.frameRate, + maxFramerate: input.target.frameRate, priority: 'high', networkPriority: 'high', - scaleResolutionDownBy: ((encoding.scaleResolutionDownBy ?? 1) / baseScale) * levelScale, + scaleResolutionDownBy: ((encoding.scaleResolutionDownBy ?? 1) / baseScale) * targetScale, }; if (input.scalabilityMode) { applied.scalabilityMode = input.scalabilityMode; diff --git a/fluxer_app/src/features/voice/utils/ScreenShareStartFlow.ts b/fluxer_app/src/features/voice/utils/ScreenShareStartFlow.ts index abf5dcd67..e05785373 100644 --- a/fluxer_app/src/features/voice/utils/ScreenShareStartFlow.ts +++ b/fluxer_app/src/features/voice/utils/ScreenShareStartFlow.ts @@ -4,14 +4,10 @@ import {Logger} from '@app/features/platform/utils/AppLogger'; import {getElectronAPI, supportsDesktopScreenShareAudioCapture} from '@app/features/ui/utils/NativeUtils'; import MediaEngine from '@app/features/voice/engine/MediaEngineFacade'; import ScreenShareCodecNegotiation from '@app/features/voice/engine/ScreenShareCodecNegotiation'; -import { - beginScreenShareDelivery, - resolveConfiguredScreenShareLadder, -} from '@app/features/voice/engine/voice_screen_share_manager/shared'; +import {resolveConfiguredScreenShareTarget} from '@app/features/voice/engine/voice_screen_share_manager/shared'; import ActiveScreenShareSource from '@app/features/voice/state/ActiveScreenShareSource'; import {clearDesktopSourceIntent, setDesktopSourceIntent} from '@app/features/voice/state/DesktopSourceIntent'; import LocalVoiceState from '@app/features/voice/state/LocalVoiceState'; -import ScreenShareDelivery, {type ScreenShareDeliverySnapshot} from '@app/features/voice/state/ScreenShareDelivery'; import VoiceSettings from '@app/features/voice/state/VoiceSettings'; import { filterRoutableLinuxAudioSources, @@ -32,6 +28,7 @@ import { type ScreenShareAudioCaptureDebugInfo, ScreenShareAudioCaptureError, } from '@app/features/voice/utils/ScreenShareAudioCaptureError'; +import {findPairedDeviceShareAudioInput} from '@app/features/voice/utils/ScreenShareAudioSummary'; import { type DisplayShareEnvironment, getDisplayShareEnvironment, @@ -339,6 +336,7 @@ export function buildConfiguredScreenShareOptions(input: ScreenShareOptionsBuild const {captureOptions, publishOptions} = buildScreenShareOptions({ resolution: input.target.resolution, frameRate: input.target.frameRate, + context: input.target.context, includeAudio: input.includeAudio, contentHint: input.target.contentHint, sourceDimensions: input.sourceDimensions ?? undefined, @@ -359,10 +357,7 @@ interface ConfiguredScreenShareRequest { includeAudio?: boolean; } -function resolveConfiguredScreenShareAudio(request: ConfiguredScreenShareRequest): { - includeAudio: boolean; - audioDeviceId: string | undefined; -} { +function resolveConfiguredScreenShareAudio(request: ConfiguredScreenShareRequest): boolean { const includeAudio = request.includeAudio ?? shouldIncludeAudioForShare( @@ -379,23 +374,16 @@ function resolveConfiguredScreenShareAudio(request: ConfiguredScreenShareRequest shareDesktopAudio: VoiceSettings.getShareDesktopAudio(), }); } - return { - includeAudio, - audioDeviceId: includeAudio ? VoiceSettings.getEffectiveScreenShareAudioDeviceId() || undefined : undefined, - }; + return includeAudio; } -async function getConfiguredScreenShareOptions(request: ConfiguredScreenShareRequest): Promise< - BuiltScreenShareOptions & { - includeAudio: boolean; - audioDeviceId: string | undefined; - } -> { - const {includeAudio, audioDeviceId} = resolveConfiguredScreenShareAudio(request); +async function getConfiguredScreenShareOptions( + request: ConfiguredScreenShareRequest, +): Promise { + const includeAudio = resolveConfiguredScreenShareAudio(request); const sourceDimensions = request.sourceDimensions ?? null; - const ladder = resolveConfiguredScreenShareLadder(request.shareContext, sourceDimensions); - const {target} = ladder; - await beginScreenShareDelivery(ladder); + const target = resolveConfiguredScreenShareTarget(request.shareContext, sourceDimensions); + ActiveScreenShareSource.setTarget(target); await ScreenShareCodecNegotiation.refreshSelection(); const {captureOptions, publishOptions} = buildConfiguredScreenShareOptions({ target, @@ -407,7 +395,7 @@ async function getConfiguredScreenShareOptions(request: ConfiguredScreenShareReq preferredDisplaySurface: request.preferredDisplaySurface, useBrowserAudioPicker: request.displayShareEnvironment === 'web', }); - return {captureOptions, publishOptions, includeAudio, audioDeviceId}; + return {captureOptions, publishOptions, includeAudio}; } export interface ConfiguredDisplayScreenShareOptions { @@ -755,34 +743,24 @@ async function drainConfiguredScreenShareMutations( configuredScreenShareMutationActive = false; } -export function resolveScreenShareDeliveryOutcome( - operationSucceeded: boolean, - shareIsLive: boolean, -): 'keep' | 'restore' | 'end' { - if (operationSucceeded) return 'keep'; - return shareIsLive ? 'restore' : 'end'; -} - -function applyScreenShareDeliveryOutcome(operationSucceeded: boolean, snapshot: ScreenShareDeliverySnapshot): void { - const outcome = resolveScreenShareDeliveryOutcome(operationSucceeded, didScreenShareStart()); - if (outcome === 'restore') { - ScreenShareDelivery.restore(snapshot); +function restoreCommittedScreenShareTarget(committed: ScreenShareTarget | null): void { + if (didScreenShareStart()) { + ActiveScreenShareSource.setTarget(committed); return; } - if (outcome === 'end') { - ScreenShareDelivery.endShare(); - ActiveScreenShareSource.clear(); - } + ActiveScreenShareSource.clear(); } async function runConfiguredScreenShareMutation(execute: () => Promise): Promise { - const snapshot = ScreenShareDelivery.snapshot(); + const committed = ActiveScreenShareSource.getTarget(); try { const operationSucceeded = await execute(); - applyScreenShareDeliveryOutcome(operationSucceeded, snapshot); + if (!operationSucceeded) { + restoreCommittedScreenShareTarget(committed); + } return operationSucceeded; } catch (error) { - applyScreenShareDeliveryOutcome(false, snapshot); + restoreCommittedScreenShareTarget(committed); throw error; } } @@ -840,26 +818,20 @@ async function linkManualAudioSourcesForDeviceShare(mode: 'start' | 'switch'): P ); } -async function resolveDeviceShareAudioDeviceId( - videoDeviceId: string, - configuredAudioDeviceId: string | undefined, -): Promise { - if (configuredAudioDeviceId === undefined) return undefined; - if (VoiceSettings.getScreenShareAudioDeviceId() !== 'default') return configuredAudioDeviceId; - if (!videoDeviceId || videoDeviceId === 'default') return configuredAudioDeviceId; +async function resolveDeviceShareAudioDeviceId(videoDeviceId: string): Promise { + const chosenAudioDeviceId = VoiceSettings.getScreenShareAudioDeviceId(); + if (chosenAudioDeviceId && chosenAudioDeviceId !== 'default') return chosenAudioDeviceId; + if (VoiceSettings.getScreenShareDeviceAudioUsesMicrophone()) return VoiceSettings.getInputDeviceId() || undefined; + if (!videoDeviceId || videoDeviceId === 'default') return undefined; try { const devices = await navigator.mediaDevices.enumerateDevices(); - const videoDevice = devices.find((device) => device.kind === 'videoinput' && device.deviceId === videoDeviceId); - if (!videoDevice?.groupId) return configuredAudioDeviceId; - const pairedInput = devices.find( - (device) => - device.kind === 'audioinput' && - device.groupId === videoDevice.groupId && - device.deviceId !== '' && - device.deviceId !== 'default' && - device.deviceId !== 'communications', - ); - if (!pairedInput) return configuredAudioDeviceId; + const pairedInput = findPairedDeviceShareAudioInput(devices, videoDeviceId); + if (!pairedInput) { + logger.info('The shared capture device has no audio input of its own, sharing it without audio', { + videoDeviceId, + }); + return undefined; + } logger.info('Using the capture device own audio input for the device share', { videoDeviceId, audioDeviceId: pairedInput.deviceId, @@ -867,7 +839,7 @@ async function resolveDeviceShareAudioDeviceId( return pairedInput.deviceId; } catch (error) { logger.warn('Failed to pair an audio input with the shared video device', {videoDeviceId, error}); - return configuredAudioDeviceId; + return undefined; } } @@ -877,30 +849,23 @@ export async function reconfigureActiveDeviceShareAudio(): Promise { return reconfigureActiveLinuxScreenShareAudioLink(); } await stopActiveLinuxScreenShareAudioLink(); - const configuredAudioDeviceId = VoiceSettings.getEffectiveScreenShareAudioDeviceId(); - const audioDeviceId = await resolveDeviceShareAudioDeviceId( - MediaEngine.getActiveScreenShareVideoDeviceId(), - configuredAudioDeviceId, - ); - return MediaEngine.ensureDeviceScreenShareMicPublication(audioDeviceId ?? configuredAudioDeviceId); + const audioDeviceId = await resolveDeviceShareAudioDeviceId(MediaEngine.getActiveScreenShareVideoDeviceId()); + if (audioDeviceId === undefined) { + MediaEngine.setScreenShareAudioMuted(true); + return true; + } + return MediaEngine.ensureDeviceScreenShareMicPublication(audioDeviceId); } async function getConfiguredDeviceScreenShareAudio(videoDeviceId: string): Promise<{ routeManualAudioSources: boolean; audioDeviceId: string | undefined; }> { - const {includeAudio, audioDeviceId} = resolveConfiguredScreenShareAudio({ - shareContext: 'device', - displayShareEnvironment: 'desktop-custom', - }); - if (!includeAudio) return {routeManualAudioSources: false, audioDeviceId: undefined}; + if (!VoiceSettings.getShareDeviceAudio()) return {routeManualAudioSources: false, audioDeviceId: undefined}; if (await shouldRouteManualAudioSourcesForShare('device')) { return {routeManualAudioSources: true, audioDeviceId: undefined}; } - return { - routeManualAudioSources: false, - audioDeviceId: await resolveDeviceShareAudioDeviceId(videoDeviceId, audioDeviceId), - }; + return {routeManualAudioSources: false, audioDeviceId: await resolveDeviceShareAudioDeviceId(videoDeviceId)}; } export async function startConfiguredDeviceScreenShare(videoDeviceId: string): Promise { diff --git a/fluxer_app/src/features/voice/utils/VideoDecoderCapabilities.ts b/fluxer_app/src/features/voice/utils/VideoDecoderCapabilities.ts index 56dbd9f7e..e39724870 100644 --- a/fluxer_app/src/features/voice/utils/VideoDecoderCapabilities.ts +++ b/fluxer_app/src/features/voice/utils/VideoDecoderCapabilities.ts @@ -157,7 +157,13 @@ export function loadVideoDecoderExclusions(): Promise> { } export function getVideoDecoderExclusionsSync(): Array | null { - return cachedExclusions ?? getPlatformPolicyExclusions(); + const probed = cachedExclusions ?? getPlatformPolicyExclusions(); + if (probed === null && screenShareDecodeFailures.size === 0) return null; + return [...new Set([...(probed ?? []), ...screenShareDecodeFailures])]; +} + +export function isVideoCodecDecodeExcluded(codec: VideoCodec): boolean { + return getVideoDecoderExclusionsSync()?.includes(codec) === true; } export function markScreenShareDecodeFailure(codec: VideoCodec, reason: string): boolean { diff --git a/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.test.ts b/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.test.ts index f0013d370..c389b6c82 100644 --- a/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.test.ts +++ b/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.test.ts @@ -1,16 +1,11 @@ // @vitest-environment happy-dom // SPDX-License-Identifier: AGPL-3.0-or-later -import {selectLocalParticipantControlsViewState} from '@app/features/voice/components/voice_connection_status/LocalParticipantControlsStateMachine'; -import { - resolveScreenShareDeliveryNoticeTone, - type ScreenShareDeliveryNotice, - type ScreenShareDeliveryNoticeTone, -} from '@app/features/voice/engine/ScreenShareUnderperformance'; -import type {ScreenShareDeliveryPlan} from '@app/features/voice/state/ScreenShareDelivery'; import type {ScreenShareTarget} from '@app/features/voice/utils/ScreenShareOptions'; +import type {GpuInfo} from '@app/types/electron.d'; import {type I18n, type MessageDescriptor, setupI18n} from '@lingui/core'; -import {describe, expect, it, vi} from 'vitest'; +import type {VideoCodec} from 'livekit-client'; +import {afterEach, describe, expect, it, vi} from 'vitest'; vi.mock('@lingui/core/macro', () => ({msg: (descriptor: MessageDescriptor) => descriptor})); @@ -24,294 +19,68 @@ vi.mock('@app/features/app/config/Config', () => ({ })); const { - formatScreenShareDeliveryNotice, - formatScreenShareDeliveryStatus, formatScreenShareResolutionLabel, - SCREEN_SHARE_SETTINGS_ADJUSTED_DESCRIPTOR, - SCREEN_SHARE_STATUS_ASKED_FOR_DESCRIPTOR, - SCREEN_SHARE_STATUS_SENDING_DESCRIPTOR, - SCREEN_SHARE_STATUS_SOURCE_RATE_DESCRIPTOR, + formatScreenShareTargetLabel, SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR, - SCREEN_SHARE_TRY_FULL_QUALITY_AGAIN_DESCRIPTOR, } = await import('@app/features/voice/utils/VoiceMessageDescriptors'); +const { + ENCODE_PROBE_VIDEO_CONFIG, + H264_ENCODE_PROBE_CONTENT_TYPES, + H264_PROBE_PROFILE_LEVEL_IDS, + WEBRTC_ENCODE_PROBE_CONTENT_TYPES, + probeWebRtcEncodeEfficiency, + reconcileHardwareEncodeReport, + reportFromGpuInfo, +} = await import('@app/features/voice/utils/GpuEncoderCapabilities'); + const icu = setupI18n({locale: 'en', messages: {en: {}}}); type Values = Record | undefined; -function fakeI18n(render: (descriptor: MessageDescriptor, values: Values) => string): I18n { - return { - locale: 'pseudo', - _: (descriptor: MessageDescriptor, values?: Values) => render(descriptor, values), - } as unknown as I18n; -} - -function renderIcu(descriptor: MessageDescriptor, values: Values): string { - const message = descriptor.message; - if (typeof message !== 'string') { - throw new Error(`descriptor ${JSON.stringify(descriptor)} has no message`); - } - return icu._({id: message, message}, values); -} - -const pseudoI18n = fakeI18n((descriptor, values) => `⟦${renderIcu(descriptor, values)}⟧`); - -function captureNoticeDescriptor(notice: ScreenShareDeliveryNotice): {descriptor: MessageDescriptor; values: Values} { - const calls: Array<{descriptor: MessageDescriptor; values: Values}> = []; - formatScreenShareDeliveryNotice( - fakeI18n((descriptor, values) => { - calls.push({descriptor, values}); - return ''; - }), - notice, - ); - expect(calls).toHaveLength(1); - return calls[0]; -} - -const NOTICES = { - 'device-framerate': {kind: 'device-framerate', width: 1920, height: 1080, frameRate: 15}, - 'device-resolution': {kind: 'device-resolution', width: 1280, height: 720, frameRate: 60}, - 'device-crossover': { - kind: 'device-crossover', - width: 852, - height: 480, - frameRate: 30, - targetWidth: 1920, - targetHeight: 1080, - targetFrameRate: 60, +const plainI18n = { + locale: 'en', + _: (descriptor: MessageDescriptor, values?: Values) => { + const message = descriptor.message; + if (typeof message !== 'string') { + throw new Error(`descriptor ${JSON.stringify(descriptor)} has no message`); + } + return icu._({id: message, message}, values); }, - 'codec-switched': {kind: 'codec-switched', codec: 'vp8', previousCodec: 'vp9'}, - 'device-short': {kind: 'device-short', width: 2714, height: 762, frameRate: 15, deliveredFrameRate: 8.98}, - 'connection-short': {kind: 'connection-short', width: 1280, height: 720, frameRate: 30, deliveredFrameRate: 7.5}, - 'browser-resolution': { - kind: 'browser-resolution', - width: 1920, - height: 1080, - deliveredWidth: 1280, - deliveredHeight: 720, - }, - 'capture-resolution': { - kind: 'capture-resolution', - width: 1280, - height: 720, - deliveredWidth: 854, - deliveredHeight: 480, - }, - 'started-lower': { - kind: 'started-lower', - width: 1280, - height: 720, - frameRate: 30, - targetWidth: 2560, - targetHeight: 1440, - targetFrameRate: 60, - }, - 'pinned-codec-short': {kind: 'pinned-codec-short', codec: 'h265'}, - 'encoder-recovered': {kind: 'encoder-recovered', codec: 'h264'}, - 'codec-viewer': {kind: 'codec-viewer', codec: 'vp8', pinnedCodec: 'av1'}, - 'codec-device': {kind: 'codec-device', codec: 'vp9', pinnedCodec: 'av1'}, - 'apply-failed': {kind: 'apply-failed'}, -} satisfies {[Kind in ScreenShareDeliveryNotice['kind']]: Extract}; +} as unknown as I18n; -const EXPECTED: {[Kind in ScreenShareDeliveryNotice['kind']]: string} = { - 'device-framerate': 'Your device could not keep up, so your stream now sends 15 FPS to keep 1080p sharp.', - 'device-resolution': 'Your device could not keep up, so your stream now sends 720p to keep 60 FPS smooth.', - 'device-crossover': - 'Your device could not keep up, so your stream now sends 480p at 30 FPS instead of 1080p at 60 FPS.', - 'codec-switched': - 'Your stream switched to VP8 because VP9 could not keep up on this device. Viewers may see a short pause.', - 'device-short': - 'Your device cannot keep up. Your stream is set to 15 FPS at 2714×762 and viewers are getting about 9 FPS.', - 'connection-short': - 'Your connection cannot keep up. Your stream is set to 30 FPS at 720p and viewers are getting about 8 FPS.', - 'browser-resolution': 'The browser is sending 720p instead of 1080p.', - 'capture-resolution': 'Your capture device is sending 480p instead of 720p.', - 'started-lower': - 'This device could not keep up with 1440p at 60 FPS last time, so your stream started at 720p at 30 FPS.', - 'pinned-codec-short': - 'H.265 (HEVC) cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one.', - 'encoder-recovered': 'Your video encoder stopped, so your stream switched to H.264.', - 'codec-viewer': 'A viewer cannot play AV1, so your stream uses VP8.', - 'codec-device': 'AV1 is not available on this device, so your stream uses VP9.', - 'apply-failed': 'Some stream settings could not be applied to your live stream.', +const FIXED_TARGET: ScreenShareTarget = { + mode: 'screenshare', + resolution: 'ultra', + frameRate: 30, + context: 'display', + width: 2560, + height: 1440, + rung: 'ultra', + maxBitrate: 4_000_000, + contentHint: 'text', + presetOwned: true, + tierLimited: false, + deviceMapped: false, }; -const TEMPLATES: {[Kind in ScreenShareDeliveryNotice['kind']]: string} = { - 'device-framerate': - 'Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp.', - 'device-resolution': - 'Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth.', - 'device-crossover': - 'Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS.', - 'codec-switched': - 'Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause.', - 'device-short': - 'Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS.', - 'connection-short': - 'Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS.', - 'browser-resolution': 'The browser is sending {deliveredResolution} instead of {resolution}.', - 'capture-resolution': 'Your capture device is sending {deliveredResolution} instead of {resolution}.', - 'started-lower': - 'This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS.', - 'pinned-codec-short': - '{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one.', - 'encoder-recovered': 'Your video encoder stopped, so your stream switched to {codec}.', - 'codec-viewer': 'A viewer cannot play {pinnedCodec}, so your stream uses {codec}.', - 'codec-device': '{pinnedCodec} is not available on this device, so your stream uses {codec}.', - 'apply-failed': 'Some stream settings could not be applied to your live stream.', +const SOURCE_BOX_TARGET: ScreenShareTarget = { + ...FIXED_TARGET, + resolution: 'source', + frameRate: 15, + width: 3840, + height: 2160, + rung: 'source', + maxBitrate: 4_500_000, }; -const TONES: {[Kind in ScreenShareDeliveryNotice['kind']]: ScreenShareDeliveryNoticeTone} = { - 'device-framerate': 'info', - 'device-resolution': 'info', - 'device-crossover': 'info', - 'codec-switched': 'info', - 'device-short': 'warning', - 'connection-short': 'warning', - 'browser-resolution': 'warning', - 'capture-resolution': 'warning', - 'started-lower': 'info', - 'pinned-codec-short': 'warning', - 'encoder-recovered': 'info', - 'codec-viewer': 'info', - 'codec-device': 'info', - 'apply-failed': 'warning', +const SOURCE_FITTED_TARGET: ScreenShareTarget = { + ...SOURCE_BOX_TARGET, + width: 1920, + height: 1080, + rung: 'high', }; -function unnamedPlaceholders(descriptor: MessageDescriptor): Array { - const comment = descriptor.comment ?? ''; - return [...(descriptor.message ?? '').matchAll(/\{(\w+)\}/g)] - .map((match) => match[1]) - .filter((name) => !comment.includes(name)); -} - -const STATUS_DESCRIPTORS = [ - SCREEN_SHARE_STATUS_SENDING_DESCRIPTOR, - SCREEN_SHARE_STATUS_ASKED_FOR_DESCRIPTOR, - SCREEN_SHARE_STATUS_SOURCE_RATE_DESCRIPTOR, - SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR, - SCREEN_SHARE_TRY_FULL_QUALITY_AGAIN_DESCRIPTOR, - SCREEN_SHARE_SETTINGS_ADJUSTED_DESCRIPTOR, -]; - -describe('formatScreenShareDeliveryNotice', () => { - it.each(Object.values(NOTICES).map((notice) => [notice.kind, notice] as const))( - 'formats the %s notice through the i18n catalogue', - (kind, notice) => { - expect(formatScreenShareDeliveryNotice(pseudoI18n, notice)).toBe(`⟦${EXPECTED[kind]}⟧`); - }, - ); - - it('covers every notice kind', () => { - expect(Object.keys(NOTICES).sort()).toEqual(Object.keys(EXPECTED).sort()); - expect(Object.keys(TEMPLATES).sort()).toEqual(Object.keys(EXPECTED).sort()); - }); - - it.each(Object.values(NOTICES).map((notice) => [notice.kind, notice] as const))( - 'hands the %s template and its values to the catalogue uninterpolated', - (kind, notice) => { - const {descriptor, values} = captureNoticeDescriptor(notice); - expect(descriptor.message).toBe(TEMPLATES[kind]); - expect(Object.keys(values ?? {}).sort()).toEqual( - [...TEMPLATES[kind].matchAll(/\{(\w+)\}/g)].map((match) => match[1]).sort(), - ); - expect(descriptor.comment).toEqual(expect.stringMatching(/\S/)); - expect(unnamedPlaceholders(descriptor)).toEqual([]); - }, - ); - - it.each([ - [ - 'device-short', - 8.2, - 'Your device cannot keep up. Your stream is set to 15 FPS at 2714×762 and viewers are getting about 8 FPS.', - ], - [ - 'device-short', - 8.6, - 'Your device cannot keep up. Your stream is set to 15 FPS at 2714×762 and viewers are getting about 9 FPS.', - ], - [ - 'connection-short', - 8.2, - 'Your connection cannot keep up. Your stream is set to 30 FPS at 720p and viewers are getting about 8 FPS.', - ], - [ - 'connection-short', - 8.6, - 'Your connection cannot keep up. Your stream is set to 30 FPS at 720p and viewers are getting about 9 FPS.', - ], - ] as const)('rounds the %s delivered rate %d to the nearest whole number', (kind, deliveredFrameRate, expected) => { - const notice = {...NOTICES[kind], deliveredFrameRate}; - expect(formatScreenShareDeliveryNotice(pseudoI18n, notice)).toBe(`⟦${expected}⟧`); - }); -}); - -describe('screen share status and action descriptors', () => { - it.each([ - [ - SCREEN_SHARE_STATUS_SENDING_DESCRIPTOR, - 'Set to send {resolution} at {frameRate} FPS with {codec}', - {resolution: '1080p', frameRate: 60, codec: 'AV1'}, - 'Set to send 1080p at 60 FPS with AV1', - ], - [ - SCREEN_SHARE_STATUS_ASKED_FOR_DESCRIPTOR, - 'You asked for {resolution} at {frameRate} FPS', - {resolution: '1440p', frameRate: 30}, - 'You asked for 1440p at 30 FPS', - ], - [ - SCREEN_SHARE_STATUS_SOURCE_RATE_DESCRIPTOR, - 'Your source is producing about {sourceFrameRate} FPS', - {sourceFrameRate: 12}, - 'Your source is producing about 12 FPS', - ], - [SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR, 'Source', undefined, 'Source'], - [SCREEN_SHARE_TRY_FULL_QUALITY_AGAIN_DESCRIPTOR, 'Try full quality again', undefined, 'Try full quality again'], - [ - SCREEN_SHARE_SETTINGS_ADJUSTED_DESCRIPTOR, - 'Stream settings were adjusted', - undefined, - 'Stream settings were adjusted', - ], - ])('renders %j as the design wording', (descriptor, template, values, expected) => { - expect(descriptor.message).toBe(template); - expect(descriptor.comment).toEqual(expect.stringMatching(/\S/)); - expect(unnamedPlaceholders(descriptor)).toEqual([]); - expect(pseudoI18n._(descriptor, values)).toBe(`⟦${expected}⟧`); - }); -}); - -describe('resolveScreenShareDeliveryNoticeTone', () => { - it('splits every notice kind into the tones the design asks for', () => { - const byTone = (wanted: ScreenShareDeliveryNoticeTone) => - Object.values(NOTICES) - .filter((notice) => resolveScreenShareDeliveryNoticeTone(notice) === wanted) - .map((notice) => notice.kind) - .sort(); - expect(byTone('warning')).toEqual([ - 'apply-failed', - 'browser-resolution', - 'capture-resolution', - 'connection-short', - 'device-short', - 'pinned-codec-short', - ]); - expect(byTone('info')).toEqual([ - 'codec-device', - 'codec-switched', - 'codec-viewer', - 'device-crossover', - 'device-framerate', - 'device-resolution', - 'encoder-recovered', - 'started-lower', - ]); - }); -}); - describe('formatScreenShareResolutionLabel', () => { it.each([ [1920, 1080, '1080p'], @@ -336,286 +105,165 @@ describe('formatScreenShareResolutionLabel', () => { }); }); -describe('screen share message punctuation', () => { - it('keeps every new message free of semicolons, em dashes and colons', () => { - const descriptors = [ - ...Object.values(NOTICES).map((notice) => captureNoticeDescriptor(notice).descriptor), - ...STATUS_DESCRIPTORS, - ]; - expect(descriptors).toHaveLength(20); - for (const descriptor of descriptors) { - expect(descriptor.message).toEqual(expect.any(String)); - expect(descriptor.message).not.toMatch(/[;:—–]/); - } +describe('formatScreenShareTargetLabel', () => { + it('calls a source target with no known source size Source', () => { + expect(formatScreenShareTargetLabel(plainI18n, SOURCE_BOX_TARGET)).toBe('Source'); + }); + + it('names the fitted size once a source target has source dimensions', () => { + expect(formatScreenShareTargetLabel(plainI18n, SOURCE_FITTED_TARGET)).toBe('1080p'); + }); + + it('names the size a fixed target asked for', () => { + expect(formatScreenShareTargetLabel(plainI18n, FIXED_TARGET)).toBe('1440p'); + }); + + it('names an odd fixed size by its dimensions', () => { + expect(formatScreenShareTargetLabel(plainI18n, {...FIXED_TARGET, width: 2714, height: 762})).toBe('2714×762'); }); }); -const plainI18n = fakeI18n(renderIcu); +describe('SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR', () => { + it('reads Source, carries a translator comment and keeps the wording plain', () => { + expect(SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR.message).toBe('Source'); + expect(SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR.comment).toEqual(expect.stringMatching(/\S/)); + expect(SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR.message).not.toMatch(/[;:—–]/); + }); +}); -const STATUS_TARGET: ScreenShareTarget = { - mode: 'screenshare', - resolution: 'ultra', - frameRate: 30, - width: 2560, - height: 1440, - rung: 'ultra', - maxBitrate: 4_000_000, - contentHint: 'text', - keep: 'resolution', - presetOwned: true, - tierLimited: false, - deviceMapped: false, - memoryKey: 'ultra@ultra|30|screen', +const RTX_5090_GPU_INFO: GpuInfo = { + devices: [{active: true, vendorId: 0x10de, deviceId: 0x2b85, vendorName: 'NVIDIA', deviceString: 'RTX 5090'}], + glRenderer: 'ANGLE (NVIDIA, NVIDIA GeForce RTX 5090 Direct3D11 vs_5_0 ps_5_0, D3D11)', }; -function buildPlan(overrides: Partial = {}): ScreenShareDeliveryPlan { - return { - target: STATUS_TARGET, - codec: 'vp9', - level: {index: 0, segment: 0, frameRate: 30, width: 2560, height: 1440, rung: 'ultra', maxBitrate: 4_000_000}, - levelIndex: 0, - deliveredFrameRate: 29, - sentWidth: 2560, - sentHeight: 1440, - sourceFrameRate: null, - holdingShort: false, - ...overrides, - }; +const CHROMIUM_HARDWARE_H264_PROFILES: ReadonlySet = new Set(['6400', '4d00', '4200']); + +const h264ProfileLevelId = (contentType: string): string => + /profile-level-id=([0-9a-f]{6})/.exec(contentType)?.[1] ?? ''; + +function stubChromiumEncodingInfo(hardwareCodecs: ReadonlySet): Array { + const asked: Array = []; + vi.stubGlobal('navigator', { + mediaCapabilities: { + encodingInfo: async ({video}: {video: {contentType: string}}) => { + asked.push(video.contentType); + if (video.contentType.startsWith('video/H264')) { + const profile = h264ProfileLevelId(video.contentType).slice(0, 4); + return { + supported: true, + powerEfficient: hardwareCodecs.has('h264') && CHROMIUM_HARDWARE_H264_PROFILES.has(profile), + }; + } + const codec = video.contentType.slice('video/'.length).toLowerCase(); + if (codec === 'h265' && !hardwareCodecs.has('h265')) return {supported: false, powerEfficient: false}; + return {supported: true, powerEfficient: hardwareCodecs.has(codec)}; + }, + }, + }); + return asked; } -const SOURCE_BOX_TARGET: ScreenShareTarget = { - ...STATUS_TARGET, - resolution: 'source', - frameRate: 15, - width: 3840, - height: 2160, - rung: 'source', - maxBitrate: 4_500_000, - memoryKey: 'source@source|15|screen', -}; - -const SOURCE_FITTED_TARGET: ScreenShareTarget = { - ...SOURCE_BOX_TARGET, - width: 2560, - height: 1440, - rung: 'ultra', - memoryKey: 'source@ultra|15|screen', -}; - -const STEPPED_PLAN = buildPlan({ - levelIndex: 2, - level: {index: 2, segment: 0, frameRate: 15, width: 2560, height: 1440, rung: 'ultra', maxBitrate: 3_000_000}, - deliveredFrameRate: 13.8, +afterEach(() => { + vi.unstubAllGlobals(); }); -describe('formatScreenShareDeliveryStatus', () => { - it('reports the level the share is set to send while it runs at the asked-for level', () => { - expect(formatScreenShareDeliveryStatus(plainI18n, buildPlan(), null)).toEqual({ - sending: 'Set to send 1440p at 30 FPS with VP9', - askedFor: null, - notice: null, - sourceRate: null, - hasRows: true, - canTryFullQuality: false, - }); +describe('WebRTC hardware encode probe', () => { + it('asks H.264 about the profiles a hardware encoder advertises, not only constrained baseline', () => { + expect(H264_PROBE_PROFILE_LEVEL_IDS).toEqual(['640028', '4d0028', '420028', '42e028']); + expect(H264_ENCODE_PROBE_CONTENT_TYPES.map((contentType) => h264ProfileLevelId(contentType).slice(0, 4))).toEqual([ + '6400', + '4d00', + '4200', + '42e0', + ]); + expect(WEBRTC_ENCODE_PROBE_CONTENT_TYPES.h264).toBe(H264_ENCODE_PROBE_CONTENT_TYPES); }); - it('adds what was asked for and the action once the share has stepped down', () => { - expect(formatScreenShareDeliveryStatus(plainI18n, STEPPED_PLAN, NOTICES['device-framerate'])).toEqual({ - sending: 'Set to send 1440p at 15 FPS with VP9', - askedFor: 'You asked for 1440p at 30 FPS', - notice: 'Your device could not keep up, so your stream now sends 15 FPS to keep 1080p sharp.', - sourceRate: null, - hasRows: true, - canTryFullQuality: true, - }); - }); - - it('leaves out what was asked for while the share holds short at the level it asked for', () => { - expect( - formatScreenShareDeliveryStatus(plainI18n, buildPlan({holdingShort: true}), NOTICES['device-short']), - ).toEqual({ - sending: 'Set to send 1440p at 30 FPS with VP9', - askedFor: null, - notice: - 'Your device cannot keep up. Your stream is set to 15 FPS at 2714×762 and viewers are getting about 9 FPS.', - sourceRate: null, - hasRows: true, - canTryFullQuality: false, - }); - }); - - it('adds what was asked for once the level drops only the frame rate below it', () => { - const plan = buildPlan({ - level: {index: 1, segment: 0, frameRate: 15, width: 2560, height: 1440, rung: 'ultra', maxBitrate: 3_000_000}, - levelIndex: 1, - holdingShort: true, - }); - expect(formatScreenShareDeliveryStatus(plainI18n, plan, null).askedFor).toBe('You asked for 1440p at 30 FPS'); - }); - - it('shows a start notice and the action before the first sample lands', () => { - expect(formatScreenShareDeliveryStatus(plainI18n, null, NOTICES['started-lower'])).toEqual({ - sending: null, - askedFor: null, - notice: 'This device could not keep up with 1440p at 60 FPS last time, so your stream started at 720p at 30 FPS.', - sourceRate: null, - hasRows: true, - canTryFullQuality: true, - }); - }); - - it('states the level box rather than the size and rate the sample measured', () => { - const plan = buildPlan({sentWidth: 1920, sentHeight: 1080, deliveredFrameRate: 7.4}); - expect(formatScreenShareDeliveryStatus(plainI18n, plan, null).sending).toBe('Set to send 1440p at 30 FPS with VP9'); - }); - - it('takes the sending row from the level the share settled on and not the box it asked for', () => { - const plan = buildPlan({ - levelIndex: 3, - level: {index: 3, segment: 0, frameRate: 15, width: 1280, height: 720, rung: 'medium', maxBitrate: 1_500_000}, - sentWidth: 1920, - sentHeight: 1080, - deliveredFrameRate: 7.4, - }); - const status = formatScreenShareDeliveryStatus(plainI18n, plan, null); - expect(status.sending).toBe('Set to send 720p at 15 FPS with VP9'); - expect(status.askedFor).toBe('You asked for 1440p at 30 FPS'); - }); - - it('leaves the rate reaching viewers to the notice while the connection holds the share short', () => { - const plan = buildPlan({ - level: {index: 3, segment: 1, frameRate: 15, width: 1280, height: 720, rung: 'medium', maxBitrate: 1_500_000}, - levelIndex: 3, - codec: 'h264', - sentWidth: 1280, - sentHeight: 720, - deliveredFrameRate: 7.5, - holdingShort: true, - }); - const status = formatScreenShareDeliveryStatus(plainI18n, plan, { - kind: 'connection-short', - width: 1280, - height: 720, - frameRate: 15, - deliveredFrameRate: 7.4, - }); - expect(status.sending).toBe('Set to send 720p at 15 FPS with H.264'); - expect(status.notice).toBe( - 'Your connection cannot keep up. Your stream is set to 15 FPS at 720p and viewers are getting about 7 FPS.', - ); - expect(status.askedFor).toBe('You asked for 1440p at 30 FPS'); - }); - - it('has a sending row before the first sample reports anything measured', () => { - const plan = buildPlan({sentWidth: null, sentHeight: null, deliveredFrameRate: null}); - expect(formatScreenShareDeliveryStatus(plainI18n, plan, null).sending).toBe('Set to send 1440p at 30 FPS with VP9'); - }); - - it('calls an asked-for source target without source dimensions Source', () => { - const plan = buildPlan({ - target: SOURCE_BOX_TARGET, - levelIndex: 2, - level: {index: 2, segment: 1, frameRate: 15, width: 2560, height: 1440, rung: 'ultra', maxBitrate: 4_000_000}, - }); - expect(formatScreenShareDeliveryStatus(plainI18n, plan, null).askedFor).toBe('You asked for Source at 15 FPS'); - }); - - it('names the fitted size once an asked-for source target has source dimensions', () => { - const plan = buildPlan({ - target: SOURCE_FITTED_TARGET, - levelIndex: 2, - level: {index: 2, segment: 1, frameRate: 15, width: 1920, height: 1080, rung: 'high', maxBitrate: 3_000_000}, - }); - expect(formatScreenShareDeliveryStatus(plainI18n, plan, null).askedFor).toBe('You asked for 1440p at 15 FPS'); - }); - - it('has no rows to show before a plan or a notice exists', () => { - expect(formatScreenShareDeliveryStatus(plainI18n, null, null)).toEqual({ - sending: null, - askedFor: null, - notice: null, - sourceRate: null, - hasRows: false, - canTryFullQuality: false, - }); - }); - - it('rounds the source rate it reports', () => { - expect(formatScreenShareDeliveryStatus(plainI18n, buildPlan({sourceFrameRate: 23.6}), null).sourceRate).toBe( - 'Your source is producing about 24 FPS', - ); - }); - - it.each([ - ['device-framerate', true], - ['device-resolution', true], - ['device-crossover', true], - ['device-short', true], - ['started-lower', true], - ['apply-failed', true], - ['connection-short', false], - ['browser-resolution', false], - ['capture-resolution', false], - ['codec-switched', false], - ['codec-viewer', false], - ['codec-device', false], - ['pinned-codec-short', false], - ['encoder-recovered', false], - ] as const)('offers the full quality action next to the %s notice: %s', (kind, expected) => { - expect(formatScreenShareDeliveryStatus(plainI18n, STEPPED_PLAN, NOTICES[kind]).canTryFullQuality).toBe(expected); - }); - - it('covers every notice kind in the action table', () => { - expect(Object.keys(NOTICES)).toHaveLength(14); - }); -}); - -const LIVE_SHARE_SIGNALS = { - isConnected: true, - canStream: true, - isCameraEnabled: false, - isCameraUserCapReached: false, - isScreenShareEnabled: true, -}; - -describe('selectLocalParticipantControlsViewState screen share notices', () => { - it('keeps the existing label with no notice', () => { - expect( - selectLocalParticipantControlsViewState({...LIVE_SHARE_SIGNALS, screenShareNoticeTone: null}).screenShare, - ).toMatchObject({labelKey: 'configureOrEndScreenShare', showsNotice: false, showsNoticeDot: false}); - }); - - it('shows a warning notice with a dot', () => { - expect( - selectLocalParticipantControlsViewState({...LIVE_SHARE_SIGNALS, screenShareNoticeTone: 'warning'}).screenShare, - ).toMatchObject({labelKey: 'configureOrEndScreenShare', showsNotice: true, showsNoticeDot: true}); - }); - - it('shows an info notice without a dot', () => { - expect( - selectLocalParticipantControlsViewState({...LIVE_SHARE_SIGNALS, screenShareNoticeTone: 'info'}).screenShare, - ).toMatchObject({showsNotice: true, showsNoticeDot: false}); - }); - - it('drops a leftover notice once the share is no longer live', () => { - expect( - selectLocalParticipantControlsViewState({ - ...LIVE_SHARE_SIGNALS, - isScreenShareEnabled: false, - screenShareNoticeTone: 'warning', - }).screenShare, - ).toMatchObject({labelKey: 'shareScreen', showsNotice: false, showsNoticeDot: false}); - }); - - it('takes the dot from the notice tone the tile badge uses', () => { - for (const notice of Object.values(NOTICES)) { - const state = selectLocalParticipantControlsViewState({ - ...LIVE_SHARE_SIGNALS, - screenShareNoticeTone: resolveScreenShareDeliveryNoticeTone(notice), - }).screenShare; - expect(state.showsNotice).toBe(true); - expect(state.showsNoticeDot).toBe(TONES[notice.kind] === 'warning'); + it('keeps every probed H.264 level high enough for the resolution the probe asks about', () => { + const macroblocks = + Math.ceil(ENCODE_PROBE_VIDEO_CONFIG.width / 16) * Math.ceil(ENCODE_PROBE_VIDEO_CONFIG.height / 16); + expect(macroblocks).toBeLessThanOrEqual(8192); + expect(macroblocks * ENCODE_PROBE_VIDEO_CONFIG.framerate).toBeLessThanOrEqual(245_760); + for (const contentType of H264_ENCODE_PROBE_CONTENT_TYPES) { + expect(Number.parseInt(h264ProfileLevelId(contentType).slice(4), 16)).toBeGreaterThanOrEqual(0x28); } }); + + it('leaves AV1 and H.265 without a level that could contradict the probed resolution', () => { + expect(WEBRTC_ENCODE_PROBE_CONTENT_TYPES.av1).toEqual(['video/AV1']); + expect(WEBRTC_ENCODE_PROBE_CONTENT_TYPES.h265).toEqual(['video/H265']); + }); + + it('reads H.264 as hardware on a Chromium that only accelerates the unconstrained profiles', async () => { + const asked = stubChromiumEncodingInfo(new Set(['h264', 'h265'])); + await expect(probeWebRtcEncodeEfficiency()).resolves.toEqual({ + av1: 'software', + h265: 'hardware', + h264: 'hardware', + vp9: 'software', + vp8: 'software', + }); + expect(asked).toContain(H264_ENCODE_PROBE_CONTENT_TYPES[0]); + expect(asked).not.toContain('video/H264;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f'); + }); + + it('reads a codec Chromium cannot encode at all as unknown, not as software', async () => { + stubChromiumEncodingInfo(new Set(['h264'])); + await expect(probeWebRtcEncodeEfficiency()).resolves.toMatchObject({h265: 'unknown'}); + }); + + it('returns nothing when the browser has no encodingInfo to ask', async () => { + vi.stubGlobal('navigator', {}); + await expect(probeWebRtcEncodeEfficiency()).resolves.toBeNull(); + }); +}); + +describe('reconcileHardwareEncodeReport', () => { + const table = (): ReturnType => reportFromGpuInfo(RTX_5090_GPU_INFO); + const probe = (overrides: Partial>) => ({ + av1: 'unknown' as const, + h265: 'unknown' as const, + h264: 'unknown' as const, + vp9: 'unknown' as const, + vp8: 'unknown' as const, + ...overrides, + }); + + it('classifies an RTX 5090 from its PCI id before any probe runs', () => { + expect(table().gpuFamily).toBe('nvidia-ada-or-blackwell'); + expect(table().h264).toBe('hardware'); + }); + + it('takes the probe answer over the GPU table for every codec', () => { + expect( + reconcileHardwareEncodeReport( + table(), + probe({av1: 'software', h265: 'software', h264: 'hardware', vp9: 'hardware'}), + ), + ).toMatchObject({av1: 'software', h265: 'software', h264: 'hardware', vp9: 'hardware'}); + }); + + it('keeps the GPU table answer where the probe says unknown', () => { + expect(reconcileHardwareEncodeReport(table(), probe({}))).toMatchObject({ + av1: 'hardware', + h265: 'hardware', + h264: 'hardware', + vp9: 'software', + vp8: 'software', + }); + }); + + it('keeps the GPU table when the probe could not run', () => { + expect(reconcileHardwareEncodeReport(table(), null)).toEqual(table()); + }); + + it('answers hardware H.264 end to end for an RTX 5090 behind a Chromium that refuses constrained baseline', async () => { + stubChromiumEncodingInfo(new Set(['h264', 'h265', 'av1'])); + const efficiency = await probeWebRtcEncodeEfficiency(); + expect(reconcileHardwareEncodeReport(table(), efficiency)).toMatchObject({ + av1: 'hardware', + h265: 'hardware', + h264: 'hardware', + }); + }); }); diff --git a/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.ts b/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.ts index bbe7aed92..28dd50c75 100644 --- a/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.ts +++ b/fluxer_app/src/features/voice/utils/VoiceMessageDescriptors.ts @@ -1,8 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import type {ScreenShareDeliveryNotice} from '@app/features/voice/engine/ScreenShareUnderperformance'; -import type {ScreenShareDeliveryPlan} from '@app/features/voice/state/ScreenShareDelivery'; -import {CODEC_DISPLAY_LABEL} from '@app/features/voice/utils/ScreenShareCodecPolicy'; import { resolveEffectiveScreenShareDimensions, type ScreenShareTarget, @@ -336,111 +333,10 @@ export const VOICE_CALL_E2EE_BROKEN_DESCRIPTOR = msg({ 'Pre-join indicator shown beneath the Join button on a DM or group DM call where at least one connected participant (typically an outdated bot) does not support E2EE.', }); -const SCREEN_SHARE_NOTICE_DEVICE_FRAMERATE_DESCRIPTOR = msg({ - message: 'Your device could not keep up, so your stream now sends {frameRate} FPS to keep {resolution} sharp.', - comment: - 'Screen share notice shown to the person sharing after their stream dropped frame rate to protect sharpness. frameRate is a whole number and resolution is a technical token such as 1080p or 2714x762. FPS is a technical token.', -}); -const SCREEN_SHARE_NOTICE_DEVICE_RESOLUTION_DESCRIPTOR = msg({ - message: 'Your device could not keep up, so your stream now sends {resolution} to keep {frameRate} FPS smooth.', - comment: - 'Screen share notice shown to the person sharing after their stream dropped resolution to protect smoothness. resolution is a technical token such as 720p and frameRate is a whole number. FPS is a technical token.', -}); -const SCREEN_SHARE_NOTICE_DEVICE_CROSSOVER_DESCRIPTOR = msg({ - message: - 'Your device could not keep up, so your stream now sends {resolution} at {frameRate} FPS instead of {targetResolution} at {targetFrameRate} FPS.', - comment: - 'Screen share notice shown to the person sharing after their stream dropped both resolution and frame rate. resolution and frameRate are what the stream sends now, targetResolution and targetFrameRate are what the person asked for. Resolutions are technical tokens such as 480p and rates are whole numbers. FPS is a technical token.', -}); -const SCREEN_SHARE_NOTICE_CODEC_SWITCHED_DESCRIPTOR = msg({ - message: - 'Your stream switched to {codec} because {previousCodec} could not keep up on this device. Viewers may see a short pause.', - comment: - 'Screen share notice shown to the person sharing after the app replaced the video codec. codec and previousCodec are codec names such as VP9 or H.264.', -}); -const SCREEN_SHARE_NOTICE_DEVICE_SHORT_DESCRIPTOR = msg({ - message: - 'Your device cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS.', - comment: - 'Screen share notice shown to the person sharing when their device is the limit and nothing lower is available. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token.', -}); -const SCREEN_SHARE_NOTICE_CONNECTION_SHORT_DESCRIPTOR = msg({ - message: - 'Your connection cannot keep up. Your stream is set to {frameRate} FPS at {resolution} and viewers are getting about {deliveredFrameRate} FPS.', - comment: - 'Screen share notice shown to the person sharing when their upload is the limit. frameRate is the whole number of frames a second the stream is set to send and deliveredFrameRate is the smaller whole number that reaches viewers. Keep the two rates in separate clauses so neither can be read as the other. resolution is a technical token such as 720p. FPS is a technical token.', -}); -const SCREEN_SHARE_NOTICE_BROWSER_RESOLUTION_DESCRIPTOR = msg({ - message: 'The browser is sending {deliveredResolution} instead of {resolution}.', - comment: - 'Screen share notice shown to the person sharing when the browser ignores the requested size. deliveredResolution is the size the browser really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p or 2714x762.', -}); -const SCREEN_SHARE_NOTICE_CAPTURE_RESOLUTION_DESCRIPTOR = msg({ - message: 'Your capture device is sending {deliveredResolution} instead of {resolution}.', - comment: - 'Screen share notice shown to the person sharing a capture device, such as a capture card, that ignores the requested size. deliveredResolution is the size the capture device really sends and resolution is the size the app asked it for. Both are technical tokens such as 720p.', -}); -const SCREEN_SHARE_NOTICE_STARTED_LOWER_DESCRIPTOR = msg({ - message: - 'This device could not keep up with {targetResolution} at {targetFrameRate} FPS last time, so your stream started at {resolution} at {frameRate} FPS.', - comment: - 'Screen share notice shown to the person sharing when a remembered result made the stream start below the asked-for settings. targetResolution and targetFrameRate are what the person asked for, resolution and frameRate are the lower settings the stream started at. Resolutions are technical tokens such as 1080p and rates are whole numbers. FPS is a technical token.', -}); -const SCREEN_SHARE_NOTICE_PINNED_CODEC_SHORT_DESCRIPTOR = msg({ - message: - '{codec} cannot keep up on this device. Set the codec to Automatic in Advanced settings to allow a faster one.', - comment: - 'Screen share notice shown to the person sharing when they pinned a codec that underperforms. codec is a codec name such as AV1. Automatic and Advanced settings are labels in the same app.', -}); -const SCREEN_SHARE_NOTICE_ENCODER_RECOVERED_DESCRIPTOR = msg({ - message: 'Your video encoder stopped, so your stream switched to {codec}.', - comment: - 'Screen share notice shown to the person sharing after the app recovered a stalled encoder on another codec. codec is a codec name such as VP8.', -}); -const SCREEN_SHARE_NOTICE_CODEC_VIEWER_DESCRIPTOR = msg({ - message: 'A viewer cannot play {pinnedCodec}, so your stream uses {codec}.', - comment: - 'Screen share notice shown to the person sharing when a watcher cannot decode the pinned codec. pinnedCodec and codec are codec names such as AV1 or VP8.', -}); -const SCREEN_SHARE_NOTICE_CODEC_DEVICE_DESCRIPTOR = msg({ - message: '{pinnedCodec} is not available on this device, so your stream uses {codec}.', - comment: - 'Screen share notice shown to the person sharing when this device cannot encode the pinned codec. pinnedCodec and codec are codec names such as H.265 (HEVC) or VP9.', -}); -const SCREEN_SHARE_NOTICE_APPLY_FAILED_DESCRIPTOR = msg({ - message: 'Some stream settings could not be applied to your live stream.', - comment: 'Screen share notice shown to the person sharing when the app failed to push new settings to a live share.', -}); - -export const SCREEN_SHARE_STATUS_SENDING_DESCRIPTOR = msg({ - message: 'Set to send {resolution} at {frameRate} FPS with {codec}', - comment: - 'Screen share status row in the stream menu and in video settings, describing the settings the live stream is running at rather than what reaches viewers. resolution is a technical token such as 1080p, frameRate is the whole number of frames a second the stream is set to send and codec is a codec name such as VP9. FPS is a technical token.', -}); -export const SCREEN_SHARE_STATUS_ASKED_FOR_DESCRIPTOR = msg({ - message: 'You asked for {resolution} at {frameRate} FPS', - comment: - 'Screen share status row in the stream menu, describing the settings the person chose. resolution is a technical token such as 1440p and frameRate is a whole number. FPS is a technical token.', -}); export const SCREEN_SHARE_STATUS_SOURCE_RESOLUTION_DESCRIPTOR = msg({ message: 'Source', comment: - 'Screen share resolution token in the stream menu status rows, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu.', -}); -export const SCREEN_SHARE_STATUS_SOURCE_RATE_DESCRIPTOR = msg({ - message: 'Your source is producing about {sourceFrameRate} FPS', - comment: - 'Screen share status row in the stream menu, shown when the captured window or screen itself produces fewer frames than asked for. sourceFrameRate is a whole number. FPS is a technical token.', -}); -export const SCREEN_SHARE_TRY_FULL_QUALITY_AGAIN_DESCRIPTOR = msg({ - message: 'Try full quality again', - comment: - 'Screen share action in the stream menu. Forgets what this device measured and restarts the stream at the asked-for settings.', -}); -export const SCREEN_SHARE_SETTINGS_ADJUSTED_DESCRIPTOR = msg({ - message: 'Stream settings were adjusted', - comment: - 'Accessible label for the information badge on the sharing tile, shown when the app changed stream settings without a problem to report.', + 'Screen share resolution token in the stream info pill on the sharing tile, used when the person asked for the original source resolution and the app does not know the source size. Matches the Source option in the stream settings menu.', }); const RESOLUTION_LABEL_HEIGHTS = [480, 720, 1080, 1440, 2160]; @@ -455,113 +351,9 @@ export function formatScreenShareResolutionLabel(width: number, height: number): return `${width}×${height}`; } -type ScreenShareDeliveryNoticeFormatters = { - [Kind in ScreenShareDeliveryNotice['kind']]: ( - i18n: I18n, - notice: Extract, - ) => string; -}; - -const SCREEN_SHARE_DELIVERY_NOTICE_FORMATTERS = { - 'device-framerate': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_DEVICE_FRAMERATE_DESCRIPTOR, { - frameRate: notice.frameRate, - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - }), - 'device-resolution': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_DEVICE_RESOLUTION_DESCRIPTOR, { - frameRate: notice.frameRate, - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - }), - 'device-crossover': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_DEVICE_CROSSOVER_DESCRIPTOR, { - frameRate: notice.frameRate, - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - targetFrameRate: notice.targetFrameRate, - targetResolution: formatScreenShareResolutionLabel(notice.targetWidth, notice.targetHeight), - }), - 'codec-switched': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_CODEC_SWITCHED_DESCRIPTOR, { - codec: CODEC_DISPLAY_LABEL[notice.codec], - previousCodec: CODEC_DISPLAY_LABEL[notice.previousCodec], - }), - 'device-short': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_DEVICE_SHORT_DESCRIPTOR, { - deliveredFrameRate: Math.round(notice.deliveredFrameRate), - frameRate: notice.frameRate, - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - }), - 'connection-short': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_CONNECTION_SHORT_DESCRIPTOR, { - deliveredFrameRate: Math.round(notice.deliveredFrameRate), - frameRate: notice.frameRate, - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - }), - 'browser-resolution': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_BROWSER_RESOLUTION_DESCRIPTOR, { - deliveredResolution: formatScreenShareResolutionLabel(notice.deliveredWidth, notice.deliveredHeight), - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - }), - 'capture-resolution': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_CAPTURE_RESOLUTION_DESCRIPTOR, { - deliveredResolution: formatScreenShareResolutionLabel(notice.deliveredWidth, notice.deliveredHeight), - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - }), - 'started-lower': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_STARTED_LOWER_DESCRIPTOR, { - frameRate: notice.frameRate, - resolution: formatScreenShareResolutionLabel(notice.width, notice.height), - targetFrameRate: notice.targetFrameRate, - targetResolution: formatScreenShareResolutionLabel(notice.targetWidth, notice.targetHeight), - }), - 'pinned-codec-short': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_PINNED_CODEC_SHORT_DESCRIPTOR, {codec: CODEC_DISPLAY_LABEL[notice.codec]}), - 'encoder-recovered': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_ENCODER_RECOVERED_DESCRIPTOR, {codec: CODEC_DISPLAY_LABEL[notice.codec]}), - 'codec-viewer': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_CODEC_VIEWER_DESCRIPTOR, { - codec: CODEC_DISPLAY_LABEL[notice.codec], - pinnedCodec: CODEC_DISPLAY_LABEL[notice.pinnedCodec], - }), - 'codec-device': (i18n, notice) => - i18n._(SCREEN_SHARE_NOTICE_CODEC_DEVICE_DESCRIPTOR, { - codec: CODEC_DISPLAY_LABEL[notice.codec], - pinnedCodec: CODEC_DISPLAY_LABEL[notice.pinnedCodec], - }), - 'apply-failed': (i18n) => i18n._(SCREEN_SHARE_NOTICE_APPLY_FAILED_DESCRIPTOR), -} satisfies ScreenShareDeliveryNoticeFormatters; - -export function formatScreenShareDeliveryNotice(i18n: I18n, notice: ScreenShareDeliveryNotice): string { - const format = SCREEN_SHARE_DELIVERY_NOTICE_FORMATTERS[notice.kind] as ( - i18n: I18n, - notice: ScreenShareDeliveryNotice, - ) => string; - return format(i18n, notice); -} - -const TRY_FULL_QUALITY_BLOCKING_NOTICE_KINDS = new Set([ - 'browser-resolution', - 'capture-resolution', - 'codec-device', - 'codec-switched', - 'codec-viewer', - 'connection-short', - 'encoder-recovered', - 'pinned-codec-short', -]); - -export interface ScreenShareDeliveryStatus { - sending: string | null; - askedFor: string | null; - notice: string | null; - sourceRate: string | null; - hasRows: boolean; - canTryFullQuality: boolean; -} - const SCREEN_SHARE_SOURCE_BOX = resolveEffectiveScreenShareDimensions('source', null); -function formatScreenShareTargetLabel(i18n: I18n, target: ScreenShareTarget): string { +export function formatScreenShareTargetLabel(i18n: I18n, target: ScreenShareTarget): string { if ( target.resolution === 'source' && target.width === SCREEN_SHARE_SOURCE_BOX.width && @@ -571,44 +363,3 @@ function formatScreenShareTargetLabel(i18n: I18n, target: ScreenShareTarget): st } return formatScreenShareResolutionLabel(target.width, target.height); } - -export function formatScreenShareDeliveryStatus( - i18n: I18n, - plan: ScreenShareDeliveryPlan | null, - notice: ScreenShareDeliveryNotice | null, -): ScreenShareDeliveryStatus { - const startedLower = notice?.kind === 'started-lower'; - const steppedDown = plan !== null && plan.levelIndex > 0; - const sending = - plan === null - ? null - : i18n._(SCREEN_SHARE_STATUS_SENDING_DESCRIPTOR, { - resolution: formatScreenShareResolutionLabel(plan.level.width, plan.level.height), - frameRate: plan.level.frameRate, - codec: CODEC_DISPLAY_LABEL[plan.codec], - }); - const askedFor = - plan !== null && - (plan.level.width !== plan.target.width || - plan.level.height !== plan.target.height || - plan.level.frameRate !== plan.target.frameRate) - ? i18n._(SCREEN_SHARE_STATUS_ASKED_FOR_DESCRIPTOR, { - resolution: formatScreenShareTargetLabel(i18n, plan.target), - frameRate: plan.target.frameRate, - }) - : null; - const noticeText = notice === null ? null : formatScreenShareDeliveryNotice(i18n, notice); - const sourceRate = - plan === null || plan.sourceFrameRate === null - ? null - : i18n._(SCREEN_SHARE_STATUS_SOURCE_RATE_DESCRIPTOR, {sourceFrameRate: Math.round(plan.sourceFrameRate)}); - return { - sending, - askedFor, - notice: noticeText, - sourceRate, - hasRows: sending !== null || askedFor !== null || noticeText !== null || sourceRate !== null, - canTryFullQuality: - (steppedDown || startedLower) && (notice === null || !TRY_FULL_QUALITY_BLOCKING_NOTICE_KINDS.has(notice.kind)), - }; -} diff --git a/fluxer_docs/src/content/docs/admin-api/instance.mdx b/fluxer_docs/src/content/docs/admin-api/instance.mdx index ce7822097..97264af3a 100644 --- a/fluxer_docs/src/content/docs/admin-api/instance.mdx +++ b/fluxer_docs/src/content/docs/admin-api/instance.mdx @@ -35,7 +35,6 @@ Missing settings use the defaults documented below. Invalid stored configuration | sso | [SSO configuration](#sso-configuration-object) object | Single sign-on settings | | gateway_rollout | [Gateway rollout configuration](#gateway-rollout-configuration-object) object | Gateway admission and dispatch tuning | | voice_noise_suppression | [voice noise suppression configuration](#voice-noise-suppression-configuration-object) object | Client-side noise suppression rollout | -| screen_share_delivery | [screen share delivery configuration](#screen-share-delivery-configuration-object) object | Adaptive screen share delivery rollout | | experiment_delivery | [experiment delivery configuration](#experiment-delivery-configuration-object) object | Cadence every client polls the experiments route on | | registration | [registration configuration](#registration-configuration-object) object | Registration policy, issued URLs, and pending registrations | | self_hosted | boolean | Whether the deployment runs in self-hosted mode | @@ -122,29 +121,6 @@ Every field is present on read. An absent document or missing field uses the def How often a client revalidates this rollout is not set here. It is set once for every experiment in the [experiment delivery configuration](#experiment-delivery-configuration-object) below. -## Screen share delivery configuration object - -The instance rollout of adaptive screen share delivery. [Experiments](/http-api/experiments/) defines what a client resolves from it and what each arm does. - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| enabled | boolean | Whether the rollout runs at all (default false) | -| config_version | integer | Revision counter, raised by Fluxer and never accepted from a request | -| rollout_basis_points | integer | Share of accounts the rollout selects, in basis points (0-10000, default 0) | -| rollout_salt | string | Salt of the sampling hash (1-64 characters, default `screen-share-delivery-v1`) | -| included_user_ids | array[snowflake] | Accounts the rollout always selects, up to 1000 entries (default empty) | -| excluded_user_ids | array[snowflake] | Accounts the rollout never selects, up to 1000 entries (default empty) | - -Every field is present on read. An absent document or missing field uses the defaults above. - -`excluded_user_ids` is applied before `included_user_ids`, so the rollout never selects an account in both. - -A client reads this rollout once, when a screen share starts, and holds that answer for the life of the share. Turning the rollout off leaves a share that is already running on the arm it started on. - -How often a client revalidates this rollout is not set here. It is set once for every experiment in the [experiment delivery configuration](#experiment-delivery-configuration-object) below. - ## Experiment delivery configuration object How often a client polls [Get experiment assignments](/http-api/experiments/#get-experiment-assignments), and how widely those polls are spread. The setting is instance-wide and applies to every experiment at once, so adding an experiment adds no second cadence to tune. @@ -553,7 +529,6 @@ The body has one optional object for each section. Fluxer leaves an absent secti | sso?1 | object | Every [SSO configuration](#sso-configuration-object) field except `client_secret_set` and `redirect_uri`, plus `client_secret` | | gateway_rollout? | object | Any subset of the [Gateway rollout configuration](#gateway-rollout-configuration-object) fields, each bound as documented there | | voice_noise_suppression? | object | Any subset of the [noise suppression](#voice-noise-suppression-configuration-object) fields | -| screen_share_delivery? | object | Any subset of the [screen share delivery](#screen-share-delivery-configuration-object) fields | | experiment_delivery? | object | Any subset of the [experiment delivery](#experiment-delivery-configuration-object) fields | | registration? | object | `mode` and `admin_registration_urls_enabled` | | app_public?2 | object | `branding`, `setup`, `legal`, and `registration` sub-objects, each merged field by field | @@ -567,8 +542,6 @@ The body has one optional object for each section. Fluxer leaves an absent secti `voice_noise_suppression` takes every [voice noise suppression configuration](#voice-noise-suppression-configuration-object) field except `config_version`, each bound as documented there. Fluxer raises `config_version` by one on each request that supplies at least one of them. A section that is absent, or present with no field set, writes nothing and leaves `config_version` alone. -`screen_share_delivery` takes every [screen share delivery configuration](#screen-share-delivery-configuration-object) field except `config_version`, each bound as documented there. Fluxer raises `config_version` by one on each request that supplies at least one of them. A section that is absent, or present with no field set, writes nothing and leaves `config_version` alone. - `experiment_delivery` takes both [experiment delivery configuration](#experiment-delivery-configuration-object) fields, each bound as documented there. It is a section of its own, so a write to it changes no `config_version` and changes no assignment, only the cadence on which clients ask for one. 3 A secret such as `klipy_api_key`, `api_key`, `hcaptcha_secret_key`, `turnstile_secret_key`, or the SMTP `password` is written when supplied and left alone when absent. `integrations.bluesky.keys` is the only way to write the Bluesky signing keys counted as `bluesky.key_count`. It takes up to 8 entries of `kid` (1-255 characters) and nullable `private_key` (up to 10000 characters), and replaces the stored key set outright @@ -605,7 +578,7 @@ Fluxer skips URL validation while the merged configuration leaves single sign-on | 400 | [error response](/admin-api/#error-response) | A policy transition is refused, returned as `INSTANCE_POLICY_TRANSITION_NOT_ALLOWED` | :::caution[Sections are applied one after another] -The order is `gateway_rollout`, `voice_noise_suppression`, `screen_share_delivery`, `experiment_delivery`, `sso`, `registration`, `app_public` branding, legal, and registration fields, `integrations`, `media`, `policy`, and finally `app_public.setup`. A failure part way through leaves the earlier sections written. +The order is `gateway_rollout`, `voice_noise_suppression`, `experiment_delivery`, `sso`, `registration`, `app_public` branding, legal, and registration fields, `integrations`, `media`, `policy`, and finally `app_public.setup`. A failure part way through leaves the earlier sections written. ::: ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/experiments.mdx b/fluxer_docs/src/content/docs/http-api/experiments.mdx index c37b53a56..97839d139 100644 --- a/fluxer_docs/src/content/docs/http-api/experiments.mdx +++ b/fluxer_docs/src/content/docs/http-api/experiments.mdx @@ -6,7 +6,7 @@ description: The experiment assignments envelope, the revalidation and polling c import RouteHeader from '@/components/RouteHeader.astro'; -An experiment is an instance-wide rollout that an operator configures. For each account, Fluxer works out from that configuration whether the account is in the rollout and which settings the account receives. The single route on this page resolves every experiment the server defines and returns them in one envelope, together with the polling cadence they share. This server defines `voice_noise_suppression`, whose placement protocol [Voice](/voice/) defines, and `screen_share_delivery`, which selects whether a client adapts its own screen share after it starts. +An experiment is an instance-wide rollout that an operator configures. For each account, Fluxer works out from that configuration whether the account is in the rollout and which settings the account receives. The single route on this page resolves every experiment the server defines and returns them in one envelope, together with the polling cadence they share. This server defines `voice_noise_suppression`, whose placement protocol [Voice](/voice/) defines. Every assignment is advice. A client that ignores one behaves as it does with the rollout off, and no route and no Gateway event reports what a client actually ran. @@ -33,11 +33,10 @@ One entry per experiment. The envelope reports this object even when it is empty | Field | Type | Description | | --- | --- | --- | | voice_noise_suppression? | [noise suppression assignment](#noise-suppression-assignment-object) object | The caller's noise suppression assignment | -| screen_share_delivery? | [screen share delivery assignment](#screen-share-delivery-assignment-object) object | The caller's screen share delivery assignment | Ignore unknown experiments and treat a missing experiment as off. -This server version writes `voice_noise_suppression` and `screen_share_delivery` on every response, including while a rollout is disabled. The disabled value is the first [resolution outcome](#resolution-outcomes) below, which reports `enabled` false and the stored `config_version`, so a client that compares `config_version` with the value from its previous response can see that an operator saved the configuration, even while the rollout stays disabled, and needs no second request for it. +This server version writes `voice_noise_suppression` on every response, including while a rollout is disabled. The disabled value is the first [resolution outcome](#resolution-outcomes) below, which reports `enabled` false and the stored `config_version`, so a client that compares `config_version` with the value from its previous response can see that an operator saved the configuration, even while the rollout stays disabled, and needs no second request for it. ## Noise suppression backends @@ -103,33 +102,6 @@ One backend replacement scoped to one guild. While the caller is connected to a An override naming a backend that is absent from `enabled_backends` is dropped before the response is written, so every entry is runnable. -## Screen share delivery assignment object - -One resolution of the instance screen share delivery rollout against one account. Every field is present whenever the key is written. - -The rollout selects whether a client adapts its own screen share after the share starts. A drawn client measures what its encoder sends, steps the share down a resolution and frame rate ladder while the encoder cannot keep up, probes back up when it can, remembers the rung it settled on for each codec, and reports what is going out to the sharer. A client that is not drawn publishes the target the account's settings ask for and holds it for the life of the share. Both arms recover a screen share whose encoder stalls. Neither arm changes what the API returns, and no route reports which arm a client ran. - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| enabled | boolean | Whether the rollout is running on this instance | -| config_version | integer | The revision of the instance configuration this assignment was resolved from | -| user_targeted | boolean | Whether the caller is inside the rollout | -| source | ?string | Which rule targeted the caller, one of `user_rule` or `canary`, and null where the caller is not targeted | - -### Delivery resolution outcomes - -The outcomes below set `user_targeted` to false, and they differ in what else they report. - -1. The rollout is off. `enabled` is false and `source` is null. -2. The operator has excluded the caller. `enabled` is true and `source` is null. -3. The caller was not drawn. `enabled` is true and `source` is null. - -A caller is drawn either by the operator's allowlist, which sets `source` to `user_rule`, or by the sampled share of the account population, which sets `source` to `canary`. The blocklist is read before the allowlist, so an account named in both is not drawn. - -`config_version` reports the stored revision in all outcomes, the rollout being off included. A client branches on `user_targeted` alone, and reads the assignment once when a share starts rather than while one is running. - ## Get experiment assignments diff --git a/packages/schema/src/domains/admin/AdminSchemas.ts b/packages/schema/src/domains/admin/AdminSchemas.ts index bfa6aad0a..649ddd251 100644 --- a/packages/schema/src/domains/admin/AdminSchemas.ts +++ b/packages/schema/src/domains/admin/AdminSchemas.ts @@ -23,10 +23,6 @@ import { ExperimentDeliveryConfigResponse, ExperimentDeliveryConfigUpdateRequest, } from '@fluxer/schema/src/domains/experiment/ExperimentSchemas'; -import { - ScreenShareDeliveryConfigResponse, - ScreenShareDeliveryConfigUpdateRequest, -} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; import {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas'; import { InstanceCaptchaProviderSchema, @@ -648,7 +644,6 @@ export const InstanceConfigResponse = z.object({ sso: SsoConfigResponse, gateway_rollout: GatewayRolloutConfigResponse, voice_noise_suppression: VoiceNoiseSuppressionConfigResponse, - screen_share_delivery: ScreenShareDeliveryConfigResponse, experiment_delivery: ExperimentDeliveryConfigResponse, registration: InstanceRegistrationResponse, self_hosted: z.boolean(), @@ -685,7 +680,6 @@ const InstancePolicyUpdateSchema = z.object({ export const InstanceConfigUpdateRequest = z.object({ gateway_rollout: GatewayRolloutConfigUpdateRequest.nullish(), voice_noise_suppression: VoiceNoiseSuppressionConfigUpdateRequest.nullish(), - screen_share_delivery: ScreenShareDeliveryConfigUpdateRequest.nullish(), experiment_delivery: ExperimentDeliveryConfigUpdateRequest.nullish(), registration: z .object({ diff --git a/packages/schema/src/domains/experiment/ClientBehaviorExperiment.ts b/packages/schema/src/domains/experiment/ClientBehaviorExperiment.ts deleted file mode 100644 index 8440955a6..000000000 --- a/packages/schema/src/domains/experiment/ClientBehaviorExperiment.ts +++ /dev/null @@ -1,58 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {EXPERIMENT_BUCKET_RESOLUTION, experimentBucket} from '@fluxer/schema/src/domains/experiment/ExperimentBucket'; -import {z} from 'zod'; - -const CLIENT_BEHAVIOR_MAX_TARGETED_USERS = 1000; -const CLIENT_BEHAVIOR_ASSIGNMENT_SOURCES = ['user_rule', 'canary'] as const; - -export function createClientBehaviorExperiment({defaultRolloutSalt}: {defaultRolloutSalt: string}) { - const targetIdSchema = z.string().regex(/^\d{1,20}$/u); - const targetedUserIdsSchema = z.array(targetIdSchema).max(CLIENT_BEHAVIOR_MAX_TARGETED_USERS); - const configFields = { - enabled: z.boolean(), - config_version: z.number().int().min(0), - rollout_basis_points: z.number().int().min(0).max(EXPERIMENT_BUCKET_RESOLUTION), - rollout_salt: z.string().trim().min(1).max(64), - included_user_ids: targetedUserIdsSchema, - excluded_user_ids: targetedUserIdsSchema, - }; - const ConfigSchema = z.object({ - enabled: configFields.enabled.default(false), - config_version: configFields.config_version.default(0), - rollout_basis_points: configFields.rollout_basis_points.default(0), - rollout_salt: configFields.rollout_salt.default(defaultRolloutSalt), - included_user_ids: configFields.included_user_ids.default([]), - excluded_user_ids: configFields.excluded_user_ids.default([]), - }); - const ConfigUpdateRequest = z.object(configFields).omit({config_version: true}).partial(); - const AssignmentResponse = z.object({ - enabled: configFields.enabled, - config_version: z.number().int(), - user_targeted: z.boolean(), - source: z.enum(CLIENT_BEHAVIOR_ASSIGNMENT_SOURCES).nullable(), - }); - type Config = z.infer; - type Assignment = z.infer; - const INERT_ASSIGNMENT: Assignment = { - enabled: false, - config_version: 0, - user_targeted: false, - source: null, - }; - const resolveAssignment = (config: Config, userId: string): Assignment => { - if (!config.enabled) { - return {...INERT_ASSIGNMENT, config_version: config.config_version}; - } - const shared = {enabled: true, config_version: config.config_version}; - if (config.excluded_user_ids.includes(userId)) { - return {...shared, user_targeted: false, source: null}; - } - if (config.included_user_ids.includes(userId)) { - return {...shared, user_targeted: true, source: 'user_rule'}; - } - const inCanary = experimentBucket(userId, config.rollout_salt) < config.rollout_basis_points; - return {...shared, user_targeted: inCanary, source: inCanary ? 'canary' : null}; - }; - return {ConfigSchema, ConfigUpdateRequest, AssignmentResponse, INERT_ASSIGNMENT, resolveAssignment}; -} diff --git a/packages/schema/src/domains/experiment/ExperimentSchemas.ts b/packages/schema/src/domains/experiment/ExperimentSchemas.ts index 424c87d65..73c36f9cc 100644 --- a/packages/schema/src/domains/experiment/ExperimentSchemas.ts +++ b/packages/schema/src/domains/experiment/ExperimentSchemas.ts @@ -4,10 +4,6 @@ import { INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT, VoiceNoiseSuppressionAssignmentResponse, } from '@fluxer/schema/src/domains/admin/VoiceNoiseSuppressionSchemas'; -import { - INERT_SCREEN_SHARE_DELIVERY_ASSIGNMENT, - ScreenShareDeliveryAssignmentResponse, -} from '@fluxer/schema/src/domains/experiment/ScreenShareDeliverySchemas'; import {z} from 'zod'; export const EXPERIMENT_MIN_POLL_INTERVAL_SECONDS = 60; @@ -46,7 +42,6 @@ export type ExperimentDeliveryConfigResponse = z.infer; - -export const ScreenShareDeliveryConfigUpdateRequest = screenShareDelivery.ConfigUpdateRequest; - -export type ScreenShareDeliveryConfigUpdateRequest = z.infer; - -export const ScreenShareDeliveryConfigResponse = screenShareDelivery.ConfigSchema; - -export const ScreenShareDeliveryAssignmentResponse = screenShareDelivery.AssignmentResponse; - -export type ScreenShareDeliveryAssignmentResponse = z.infer; - -export const INERT_SCREEN_SHARE_DELIVERY_ASSIGNMENT: ScreenShareDeliveryAssignmentResponse = - screenShareDelivery.INERT_ASSIGNMENT; - -export function resolveScreenShareDeliveryAssignment( - config: ScreenShareDeliveryConfig, - userId: string, -): ScreenShareDeliveryAssignmentResponse { - return screenShareDelivery.resolveAssignment(config, userId); -}