diff --git a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt index 4ef455f2..3fe392d6 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt @@ -102,8 +102,8 @@ private fun BatteryOptimizationEnabledContent( .padding(bottom = 16.dp), verticalArrangement = Arrangement.spacedBy(8.dp) ) { - Text( - text = "bitchat", + Text( + text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineLarge.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -112,8 +112,8 @@ private fun BatteryOptimizationEnabledContent( color = colorScheme.onBackground ) - Text( - text = "battery optimization detected", + Text( + text = stringResource(R.string.battery_optimization_detected_title), fontSize = 12.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.7f) @@ -136,22 +136,22 @@ private fun BatteryOptimizationEnabledContent( ) { Icon( imageVector = Icons.Filled.Power, - contentDescription = "Battery Optimization", + contentDescription = stringResource(R.string.cd_battery_optimization), tint = colorScheme.primary, modifier = Modifier .padding(top = 2.dp) .size(20.dp) ) Column { - Text( - text = "Battery Optimization Enabled", + Text( + text = stringResource(R.string.battery_optimization_enabled_title), style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Medium, color = colorScheme.onBackground ) Spacer(modifier = Modifier.height(4.dp)) - Text( - text = "bitchat needs to run in the background to maintain mesh connections. battery optimization can interrupt these connections.", + Text( + text = stringResource(R.string.battery_optimization_explanation_short), style = MaterialTheme.typography.bodySmall, color = colorScheme.onBackground.copy(alpha = 0.8f) ) @@ -176,22 +176,22 @@ private fun BatteryOptimizationEnabledContent( ) { Icon( imageVector = Icons.Filled.CheckCircle, - contentDescription = "Benefits", + contentDescription = stringResource(R.string.cd_benefits), tint = colorScheme.primary, modifier = Modifier .padding(top = 2.dp) .size(20.dp) ) Column { - Text( - text = "Benefits of Disabling", + Text( + text = stringResource(R.string.benefits_of_disabling), style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Medium, color = colorScheme.onBackground ) Spacer(modifier = Modifier.height(4.dp)) - Text( - text = "• reliable message delivery\n• maintains mesh connectivity\n• prevents connection drops", + Text( + text = stringResource(R.string.battery_benefits_short), style = MaterialTheme.typography.bodySmall, color = colorScheme.onBackground.copy(alpha = 0.8f) ) @@ -222,8 +222,8 @@ private fun BatteryOptimizationEnabledContent( ) Spacer(modifier = Modifier.width(8.dp)) } - Text( - text = "Disable Battery Optimization", + Text( + text = stringResource(R.string.disable_battery_optimization), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold @@ -240,8 +240,8 @@ private fun BatteryOptimizationEnabledContent( modifier = Modifier.weight(1f), enabled = !isLoading ) { - Text( - text = "Check Again", + Text( + text = stringResource(R.string.check_again), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace ) @@ -256,8 +256,8 @@ private fun BatteryOptimizationEnabledContent( modifier = Modifier.weight(1f), enabled = !isLoading ) { - Text( - text = "Skip for Now", + Text( + text = stringResource(R.string.battery_optimization_skip), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace ) @@ -282,7 +282,7 @@ private fun BatteryOptimizationCheckingContent( horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "bitchat", + text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineLarge.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -291,8 +291,8 @@ private fun BatteryOptimizationCheckingContent( color = colorScheme.onBackground ) - Text( - text = "battery optimization disabled", + Text( + text = stringResource(R.string.battery_optimization_disabled_title), fontSize = 12.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.7f) @@ -312,15 +312,15 @@ private fun BatteryOptimizationCheckingContent( Icon( imageVector = Icons.Filled.BatteryStd, - contentDescription = "Checking Battery Optimization", + contentDescription = stringResource(R.string.cd_checking_battery_optimization), modifier = Modifier .size(64.dp) .rotate(rotation), tint = colorScheme.primary ) - Text( - text = "bitchat can run reliably in the background", + Text( + text = stringResource(R.string.battery_optimization_success_message), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.8f) @@ -345,7 +345,7 @@ private fun BatteryOptimizationNotSupportedContent( horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "bitchat", + text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineLarge.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -355,7 +355,7 @@ private fun BatteryOptimizationNotSupportedContent( ) Text( - text = "battery optimization not required", + text = stringResource(R.string.battery_optimization_not_required), fontSize = 12.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.7f) @@ -364,13 +364,13 @@ private fun BatteryOptimizationNotSupportedContent( Icon( imageVector = Icons.Filled.CheckCircle, - contentDescription = "Battery Optimization Not Supported", + contentDescription = stringResource(R.string.cd_not_supported_battery_optimization), modifier = Modifier.size(64.dp), tint = colorScheme.primary ) Text( - text = "your device doesn't require battery optimization settings. bitchat will run normally.", + text = stringResource(R.string.battery_optimization_not_supported_message), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.8f) @@ -385,8 +385,8 @@ private fun BatteryOptimizationNotSupportedContent( containerColor = colorScheme.primary ) ) { - Text( - text = "Continue", + Text( + text = stringResource(R.string.continue_btn), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold @@ -394,4 +394,4 @@ private fun BatteryOptimizationNotSupportedContent( ) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/bitchat/android/onboarding/BluetoothCheckScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/BluetoothCheckScreen.kt index 25dfd0d5..bdfc9733 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/BluetoothCheckScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/BluetoothCheckScreen.kt @@ -14,6 +14,8 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * Screen shown when checking Bluetooth status or requesting Bluetooth enable @@ -69,13 +71,13 @@ private fun BluetoothDisabledContent( // Bluetooth icon - using Bluetooth outlined icon in app's green color Icon( imageVector = Icons.Outlined.Bluetooth, - contentDescription = "Bluetooth", + contentDescription = stringResource(R.string.cd_bluetooth), modifier = Modifier.size(64.dp), tint = Color(0xFF00C851) // App's main green color ) Text( - text = "Bluetooth Required", + text = stringResource(R.string.bluetooth_required), style = MaterialTheme.typography.headlineSmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -95,8 +97,8 @@ private fun BluetoothDisabledContent( modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp) ) { - Text( - text = "bitchat needs Bluetooth to:", + Text( + text = stringResource(R.string.bluetooth_needs_for), style = MaterialTheme.typography.bodyMedium.copy( fontWeight = FontWeight.Medium, color = colorScheme.onSurface @@ -105,11 +107,8 @@ private fun BluetoothDisabledContent( modifier = Modifier.fillMaxWidth() ) - Text( - text = "• Discover nearby users\n" + - "• Create mesh network connections\n" + - "• Send and receive messages\n" + - "• Work without internet or servers", + Text( + text = stringResource(R.string.bluetooth_needs_bullets), style = MaterialTheme.typography.bodySmall.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.8f) @@ -132,8 +131,8 @@ private fun BluetoothDisabledContent( containerColor = Color(0xFF00C851) // App's main green color ) ) { - Text( - text = "Enable Bluetooth", + Text( + text = stringResource(R.string.enable_bluetooth), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold @@ -177,14 +176,14 @@ private fun BluetoothNotSupportedContent( elevation = CardDefaults.cardElevation(defaultElevation = 4.dp) ) { Text( - text = "❌", + text = stringResource(R.string.warning_emoji), style = MaterialTheme.typography.headlineLarge, modifier = Modifier.padding(16.dp) ) } Text( - text = "Bluetooth Not Supported", + text = stringResource(R.string.bluetooth_not_supported), style = MaterialTheme.typography.headlineSmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -201,7 +200,7 @@ private fun BluetoothNotSupportedContent( elevation = CardDefaults.cardElevation(defaultElevation = 2.dp) ) { Text( - text = "This device doesn't support Bluetooth Low Energy (BLE), which is required for bitchat to function.\n\nbitchat needs BLE to create mesh networks and communicate with nearby devices without internet.", + text = stringResource(R.string.bluetooth_unsupported_explanation), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface @@ -222,7 +221,7 @@ private fun BluetoothCheckingContent( horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "bitchat", + text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineLarge.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -234,7 +233,7 @@ private fun BluetoothCheckingContent( BluetoothLoadingIndicator() Text( - text = "Checking Bluetooth status...", + text = stringResource(R.string.checking_bluetooth_status), style = MaterialTheme.typography.bodyLarge.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.7f) diff --git a/app/src/main/java/com/bitchat/android/onboarding/InitializingScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/InitializingScreen.kt index 24a0a953..bd231afd 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/InitializingScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/InitializingScreen.kt @@ -12,6 +12,8 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * Loading screen shown during app initialization after permissions are granted @@ -59,7 +61,7 @@ fun InitializingScreen(modifier: Modifier) { ) { // App title Text( - text = "bitchat", + text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineLarge.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -88,7 +90,7 @@ fun InitializingScreen(modifier: Modifier) { horizontalArrangement = Arrangement.Center ) { Text( - text = "Initializing mesh network", + text = stringResource(R.string.initializing_mesh_network), style = MaterialTheme.typography.bodyLarge.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.7f) @@ -98,7 +100,7 @@ fun InitializingScreen(modifier: Modifier) { // Animated dots dots.forEach { alpha -> Text( - text = ".", + text = stringResource(R.string.dot), style = MaterialTheme.typography.bodyLarge.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = alpha) @@ -123,7 +125,7 @@ fun InitializingScreen(modifier: Modifier) { horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "Setting up Bluetooth mesh networking...", + text = stringResource(R.string.setting_up_bluetooth), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.8f) @@ -132,7 +134,7 @@ fun InitializingScreen(modifier: Modifier) { ) Text( - text = "This should only take a few seconds", + text = stringResource(R.string.should_take_seconds), style = MaterialTheme.typography.bodySmall.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.6f) @@ -173,14 +175,14 @@ fun InitializationErrorScreen( elevation = CardDefaults.cardElevation(defaultElevation = 4.dp) ) { Text( - text = "⚠️", + text = stringResource(R.string.warning_emoji), style = MaterialTheme.typography.headlineLarge, modifier = Modifier.padding(16.dp) ) } Text( - text = "Setup Not Complete", + text = stringResource(R.string.setup_not_complete), style = MaterialTheme.typography.headlineSmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -216,7 +218,7 @@ fun InitializationErrorScreen( modifier = Modifier.fillMaxWidth() ) { Text( - text = "Try Again", + text = stringResource(R.string.try_again), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold @@ -230,7 +232,7 @@ fun InitializationErrorScreen( modifier = Modifier.fillMaxWidth() ) { Text( - text = "Open Settings", + text = stringResource(R.string.open_settings), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace ), diff --git a/app/src/main/java/com/bitchat/android/onboarding/LocationCheckScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/LocationCheckScreen.kt index 5a544e00..c5bb8c9b 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/LocationCheckScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/LocationCheckScreen.kt @@ -15,6 +15,8 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * Screen shown when checking location services status or requesting location services enable @@ -70,13 +72,13 @@ private fun LocationDisabledContent( // Location icon - using LocationOn outlined icon in app's green color Icon( imageVector = Icons.Outlined.LocationOn, - contentDescription = "Location Services", + contentDescription = stringResource(R.string.cd_location_services), modifier = Modifier.size(64.dp), tint = Color(0xFF00C851) // App's main green color ) Text( - text = "Location Services Required", + text = stringResource(R.string.location_services_required), style = MaterialTheme.typography.headlineSmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -103,13 +105,13 @@ private fun LocationDisabledContent( ) { Icon( imageVector = Icons.Filled.Security, - contentDescription = "Privacy", + contentDescription = stringResource(R.string.cd_privacy), tint = Color(0xFF4CAF50), modifier = Modifier.size(20.dp) ) Spacer(modifier = Modifier.width(8.dp)) - Text( - text = "Privacy First", + Text( + text = stringResource(R.string.privacy_first), style = MaterialTheme.typography.bodyMedium.copy( fontWeight = FontWeight.Bold, color = colorScheme.onSurface @@ -117,8 +119,8 @@ private fun LocationDisabledContent( ) } - Text( - text = "bitchat does NOT track your location.\n\nLocation services are required for Bluetooth scanning and for the Geohash chat feature.", + Text( + text = stringResource(R.string.location_explanation), style = MaterialTheme.typography.bodySmall.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.8f) @@ -127,8 +129,8 @@ private fun LocationDisabledContent( Spacer(modifier = Modifier.height(4.dp)) - Text( - text = "bitchat needs location services for:", + Text( + text = stringResource(R.string.location_needs_for), style = MaterialTheme.typography.bodyMedium.copy( fontWeight = FontWeight.Medium, color = colorScheme.onSurface @@ -137,11 +139,8 @@ private fun LocationDisabledContent( modifier = Modifier.fillMaxWidth() ) - Text( - text = "• Bluetooth device scanning\n" + - "• Discovering nearby users on mesh network\n" + - "• Geohash chat feature\n" + - "• No tracking or location collection", + Text( + text = stringResource(R.string.location_needs_bullets), style = MaterialTheme.typography.bodySmall.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.8f) @@ -164,8 +163,8 @@ private fun LocationDisabledContent( containerColor = Color(0xFF00C851) // App's main green color ) ) { - Text( - text = "Open Location Settings", + Text( + text = stringResource(R.string.open_location_settings), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold @@ -178,8 +177,8 @@ private fun LocationDisabledContent( onClick = onRetry, modifier = Modifier.fillMaxWidth() ) { - Text( - text = "Check Again", + Text( + text = stringResource(R.string.check_again), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace ), @@ -202,13 +201,13 @@ private fun LocationNotAvailableContent( // Error icon Icon( imageVector = Icons.Filled.ErrorOutline, - contentDescription = "Error", + contentDescription = stringResource(R.string.cd_error), modifier = Modifier.size(64.dp), tint = colorScheme.error ) Text( - text = "Location Services Unavailable", + text = stringResource(R.string.location_services_unavailable), style = MaterialTheme.typography.headlineSmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -225,7 +224,7 @@ private fun LocationNotAvailableContent( elevation = CardDefaults.cardElevation(defaultElevation = 2.dp) ) { Text( - text = "Location services are not available on this device. This is unusual as location services are standard on Android devices.\n\nbitchat needs location services for Bluetooth scanning to work properly (Android requirement). Without this, the app cannot discover nearby users.", + text = stringResource(R.string.location_unavailable_explanation), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface @@ -246,7 +245,7 @@ private fun LocationCheckingContent( horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "bitchat", + text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineLarge.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -258,7 +257,7 @@ private fun LocationCheckingContent( LocationLoadingIndicator() Text( - text = "Checking location services...", + text = stringResource(R.string.checking_location_services), style = MaterialTheme.typography.bodyLarge.copy( fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.7f) diff --git a/app/src/main/java/com/bitchat/android/onboarding/PermissionExplanationScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/PermissionExplanationScreen.kt index 7569d345..2b84aefa 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/PermissionExplanationScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/PermissionExplanationScreen.kt @@ -24,6 +24,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * Permission explanation screen shown before requesting permissions @@ -65,7 +67,7 @@ fun PermissionExplanationScreen( modifier = Modifier.fillMaxWidth() ) { Text( - text = "bitchat", + text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineLarge.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -76,7 +78,7 @@ fun PermissionExplanationScreen( } Text( - text = "decentralized mesh messaging with end-to-end encryption", + text = stringResource(R.string.about_tagline), fontSize = 12.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.7f) @@ -99,7 +101,7 @@ fun PermissionExplanationScreen( ) { Icon( imageVector = Icons.Filled.Security, - contentDescription = "Privacy Protected", + contentDescription = stringResource(R.string.cd_privacy_protected), tint = colorScheme.primary, modifier = Modifier .padding(top = 2.dp) @@ -107,16 +109,14 @@ fun PermissionExplanationScreen( ) Column { Text( - text = "Your Privacy is Protected", + text = stringResource(R.string.privacy_protected), style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Medium, color = colorScheme.onBackground ) Spacer(modifier = Modifier.height(4.dp)) Text( - text = "• no tracking or data collection\n" + - "• Bluetooth mesh chats are fully offline\n" + - "• Geohash chats use the internet", + text = stringResource(R.string.privacy_bullets), style = MaterialTheme.typography.bodySmall, fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.8f) @@ -128,7 +128,7 @@ fun PermissionExplanationScreen( // Section header Text( - text = "permissions", + text = stringResource(R.string.permissions_header), style = MaterialTheme.typography.labelLarge, color = colorScheme.onBackground.copy(alpha = 0.7f), modifier = Modifier.padding(top = 8.dp, bottom = 8.dp) @@ -163,7 +163,7 @@ fun PermissionExplanationScreen( ) ) { Text( - text = "Grant Permissions", + text = stringResource(R.string.grant_permissions), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold @@ -218,12 +218,12 @@ private fun PermissionCategoryCard( ) { Icon( imageVector = Icons.Filled.Warning, - contentDescription = "Warning", + contentDescription = stringResource(R.string.cd_warning), tint = Color(0xFFFF9800), modifier = Modifier.size(16.dp) ) Text( - text = "bitchat does NOT track your location", + text = stringResource(R.string.location_tracking_warning), style = MaterialTheme.typography.bodySmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Medium, diff --git a/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt b/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt index bce3ef1c..091cf630 100644 --- a/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/AboutSheet.kt @@ -29,7 +29,8 @@ import androidx.compose.ui.unit.sp import com.bitchat.android.nostr.NostrProofOfWork import com.bitchat.android.nostr.PoWPreferenceManager import com.bitchat.android.ui.debug.DebugSettingsSheet - +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * About Sheet for bitchat app information * Matches the design language of LocationChannelsSheet @@ -102,7 +103,7 @@ fun AboutSheet( verticalAlignment = Alignment.Bottom ) { Text( - text = "bitchat", + text = stringResource(R.string.app_name), style = TextStyle( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -112,7 +113,7 @@ fun AboutSheet( ) Text( - text = "v$versionName", + text = stringResource(R.string.version_prefix, versionName?:""), fontSize = 11.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onBackground.copy(alpha = 0.5f), @@ -123,7 +124,7 @@ fun AboutSheet( } Text( - text = "decentralized mesh messaging with end-to-end encryption", + text = stringResource(R.string.about_tagline), fontSize = 12.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.7f) @@ -141,7 +142,7 @@ fun AboutSheet( ) { Icon( imageVector = Icons.Filled.Bluetooth, - contentDescription = "Offline Mesh Chat", + contentDescription = stringResource(R.string.cd_offline_mesh_chat), tint = MaterialTheme.colorScheme.primary, modifier = Modifier .padding(top = 2.dp) @@ -150,14 +151,14 @@ fun AboutSheet( Spacer(modifier = Modifier.width(16.dp)) Column { Text( - text = "Offline Mesh Chat", + text = stringResource(R.string.about_offline_mesh_title), style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Medium, color = MaterialTheme.colorScheme.onBackground ) Spacer(modifier = Modifier.height(4.dp)) Text( - text = "Communicate directly via Bluetooth LE without internet or servers. Messages relay through nearby devices to extend range.", + text = stringResource(R.string.about_offline_mesh_desc), style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.8f) ) @@ -173,7 +174,7 @@ fun AboutSheet( ) { Icon( imageVector = Icons.Default.Public, - contentDescription = "Online Geohash Channels", + contentDescription = stringResource(R.string.cd_online_geohash_channels), tint = MaterialTheme.colorScheme.primary, modifier = Modifier .padding(top = 2.dp) @@ -182,14 +183,14 @@ fun AboutSheet( Spacer(modifier = Modifier.width(16.dp)) Column { Text( - text = "Online Geohash Channels", + text = stringResource(R.string.about_online_geohash_title), style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Medium, color = MaterialTheme.colorScheme.onBackground ) Spacer(modifier = Modifier.height(4.dp)) Text( - text = "Connect with people in your area using geohash-based channels. Extend the mesh using public internet relays.", + text = stringResource(R.string.about_online_geohash_desc), style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.8f) ) @@ -205,7 +206,7 @@ fun AboutSheet( ) { Icon( imageVector = Icons.Default.Lock, - contentDescription = "End-to-End Encryption", + contentDescription = stringResource(R.string.cd_end_to_end_encryption), tint = MaterialTheme.colorScheme.primary, modifier = Modifier .padding(top = 2.dp) @@ -214,14 +215,14 @@ fun AboutSheet( Spacer(modifier = Modifier.width(16.dp)) Column { Text( - text = "End-to-End Encryption", + text = stringResource(R.string.about_e2e_title), style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Medium, color = MaterialTheme.colorScheme.onBackground ) Spacer(modifier = Modifier.height(4.dp)) Text( - text = "Private messages are encrypted. Channel messages are public.", + text = stringResource(R.string.about_e2e_desc), style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.8f) ) @@ -232,7 +233,7 @@ fun AboutSheet( // Appearance Section item(key = "appearance_section") { Text( - text = "appearance", + text = stringResource(R.string.about_appearance), style = MaterialTheme.typography.labelLarge, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.7f), modifier = Modifier @@ -247,24 +248,24 @@ fun AboutSheet( FilterChip( selected = themePref.isSystem, onClick = { com.bitchat.android.ui.theme.ThemePreferenceManager.set(context, com.bitchat.android.ui.theme.ThemePreference.System) }, - label = { Text("system", fontFamily = FontFamily.Monospace) } + label = { Text(stringResource(R.string.about_system), fontFamily = FontFamily.Monospace) } ) FilterChip( selected = themePref.isLight, onClick = { com.bitchat.android.ui.theme.ThemePreferenceManager.set(context, com.bitchat.android.ui.theme.ThemePreference.Light) }, - label = { Text("light", fontFamily = FontFamily.Monospace) } + label = { Text(stringResource(R.string.about_light), fontFamily = FontFamily.Monospace) } ) FilterChip( selected = themePref.isDark, onClick = { com.bitchat.android.ui.theme.ThemePreferenceManager.set(context, com.bitchat.android.ui.theme.ThemePreference.Dark) }, - label = { Text("dark", fontFamily = FontFamily.Monospace) } + label = { Text(stringResource(R.string.about_dark), fontFamily = FontFamily.Monospace) } ) } } // Proof of Work Section item(key = "pow_section") { Text( - text = "proof of work", + text = stringResource(R.string.about_pow), style = MaterialTheme.typography.labelLarge, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.7f), modifier = Modifier @@ -289,7 +290,7 @@ fun AboutSheet( FilterChip( selected = !powEnabled, onClick = { PoWPreferenceManager.setPowEnabled(false) }, - label = { Text("pow off", fontFamily = FontFamily.Monospace) } + label = { Text(stringResource(R.string.about_pow_off), fontFamily = FontFamily.Monospace) } ) FilterChip( selected = powEnabled, @@ -299,7 +300,7 @@ fun AboutSheet( horizontalArrangement = Arrangement.spacedBy(6.dp), verticalAlignment = Alignment.CenterVertically ) { - Text("pow on", fontFamily = FontFamily.Monospace) + Text(stringResource(R.string.about_pow_on), fontFamily = FontFamily.Monospace) // Show current difficulty if (powEnabled) { Surface( @@ -313,7 +314,7 @@ fun AboutSheet( } Text( - text = "add proof of work to geohash messages for spam deterrence.", + text = stringResource(R.string.about_pow_tip), fontSize = 10.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.6f) @@ -326,7 +327,7 @@ fun AboutSheet( verticalArrangement = Arrangement.spacedBy(8.dp) ) { Text( - text = "difficulty: $powDifficulty bits (~${NostrProofOfWork.estimateMiningTime(powDifficulty)})", + text = stringResource(R.string.about_pow_difficulty, powDifficulty, NostrProofOfWork.estimateMiningTime(powDifficulty)), fontSize = 11.sp, fontFamily = FontFamily.Monospace, ) @@ -353,20 +354,20 @@ fun AboutSheet( verticalArrangement = Arrangement.spacedBy(4.dp) ) { Text( - text = "difficulty $powDifficulty requires ~${NostrProofOfWork.estimateWork(powDifficulty)} hash attempts", + text = stringResource(R.string.about_pow_difficulty_attempts, powDifficulty, NostrProofOfWork.estimateWork(powDifficulty)), fontSize = 10.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.7f) ) Text( text = when { - powDifficulty == 0 -> "no proof of work required" - powDifficulty <= 8 -> "very low - minimal spam protection" - powDifficulty <= 12 -> "low - basic spam protection" - powDifficulty <= 16 -> "medium - good spam protection" - powDifficulty <= 20 -> "high - strong spam protection" - powDifficulty <= 24 -> "very high - may cause delays" - else -> "extreme - significant computation required" + powDifficulty == 0 -> stringResource(R.string.about_pow_desc_none) + powDifficulty <= 8 -> stringResource(R.string.about_pow_desc_very_low) + powDifficulty <= 12 -> stringResource(R.string.about_pow_desc_low) + powDifficulty <= 16 -> stringResource(R.string.about_pow_desc_medium) + powDifficulty <= 20 -> stringResource(R.string.about_pow_desc_high) + powDifficulty <= 24 -> stringResource(R.string.about_pow_desc_very_high) + else -> stringResource(R.string.about_pow_desc_extreme) }, fontSize = 10.sp, fontFamily = FontFamily.Monospace, @@ -384,7 +385,7 @@ fun AboutSheet( val torMode = remember { mutableStateOf(com.bitchat.android.net.TorPreferenceManager.get(context)) } val torStatus by com.bitchat.android.net.TorManager.statusFlow.collectAsState() Text( - text = "network", + text = stringResource(R.string.about_network), style = MaterialTheme.typography.labelLarge, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.7f), modifier = Modifier @@ -429,7 +430,7 @@ fun AboutSheet( ) } Text( - text = "route internet over tor for enhanced privacy.", + text = stringResource(R.string.about_tor_route), style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f) ) @@ -446,14 +447,14 @@ fun AboutSheet( verticalArrangement = Arrangement.spacedBy(6.dp) ) { Text( - text = "tor Status: $statusText, bootstrap ${torStatus.bootstrapPercent}%", + text = stringResource(R.string.about_tor_status, statusText, torStatus.bootstrapPercent), style = MaterialTheme.typography.bodySmall, color = colorScheme.onSurface.copy(alpha = 0.75f) ) val lastLog = torStatus.lastLogLine if (lastLog.isNotEmpty()) { Text( - text = "Last: ${lastLog.take(160)}", + text = stringResource(R.string.about_last, lastLog.take(160)), style = MaterialTheme.typography.labelSmall, color = colorScheme.onSurface.copy(alpha = 0.6f) ) @@ -483,20 +484,20 @@ fun AboutSheet( ) { Icon( imageVector = Icons.Filled.Warning, - contentDescription = "Warning", + contentDescription = stringResource(R.string.cd_warning), tint = errorColor, modifier = Modifier.size(16.dp) ) Column(verticalArrangement = Arrangement.spacedBy(4.dp)) { Text( - text = "Emergency Data Deletion", + text = stringResource(R.string.about_emergency_title), fontSize = 12.sp, fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, color = errorColor ) Text( - text = "Tip: Triple-click the app title to emergency delete all stored data including messages, keys, and settings.", + text = stringResource(R.string.about_emergency_tip), fontSize = 11.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.8f) @@ -523,14 +524,14 @@ fun AboutSheet( ) ) { Text( - text = "Debug Settings", + text = stringResource(R.string.about_debug_settings), fontSize = 11.sp, fontFamily = FontFamily.Monospace ) } } Text( - text = "Open Source • Privacy First • Decentralized", + text = stringResource(R.string.about_footer), fontSize = 11.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f), @@ -557,7 +558,7 @@ fun AboutSheet( .padding(horizontal = 16.dp) ) { Text( - text = "Close", + text = stringResource(R.string.close_plain), style = MaterialTheme.typography.labelMedium.copy(fontWeight = FontWeight.Bold), color = MaterialTheme.colorScheme.onBackground ) @@ -588,7 +589,7 @@ fun PasswordPromptDialog( onDismissRequest = onDismiss, title = { Text( - text = "Enter Channel Password", + text = stringResource(R.string.pwd_prompt_title), style = MaterialTheme.typography.titleMedium, color = colorScheme.onSurface ) @@ -596,7 +597,7 @@ fun PasswordPromptDialog( text = { Column { Text( - text = "Channel $channelName is password protected. Enter the password to join.", + text = stringResource(R.string.pwd_prompt_message, channelName ?: ""), style = MaterialTheme.typography.bodyMedium, color = colorScheme.onSurface ) @@ -605,7 +606,7 @@ fun PasswordPromptDialog( OutlinedTextField( value = passwordInput, onValueChange = onPasswordChange, - label = { Text("Password", style = MaterialTheme.typography.bodyMedium) }, + label = { Text(stringResource(R.string.pwd_label), style = MaterialTheme.typography.bodyMedium) }, textStyle = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace ), @@ -619,7 +620,7 @@ fun PasswordPromptDialog( confirmButton = { TextButton(onClick = onConfirm) { Text( - text = "Join", + text = stringResource(R.string.join), style = MaterialTheme.typography.bodyMedium, color = colorScheme.primary ) @@ -628,7 +629,7 @@ fun PasswordPromptDialog( dismissButton = { TextButton(onClick = onDismiss) { Text( - text = "Cancel", + text = stringResource(R.string.cancel), style = MaterialTheme.typography.bodyMedium, color = colorScheme.onSurface ) diff --git a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt index 3b695167..b53f11e3 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt @@ -21,6 +21,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp @@ -64,7 +66,7 @@ fun TorStatusIcon( } Icon( imageVector = Icons.Outlined.Cable, - contentDescription = "Tor status", + contentDescription = stringResource(R.string.cd_tor_status), modifier = modifier, tint = cableColor ) @@ -80,23 +82,23 @@ fun NoiseSessionIcon( "uninitialized" -> Triple( Icons.Outlined.NoEncryption, Color(0x87878700), // Grey - ready to establish - "Ready for handshake" + stringResource(R.string.cd_ready_for_handshake) ) "handshaking" -> Triple( Icons.Outlined.Sync, Color(0x87878700), // Grey - in progress - "Handshake in progress" + stringResource(R.string.cd_handshake_in_progress) ) "established" -> Triple( Icons.Filled.Lock, Color(0xFFFF9500), // Orange - secure - "End-to-end encrypted" + stringResource(R.string.cd_encrypted) ) else -> { // "failed" or any other state Triple( Icons.Outlined.Warning, Color(0xFFFF4444), // Red - error - "Handshake failed" + stringResource(R.string.cd_handshake_failed) ) } } @@ -129,7 +131,7 @@ fun NicknameEditor( modifier = modifier ) { Text( - text = "@", + text = stringResource(R.string.at_symbol), style = MaterialTheme.typography.bodyMedium, color = colorScheme.primary.copy(alpha = 0.8f) ) @@ -193,8 +195,8 @@ fun PeerCounter( Icon( imageVector = Icons.Default.Group, contentDescription = when (selectedLocationChannel) { - is com.bitchat.android.geohash.ChannelID.Location -> "Geohash participants" - else -> "Connected peers" + is com.bitchat.android.geohash.ChannelID.Location -> stringResource(R.string.cd_geohash_participants) + else -> stringResource(R.string.cd_connected_peers) }, modifier = Modifier.size(16.dp), tint = countColor @@ -211,7 +213,7 @@ fun PeerCounter( if (joinedChannels.isNotEmpty()) { Text( - text = " · ⧉ ${joinedChannels.size}", + text = stringResource(R.string.channel_count_prefix) + "${joinedChannels.size}", style = MaterialTheme.typography.bodyMedium, color = if (isConnected) Color(0xFF00C851) else Color.Red, fontSize = 16.sp, @@ -373,13 +375,13 @@ private fun PrivateChatHeader( ) { Icon( imageVector = Icons.Filled.ArrowBack, - contentDescription = "Back", + contentDescription = stringResource(R.string.back), modifier = Modifier.size(16.dp), tint = colorScheme.primary ) Spacer(modifier = Modifier.width(4.dp)) Text( - text = "back", + text = stringResource(R.string.chat_back), style = MaterialTheme.typography.bodyMedium, color = colorScheme.primary ) @@ -405,7 +407,7 @@ private fun PrivateChatHeader( if (showGlobe) { Icon( imageVector = Icons.Outlined.Public, - contentDescription = "Nostr reachable", + contentDescription = stringResource(R.string.cd_nostr_reachable), modifier = Modifier.size(14.dp), tint = Color(0xFF9B59B6) // Purple like iOS ) @@ -428,7 +430,7 @@ private fun PrivateChatHeader( ) { Icon( imageVector = if (isFavorite) Icons.Filled.Star else Icons.Outlined.Star, - contentDescription = if (isFavorite) "Remove from favorites" else "Add to favorites", + contentDescription = if (isFavorite) stringResource(R.string.cd_remove_favorite) else stringResource(R.string.cd_add_favorite), modifier = Modifier.size(18.dp), // Slightly larger than sidebar icon tint = if (isFavorite) Color(0xFFFFD700) else Color(0x87878700) // Yellow or grey ) @@ -463,13 +465,13 @@ private fun ChannelHeader( ) { Icon( imageVector = Icons.Filled.ArrowBack, - contentDescription = "Back", + contentDescription = stringResource(R.string.back), modifier = Modifier.size(16.dp), tint = colorScheme.primary ) Spacer(modifier = Modifier.width(4.dp)) Text( - text = "back", + text = stringResource(R.string.chat_back), style = MaterialTheme.typography.bodyMedium, color = colorScheme.primary ) @@ -478,7 +480,7 @@ private fun ChannelHeader( // Title - perfectly centered regardless of other elements Text( - text = "channel: $channel", + text = stringResource(R.string.chat_channel_prefix, channel), style = MaterialTheme.typography.titleMedium, color = Color(0xFFFF9500), // Orange to match input field modifier = Modifier @@ -492,7 +494,7 @@ private fun ChannelHeader( modifier = Modifier.align(Alignment.CenterEnd) ) { Text( - text = "leave", + text = stringResource(R.string.chat_leave), style = MaterialTheme.typography.bodySmall, color = Color.Red ) @@ -534,7 +536,7 @@ private fun MainHeader( verticalAlignment = Alignment.CenterVertically ) { Text( - text = "bitchat/", + text = stringResource(R.string.app_brand), style = MaterialTheme.typography.headlineSmall, color = colorScheme.primary, modifier = Modifier.singleOrTripleClickable( @@ -562,7 +564,7 @@ private fun MainHeader( // Render icon directly to avoid symbol resolution issues Icon( imageVector = Icons.Filled.Email, - contentDescription = "Unread private messages", + contentDescription = stringResource(R.string.cd_unread_private_messages), modifier = Modifier .size(16.dp) .clickable { viewModel.openLatestUnreadPrivateChat() }, @@ -593,7 +595,7 @@ private fun MainHeader( ) { Icon( imageVector = if (isBookmarked) Icons.Filled.Bookmark else Icons.Outlined.BookmarkBorder, - contentDescription = "Toggle bookmark", + contentDescription = stringResource(R.string.cd_toggle_bookmark), tint = if (isBookmarked) Color(0xFF00C851) else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.75f), modifier = Modifier.size(16.dp) ) @@ -668,7 +670,7 @@ private fun LocationChannelsButton( Spacer(modifier = Modifier.width(2.dp)) Icon( imageVector = Icons.Default.PinDrop, - contentDescription = "Teleported", + contentDescription = stringResource(R.string.cd_teleported), modifier = Modifier.size(12.dp), tint = badgeColor ) diff --git a/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt b/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt index 72a9e1e4..fa7a861d 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatScreen.kt @@ -19,6 +19,7 @@ import androidx.compose.material.icons.filled.ArrowDownward import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.IconButton +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp @@ -294,7 +295,7 @@ fun ChatScreen(viewModel: ChatViewModel) { IconButton(onClick = { forceScrollToBottom = !forceScrollToBottom }) { Icon( imageVector = Icons.Filled.ArrowDownward, - contentDescription = "Scroll to bottom", + contentDescription = stringResource(com.bitchat.android.R.string.cd_scroll_to_bottom), tint = Color(0xFF00C851) ) } diff --git a/app/src/main/java/com/bitchat/android/ui/ChatUserSheet.kt b/app/src/main/java/com/bitchat/android/ui/ChatUserSheet.kt index e1f5df5e..54e7aea4 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatUserSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatUserSheet.kt @@ -12,6 +12,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.bitchat.android.ui.theme.BASE_FONT_SIZE +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.text.AnnotatedString import kotlinx.coroutines.launch @@ -61,7 +63,7 @@ fun ChatUserSheet( ) { // Header Text( - text = "@$targetNickname", + text = stringResource(R.string.at_nickname, targetNickname), fontSize = 18.sp, fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -69,7 +71,7 @@ fun ChatUserSheet( ) Text( - text = if (selectedMessage != null) "choose an action for this message or user" else "choose an action for this user", + text = if (selectedMessage != null) stringResource(R.string.choose_action_message_or_user) else stringResource(R.string.choose_action_user), fontSize = 12.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f) @@ -83,8 +85,8 @@ fun ChatUserSheet( selectedMessage?.let { message -> item { UserActionRow( - title = "copy message", - subtitle = "copy this message to clipboard", + title = stringResource(R.string.action_copy_message_title), + subtitle = stringResource(R.string.action_copy_message_subtitle), titleColor = standardGrey, onClick = { // Copy the message content to clipboard @@ -100,8 +102,8 @@ fun ChatUserSheet( // Slap action item { UserActionRow( - title = "slap $targetNickname", - subtitle = "send a playful slap message", + title = stringResource(R.string.action_slap_title, targetNickname), + subtitle = stringResource(R.string.action_slap_subtitle), titleColor = standardBlue, onClick = { // Send slap command @@ -114,8 +116,8 @@ fun ChatUserSheet( // Hug action item { UserActionRow( - title = "hug $targetNickname", - subtitle = "send a friendly hug message", + title = stringResource(R.string.action_hug_title, targetNickname), + subtitle = stringResource(R.string.action_hug_subtitle), titleColor = standardGreen, onClick = { // Send hug command @@ -128,8 +130,8 @@ fun ChatUserSheet( // Block action item { UserActionRow( - title = "block $targetNickname", - subtitle = "block all messages from this user", + title = stringResource(R.string.action_block_title, targetNickname), + subtitle = stringResource(R.string.action_block_subtitle), titleColor = standardRed, onClick = { // Check if we're in a geohash channel @@ -158,7 +160,7 @@ fun ChatUserSheet( modifier = Modifier.fillMaxWidth() ) { Text( - text = "cancel", + text = stringResource(R.string.cancel_lower), fontSize = BASE_FONT_SIZE.sp, fontFamily = FontFamily.Monospace ) diff --git a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt index 4224d9c1..8255eb06 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt @@ -226,20 +226,6 @@ class ChatViewModel( } catch (_: Exception) { } // Note: Mesh service is now started by MainActivity - - // Show welcome message if no peers after delay - viewModelScope.launch { - delay(10000) - if (state.getConnectedPeersValue().isEmpty() && state.getMessagesValue().isEmpty()) { - val welcomeMessage = BitchatMessage( - sender = "system", - content = "get people around you to download bitchat and chat with them here!", - timestamp = Date(), - isRelay = false - ) - messageManager.addMessage(welcomeMessage) - } - } // BLE receives are inserted by MessageHandler path; no VoiceNoteBus for Tor in this branch. } diff --git a/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt b/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt index 5ce03bf1..1b0837a2 100644 --- a/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt +++ b/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt @@ -20,6 +20,8 @@ import androidx.compose.ui.unit.sp import com.bitchat.android.ui.theme.BASE_FONT_SIZE import java.util.* import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * GeohashPeopleList - iOS-compatible component for displaying geohash participants @@ -66,7 +68,7 @@ fun GeohashPeopleList( ) Spacer(modifier = Modifier.width(6.dp)) Text( - text = "PEOPLE", + text = stringResource(R.string.geohash_people_header), style = MaterialTheme.typography.labelSmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold @@ -78,7 +80,7 @@ fun GeohashPeopleList( if (geohashPeople.isEmpty()) { // Empty state - matches iOS "nobody around..." Text( - text = "nobody around...", + text = stringResource(R.string.nobody_around), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontSize = BASE_FONT_SIZE.sp @@ -182,7 +184,7 @@ private fun GeohashPersonItem( // Unread DM indicator (orange envelope) Icon( imageVector = Icons.Filled.Email, - contentDescription = "Unread message", + contentDescription = stringResource(R.string.cd_unread_message), modifier = Modifier.size(12.dp), tint = Color(0xFFFF9500) // iOS orange ) @@ -253,7 +255,7 @@ private fun GeohashPersonItem( // "You" indicator for current user if (isMe) { Text( - text = " (you)", + text = stringResource(R.string.you_suffix), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace, fontSize = BASE_FONT_SIZE.sp diff --git a/app/src/main/java/com/bitchat/android/ui/GeohashPickerActivity.kt b/app/src/main/java/com/bitchat/android/ui/GeohashPickerActivity.kt index 97f1d3ce..d0971aad 100644 --- a/app/src/main/java/com/bitchat/android/ui/GeohashPickerActivity.kt +++ b/app/src/main/java/com/bitchat/android/ui/GeohashPickerActivity.kt @@ -37,6 +37,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.viewinterop.AndroidView +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import androidx.core.view.updateLayoutParams import com.bitchat.android.geohash.Geohash import com.bitchat.android.geohash.LocationChannelManager @@ -175,7 +177,7 @@ class GeohashPickerActivity : ComponentActivity() { shadowElevation = 6.dp ) { Text( - text = "pan and zoom to select a geohash", + text = stringResource(R.string.pan_zoom_instruction), fontSize = 12.sp, textAlign = TextAlign.Center, fontFamily = FontFamily.Monospace, @@ -228,7 +230,7 @@ class GeohashPickerActivity : ComponentActivity() { ) ) { Row(verticalAlignment = Alignment.CenterVertically) { - Icon(Icons.Filled.Remove, contentDescription = "Decrease precision") + Icon(Icons.Filled.Remove, contentDescription = stringResource(R.string.cd_decrease_precision)) } } @@ -244,7 +246,7 @@ class GeohashPickerActivity : ComponentActivity() { ) ) { Row(verticalAlignment = Alignment.CenterVertically) { - Icon(Icons.Filled.Add, contentDescription = "Increase precision") + Icon(Icons.Filled.Add, contentDescription = stringResource(R.string.cd_increase_precision)) } } @@ -264,10 +266,10 @@ class GeohashPickerActivity : ComponentActivity() { ) ) { Row(verticalAlignment = Alignment.CenterVertically) { - Icon(Icons.Filled.Check, contentDescription = "Select geohash") + Icon(Icons.Filled.Check, contentDescription = stringResource(R.string.cd_select_geohash)) Spacer(Modifier.width(6.dp)) Text( - text = "select", + text = stringResource(R.string.select), fontSize = (BASE_FONT_SIZE - 2).sp, fontFamily = FontFamily.Monospace ) diff --git a/app/src/main/java/com/bitchat/android/ui/InputComponents.kt b/app/src/main/java/com/bitchat/android/ui/InputComponents.kt index eb1e744b..087e632d 100644 --- a/app/src/main/java/com/bitchat/android/ui/InputComponents.kt +++ b/app/src/main/java/com/bitchat/android/ui/InputComponents.kt @@ -217,7 +217,7 @@ fun MessageInput( // Show placeholder when there's no text and not recording if (value.text.isEmpty() && !isRecording) { Text( - text = "type a message...", + text = stringResource(R.string.type_a_message_placeholder), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = FontFamily.Monospace ), @@ -486,7 +486,7 @@ fun MentionSuggestionItem( verticalAlignment = Alignment.CenterVertically ) { Text( - text = "@$suggestion", + text = stringResource(R.string.mention_suggestion_at, suggestion), style = MaterialTheme.typography.bodySmall.copy( fontFamily = FontFamily.Monospace, fontWeight = FontWeight.SemiBold @@ -498,7 +498,7 @@ fun MentionSuggestionItem( Spacer(modifier = Modifier.weight(1f)) Text( - text = "mention", + text = stringResource(R.string.mention), style = MaterialTheme.typography.bodySmall.copy( fontFamily = FontFamily.Monospace ), diff --git a/app/src/main/java/com/bitchat/android/ui/LinkPreviewPill.kt b/app/src/main/java/com/bitchat/android/ui/LinkPreviewPill.kt index 25d00bd7..4896e345 100644 --- a/app/src/main/java/com/bitchat/android/ui/LinkPreviewPill.kt +++ b/app/src/main/java/com/bitchat/android/ui/LinkPreviewPill.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow @@ -94,7 +95,7 @@ fun LinkPreviewPill( ) { Icon( imageVector = Icons.Outlined.Link, - contentDescription = "Link", + contentDescription = stringResource(com.bitchat.android.R.string.cd_link), modifier = Modifier.size(24.dp), tint = Color.Blue ) diff --git a/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt b/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt index fd8ad1eb..9f42d662 100644 --- a/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt @@ -37,6 +37,8 @@ import com.bitchat.android.geohash.GeohashChannelLevel import com.bitchat.android.geohash.LocationChannelManager import com.bitchat.android.geohash.GeohashBookmarksStore import com.bitchat.android.ui.theme.BASE_FONT_SIZE +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * Location Channels Sheet for selecting geohash-based location channels @@ -133,7 +135,7 @@ fun LocationChannelsSheet( verticalArrangement = Arrangement.spacedBy(4.dp) ) { Text( - text = "#location channels", + text = stringResource(R.string.location_channels_title), style = MaterialTheme.typography.headlineSmall, fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold, @@ -141,7 +143,7 @@ fun LocationChannelsSheet( ) Text( - text = "chat with people near you using geohash channels. only a coarse geohash is shared, never exact gps. do not screenshot or share this screen to protect your privacy.", + text = stringResource(R.string.location_channels_desc), fontSize = 12.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.7f) @@ -170,7 +172,7 @@ fun LocationChannelsSheet( modifier = Modifier.fillMaxWidth() ) { Text( - text = "grant location permission", + text = stringResource(R.string.grant_location_permission), fontSize = 12.sp, fontFamily = FontFamily.Monospace ) @@ -180,7 +182,7 @@ fun LocationChannelsSheet( LocationChannelManager.PermissionState.RESTRICTED -> { Column(verticalArrangement = Arrangement.spacedBy(4.dp)) { Text( - text = "location permission denied. enable in settings to use location channels.", + text = stringResource(R.string.location_permission_denied), fontSize = 11.sp, fontFamily = FontFamily.Monospace, color = Color.Red.copy(alpha = 0.8f) @@ -194,7 +196,7 @@ fun LocationChannelsSheet( } ) { Text( - text = "open settings", + text = stringResource(R.string.open_settings), fontSize = 11.sp, fontFamily = FontFamily.Monospace ) @@ -203,7 +205,7 @@ fun LocationChannelsSheet( } LocationChannelManager.PermissionState.AUTHORIZED -> { Text( - text = "✓ location permission granted", + text = stringResource(R.string.location_permission_granted), fontSize = 11.sp, fontFamily = FontFamily.Monospace, color = standardGreen @@ -216,7 +218,7 @@ fun LocationChannelsSheet( ) { CircularProgressIndicator(modifier = Modifier.size(12.dp)) Text( - text = "checking permissions...", + text = stringResource(R.string.checking_permissions), fontSize = 11.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f) @@ -232,7 +234,7 @@ fun LocationChannelsSheet( item(key = "mesh") { ChannelRow( title = meshTitleWithCount(viewModel), - subtitle = "#bluetooth • ${bluetoothRangeString()}", + subtitle = stringResource(R.string.location_bluetooth_subtitle, bluetoothRangeString()), isSelected = selectedChannel is ChannelID.Mesh, titleColor = standardBlue, titleBold = meshCount(viewModel) > 0, @@ -262,13 +264,13 @@ fun LocationChannelsSheet( titleColor = standardGreen, titleBold = highlight, trailingContent = { - IconButton(onClick = { bookmarksStore.toggle(channel.geohash) }) { - Icon( - imageVector = if (isBookmarked) Icons.Filled.Bookmark else Icons.Outlined.BookmarkBorder, - contentDescription = if (isBookmarked) "Unbookmark" else "Bookmark", - tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f), - ) - } + IconButton(onClick = { bookmarksStore.toggle(channel.geohash) }) { + Icon( + imageVector = if (isBookmarked) Icons.Filled.Bookmark else Icons.Outlined.BookmarkBorder, + contentDescription = if (isBookmarked) stringResource(R.string.cd_remove_bookmark) else stringResource(R.string.cd_add_bookmark), + tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f), + ) + } }, onClick = { // Selecting a suggested nearby channel is not a teleport @@ -286,7 +288,7 @@ fun LocationChannelsSheet( ) { CircularProgressIndicator(modifier = Modifier.size(16.dp)) Text( - text = "finding nearby channels…", + text = stringResource(R.string.finding_nearby_channels), fontSize = 12.sp, fontFamily = FontFamily.Monospace ) @@ -298,7 +300,7 @@ fun LocationChannelsSheet( if (bookmarks.isNotEmpty()) { item(key = "bookmarked_header") { Text( - text = "bookmarked", + text = stringResource(R.string.bookmarked), style = MaterialTheme.typography.labelLarge, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.7f), @@ -328,7 +330,7 @@ fun LocationChannelsSheet( IconButton(onClick = { bookmarksStore.toggle(gh) }) { Icon( imageVector = Icons.Filled.Bookmark, - contentDescription = "Remove bookmark", + contentDescription = stringResource(R.string.cd_remove_bookmark), tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f), ) } @@ -366,7 +368,7 @@ fun LocationChannelsSheet( verticalAlignment = Alignment.CenterVertically ) { Text( - text = "#", + text = stringResource(R.string.hash_symbol), fontSize = BASE_FONT_SIZE.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f) @@ -409,7 +411,7 @@ fun LocationChannelsSheet( decorationBox = { innerTextField -> if (customGeohash.isEmpty()) { Text( - text = "geohash", + text = stringResource(R.string.geohash_placeholder), fontSize = BASE_FONT_SIZE.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.4f) @@ -435,7 +437,7 @@ fun LocationChannelsSheet( }) { Icon( imageVector = Icons.Filled.Map, - contentDescription = "Open map", + contentDescription = stringResource(R.string.cd_open_map), tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f) ) } @@ -453,7 +455,7 @@ fun LocationChannelsSheet( locationManager.select(ChannelID.Location(channel)) onDismiss() } else { - customError = "invalid geohash" + customError = context.getString(R.string.invalid_geohash) } }, enabled = isValid, @@ -467,14 +469,13 @@ fun LocationChannelsSheet( verticalAlignment = Alignment.CenterVertically ) { Text( - text = "teleport", + text = stringResource(R.string.teleport), fontSize = BASE_FONT_SIZE.sp, fontFamily = FontFamily.Monospace ) - // iOS has a face.dashed icon, use closest Material equivalent Icon( imageVector = Icons.Filled.PinDrop, - contentDescription = "Teleport", + contentDescription = stringResource(R.string.cd_teleport), modifier = Modifier.size(14.dp), tint = MaterialTheme.colorScheme.onSurface ) @@ -530,11 +531,7 @@ fun LocationChannelsSheet( modifier = Modifier.fillMaxWidth() ) { Text( - text = if (locationServicesEnabled) { - "disable location services" - } else { - "enable location services" - }, + text = if (locationServicesEnabled) stringResource(R.string.disable_location_services) else stringResource(R.string.enable_location_services), fontSize = 12.sp, fontFamily = FontFamily.Monospace ) @@ -558,7 +555,7 @@ fun LocationChannelsSheet( .padding(horizontal = 16.dp) ) { Text( - text = "Close", + text = stringResource(R.string.close_plain), style = MaterialTheme.typography.labelMedium.copy(fontWeight = FontWeight.Bold), color = MaterialTheme.colorScheme.onBackground ) @@ -668,7 +665,7 @@ private fun ChannelRow( if (isSelected) { Icon( imageVector = Icons.Filled.Check, - contentDescription = "Selected", + contentDescription = stringResource(R.string.cd_selected), tint = Color(0xFF32D74B), // iOS green for checkmark modifier = Modifier.size(20.dp) ) @@ -695,10 +692,13 @@ private fun splitTitleAndCount(title: String): Pair { } } +@Composable private fun meshTitleWithCount(viewModel: ChatViewModel): String { val meshCount = meshCount(viewModel) - val noun = if (meshCount == 1) "person" else "people" - return "mesh [$meshCount $noun]" + val ctx = androidx.compose.ui.platform.LocalContext.current + val peopleText = ctx.resources.getQuantityString(com.bitchat.android.R.plurals.people_count, meshCount, meshCount) + val meshLabel = stringResource(com.bitchat.android.R.string.mesh_label) + return "$meshLabel [$peopleText]" } private fun meshCount(viewModel: ChatViewModel): Int { @@ -708,14 +708,25 @@ private fun meshCount(viewModel: ChatViewModel): Int { } ?: 0 } +@Composable private fun geohashTitleWithCount(channel: GeohashChannel, participantCount: Int): String { - val noun = if (participantCount == 1) "person" else "people" - return "${channel.level.displayName.lowercase()} [$participantCount $noun]" + val ctx = androidx.compose.ui.platform.LocalContext.current + val peopleText = ctx.resources.getQuantityString(com.bitchat.android.R.plurals.people_count, participantCount, participantCount) + val levelName = when (channel.level) { + com.bitchat.android.geohash.GeohashChannelLevel.BLOCK -> stringResource(com.bitchat.android.R.string.location_level_block) + com.bitchat.android.geohash.GeohashChannelLevel.NEIGHBORHOOD -> stringResource(com.bitchat.android.R.string.location_level_neighborhood) + com.bitchat.android.geohash.GeohashChannelLevel.CITY -> stringResource(com.bitchat.android.R.string.location_level_city) + com.bitchat.android.geohash.GeohashChannelLevel.PROVINCE -> stringResource(com.bitchat.android.R.string.location_level_province) + com.bitchat.android.geohash.GeohashChannelLevel.REGION -> stringResource(com.bitchat.android.R.string.location_level_region) + } + return "$levelName [$peopleText]" } +@Composable private fun geohashHashTitleWithCount(geohash: String, participantCount: Int): String { - val noun = if (participantCount == 1) "person" else "people" - return "#$geohash [$participantCount $noun]" + val ctx = androidx.compose.ui.platform.LocalContext.current + val peopleText = ctx.resources.getQuantityString(com.bitchat.android.R.plurals.people_count, participantCount, participantCount) + return "#$geohash [$peopleText]" } private fun isChannelSelected(channel: GeohashChannel, selectedChannel: ChannelID?): Boolean { diff --git a/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt b/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt index b926b1f1..e155b56f 100644 --- a/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt +++ b/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt @@ -43,6 +43,9 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.shape.CircleShape import com.bitchat.android.ui.media.FileMessageItem import com.bitchat.android.model.BitchatMessageType +import com.bitchat.android.R +import androidx.compose.ui.res.stringResource + // VoiceNotePlayer moved to com.bitchat.android.ui.media.VoiceNotePlayer @@ -334,11 +337,11 @@ fun MessageItem( .clickable { onCancelTransfer?.invoke(message) }, contentAlignment = Alignment.Center ) { - Icon(imageVector = Icons.Filled.Close, contentDescription = "Cancel", tint = Color.White, modifier = Modifier.size(14.dp)) + Icon(imageVector = Icons.Filled.Close, contentDescription = stringResource(R.string.cd_cancel), tint = Color.White, modifier = Modifier.size(14.dp)) } } } else { - Text(text = "[file unavailable]", fontFamily = FontFamily.Monospace, color = Color.Gray) + Text(text = stringResource(R.string.file_unavailable), fontFamily = FontFamily.Monospace, color = Color.Gray) } } } @@ -471,7 +474,7 @@ fun DeliveryStatusIcon(status: DeliveryStatus) { when (status) { is DeliveryStatus.Sending -> { Text( - text = "○", + text = stringResource(R.string.status_sending), fontSize = 10.sp, color = colorScheme.primary.copy(alpha = 0.6f) ) @@ -479,7 +482,7 @@ fun DeliveryStatusIcon(status: DeliveryStatus) { is DeliveryStatus.Sent -> { // Use a subtle hollow marker for Sent; single check is reserved for Delivered (iOS parity) Text( - text = "○", + text = stringResource(R.string.status_pending), fontSize = 10.sp, color = colorScheme.primary.copy(alpha = 0.6f) ) @@ -487,14 +490,14 @@ fun DeliveryStatusIcon(status: DeliveryStatus) { is DeliveryStatus.Delivered -> { // Single check for Delivered (matches iOS expectations) Text( - text = "✓", + text = stringResource(R.string.status_sent), fontSize = 10.sp, color = colorScheme.primary.copy(alpha = 0.8f) ) } is DeliveryStatus.Read -> { Text( - text = "✓✓", + text = stringResource(R.string.status_delivered), fontSize = 10.sp, color = Color(0xFF007AFF), // Blue fontWeight = FontWeight.Bold @@ -502,7 +505,7 @@ fun DeliveryStatusIcon(status: DeliveryStatus) { } is DeliveryStatus.Failed -> { Text( - text = "⚠", + text = stringResource(R.string.status_failed), fontSize = 10.sp, color = Color.Red.copy(alpha = 0.8f) ) @@ -510,7 +513,7 @@ fun DeliveryStatusIcon(status: DeliveryStatus) { is DeliveryStatus.PartiallyDelivered -> { // Show a single subdued check without numeric label Text( - text = "✓", + text = stringResource(R.string.status_sent), fontSize = 10.sp, color = colorScheme.primary.copy(alpha = 0.6f) ) diff --git a/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt b/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt index a36e71fe..11a90fdb 100644 --- a/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt +++ b/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt @@ -258,7 +258,10 @@ class NotificationManager( } if (messageCount > 5) { - style.setSummaryText("and ${messageCount - 5} more") + val extra = messageCount - 5 + style.setSummaryText(context.resources.getQuantityString( + R.plurals.notification_and_more, extra, extra + )) } builder.setStyle(style) @@ -291,11 +294,11 @@ class NotificationManager( ) // Build notification content - val contentTitle = "👥 bitchatters nearby!" + val contentTitle = context.getString(R.string.notification_active_peers_title) val contentText = if (peersSize == 1) { - "1 person around" + context.getString(R.string.notification_active_peers_one) } else { - "$peersSize people around" + context.getString(R.string.notification_active_peers_many, peersSize) } val builder = NotificationCompat.Builder(context, CHANNEL_ID) @@ -331,8 +334,8 @@ class NotificationManager( val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification) - .setContentTitle("bitchat") - .setContentText("$totalMessages messages from $senderCount people") + .setContentTitle(context.getString(R.string.app_name)) + .setContentText(context.getString(R.string.notification_messages_from_people, totalMessages, senderCount)) .setContentIntent(pendingIntent) .setAutoCancel(true) .setPriority(NotificationCompat.PRIORITY_HIGH) @@ -342,7 +345,7 @@ class NotificationManager( // Add inbox style showing recent senders val style = NotificationCompat.InboxStyle() - .setBigContentTitle("New Messages") + .setBigContentTitle(context.getString(R.string.notification_new_location_messages)) pendingNotifications.entries.take(5).forEach { (peerID, notifications) -> val latestNotif = notifications.last() @@ -356,7 +359,7 @@ class NotificationManager( } if (pendingNotifications.size > 5) { - style.setSummaryText("and ${pendingNotifications.size - 5} more conversations") + style.setSummaryText(context.getString(R.string.notification_more_conversations, pendingNotifications.size - 5)) } builder.setStyle(style) @@ -459,15 +462,15 @@ class NotificationManager( // Build notification content with location name if available val geohashDisplay = latestNotification.locationName?.let { "$it (#$geohash)" } ?: "#$geohash" val contentTitle = when { - mentionCount > 0 && firstMessageCount > 0 && messageCount > 1 -> "Mentioned in $geohashDisplay (+${messageCount - 1} more)" - mentionCount > 0 -> if (mentionCount == 1) "Mentioned in $geohashDisplay" else "$mentionCount mentions in $geohashDisplay" - firstMessageCount > 0 -> "New activity in $geohashDisplay" - else -> "Messages in $geohashDisplay" + mentionCount > 0 && firstMessageCount > 0 && messageCount > 1 -> context.getString(R.string.notification_mentions_in_more, geohashDisplay, messageCount - 1) + mentionCount > 0 -> if (mentionCount == 1) context.getString(R.string.notification_mentions_in, geohashDisplay) else context.getString(R.string.notification_mentions_in_plural, mentionCount, geohashDisplay) + firstMessageCount > 0 -> context.getString(R.string.notification_new_activity_in, geohashDisplay) + else -> context.getString(R.string.notification_messages_in, geohashDisplay) } val contentText = when { latestNotification.isMention -> "${latestNotification.senderNickname}: ${latestNotification.messageContent}" - latestNotification.isFirstMessage -> "${latestNotification.senderNickname} joined the conversation" + latestNotification.isFirstMessage -> context.getString(R.string.notification_joined_conversation, latestNotification.senderNickname) else -> "${latestNotification.senderNickname}: ${latestNotification.messageContent}" } @@ -503,7 +506,8 @@ class NotificationManager( } if (messageCount > 5) { - style.setSummaryText("and ${messageCount - 5} more") + val extra = messageCount - 5 + style.setSummaryText(context.resources.getQuantityString(R.plurals.notification_and_more, extra, extra)) } builder.setStyle(style) @@ -543,12 +547,12 @@ class NotificationManager( ) val contentTitle = if (totalMentions > 0) { - "bitchat - $totalMentions mentions" + context.getString(R.string.notification_geohash_summary_title_mentions, totalMentions) } else { - "bitchat - location chats" + context.getString(R.string.notification_geohash_summary_title) } - val contentText = "$totalMessages messages from $geohashCount locations" + val contentText = context.getString(R.string.notification_geohash_summary_text, totalMessages, geohashCount) val builder = NotificationCompat.Builder(context, GEOHASH_CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification) @@ -563,7 +567,7 @@ class NotificationManager( // Add inbox style showing recent geohashes val style = NotificationCompat.InboxStyle() - .setBigContentTitle("New Location Messages") + .setBigContentTitle(context.getString(R.string.notification_new_messages)) pendingGeohashNotifications.entries.take(5).forEach { (geohash, notifications) -> val mentionCount = notifications.count { it.isMention } @@ -579,7 +583,7 @@ class NotificationManager( } if (pendingGeohashNotifications.size > 5) { - style.setSummaryText("and ${pendingGeohashNotifications.size - 5} more locations") + style.setSummaryText(context.getString(R.string.notification_more_locations, pendingGeohashNotifications.size - 5)) } builder.setStyle(style) @@ -676,9 +680,9 @@ class NotificationManager( // Build notification content val contentTitle = if (messageCount == 1) { - "Mentioned in Mesh Chat" + context.getString(R.string.notification_mesh_mention_title_singular) } else { - "$messageCount mentions in Mesh Chat" + context.getString(R.string.notification_mesh_mention_title_plural, messageCount) } val contentText = "${latestNotification.senderNickname}: ${latestNotification.messageContent}" @@ -710,7 +714,8 @@ class NotificationManager( } if (messageCount > 5) { - style.setSummaryText("and ${messageCount - 5} more") + val extra = messageCount - 5 + style.setSummaryText(context.resources.getQuantityString(R.plurals.notification_and_more, extra, extra)) } builder.setStyle(style) diff --git a/app/src/main/java/com/bitchat/android/ui/PoWStatusIndicator.kt b/app/src/main/java/com/bitchat/android/ui/PoWStatusIndicator.kt index 55a3e694..b0d55128 100644 --- a/app/src/main/java/com/bitchat/android/ui/PoWStatusIndicator.kt +++ b/app/src/main/java/com/bitchat/android/ui/PoWStatusIndicator.kt @@ -15,6 +15,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.bitchat.android.nostr.NostrProofOfWork +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import com.bitchat.android.nostr.PoWPreferenceManager /** @@ -54,7 +56,7 @@ fun PoWStatusIndicator( Icon( imageVector = Icons.Filled.Security, - contentDescription = "Mining PoW", + contentDescription = stringResource(R.string.cd_mining_pow), tint = Color(0xFFFF9500), // Orange for mining modifier = Modifier .size(12.dp) @@ -63,7 +65,7 @@ fun PoWStatusIndicator( } else { Icon( imageVector = Icons.Filled.Security, - contentDescription = "PoW Enabled", + contentDescription = stringResource(R.string.cd_pow_enabled), tint = if (isDark) Color(0xFF32D74B) else Color(0xFF248A3D), // Green when ready modifier = Modifier.size(12.dp) ) @@ -85,7 +87,7 @@ fun PoWStatusIndicator( // PoW icon Icon( imageVector = Icons.Filled.Security, - contentDescription = "Proof of Work", + contentDescription = stringResource(R.string.cd_proof_of_work), tint = if (isMining) Color(0xFFFF9500) else { if (isDark) Color(0xFF32D74B) else Color(0xFF248A3D) }, @@ -95,9 +97,9 @@ fun PoWStatusIndicator( // Status text Text( text = if (isMining) { - "mining..." + stringResource(R.string.pow_mining_ellipsis) } else { - "pow: ${powDifficulty}bit" + stringResource(R.string.pow_label_format, powDifficulty) }, fontSize = 11.sp, fontFamily = FontFamily.Monospace, @@ -109,7 +111,7 @@ fun PoWStatusIndicator( // Time estimate if (!isMining && powDifficulty > 0) { Text( - text = "(~${NostrProofOfWork.estimateMiningTime(powDifficulty)})", + text = stringResource(R.string.pow_time_estimate, NostrProofOfWork.estimateMiningTime(powDifficulty)), fontSize = 9.sp, fontFamily = FontFamily.Monospace, color = colorScheme.onSurface.copy(alpha = 0.5f) diff --git a/app/src/main/java/com/bitchat/android/ui/SidebarComponents.kt b/app/src/main/java/com/bitchat/android/ui/SidebarComponents.kt index b33a7330..a8c59ef7 100644 --- a/app/src/main/java/com/bitchat/android/ui/SidebarComponents.kt +++ b/app/src/main/java/com/bitchat/android/ui/SidebarComponents.kt @@ -237,7 +237,7 @@ fun ChannelsSection( ) { Icon( imageVector = Icons.Default.Close, - contentDescription = "Leave channel", + contentDescription = stringResource(com.bitchat.android.R.string.cd_leave_channel), modifier = Modifier.size(14.dp), tint = colorScheme.onSurface.copy(alpha = 0.5f) ) @@ -552,7 +552,7 @@ private fun PeerItem( // Show mail icon for unread DMs (iOS orange) Icon( imageVector = Icons.Filled.Email, - contentDescription = "Unread message", + contentDescription = stringResource(com.bitchat.android.R.string.cd_unread_message), modifier = Modifier.size(16.dp), tint = Color(0xFFFF9500) // iOS orange ) @@ -562,7 +562,7 @@ private fun PeerItem( // Purple globe to indicate Nostr availability Icon( imageVector = Icons.Filled.Public, - contentDescription = "Reachable via Nostr", + contentDescription = stringResource(com.bitchat.android.R.string.cd_reachable_via_nostr), modifier = Modifier.size(16.dp), tint = Color(0xFF9C27B0) // Purple ) @@ -571,7 +571,7 @@ private fun PeerItem( Icon( //painter = androidx.compose.ui.res.painterResource(id = R.drawable.ic_offline_favorite), imageVector = Icons.Outlined.Circle, - contentDescription = "Offline favorite", + contentDescription = stringResource(com.bitchat.android.R.string.cd_offline_favorite), modifier = Modifier.size(16.dp), tint = Color.Gray ) diff --git a/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt b/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt index 03ab53aa..c61f2f9a 100644 --- a/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt +++ b/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt @@ -15,6 +15,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.unit.dp @@ -129,7 +130,7 @@ fun VoiceRecordButton( ) { Icon( imageVector = Icons.Filled.Mic, - contentDescription = "Record voice note", + contentDescription = stringResource(com.bitchat.android.R.string.cd_record_voice), tint = Color.Black, modifier = Modifier.size(20.dp) ) diff --git a/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt b/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt index 23bfc524..c7f83012 100644 --- a/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/debug/DebugSettingsSheet.kt @@ -25,6 +25,8 @@ import androidx.compose.ui.unit.sp import androidx.compose.ui.draw.rotate import com.bitchat.android.mesh.BluetoothMeshService import kotlinx.coroutines.launch +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -97,10 +99,10 @@ fun DebugSettingsSheet( item { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Icon(Icons.Filled.BugReport, contentDescription = null, tint = Color(0xFFFF9500)) - Text("debug tools", fontFamily = FontFamily.Monospace, fontSize = 18.sp, fontWeight = FontWeight.Medium) + Text(stringResource(R.string.debug_tools), fontFamily = FontFamily.Monospace, fontSize = 18.sp, fontWeight = FontWeight.Medium) } Text( - text = "developer utilities for diagnostics and control", + text = stringResource(R.string.debug_tools_desc), fontFamily = FontFamily.Monospace, fontSize = 12.sp, color = colorScheme.onSurface.copy(alpha = 0.7f) @@ -113,12 +115,12 @@ fun DebugSettingsSheet( Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(10.dp)) { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Icon(Icons.Filled.SettingsEthernet, contentDescription = null, tint = Color(0xFF00C851)) - Text("verbose logging", fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) + Text(stringResource(R.string.debug_verbose_logging), fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) Spacer(Modifier.weight(1f)) Switch(checked = verboseLogging, onCheckedChange = { manager.setVerboseLoggingEnabled(it) }) } Text( - "logs peer joins/leaves, connection direction, packet routing and relays", + stringResource(R.string.debug_verbose_hint), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f) @@ -133,10 +135,10 @@ fun DebugSettingsSheet( Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp)) { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Icon(Icons.Filled.Bluetooth, contentDescription = null, tint = Color(0xFF007AFF)) - Text("bluetooth roles", fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) + Text(stringResource(R.string.debug_bluetooth_roles), fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) } Row(verticalAlignment = Alignment.CenterVertically) { - Text("gatt server", fontFamily = FontFamily.Monospace, modifier = Modifier.weight(1f)) + Text(stringResource(R.string.debug_gatt_server), fontFamily = FontFamily.Monospace, modifier = Modifier.weight(1f)) Switch(checked = gattServerEnabled, onCheckedChange = { manager.setGattServerEnabled(it) scope.launch { @@ -145,9 +147,9 @@ fun DebugSettingsSheet( }) } val serverCount = connectedDevices.count { it.connectionType == ConnectionType.GATT_SERVER } - Text("connections: $serverCount / $maxServer", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_connections_fmt, serverCount, maxServer), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) Row(verticalAlignment = Alignment.CenterVertically) { - Text("max server", fontFamily = FontFamily.Monospace, modifier = Modifier.width(90.dp)) + Text(stringResource(R.string.debug_max_server), fontFamily = FontFamily.Monospace, modifier = Modifier.width(90.dp)) Slider( value = maxServer.toFloat(), onValueChange = { manager.setMaxServerConnections(it.toInt().coerceAtLeast(1)) }, @@ -156,7 +158,7 @@ fun DebugSettingsSheet( ) } Row(verticalAlignment = Alignment.CenterVertically) { - Text("gatt client", fontFamily = FontFamily.Monospace, modifier = Modifier.weight(1f)) + Text(stringResource(R.string.debug_gatt_client), fontFamily = FontFamily.Monospace, modifier = Modifier.weight(1f)) Switch(checked = gattClientEnabled, onCheckedChange = { manager.setGattClientEnabled(it) scope.launch { @@ -165,9 +167,9 @@ fun DebugSettingsSheet( }) } val clientCount = connectedDevices.count { it.connectionType == ConnectionType.GATT_CLIENT } - Text("connections: $clientCount / $maxClient", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_connections_fmt, clientCount, maxClient), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) Row(verticalAlignment = Alignment.CenterVertically) { - Text("max client", fontFamily = FontFamily.Monospace, modifier = Modifier.width(90.dp)) + Text(stringResource(R.string.debug_max_client), fontFamily = FontFamily.Monospace, modifier = Modifier.width(90.dp)) Slider( value = maxClient.toFloat(), onValueChange = { manager.setMaxClientConnections(it.toInt().coerceAtLeast(1)) }, @@ -176,9 +178,9 @@ fun DebugSettingsSheet( ) } val overallCount = connectedDevices.size - Text("connections: $overallCount / $maxOverall", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_overall_connections_fmt, overallCount, maxOverall), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) Row(verticalAlignment = Alignment.CenterVertically) { - Text("max overall", fontFamily = FontFamily.Monospace, modifier = Modifier.width(90.dp)) + Text(stringResource(R.string.debug_max_overall), fontFamily = FontFamily.Monospace, modifier = Modifier.width(90.dp)) Slider( value = maxOverall.toFloat(), onValueChange = { manager.setMaxConnectionsOverall(it.toInt().coerceAtLeast(1)) }, @@ -187,7 +189,7 @@ fun DebugSettingsSheet( ) } Text( - "turn roles on/off and close all connections when disabled", + stringResource(R.string.debug_roles_hint), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f) @@ -202,12 +204,12 @@ fun DebugSettingsSheet( Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp)) { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Icon(Icons.Filled.PowerSettingsNew, contentDescription = null, tint = Color(0xFFFF9500)) - Text("packet relay", fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) + Text(stringResource(R.string.debug_packet_relay), fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) Spacer(Modifier.weight(1f)) Switch(checked = packetRelayEnabled, onCheckedChange = { manager.setPacketRelayEnabled(it) }) } - Text("since start: ${relayStats.totalRelaysCount}", fontFamily = FontFamily.Monospace, fontSize = 11.sp) - Text("last 10s: ${relayStats.last10SecondRelays} • 1m: ${relayStats.lastMinuteRelays} • 15m: ${relayStats.last15MinuteRelays}", fontFamily = FontFamily.Monospace, fontSize = 11.sp) + Text(stringResource(R.string.debug_since_start_fmt, relayStats.totalRelaysCount), fontFamily = FontFamily.Monospace, fontSize = 11.sp) + Text(stringResource(R.string.debug_relays_window_fmt, relayStats.last10SecondRelays, relayStats.lastMinuteRelays, relayStats.last15MinuteRelays), fontFamily = FontFamily.Monospace, fontSize = 11.sp) // Realtime graph: per-second relays, full-width canvas, bottom-up bars, fast decay var series by remember { mutableStateOf(List(60) { 0f }) } LaunchedEffect(isPresented) { @@ -295,15 +297,15 @@ fun DebugSettingsSheet( Icon(Icons.Filled.SettingsEthernet, contentDescription = null, tint = Color(0xFF9C27B0)) Text("sync settings", fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) } - Text("max packets per sync: $seenCapacity", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_max_packets_per_sync_fmt, seenCapacity), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) Slider(value = seenCapacity.toFloat(), onValueChange = { manager.setSeenPacketCapacity(it.toInt()) }, valueRange = 10f..1000f, steps = 99) - Text("max GCS filter size: $gcsMaxBytes bytes (128–1024)", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_max_gcs_filter_size_fmt, gcsMaxBytes), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) Slider(value = gcsMaxBytes.toFloat(), onValueChange = { manager.setGcsMaxBytes(it.toInt()) }, valueRange = 128f..1024f, steps = 0) - Text("target FPR: ${String.format("%.2f", gcsFpr)}%", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_target_fpr_fmt, String.format("%.2f", gcsFpr)), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) Slider(value = gcsFpr.toFloat(), onValueChange = { manager.setGcsFprPercent(it.toDouble()) }, valueRange = 0.1f..5.0f, steps = 49) val p = remember(gcsFpr) { com.bitchat.android.sync.GCSFilter.deriveP(gcsFpr / 100.0) } val nmax = remember(gcsFpr, gcsMaxBytes) { com.bitchat.android.sync.GCSFilter.estimateMaxElementsForSize(gcsMaxBytes, p) } - Text("derived P: $p • est. max elements: $nmax", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_derived_p_fmt, p, nmax), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) } } } @@ -314,10 +316,10 @@ fun DebugSettingsSheet( Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Icon(Icons.Filled.Devices, contentDescription = null, tint = Color(0xFF4CAF50)) - Text("connected devices", fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) + Text(stringResource(R.string.debug_connected_devices), fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) } val localAddr = remember { meshService.connectionManager.getLocalAdapterAddress() } - Text("our device id: ${localAddr ?: "unknown"}", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text(stringResource(R.string.debug_our_device_id_fmt, localAddr ?: stringResource(R.string.unknown)), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) if (connectedDevices.isEmpty()) { Text("none", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.6f)) } else { @@ -325,11 +327,11 @@ fun DebugSettingsSheet( Surface(shape = RoundedCornerShape(8.dp), color = colorScheme.surface.copy(alpha = 0.6f)) { Row(Modifier.fillMaxWidth().padding(10.dp), verticalAlignment = Alignment.CenterVertically) { Column(Modifier.weight(1f)) { - Text("${dev.peerID ?: "unknown"} • ${dev.deviceAddress}", fontFamily = FontFamily.Monospace, fontSize = 12.sp) - val roleLabel = if (dev.connectionType == ConnectionType.GATT_SERVER) "as server (we host)" else "as client (we connect)" - Text("${dev.nickname ?: ""} • RSSI: ${dev.rssi ?: "?"} • $roleLabel${if (dev.isDirectConnection) " • direct" else ""}", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text((dev.peerID ?: stringResource(R.string.unknown)) + " • ${dev.deviceAddress}", fontFamily = FontFamily.Monospace, fontSize = 12.sp) + val roleLabel = if (dev.connectionType == ConnectionType.GATT_SERVER) stringResource(R.string.debug_role_server) else stringResource(R.string.debug_role_client) + Text("${dev.nickname ?: ""} • " + stringResource(R.string.debug_rssi_fmt, dev.rssi ?: stringResource(R.string.debug_question_mark)) + " • $roleLabel" + (if (dev.isDirectConnection) stringResource(R.string.debug_direct_suffix) else ""), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) } - Text("disconnect", color = Color(0xFFBF1A1A), fontFamily = FontFamily.Monospace, modifier = Modifier.clickable { + Text(stringResource(R.string.debug_disconnect), color = Color(0xFFBF1A1A), fontFamily = FontFamily.Monospace, modifier = Modifier.clickable { meshService.connectionManager.disconnectAddress(dev.deviceAddress) }) } @@ -346,19 +348,19 @@ fun DebugSettingsSheet( Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Icon(Icons.Filled.Bluetooth, contentDescription = null, tint = Color(0xFF007AFF)) - Text("recent scan results", fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) + Text(stringResource(R.string.debug_recent_scan_results), fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) } if (scanResults.isEmpty()) { - Text("none", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.6f)) + Text(stringResource(R.string.debug_none), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.6f)) } else { scanResults.forEach { res -> Surface(shape = RoundedCornerShape(8.dp), color = colorScheme.surface.copy(alpha = 0.6f)) { Row(Modifier.fillMaxWidth().padding(10.dp), verticalAlignment = Alignment.CenterVertically) { Column(Modifier.weight(1f)) { - Text("${res.peerID ?: "unknown"} • ${res.deviceAddress}", fontFamily = FontFamily.Monospace, fontSize = 12.sp) - Text("${res.deviceName ?: ""} • RSSI: ${res.rssi}", fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) + Text((res.peerID ?: stringResource(R.string.unknown)) + " • ${res.deviceAddress}", fontFamily = FontFamily.Monospace, fontSize = 12.sp) + Text(stringResource(R.string.debug_rssi_fmt, res.rssi.toString()), fontFamily = FontFamily.Monospace, fontSize = 11.sp, color = colorScheme.onSurface.copy(alpha = 0.7f)) } - Text("connect", color = Color(0xFF00C851), fontFamily = FontFamily.Monospace, modifier = Modifier.clickable { + Text(stringResource(R.string.debug_connect), color = Color(0xFF00C851), fontFamily = FontFamily.Monospace, modifier = Modifier.clickable { meshService.connectionManager.connectToAddress(res.deviceAddress) }) } @@ -375,9 +377,9 @@ fun DebugSettingsSheet( Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Icon(Icons.Filled.BugReport, contentDescription = null, tint = Color(0xFFFF9500)) - Text("debug console", fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) + Text(stringResource(R.string.debug_debug_console), fontFamily = FontFamily.Monospace, fontSize = 14.sp, fontWeight = FontWeight.Medium) Spacer(Modifier.weight(1f)) - Text("clear", color = Color(0xFFBF1A1A), fontFamily = FontFamily.Monospace, modifier = Modifier.clickable { + Text(stringResource(R.string.debug_clear), color = Color(0xFFBF1A1A), fontFamily = FontFamily.Monospace, modifier = Modifier.clickable { manager.clearDebugMessages() }) } diff --git a/app/src/main/java/com/bitchat/android/ui/media/AudioMessageItem.kt b/app/src/main/java/com/bitchat/android/ui/media/AudioMessageItem.kt index d01e7a30..264d9d6c 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/AudioMessageItem.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/AudioMessageItem.kt @@ -19,6 +19,8 @@ import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import com.bitchat.android.mesh.BluetoothMeshService import com.bitchat.android.model.BitchatMessage import androidx.compose.material3.ColorScheme @@ -91,7 +93,7 @@ fun AudioMessageItem( .clickable { onCancelTransfer?.invoke(message) }, contentAlignment = Alignment.Center ) { - Icon(imageVector = Icons.Filled.Close, contentDescription = "Cancel", tint = Color.White, modifier = Modifier.size(16.dp)) + Icon(imageVector = Icons.Filled.Close, contentDescription = stringResource(R.string.cd_cancel), tint = Color.White, modifier = Modifier.size(16.dp)) } } } diff --git a/app/src/main/java/com/bitchat/android/ui/media/FileMessageItem.kt b/app/src/main/java/com/bitchat/android/ui/media/FileMessageItem.kt index 8d7318af..ca57931b 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/FileMessageItem.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/FileMessageItem.kt @@ -19,6 +19,8 @@ import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -28,6 +30,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.bitchat.android.features.file.FileUtils import com.bitchat.android.model.BitchatFilePacket @@ -60,7 +63,7 @@ fun FileMessageItem( // File icon Icon( imageVector = Icons.Filled.Description, - contentDescription = "File", + contentDescription = stringResource(com.bitchat.android.R.string.cd_file), tint = getFileIconColor(packet.fileName), modifier = Modifier.size(32.dp) ) @@ -70,13 +73,13 @@ fun FileMessageItem( verticalArrangement = Arrangement.spacedBy(4.dp) ) { // File name - Text( - text = packet.fileName, - style = MaterialTheme.typography.bodyLarge, - fontWeight = androidx.compose.ui.text.font.FontWeight.Medium, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) + Text( + text = packet.fileName, + style = MaterialTheme.typography.bodyLarge, + fontWeight = androidx.compose.ui.text.font.FontWeight.Medium, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) // File details Row( diff --git a/app/src/main/java/com/bitchat/android/ui/media/FilePickerButton.kt b/app/src/main/java/com/bitchat/android/ui/media/FilePickerButton.kt index 384e9c9d..16d92d7a 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/FilePickerButton.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/FilePickerButton.kt @@ -14,6 +14,8 @@ import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import com.bitchat.android.features.file.FileUtils @Composable @@ -44,7 +46,7 @@ fun FilePickerButton( ) { Icon( imageVector = Icons.Filled.Attachment, - contentDescription = "Pick file", + contentDescription = stringResource(R.string.cd_pick_file), tint = Color.Gray, modifier = Modifier.size(20.dp).rotate(90f) ) diff --git a/app/src/main/java/com/bitchat/android/ui/media/FileSendingAnimation.kt b/app/src/main/java/com/bitchat/android/ui/media/FileSendingAnimation.kt index a41a7551..2f40dec0 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/FileSendingAnimation.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/FileSendingAnimation.kt @@ -28,6 +28,9 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.unit.dp +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import kotlinx.coroutines.delay /** @@ -77,7 +80,7 @@ fun FileSendingAnimation( // File icon Icon( imageVector = Icons.Filled.Description, - contentDescription = "File", + contentDescription = stringResource(R.string.cd_file), tint = Color(0xFF00C851), // Green like app theme modifier = Modifier.size(32.dp) ) @@ -102,7 +105,7 @@ fun FileSendingAnimation( // Blinking cursor (only if not fully revealed) if (animatedChars < fileName.length && showCursor) { androidx.compose.material3.Text( - text = "_", + text = stringResource(R.string.underscore), style = MaterialTheme.typography.bodyMedium.copy( fontFamily = androidx.compose.ui.text.font.FontFamily.Monospace, color = Color.White @@ -132,10 +135,12 @@ private fun FileProgressBars( val filledBars = (progress * bars).toInt() // Create a matrix-style progress bar string + val ctx = LocalContext.current val progressString = buildString { + val brackets = ctx.getString(R.string.progress_bar_brackets, "", 0) append("[") for (i in 0 until bars) { - append(if (i < filledBars) "█" else "░") + append(if (i < filledBars) ctx.getString(R.string.progress_filled) else ctx.getString(R.string.progress_empty)) } append("] ") append("${(progress * 100).toInt()}%") diff --git a/app/src/main/java/com/bitchat/android/ui/media/FileViewerDialog.kt b/app/src/main/java/com/bitchat/android/ui/media/FileViewerDialog.kt index 0293eabd..6ef262e5 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/FileViewerDialog.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/FileViewerDialog.kt @@ -20,9 +20,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog +import com.bitchat.android.R import com.bitchat.android.features.file.FileUtils import com.bitchat.android.model.BitchatFilePacket import kotlinx.coroutines.launch @@ -54,7 +56,7 @@ fun FileViewerDialog( ) { // File received header Text( - text = "📎 File Received", + text = stringResource(R.string.file_viewer_title), style = MaterialTheme.typography.headlineSmall, color = MaterialTheme.colorScheme.primary ) @@ -65,17 +67,17 @@ fun FileViewerDialog( horizontalAlignment = Alignment.Start ) { Text( - text = "📄 ${packet.fileName}", + text = stringResource(R.string.file_viewer_name, packet.fileName), style = MaterialTheme.typography.bodyLarge, fontWeight = androidx.compose.ui.text.font.FontWeight.Medium ) Text( - text = "📏 Size: ${FileUtils.formatFileSize(packet.fileSize)}", + text = stringResource(R.string.file_viewer_size, FileUtils.formatFileSize(packet.fileSize)), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant ) Text( - text = "🏷️ Type: ${packet.mimeType}", + text = stringResource(R.string.file_viewer_type, packet.mimeType), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant ) @@ -108,7 +110,7 @@ fun FileViewerDialog( containerColor = MaterialTheme.colorScheme.primary ) ) { - Text("📂 Open / Save") + Text(stringResource(R.string.file_viewer_open_save)) } // Dismiss button @@ -119,13 +121,13 @@ fun FileViewerDialog( containerColor = MaterialTheme.colorScheme.secondary ) ) { - Text("❌ Close") + Text(stringResource(R.string.close_with_emoji)) } } } } } -} +} /** * Attempts to open a file using system viewers or save to device diff --git a/app/src/main/java/com/bitchat/android/ui/media/FullScreenImageViewer.kt b/app/src/main/java/com/bitchat/android/ui/media/FullScreenImageViewer.kt index 24e2fa07..2964f9c0 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/FullScreenImageViewer.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/FullScreenImageViewer.kt @@ -32,6 +32,8 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R import java.io.File /** @@ -75,13 +77,13 @@ fun FullScreenImageViewer(imagePaths: List, initialIndex: Int = 0, onClo bmp?.let { androidx.compose.foundation.Image( bitmap = it.asImageBitmap(), - contentDescription = "Image ${page + 1} of ${imagePaths.size}", + contentDescription = stringResource(R.string.cd_image_index_of, page + 1, imagePaths.size), modifier = Modifier.fillMaxSize(), contentScale = ContentScale.Fit ) } ?: run { Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { - Text(text = "Image unavailable", color = Color.White) + Text(text = stringResource(R.string.image_unavailable), color = Color.White) } } } @@ -96,7 +98,7 @@ fun FullScreenImageViewer(imagePaths: List, initialIndex: Int = 0, onClo .padding(horizontal = 12.dp, vertical = 4.dp) ) { Text( - text = "${(pagerState.currentPage ?: 0) + 1} / ${imagePaths.size}", + text = stringResource(R.string.image_counter, (pagerState.currentPage ?: 0) + 1, imagePaths.size), color = Color.White, fontSize = 14.sp, fontFamily = androidx.compose.ui.text.font.FontFamily.Monospace @@ -118,7 +120,7 @@ fun FullScreenImageViewer(imagePaths: List, initialIndex: Int = 0, onClo .clickable { saveToDownloads(context, imagePaths[pagerState.currentPage].toString()) }, contentAlignment = Alignment.Center ) { - androidx.compose.material3.Icon(Icons.Filled.Download, "Save current image", tint = Color.White) + androidx.compose.material3.Icon(Icons.Filled.Download, stringResource(R.string.cd_save_current_image), tint = Color.White) } Spacer(Modifier.width(12.dp)) Box( @@ -128,7 +130,7 @@ fun FullScreenImageViewer(imagePaths: List, initialIndex: Int = 0, onClo .clickable { onClose() }, contentAlignment = Alignment.Center ) { - androidx.compose.material3.Icon(Icons.Filled.Close, "Close", tint = Color.White) + androidx.compose.material3.Icon(Icons.Filled.Close, stringResource(R.string.cd_close), tint = Color.White) } } } @@ -161,10 +163,10 @@ private fun saveToDownloads(context: android.content.Context, path: String) { context.contentResolver.update(uri, v2, null, null) } // Show toast message indicating the image has been saved - Toast.makeText(context, "Image saved to Downloads", Toast.LENGTH_SHORT).show() + Toast.makeText(context, context.getString(R.string.toast_image_saved), Toast.LENGTH_SHORT).show() } }.onFailure { // Optionally handle failure case (e.g., show error toast) - Toast.makeText(context, "Failed to save image", Toast.LENGTH_SHORT).show() + Toast.makeText(context, context.getString(R.string.toast_failed_to_save_image), Toast.LENGTH_SHORT).show() } } diff --git a/app/src/main/java/com/bitchat/android/ui/media/ImageMessageItem.kt b/app/src/main/java/com/bitchat/android/ui/media/ImageMessageItem.kt index a2206594..2310cd5b 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/ImageMessageItem.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/ImageMessageItem.kt @@ -16,15 +16,17 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap -import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.draw.clip import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.text.TextLayoutResult -import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.text.font.FontFamily import com.bitchat.android.mesh.BluetoothMeshService import com.bitchat.android.model.BitchatMessage import com.bitchat.android.model.BitchatMessageType @@ -113,7 +115,7 @@ fun ImageMessageItem( // Fully revealed image Image( bitmap = img, - contentDescription = "Image", + contentDescription = stringResource(com.bitchat.android.R.string.cd_image), modifier = Modifier .widthIn(max = 300.dp) .aspectRatio(aspect) @@ -137,13 +139,13 @@ fun ImageMessageItem( .clickable { onCancelTransfer?.invoke(message) }, contentAlignment = Alignment.Center ) { - Icon(imageVector = Icons.Filled.Close, contentDescription = "Cancel", tint = Color.White, modifier = Modifier.size(14.dp)) + Icon(imageVector = Icons.Filled.Close, contentDescription = stringResource(com.bitchat.android.R.string.cd_cancel), tint = Color.White, modifier = Modifier.size(14.dp)) } } } } } else { - Text(text = "[image unavailable]", fontFamily = FontFamily.Monospace, color = Color.Gray) + Text(text = stringResource(com.bitchat.android.R.string.image_unavailable), fontFamily = FontFamily.Monospace, color = Color.Gray) } } } diff --git a/app/src/main/java/com/bitchat/android/ui/media/ImagePickerButton.kt b/app/src/main/java/com/bitchat/android/ui/media/ImagePickerButton.kt index aa3a0b7c..662ffc39 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/ImagePickerButton.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/ImagePickerButton.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.bitchat.android.features.media.ImageUtils @@ -35,7 +36,7 @@ fun ImagePickerButton( ) { Icon( imageVector = Icons.Filled.Photo, - contentDescription = "Pick image", + contentDescription = stringResource(com.bitchat.android.R.string.pick_image), tint = Color.Gray, modifier = Modifier.size(20.dp) ) diff --git a/app/src/main/java/com/bitchat/android/ui/media/MediaPickerOptions.kt b/app/src/main/java/com/bitchat/android/ui/media/MediaPickerOptions.kt index e638512c..47883499 100644 --- a/app/src/main/java/com/bitchat/android/ui/media/MediaPickerOptions.kt +++ b/app/src/main/java/com/bitchat/android/ui/media/MediaPickerOptions.kt @@ -26,6 +26,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex +import androidx.compose.ui.res.stringResource +import com.bitchat.android.R /** * Media picker that offers image and file options @@ -53,7 +55,7 @@ fun MediaPickerOptions( ) { Icon( imageVector = Icons.Filled.Add, - contentDescription = "Pick media", + contentDescription = stringResource(R.string.cd_pick_media), tint = Color.Black, modifier = Modifier.size(20.dp) ) @@ -98,7 +100,7 @@ fun MediaPickerOptions( modifier = Modifier.size(16.dp) ) androidx.compose.material3.Text( - text = "Image", + text = stringResource(R.string.media_type_image), style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onPrimaryContainer ) @@ -126,7 +128,7 @@ fun MediaPickerOptions( modifier = Modifier.size(16.dp) ) androidx.compose.material3.Text( - text = "File", + text = stringResource(R.string.media_type_file), style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSecondaryContainer ) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml new file mode 100644 index 00000000..a76e4401 --- /dev/null +++ b/app/src/main/res/values-ar/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + إذن البلوتوث مطلوب للدردشة مباشرة مع الآخرين بدون إنترنت. + إذن الموقع مطلوب للعثور على الأجهزة القريبة عبر البلوتوث. + إذن الإشعارات مطلوب لتنبيهك بالرسائل الجديدة. + + + اسم مستعار + اكتب رسالة… + كلمة المرور + الانضمام إلى القناة + مغادرة + إرسال + عرض الأوامر + رجوع + أشخاص + القنوات + مستخدمون متصلون + لا أحد متصل + انقر ثلاث مرات لمسح جميع البيانات + شبكتك + + + تم اكتشاف تحسين البطارية + تحسين البطارية معطّل + لا حاجة لتحسين البطارية + جارٍ التحقق من تحسين البطارية + لماذا تعطيل تحسين البطارية؟ + تعمل bitchat في الخلفية للحفاظ على اتصالات الشبكة المتشابكة مع الأجهزة القريبة. قد يقطع تحسين البطارية هذه الاتصالات مما يؤدي إلى تأخير الرسائل أو فقدانها.\n\nيساعد تعطيل تحسين البطارية في ضمان اتصال موثوق بين النظراء. + تعطيل تحسين البطارية + ملاحظة: يمكنك تغيير ذلك لاحقًا من إعدادات أندرويد > التطبيقات > bitchat > البطارية. + جهازك لا يحتاج إلى إعدادات تحسين البطارية. ستعمل bitchat بشكل طبيعي. + جهازك لا يحتاج إلى إعدادات تحسين البطارية. ستعمل bitchat بشكل طبيعي. + يمكن لـ bitchat العمل بشكل موثوق في الخلفية + • تسليم موثوق للرسائل\n• الحفاظ على اتصال الشبكة المتشابكة\n• تمرير الرسائل في الخلفية\n• منع انقطاع الاتصال + التحقق مرة أخرى + تخطي الآن + متابعة + إعادة المحاولة + تخطي + + + و%1$d إضافية + %1$d رسالة من %2$d أشخاص + و%1$d محادثات أخرى + 👥 مستخدمون قريبون! + شخص واحد قريب + %1$d أشخاص قريبون + رسائل جديدة + رسائل موقع جديدة + تم ذكرك في %1$s + تم ذكرك في %1$s (+%2$d أخرى) + %1$d من الإشارات في %2$s + نشاط جديد في %1$s + رسائل في %1$s + %1$s انضم إلى المحادثة + bitchat – %1$d إشارات + bitchat – محادثات المواقع + %1$d رسائل من %2$d مواقع + تم ذكرك في محادثة الشبكة + %1$d من الإشارات في محادثة الشبكة + و%1$d مواقع أخرى + و%1$d إضافية + + + إضافة إلى المفضلة + إزالة من المفضلة + إضافة إشارة مرجعية + + + رجوع + القناة: %1$s + مغادرة + يمكن الوصول عبر Nostr + رسائل خاصة غير مقروءة + تبديل الإشارة المرجعية + تم الانتقال + حالة Tor + الأقران المتصلون + مشاركو geohash + جاهز للمصافحة + المصافحة جارية + تشفير طرف إلى طرف + فشلت المصافحة + + + 📎 تم استلام ملف + 📄 %1$s + 📏 الحجم: %1$s + 🏷️ النوع: %1$s + 📂 فتح / حفظ + ❌ إغلاق + اختيار صورة + + + دردشة شبكية لامركزية مع تشفير طرف إلى طرف + دردشة شبكية دون اتصال + تواصل مباشرة عبر Bluetooth LE بدون إنترنت أو خوادم. تُعاد توجيه الرسائل عبر الأجهزة القريبة لتوسيع النطاق. + قنوات geohash عبر الإنترنت + تواصل مع أشخاص بالقرب منك عبر قنوات تعتمد على geohash. وسّع الشبكة عبر مرحلات الإنترنت العامة. + تشفير طرف إلى طرف + الرسائل الخاصة مشفّرة. رسائل القنوات عامة. + المظهر + النظام + فاتح + داكن + برهان العمل + PoW معطّل + PoW مفعّل + أضف برهان العمل لرسائل geohash للحد من الرسائل المزعجة. + الصعوبة: %1$d بت (~%2$s) + الصعوبة %1$d تتطلب ~%2$s من محاولات الهاش + لا حاجة لبرهان العمل + منخفض جدًا – حماية دنيا من الرسائل المزعجة + منخفض – حماية أساسية + متوسط – حماية جيدة + عالٍ – حماية قوية + عالٍ جدًا – قد يسبب تأخيرًا + شديد – يتطلب قدرة حوسبية كبيرة + الشبكة + Tor معطّل + Tor مفعّل + توجيه حركة الإنترنت عبر Tor لمزيد من الخصوصية. + حالة Tor: %1$s، التمهيد %2$d%% + آخر: %1$s + مسح البيانات الطارئ + تلميح: انقر ثلاث مرات على عنوان التطبيق لمسح كل البيانات المحفوظة – بما في ذلك الرسائل والمفاتيح والإعدادات. + إعدادات التصحيح + مفتوح المصدر • الخصوصية أولاً • لامركزي + إغلاق + إلغاء + + + تحذير + خدمات الموقع + الخصوصية + خطأ + تحسين البطارية + الفوائد + جارٍ التحقق من تحسين البطارية + تحسين البطارية غير مدعوم + Bluetooth + رسالة غير مقروءة + فتح الخريطة + إزالة الإشارة المرجعية + انتقال + محدد + مغادرة القناة + يمكن الوصول عبر Nostr + مفضل (غير متصل) + خفض الدقة + رفع الدقة + اختر geohash + التمرير إلى الأسفل + ملف + صورة + إلغاء + رابط + اختيار وسائط + اختيار ملف + حفظ الصورة الحالية + إغلاق + صورة %1$d من %2$d + الخصوصية محمية + تسجيل مذكرة صوتية + دردشة شبكية دون اتصال + قنوات geohash عبر الإنترنت + تشفير طرف إلى طرف + + + صورة %1$d من %2$d + الصورة غير متاحة + تم حفظ الصورة في "التنزيلات" + تعذّر حفظ الصورة + تم حفظ الصورة في "التنزيلات" + تعذّر حفظ الصورة + اختيار ملف + [الملف غير متاح] + غير معروف + + + اختر إجراءً لهذه الرسالة أو هذا المستخدم + اختر إجراءً لهذا المستخدم + نسخ الرسالة + انسخ هذه الرسالة إلى الحافظة + صفع %1$s + إرسال صفعة ودّية + عناق %1$s + إرسال عناق ودي + حظر %1$s + حظر جميع رسائل هذا المستخدم + + + #قنوات الموقع + دردش مع أشخاص قريبين منك عبر قنوات geohash. تتم مشاركة geohash تقريبي فقط، وليس بيانات GPS الدقيقة. للحفاظ على خصوصيتك، لا تلتقط لقطات شاشة ولا تشارك هذه الشاشة. + منح إذن الموقع + تم رفض إذن الموقع. فعّله من الإعدادات لاستخدام قنوات الموقع. + فتح الإعدادات + \u2713 تم منح إذن الموقع + جارٍ التحقق من الأذونات… + البحث عن قنوات قريبة… + محفوظة + Geohash + geohash غير صالح + انتقال + تعطيل خدمات الموقع + تمكين خدمات الموقع + mesh + مربّع سكني + حيّ + مدينة + إقليم + منطقة + #bluetooth • %1$s + + + أدوات التصحيح + أدوات المطوّر للتشخيص والتحكم + سجل تفصيلي + تسجّل انضمام/مغادرة الأقران، اتجاه الاتصال، تمرير الحزم والمرحلين + أدوار البلوتوث + خادم GATT + الاتصالات: %1$d / %2$d + الحد الأقصى للخادم + عميل GATT + الحد الأقصى للعميل + الاتصالات: %1$d / %2$d + الحد الأقصى الكلي + تمرير الحزم + منذ البدء: %1$d + تبديل الأدوار وإغلاق جميع الاتصالات عند التعطيل + إعدادات المزامنة + الحد الأقصى للحزم لكل مزامنة: %1$d + الحد الأقصى لحجم مرشح GCS: %1$d بايت (128–1024) + نسبة الإيجابيات الكاذبة المستهدفة: %1$.2f%% + الأجهزة المتصلة + معرّف جهازنا: %1$s + لا شيء + قطع الاتصال + الأجهزة التي تم فحصها مؤخرًا + اتصال + وحدة تصحيح + مسح + آخر 10 ثوان: %1$d • 1 دقيقة: %2$d • 15 دقيقة: %3$d + قيمة P المشتقة: %1$s • الحد الأقصى للعناصر المقدّر: %2$s + • مباشر + %1$s • RSSI: %2$s + كخادم (نحن نستضيف) + كعميل (نحن نتصل) + + + خدمات الموقع مطلوبة + الخصوصية أولاً + bitchat لا يتتبع موقعك.\n\nخدمات الموقع مطلوبة لمسح البلوتوث وميزة دردشة geohash. + bitchat يحتاج خدمات الموقع من أجل: + • مسح أجهزة البلوتوث\n• اكتشاف المستخدمين القريبين في شبكة mesh\n• ميزة دردشة geohash\n• بدون تتبع أو جمع للموقع + فتح إعدادات الموقع + التحقق مرة أخرى + خدمات الموقع غير متاحة + خدمات الموقع غير متاحة على هذا الجهاز. هذا غير معتاد لأن خدمات الموقع قياسية في أجهزة أندرويد.\n\nتتطلب bitchat خدمات الموقع لعمل مسح البلوتوث بشكل صحيح (متطلب أندرويد). بدون ذلك لا يمكن للتطبيق اكتشاف المستخدمين القريبين. + جارٍ التحقق من خدمات الموقع… + البلوتوث مطلوب + bitchat يحتاج البلوتوث من أجل: + • اكتشاف المستخدمين القريبين\n• إنشاء اتصالات شبكة mesh\n• إرسال واستقبال الرسائل\n• العمل بدون إنترنت أو خوادم + تفعيل البلوتوث + البلوتوث غير مدعوم + هذا الجهاز لا يدعم Bluetooth Low Energy (BLE) المطلوب لعمل bitchat.\n\nتحتاج bitchat إلى BLE لإنشاء شبكات mesh والتواصل مع الأجهزة القريبة بدون إنترنت. + جارٍ التحقق من حالة البلوتوث… + تم اكتشاف تحسين البطارية + تحسين البطارية مفعّل + تحتاج bitchat للعمل في الخلفية للحفاظ على اتصالات mesh. قد يقطع تحسين البطارية هذه الاتصالات. + فوائد التعطيل + • تسليم موثوق للرسائل\n• يحافظ على اتصال mesh\n• يمنع انقطاع الاتصال + تعطيل تحسين البطارية + تم تعطيل تحسين البطارية + متابعة + جارٍ تهيئة شبكة mesh + جارٍ إعداد شبكة Bluetooth mesh… + يجب أن يستغرق ذلك بضع ثوانٍ فقط + الإعداد غير مكتمل + حاول مرة أخرى + خصوصيتك محمية + • بدون تتبع أو جمع للبيانات\n• دردشات Bluetooth mesh تعمل دون اتصال بالكامل\n• دردشات geohash تستخدم الإنترنت + الأذونات + منح الأذونات + bitchat لا يتتبع موقعك + الأشخاص + لا أحد هنا… + (أنت) + حرّك وقرّب لاختيار geohash + اختيار + اكتب رسالة… + إشارة + (~%1$s) + v%1$s + image/* + صورة + ملف + + + 📷 أرسل صورة + 🎤 أرسل مذكرة صوتية + 📎 أرسل ملفًا + + + تشغيل + إيقاف مؤقت + تعدين PoW + PoW مفعّل + برهان العمل + يتم التعدين… + pow: %1$dbit + + + مطلوب لاكتشاف مستخدمي bitchat عبر البلوتوث + اسمح لـ bitchat بالاتصال بالأجهزة القريبة + مطلوب من أندرويد لاكتشاف مستخدمي bitchat القريبين عبر البلوتوث + bitchat يحتاج ذلك لمسح الأجهزة القريبة + تلقي إشعارات عند استلام رسائل خاصة + اسمح لـ bitchat بإرسال الإشعارات إليك + تعطيل تحسين البطارية لضمان أن bitchat يعمل بشكل موثوق في الخلفية ويحافظ على اتصالات الشبكة المتشابكة + اسمح لـ bitchat بالعمل بدون قيود البطارية + + + الأجهزة القريبة + موقع دقيق + ميكروفون + إشعارات + تحسين البطارية + أخرى + + + أدخل كلمة مرور القناة + القناة %1$s محمية بكلمة مرور. أدخل كلمة المرور للانضمام. + كلمة المرور + انضمام + إلغاء + + + + و%d إضافية + و%d إضافية + + + + شخص واحد + %d أشخاص + + + diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml new file mode 100644 index 00000000..be200e3a --- /dev/null +++ b/app/src/main/res/values-bn/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + ইন্টারনেট ছাড়াই অন্যদের সাথে সরাসরি চ্যাট করার জন্য ব্লুটুথ অনুমতি প্রয়োজন। + ব্লুটুথের মাধ্যমে কাছাকাছি ডিভাইস খুঁজে পেতে অবস্থান অনুমতি প্রয়োজন। + নতুন বার্তা সম্পর্কে আপনাকে জানাতে বিজ্ঞপ্তি অনুমতি প্রয়োজন। + + + ডাকনাম + বার্তা টাইপ করুন… + পাসওয়ার্ড + চ্যানেলে যোগ দিন + ছেড়ে দিন + পাঠান + কমান্ড দেখান + ফিরে যান + মানুষ + চ্যানেল + অনলাইন ব্যবহারকারী + কেউ সংযুক্ত নেই + সমস্ত ডেটা সাফ করতে তিনবার ট্যাপ করুন + নেটওয়ার্ক + + + ব্যাটারি অপ্টিমাইজেশন সনাক্ত + ব্যাটারি অপ্টিমাইজেশন নিষ্ক্রিয় + ব্যাটারি অপ্টিমাইজেশন প্রয়োজন নেই + ব্যাটারি অপ্টিমাইজেশন পরীক্ষা করা হচ্ছে + কেন ব্যাটারি অপ্টিমাইজেশন নিষ্ক্রিয় করবেন? + bitchat ব্যাকগ্রাউন্ডে চলে কাছাকাছি ডিভাইসগুলির সাথে মেশ সংযোগ বজায় রাখতে। ব্যাটারি অপ্টিমাইজেশন এই সংযোগগুলি বাধাগ্রস্ত করতে পারে, যার ফলে বার্তা বিলম্বিত বা হারিয়ে যেতে পারে।\n\nব্যাটারি অপ্টিমাইজেশন নিষ্ক্রিয় করা নির্ভরযোগ্য পিয়ার-টু-পিয়ার যোগাযোগ নিশ্চিত করে। + ব্যাটারি অপ্টিমাইজেশন নিষ্ক্রিয় করুন + নোট: আপনি পরে Android Settings > Apps > bitchat > Battery এ এটি পরিবর্তন করতে পারেন। + আপনার ডিভাইসে ব্যাটারি অপ্টিমাইজেশন সেটিংসের প্রয়োজন নেই। bitchat স্বাভাবিকভাবে চলবে। + আপনার ডিভাইসে ব্যাটারি অপ্টিমাইজেশন সেটিংসের প্রয়োজন নেই। bitchat স্বাভাবিকভাবে চলবে। + bitchat নির্ভরযোগ্যভাবে ব্যাকগ্রাউন্ডে চলতে পারে + • নির্ভরযোগ্য বার্তা ডেলিভারি\n• মেশ সংযোগ বজায় রাখা\n• ব্যাকগ্রাউন্ড বার্তা রিলে\n• সংযোগ বিচ্ছিন্নতা প্রতিরোধ + আবার পরীক্ষা করুন + এখন এড়িয়ে যান + চালিয়ে যান + আবার চেষ্টা করুন + এড়িয়ে যান + + + এবং %1$d আরো + %2$d জন থেকে %1$d বার্তা + এবং %1$d আরো কথোপকথন + 👥 কাছাকাছি bitchatter! + কাছাকাছি ১ জন + কাছাকাছি %1$d জন + নতুন বার্তা + নতুন অবস্থান বার্তা + %1$s এ উল্লিখিত + %1$s এ উল্লিখিত (+%2$d আরো) + %2$s এ %1$d উল্লেখ + %1$s এ নতুন কার্যকলাপ + %1$s এ বার্তা + %1$s কথোপকথনে যোগ দিয়েছে + bitchat – %1$d উল্লেখ + bitchat – অবস্থান চ্যাট + %2$d অবস্থান থেকে %1$d বার্তা + মেশ চ্যাটে উল্লিখিত + মেশ চ্যাটে %1$d উল্লেখ + এবং %1$d আরো অবস্থান + এবং %1$d আরো + + + প্রিয়তে যোগ করুন + প্রিয় থেকে সরান + বুকমার্ক যোগ করুন + + + ফিরে যান + চ্যানেল: %1$s + ছেড়ে দিন + Nostr এর মাধ্যমে পৌঁছানো যায় + অপঠিত ব্যক্তিগত বার্তা + বুকমার্ক টগল করুন + টেলিপোর্ট করা হয়েছে + Tor অবস্থা + সংযুক্ত পিয়ার + জিওহ্যাশ অংশগ্রহণকারী + হ্যান্ডশেকের জন্য প্রস্তুত + হ্যান্ডশেক চলছে + এন্ড-টু-এন্ড এনক্রিপ্ট করা + হ্যান্ডশেক ব্যর্থ + + + 📎 ফাইল প্রাপ্ত + 📄 %1$s + 📏 আকার: %1$s + 🏷️ ধরণ: %1$s + 📂 খুলুন / সংরক্ষণ করুন + ❌ বন্ধ করুন + ছবি নির্বাচন করুন + + + এন্ড-টু-এন্ড এনক্রিপশন সহ বিকেন্দ্রীভূত মেশ চ্যাট + অফলাইন মেশ চ্যাট + ইন্টারনেট বা সার্ভার ছাড়াই Bluetooth LE এর মাধ্যমে সরাসরি যোগাযোগ করুন। পরিসর বাড়ানোর জন্য কাছাকাছি ডিভাইসের মাধ্যমে বার্তা রিলে করা হয়। + অনলাইন জিওহ্যাশ চ্যানেল + জিওহ্যাশ-ভিত্তিক চ্যানেলের মাধ্যমে আপনার এলাকার মানুষদের সাথে সংযুক্ত হন। পাবলিক ইন্টারনেট রিলেগুলির মাধ্যমে মেশ বিস্তৃত করুন। + এন্ড-টু-এন্ড এনক্রিপশন + ব্যক্তিগত বার্তাগুলি এনক্রিপ্ট করা। চ্যানেল বার্তাগুলি পাবলিক। + চেহারা + সিস্টেম + হালকা + অন্ধকার + প্রুফ অফ ওয়ার্ক + PoW বন্ধ + PoW চালু + স্প্যাম কঠিন করতে জিওহ্যাশ বার্তায় প্রুফ অফ ওয়ার্ক যোগ করুন। + কঠিনতা: %1$d বিট (~%2$s) + কঠিনতা %1$d প্রয়োজন ~%2$s হ্যাশ প্রচেষ্টা + কোন প্রুফ অফ ওয়ার্ক প্রয়োজন নেই + খুব কম – ন্যূনতম স্প্যাম সুরক্ষা + কম – মৌলিক স্প্যাম সুরক্ষা + মাঝারি – ভাল স্প্যাম সুরক্ষা + উচ্চ – শক্তিশালী স্প্যাম সুরক্ষা + খুব উচ্চ – বিলম্ব ঘটাতে পারে + চরম – উল্লেখযোগ্য কম্পিউটিং পাওয়ার প্রয়োজন + নেটওয়ার্ক + Tor বন্ধ + Tor চালু + আরো গোপনীয়তার জন্য Tor এর মাধ্যমে ইন্টারনেট ট্রাফিক রুট করুন। + Tor অবস্থা: %1$s, বুটস্ট্র্যাপ %2$d%% + শেষ: %1$s + জরুরী ডেটা ক্লিয়ার + টিপ: সংরক্ষিত সমস্ত ডেটা – বার্তা, কী এবং সেটিংস সহ – সাফ করতে অ্যাপ শিরোনামে তিনবার ট্যাপ করুন। + ডিবাগ সেটিংস + ওপেন সোর্স • গোপনীয়তা প্রথম • বিকেন্দ্রীভূত + বন্ধ করুন + বাতিল + + + সতর্কতা + অবস্থান সেবা + গোপনীয়তা + ত্রুটি + ব্যাটারি অপ্টিমাইজেশন + সুবিধা + ব্যাটারি অপ্টিমাইজেশন পরীক্ষা করা হচ্ছে + ব্যাটারি অপ্টিমাইজেশন সমর্থিত নয় + ব্লুটুথ + অপঠিত বার্তা + মানচিত্র খুলুন + বুকমার্ক সরান + টেলিপোর্ট + নির্বাচিত + চ্যানেল ছেড়ে দিন + Nostr এর মাধ্যমে পৌঁছানো যায় + প্রিয় (অফলাইন) + নির্ভুলতা কমান + নির্ভুলতা বাড়ান + জিওহ্যাশ নির্বাচন করুন + নিচে স্ক্রল করুন + ফাইল + ছবি + বাতিল + লিঙ্ক + মিডিয়া নির্বাচন করুন + ফাইল নির্বাচন করুন + বর্তমান ছবি সংরক্ষণ করুন + বন্ধ করুন + ছবি %1$d এর %2$d + গোপনীয়তা সুরক্ষিত + ভয়েস বার্তা রেকর্ড করুন + অফলাইন মেশ চ্যাট + অনলাইন জিওহ্যাশ চ্যানেল + এন্ড-টু-এন্ড এনক্রিপশন + + + ছবি %1$d এর %2$d + ছবি অনুপলব্ধ + ছবি \"Downloads\" এ সংরক্ষিত + ছবি সংরক্ষণ করতে ব্যর্থ + ছবি \"Downloads\" এ সংরক্ষিত + ছবি সংরক্ষণ করতে ব্যর্থ + ফাইল নির্বাচন করুন + [ফাইল অনুপলব্ধ] + অজানা + + + এই বার্তা বা ব্যবহারকারীর জন্য অ্যাকশন নির্বাচন করুন + এই ব্যবহারকারীর জন্য অ্যাকশন নির্বাচন করুন + বার্তা কপি করুন + এই বার্তাটি ক্লিপবোর্ডে কপি করুন + %1$s কে চড় দিন + একটি কৌতুকপূর্ণ চড় পাঠান + %1$s কে আলিঙ্গন করুন + একটি বন্ধুত্বপূর্ণ আলিঙ্গন পাঠান + %1$s কে ব্লক করুন + এই ব্যবহারকারীর সমস্ত বার্তা ব্লক করুন + + + #অবস্থান চ্যানেল + জিওহ্যাশ চ্যানেলের মাধ্যমে আপনার কাছাকাছি মানুষদের সাথে চ্যাট করুন। শুধুমাত্র রূঢ় জিওহ্যাশ শেয়ার করা হয়, সঠিক GPS ডেটা নয়। গোপনীয়তার জন্য দয়া করে এই ভিউ স্ক্রিনশট করবেন না বা শেয়ার করবেন না। + অবস্থান অনুমতি দিন + অবস্থান অনুমতি প্রত্যাখ্যাত। অবস্থান চ্যানেল ব্যবহার করতে সেটিংসে সক্ষম করুন। + সেটিংস খুলুন + \u2713 অবস্থান অনুমতি দেওয়া হয়েছে + অনুমতি পরীক্ষা করা হচ্ছে … + কাছাকাছি চ্যানেল খোঁজা হচ্ছে … + বুকমার্ক করা + জিওহ্যাশ + অবৈধ জিওহ্যাশ + টেলিপোর্ট + অবস্থান সেবা নিষ্ক্রিয় করুন + অবস্থান সেবা সক্রিয় করুন + মেশ + ব্লক + আশপাশ + শহর + প্রদেশ + অঞ্চল + #bluetooth • %1$s + + + ডিবাগ টুল + ডায়াগনস্টিক এবং নিয়ন্ত্রণের জন্য ডেভেলপার টুল + বিস্তারিত লগিং + পিয়ার জয়েন/লিভ, সংযোগ দিক, প্যাকেট ফরওয়ার্ডিং এবং রিলে লগ করে + ব্লুটুথ ভূমিকা + GATT সার্ভার + সংযোগ: %1$d / %2$d + সর্বোচ্চ সার্ভার + GATT ক্লায়েন্ট + সর্বোচ্চ ক্লায়েন্ট + সংযোগ: %1$d / %2$d + সর্বোচ্চ সামগ্রিক + প্যাকেট রিলে + শুরু থেকে: %1$d + ভূমিকা চালু/বন্ধ করুন এবং নিষ্ক্রিয় করার সময় সমস্ত সংযোগ বন্ধ করুন + সিঙ্ক সেটিংস + প্রতি সিঙ্কে সর্বোচ্চ প্যাকেট: %1$d + সর্বোচ্চ GCS ফিল্টার আকার: %1$d বাইট (128–1024) + লক্ষ্য FPR: %1$.2f%% + সংযুক্ত ডিভাইস + আমাদের ডিভাইস ID: %1$s + কোনটি নেই + সংযোগ বিচ্ছিন্ন করুন + সাম্প্রতিক স্ক্যান করা ডিভাইস + সংযোগ করুন + ডিবাগ কনসোল + সাফ করুন + শেষ 10s: %1$d • 1m: %2$d • 15m: %3$d + উৎপন্ন P: %1$s • আনুমানিক সর্বোচ্চ উপাদান: %2$s + • সরাসরি + %1$s • RSSI: %2$s + সার্ভার হিসেবে (আমরা হোস্ট করি) + ক্লায়েন্ট হিসেবে (আমরা সংযোগ করি) + + + অবস্থান সেবা প্রয়োজন + গোপনীয়তা প্রথম + bitchat আপনার অবস্থান ট্র্যাক করে না।\n\nব্লুটুথ স্ক্যানিং এবং জিওহ্যাশ চ্যাট বৈশিষ্ট্যের জন্য অবস্থান সেবা প্রয়োজন। + bitchat এর জন্য অবস্থান সেবা প্রয়োজন: + • ব্লুটুথ ডিভাইস স্ক্যানিং\n• মেশ নেটওয়ার্কে কাছাকাছি ব্যবহারকারী আবিষ্কার\n• জিওহ্যাশ চ্যাট বৈশিষ্ট্য\n• কোন ট্র্যাকিং বা অবস্থান সংগ্রহ নেই + অবস্থান সেটিংস খুলুন + আবার পরীক্ষা করুন + অবস্থান সেবা অনুপলব্ধ + এই ডিভাইসে অবস্থান সেবা উপলব্ধ নেই। এটি অস্বাভাবিক কারণ অবস্থান সেবা Android ডিভাইসে স্ট্যান্ডার্ড।\n\nব্লুটুথ স্ক্যানিং সঠিকভাবে কাজ করার জন্য bitchat এর অবস্থান সেবা প্রয়োজন (Android প্রয়োজনীয়তা)। এটি ছাড়া অ্যাপ কাছাকাছি ব্যবহারকারী আবিষ্কার করতে পারে না। + অবস্থান সেবা পরীক্ষা করা হচ্ছে … + ব্লুটুথ প্রয়োজন + bitchat এর জন্য ব্লুটুথ প্রয়োজন: + • কাছাকাছি ব্যবহারকারী আবিষ্কার\n• মেশ নেটওয়ার্ক সংযোগ তৈরি\n• বার্তা পাঠানো এবং গ্রহণ\n• ইন্টারনেট বা সার্ভার ছাড়া কাজ + ব্লুটুথ সক্রিয় করুন + ব্লুটুথ সমর্থিত নয় + এই ডিভাইস Bluetooth Low Energy (BLE) সমর্থন করে না, যা bitchat কাজ করার জন্য প্রয়োজন।\n\nbitchat এর মেশ নেটওয়ার্ক তৈরি এবং ইন্টারনেট ছাড়াই কাছাকাছি ডিভাইসের সাথে যোগাযোগের জন্য BLE প্রয়োজন। + ব্লুটুথ অবস্থা পরীক্ষা করা হচ্ছে … + ব্যাটারি অপ্টিমাইজেশন সনাক্ত + ব্যাটারি অপ্টিমাইজেশন সক্রিয় + মেশ সংযোগ বজায় রাখতে bitchat অবশ্যই ব্যাকগ্রাউন্ডে চলতে হবে। ব্যাটারি অপ্টিমাইজেশন এই সংযোগগুলি বাধাগ্রস্ত করতে পারে। + নিষ্ক্রিয় করার সুবিধা + • নির্ভরযোগ্য বার্তা ডেলিভারি\n• মেশ সংযোগ বজায় রাখা\n• সংযোগ বিচ্ছিন্নতা প্রতিরোধ + ব্যাটারি অপ্টিমাইজেশন নিষ্ক্রিয় করুন + ব্যাটারি অপ্টিমাইজেশন নিষ্ক্রিয় + চালিয়ে যান + মেশ নেটওয়ার্ক শুরু করা হচ্ছে + ব্লুটুথ মেশ নেটওয়ার্ক সেটআপ করা হচ্ছে … + এটি মাত্র কয়েক সেকেন্ড সময় নেওয়া উচিত + সেটআপ সম্পূর্ণ নয় + আবার চেষ্টা করুন + আপনার গোপনীয়তা সুরক্ষিত + • কোন ট্র্যাকিং বা ডেটা সংগ্রহ নেই\n• ব্লুটুথ মেশ চ্যাট সম্পূর্ণ অফলাইন\n• জিওহ্যাশ চ্যাট ইন্টারনেট ব্যবহার করে + অনুমতি + অনুমতি দিন + bitchat আপনার অবস্থান ট্র্যাক করে না + মানুষ + কেউ আশেপাশে নেই … + (আপনি) + জিওহ্যাশ নির্বাচন করতে প্যান এবং জুম করুন + নির্বাচন করুন + বার্তা টাইপ করুন … + উল্লেখ + (~%1$s) + v%1$s + image/* + ছবি + ফাইল + + + 📷 একটি ছবি পাঠিয়েছে + 🎤 একটি ভয়েস বার্তা পাঠিয়েছে + 📎 একটি ফাইল পাঠিয়েছে + + + প্লে করুন + বিরাম + মাইনিং PoW + PoW সক্রিয় + প্রুফ অফ ওয়ার্ক + মাইনিং … + pow: %1$dbit + + + ব্লুটুথের মাধ্যমে bitchat ব্যবহারকারী আবিষ্কার করতে প্রয়োজন + bitchat কে কাছাকাছি ডিভাইসের সাথে সংযোগ করার অনুমতি দিন + ব্লুটুথের মাধ্যমে কাছাকাছি bitchat ব্যবহারকারী আবিষ্কার করার জন্য Android এর প্রয়োজন + bitchat এর কাছাকাছি ডিভাইস স্ক্যান করার জন্য এটি প্রয়োজন + ব্যক্তিগত বার্তা পেলে বিজ্ঞপ্তি পান + bitchat কে আপনাকে বিজ্ঞপ্তি পাঠানোর অনুমতি দিন + bitchat নির্ভরযোগ্যভাবে ব্যাকগ্রাউন্ডে চলে এবং মেশ নেটওয়ার্ক সংযোগ বজায় রাখে তা নিশ্চিত করতে ব্যাটারি অপ্টিমাইজেশন নিষ্ক্রিয় করুন + bitchat কে ব্যাটারি সীমাবদ্ধতা ছাড়াই চলার অনুমতি দিন + + + কাছাকাছি ডিভাইস + সঠিক অবস্থান + মাইক্রোফোন + বিজ্ঞপ্তি + ব্যাটারি অপ্টিমাইজেশন + অন্যান্য + + + চ্যানেল পাসওয়ার্ড লিখুন + চ্যানেল %1$s পাসওয়ার্ড দিয়ে সুরক্ষিত। যোগ দিতে পাসওয়ার্ড লিখুন। + পাসওয়ার্ড + যোগ দিন + বাতিল + + + + এবং %d আরো + এবং %d আরো + + + + ১ জন + %d জন + + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml new file mode 100644 index 00000000..bafd124e --- /dev/null +++ b/app/src/main/res/values-de/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + Die Bluetooth‑Berechtigung ist erforderlich, um ohne Internet direkt mit anderen zu chatten. + Die Standort‑Berechtigung ist erforderlich, um in der Nähe befindliche Geräte per Bluetooth zu finden. + Die Benachrichtigungs‑Berechtigung ist erforderlich, um dich über neue Nachrichten zu informieren. + + + Spitzname + Nachricht eingeben… + Passwort + Kanal beitreten + Verlassen + Senden + Befehle anzeigen + Zurück + Personen + Kanäle + Online‑Benutzer + Niemand verbunden + Dreifach tippen, um alle Daten zu löschen + Netzwerk + + + Akku‑Optimierung erkannt + Akku‑Optimierung deaktiviert + Akku‑Optimierung nicht erforderlich + Akku‑Optimierung wird geprüft + Warum Akku‑Optimierung deaktivieren? + bitchat läuft im Hintergrund, um Mesh‑Verbindungen zu nahegelegenen Geräten aufrechtzuerhalten. Die Akku‑Optimierung kann diese Verbindungen unterbrechen, wodurch Nachrichten verspätet zugestellt werden oder verloren gehen.\n\nDas Deaktivieren der Akku‑Optimierung sorgt für eine zuverlässige Peer‑to‑Peer‑Kommunikation. + Akku‑Optimierung deaktivieren + Hinweis: Du kannst dies später unter Android‑Einstellungen > Apps > bitchat > Akku ändern. + Dein Gerät benötigt keine Akku‑Optimierungs­einstellungen. bitchat läuft normal. + Dein Gerät benötigt keine Akku‑Optimierungs­einstellungen. bitchat läuft normal. + bitchat kann zuverlässig im Hintergrund laufen + • Zuverlässige Zustellung von Nachrichten\n• Aufrechterhaltung der Mesh‑Verbindung\n• Hintergrundweiterleitung von Nachrichten\n• Verhindert Verbindungsabbrüche + Erneut prüfen + Jetzt überspringen + Fortfahren + Erneut versuchen + Überspringen + + + und %1$d weitere + %1$d Nachrichten von %2$d Personen + und %1$d weitere Unterhaltungen + 👥 bitchatter in der Nähe! + 1 Person in der Nähe + %1$d Personen in der Nähe + Neue Nachrichten + Neue Standort‑Nachrichten + Erwähnt in %1$s + Erwähnt in %1$s (+%2$d weitere) + %1$d Erwähnungen in %2$s + Neue Aktivität in %1$s + Nachrichten in %1$s + %1$s ist der Unterhaltung beigetreten + bitchat – %1$d Erwähnungen + bitchat – Orts‑Chats + %1$d Nachrichten aus %2$d Orten + In Mesh‑Chat erwähnt + %1$d Erwähnungen im Mesh‑Chat + und %1$d weitere Orte + und %1$d weitere + + + Zu Favoriten hinzufügen + Aus Favoriten entfernen + Lesezeichen hinzufügen + + + zurück + Kanal: %1$s + verlassen + Über Nostr erreichbar + Ungelesene private Nachrichten + Lesezeichen umschalten + Teleportiert + Tor‑Status + Verbundenen Peers + Geohash‑Teilnehmer + Bereit für Handshake + Handshake läuft + Ende‑zu‑Ende verschlüsselt + Handshake fehlgeschlagen + + + 📎 Datei empfangen + 📄 %1$s + 📏 Größe: %1$s + 🏷️ Typ: %1$s + 📂 Öffnen / Speichern + ❌ Schließen + Bild auswählen + + + dezentraler Mesh‑Chat mit Ende‑zu‑Ende‑Verschlüsselung + Offline‑Mesh‑Chat + Kommuniziere direkt über Bluetooth LE ohne Internet oder Server. Nachrichten werden über nahe Geräte weitergeleitet, um die Reichweite zu erhöhen. + Online‑Geohash‑Kanäle + Vernetze dich mit Menschen in deiner Umgebung über geohash‑basierte Kanäle. Erweitere das Mesh über öffentliche Internet‑Relays. + Ende‑zu‑Ende‑Verschlüsselung + Private Nachrichten sind verschlüsselt. Kanal‑Nachrichten sind öffentlich. + Darstellung + System + Hell + Dunkel + Proof of Work + PoW aus + PoW an + Füge Geohash‑Nachrichten einen Proof of Work hinzu, um Spam zu erschweren. + Schwierigkeit: %1$d Bit (~%2$s) + Schwierigkeit %1$d erfordert ~%2$s Hash‑Versuche + kein Proof of Work erforderlich + sehr niedrig – minimaler Spamschutz + niedrig – grundlegender Spamschutz + mittel – guter Spamschutz + hoch – starker Spamschutz + sehr hoch – kann Verzögerungen verursachen + extrem – erhebliche Rechenleistung erforderlich + Netzwerk + Tor aus + Tor an + Leite Internetverkehr über Tor für mehr Privatsphäre. + Tor‑Status: %1$s, Bootstrap %2$d%% + Zuletzt: %1$s + Notfall‑Datenlöschung + Tipp: Dreifach auf den App‑Titel tippen, um alle gespeicherten Daten – einschließlich Nachrichten, Schlüssel und Einstellungen – zu löschen. + Debug‑Einstellungen + Open Source • Privacy First • Dezentral + Schließen + abbrechen + + + Warnung + Standortdienste + Privatsphäre + Fehler + Akku‑Optimierung + Vorteile + Akku‑Optimierung wird geprüft + Akku‑Optimierung nicht unterstützt + Bluetooth + Ungelesene Nachricht + Karte öffnen + Lesezeichen entfernen + Teleportieren + Ausgewählt + Kanal verlassen + Über Nostr erreichbar + Favorit (offline) + Genauigkeit verringern + Genauigkeit erhöhen + Geohash auswählen + Nach unten scrollen + Datei + Bild + Abbrechen + Link + Medien auswählen + Datei auswählen + Aktuelles Bild speichern + Schließen + Bild %1$d von %2$d + Privatsphäre geschützt + Sprachnotiz aufnehmen + Offline‑Mesh‑Chat + Online‑Geohash‑Kanäle + Ende‑zu‑Ende‑Verschlüsselung + + + Bild %1$d von %2$d + Bild nicht verfügbar + Bild in "Downloads" gespeichert + Bild konnte nicht gespeichert werden + Bild in "Downloads" gespeichert + Bild konnte nicht gespeichert werden + Datei auswählen + [Datei nicht verfügbar] + unbekannt + + + Aktion für diese Nachricht oder diesen Benutzer wählen + Aktion für diesen Benutzer wählen + Nachricht kopieren + Diese Nachricht in die Zwischenablage kopieren + %1$s ohrfeigen + Eine spielerische Ohrfeige senden + %1$s umarmen + Eine freundliche Umarmung senden + %1$s blockieren + Alle Nachrichten dieses Benutzers blockieren + + + #Standort‑Kanäle + Chatte mit Menschen in deiner Nähe über Geohash‑Kanäle. Es wird nur ein grober Geohash geteilt, niemals exakte GPS‑Daten. Mache zur Wahrung deiner Privatsphäre keine Screenshots und teile diesen Bildschirm nicht. + Standortberechtigung erteilen + Standortberechtigung verweigert. In den Einstellungen aktivieren, um Standort‑Kanäle zu nutzen. + Einstellungen öffnen + \u2713 Standortberechtigung erteilt + Berechtigungen werden geprüft … + Nahe Kanäle werden gesucht … + Lesezeichen + Geohash + Ungültiger Geohash + teleportieren + Standortdienste deaktivieren + Standortdienste aktivieren + mesh + Block + Nachbarschaft + Stadt + Provinz + Region + #bluetooth • %1$s + + + Debug‑Werkzeuge + Entwickler‑Werkzeuge für Diagnose und Steuerung + ausführliches Logging + Protokolliert Peer‑Beitritte/‑Austritte, Verbindungsrichtung, Paketweiterleitung und Relays + Bluetooth‑Rollen + GATT‑Server + Verbindungen: %1$d / %2$d + max. Server + GATT‑Client + max. Client + Verbindungen: %1$d / %2$d + max. gesamt + Paket‑Relay + seit Start: %1$d + Rollen ein/aus schalten und beim Deaktivieren alle Verbindungen schließen + Sync‑Einstellungen + max. Pakete pro Sync: %1$d + max. GCS‑Filtergröße: %1$d Bytes (128–1024) + Ziel‑FPR: %1$.2f%% + verbundene Geräte + unsere Geräte‑ID: %1$s + keine + trennen + zuletzt gescannte Geräte + verbinden + Debug‑Konsole + leeren + letzte 10s: %1$d • 1m: %2$d • 15m: %3$d + abgeleitetes P: %1$s • geschätzte max. Elemente: %2$s + • direkt + %1$s • RSSI: %2$s + als Server (wir hosten) + als Client (wir verbinden) + + + Standortdienste erforderlich + Privatsphäre zuerst + bitchat verfolgt NICHT deinen Standort.\n\nStandortdienste sind für Bluetooth‑Scanning und das Geohash‑Chat‑Feature erforderlich. + bitchat benötigt Standortdienste für: + • Bluetooth‑Gerätescanning\n• Entdecken nahegelegener Benutzer im Mesh‑Netzwerk\n• Geohash‑Chat‑Feature\n• Keine Verfolgung oder Standortsammlung + Standorteinstellungen öffnen + Erneut prüfen + Standortdienste nicht verfügbar + Standortdienste sind auf diesem Gerät nicht verfügbar. Das ist ungewöhnlich, da Standortdienste bei Android‑Geräten Standard sind.\n\nbitchat benötigt Standortdienste für das ordnungsgemäße Funktionieren des Bluetooth‑Scannings (Android‑Anforderung). Ohne diese kann die App keine nahegelegenen Benutzer entdecken. + Standortdienste werden geprüft … + Bluetooth erforderlich + bitchat benötigt Bluetooth für: + • Entdecken nahegelegener Benutzer\n• Erstellen von Mesh‑Netzwerkverbindungen\n• Senden und Empfangen von Nachrichten\n• Funktionieren ohne Internet oder Server + Bluetooth aktivieren + Bluetooth nicht unterstützt + Dieses Gerät unterstützt kein Bluetooth Low Energy (BLE), das für das Funktionieren von bitchat erforderlich ist.\n\nbitchat benötigt BLE, um Mesh‑Netzwerke zu erstellen und ohne Internet mit nahegelegenen Geräten zu kommunizieren. + Bluetooth‑Status wird geprüft … + Akku‑Optimierung erkannt + Akku‑Optimierung aktiviert + bitchat muss im Hintergrund laufen, um Mesh‑Verbindungen aufrechtzuerhalten. Die Akku‑Optimierung kann diese Verbindungen unterbrechen. + Vorteile der Deaktivierung + • zuverlässige Nachrichtenzustellung\n• Aufrechterhaltung der Mesh‑Konnektivität\n• verhindert Verbindungsabbrüche + Akku‑Optimierung deaktivieren + Akku‑Optimierung deaktiviert + Fortfahren + Mesh‑Netzwerk wird initialisiert + Bluetooth‑Mesh‑Netzwerk wird eingerichtet … + Das sollte nur wenige Sekunden dauern + Setup nicht abgeschlossen + Erneut versuchen + Deine Privatsphäre ist geschützt + • keine Verfolgung oder Datensammlung\n• Bluetooth‑Mesh‑Chats sind vollständig offline\n• Geohash‑Chats nutzen das Internet + Berechtigungen + Berechtigungen erteilen + bitchat verfolgt NICHT deinen Standort + PERSONEN + niemand da … + (du) + schwenken und zoomen, um einen Geohash auszuwählen + auswählen + Nachricht eingeben … + erwähnen + (~%1$s) + v%1$s + image/* + Bild + Datei + + + 📷 hat ein Bild gesendet + 🎤 hat eine Sprachnachricht gesendet + 📎 hat eine Datei gesendet + + + Abspielen + Pause + Mining‑PoW + PoW aktiviert + Proof of Work + Mining … + pow: %1$dbit + + + Erforderlich, um bitchat‑Benutzer über Bluetooth zu entdecken + Erlaube bitchat, sich mit nahegelegenen Geräten zu verbinden + Von Android erforderlich, um nahegelegene bitchat‑Benutzer über Bluetooth zu entdecken + bitchat benötigt dies, um nach nahegelegenen Geräten zu scannen + Benachrichtigungen erhalten, wenn du private Nachrichten erhältst + Erlaube bitchat, dir Benachrichtigungen zu senden + Akku‑Optimierung deaktivieren, um sicherzustellen, dass bitchat zuverlässig im Hintergrund läuft und Mesh‑Netzwerkverbindungen aufrechterhält + Erlaube bitchat, ohne Akku‑Beschränkungen zu laufen + + + Nahegelegene Geräte + Genauer Standort + Mikrofon + Benachrichtigungen + Akku‑Optimierung + Andere + + + Kanalpasswort eingeben + Kanal %1$s ist passwortgeschützt. Gib zum Beitreten das Passwort ein. + Passwort + Beitreten + Abbrechen + + + + und %d weitere + und %d weitere + + + + 1 Person + %d Personen + + + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml new file mode 100644 index 00000000..6adf6330 --- /dev/null +++ b/app/src/main/res/values-es/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + El permiso de Bluetooth es necesario para chatear directamente con otros sin internet. + El permiso de ubicación es necesario para encontrar dispositivos cercanos a través de Bluetooth. + El permiso de notificaciones es necesario para alertarte sobre nuevos mensajes. + + + Apodo + Escribe un mensaje… + Contraseña + Unirse al canal + Salir + Enviar + Mostrar comandos + Atrás + Personas + Canales + Usuarios en línea + Nadie conectado + Toca tres veces para borrar todos los datos + Tu red + + + Optimización de batería detectada + Optimización de batería deshabilitada + Optimización de batería no requerida + Verificando optimización de batería + ¿Por qué deshabilitar la optimización de batería? + bitchat funciona en segundo plano para mantener conexiones de red mesh con dispositivos cercanos. La optimización de batería puede interrumpir estas conexiones, causando que los mensajes lleguen tarde o se pierdan.\n\nDeshabilitar la optimización de batería asegura una comunicación peer-to-peer confiable. + Deshabilitar optimización de batería + Nota: Puedes cambiar esto más tarde en Configuración de Android > Apps > bitchat > Batería. + Tu dispositivo no requiere configuraciones de optimización de batería. bitchat funcionará normalmente. + Tu dispositivo no requiere configuraciones de optimización de batería. bitchat funcionará normalmente. + bitchat puede funcionar de manera confiable en segundo plano + • Entrega confiable de mensajes\n• Mantiene conexión de red mesh\n• Retransmisión de mensajes en segundo plano\n• Previene desconexiones + Verificar de nuevo + Omitir por ahora + Continuar + Reintentar + Omitir + + + y %1$d más + %1$d mensajes de %2$d personas + y %1$d conversaciones más + 👥 ¡bitchatters cerca! + 1 persona cerca + %1$d personas cerca + Nuevos mensajes + Nuevos mensajes de ubicación + Mencionado en %1$s + Mencionado en %1$s (+%2$d más) + %1$d menciones en %2$s + Nueva actividad en %1$s + Mensajes en %1$s + %1$s se unió a la conversación + bitchat – %1$d menciones + bitchat – Chats de ubicación + %1$d mensajes desde %2$d ubicaciones + Mencionado en chat mesh + %1$d menciones en chat mesh + y %1$d ubicaciones más + y %1$d más + + + Agregar a favoritos + Quitar de favoritos + Agregar marcador + + + atrás + Canal: %1$s + salir + Accesible vía Nostr + Mensajes privados sin leer + Alternar marcador + Teletransportado + Estado de Tor + Pares conectados + Participantes geohash + Listo para handshake + Handshake en progreso + Cifrado de extremo a extremo + Handshake fallido + + + 📎 Archivo recibido + 📄 %1$s + 📏 Tamaño: %1$s + 🏷️ Tipo: %1$s + 📂 Abrir / Guardar + ❌ Cerrar + Elegir imagen + + + chat mesh descentralizado con cifrado de extremo a extremo + Chat mesh sin conexión + Comunícate directamente a través de Bluetooth LE sin internet o servidores. Los mensajes se retransmiten a través de dispositivos cercanos para extender el alcance. + Canales geohash en línea + Conéctate con personas cerca de ti a través de canales basados en geohash. Extiende la red mesh a través de repetidores de internet público. + Cifrado de extremo a extremo + Los mensajes privados están cifrados. Los mensajes de canal son públicos. + Apariencia + Sistema + Claro + Oscuro + Prueba de trabajo + PoW desactivado + PoW activado + Agregar prueba de trabajo a mensajes geohash para hacer el spam más difícil. + Dificultad: %1$d bits (~%2$s) + Dificultad %1$d requiere ~%2$s intentos de hash + no se requiere prueba de trabajo + muy bajo – protección mínima contra spam + bajo – protección básica contra spam + medio – buena protección contra spam + alto – protección fuerte contra spam + muy alto – puede causar retrasos + extremo – requiere potencia computacional significativa + Red + Tor desactivado + Tor activado + Enrutar tráfico de internet a través de Tor para mayor privacidad. + Estado de Tor: %1$s, bootstrap %2$d%% + Último: %1$s + Borrado de datos de emergencia + Consejo: Toca tres veces en el título de la app para borrar todos los datos almacenados, incluyendo mensajes, claves y configuraciones. + Configuraciones de depuración + Código abierto • Privacidad primero • Descentralizado + Cerrar + cancelar + + + Advertencia + Servicios de ubicación + Privacidad + Error + Optimización de batería + Beneficios + Verificando optimización de batería + Optimización de batería no soportada + Bluetooth + Mensaje sin leer + Abrir mapa + Quitar marcador + Teletransportar + Seleccionado + Salir del canal + Accesible vía Nostr + Favorito (sin conexión) + Disminuir precisión + Aumentar precisión + Seleccionar geohash + Desplazar al final + Archivo + Imagen + Cancelar + Enlace + Elegir medios + Elegir archivo + Guardar imagen actual + Cerrar + Imagen %1$d de %2$d + Privacidad protegida + Grabar nota de voz + Chat mesh sin conexión + Canales geohash en línea + Cifrado de extremo a extremo + + + Imagen %1$d de %2$d + Imagen no disponible + Imagen guardada en "Descargas" + No se pudo guardar la imagen + Imagen guardada en "Descargas" + No se pudo guardar la imagen + Elegir archivo + [Archivo no disponible] + desconocido + + + Elegir acción para este mensaje o usuario + Elegir acción para este usuario + Copiar mensaje + Copiar este mensaje al portapapeles + Abofetear a %1$s + Enviar una bofetada juguetona + Abrazar a %1$s + Enviar un abrazo amistoso + Bloquear a %1$s + Bloquear todos los mensajes de este usuario + + + #Canales de ubicación + Chatea con personas cerca de ti a través de canales geohash. Solo se comparte un geohash aproximado, nunca datos GPS exactos. Para preservar tu privacidad, no tomes capturas de pantalla ni compartas esta pantalla. + Otorgar permiso de ubicación + Permiso de ubicación denegado. Habilítalo en configuraciones para usar canales de ubicación. + Abrir configuraciones + \u2713 Permiso de ubicación otorgado + Verificando permisos… + Buscando canales cercanos… + Marcado + Geohash + Geohash inválido + teletransportar + Deshabilitar servicios de ubicación + Habilitar servicios de ubicación + mesh + Cuadra + Barrio + Ciudad + Provincia + Región + #bluetooth • %1$s + + + Herramientas de depuración + Herramientas de desarrollador para diagnóstico y control + registro detallado + Registra uniones/salidas de pares, dirección de conexión, retransmisión de paquetes y repetidores + Roles de Bluetooth + Servidor GATT + Conexiones: %1$d / %2$d + máx. servidor + Cliente GATT + máx. cliente + Conexiones: %1$d / %2$d + máx. general + Retransmisión de paquetes + desde inicio: %1$d + Alternar roles activado/desactivado y cerrar todas las conexiones al desactivar + Configuraciones de sincronización + máx. paquetes por sincronización: %1$d + máx. tamaño del filtro GCS: %1$d bytes (128–1024) + FPR objetivo: %1$.2f%% + dispositivos conectados + nuestro ID de dispositivo: %1$s + ninguno + desconectar + dispositivos escaneados recientemente + conectar + Consola de depuración + limpiar + últimos 10s: %1$d • 1m: %2$d • 15m: %3$d + P derivado: %1$s • máx. elementos estimados: %2$s + • directo + %1$s • RSSI: %2$s + como servidor (nosotros hospedamos) + como cliente (nosotros conectamos) + + + Servicios de ubicación requeridos + Privacidad primero + bitchat NO rastrea tu ubicación.\n\nLos servicios de ubicación son requeridos para el escaneo Bluetooth y la función de chat geohash. + bitchat necesita servicios de ubicación para: + • Escaneo de dispositivos Bluetooth\n• Descubrir usuarios cercanos en la red mesh\n• Función de chat geohash\n• Sin rastreo o recolección de ubicación + Abrir configuraciones de ubicación + Verificar de nuevo + Servicios de ubicación no disponibles + Los servicios de ubicación no están disponibles en este dispositivo. Esto es inusual ya que los servicios de ubicación son estándar en dispositivos Android.\n\nbitchat requiere servicios de ubicación para el funcionamiento adecuado del escaneo Bluetooth (requisito de Android). Sin esto, la app no puede descubrir usuarios cercanos. + Verificando servicios de ubicación… + Bluetooth requerido + bitchat necesita Bluetooth para: + • Descubrir usuarios cercanos\n• Crear conexiones de red mesh\n• Enviar y recibir mensajes\n• Funcionar sin internet o servidores + Habilitar Bluetooth + Bluetooth no soportado + Este dispositivo no soporta Bluetooth Low Energy (BLE), que es requerido para que bitchat funcione.\n\nbitchat requiere BLE para crear redes mesh y comunicarse con dispositivos cercanos sin internet. + Verificando estado de Bluetooth… + Optimización de batería detectada + Optimización de batería habilitada + bitchat necesita funcionar en segundo plano para mantener conexiones mesh. La optimización de batería puede interrumpir estas conexiones. + Beneficios de deshabilitar + • entrega confiable de mensajes\n• mantiene conectividad mesh\n• previene desconexiones + Deshabilitar optimización de batería + Optimización de batería deshabilitada + Continuar + Inicializando red mesh + Configurando red mesh Bluetooth… + Esto debería tomar solo unos segundos + Configuración no completada + Intentar de nuevo + Tu privacidad está protegida + • sin rastreo o recolección de datos\n• chats mesh Bluetooth son completamente offline\n• chats geohash usan internet + Permisos + Otorgar permisos + bitchat NO rastrea tu ubicación + PERSONAS + nadie por aquí… + (tú) + desplaza y hace zoom para seleccionar un geohash + seleccionar + Escribe un mensaje… + mencionar + (~%1$s) + v%1$s + image/* + Imagen + Archivo + + + 📷 envió una imagen + 🎤 envió una nota de voz + 📎 envió un archivo + + + Reproducir + Pausar + Minando PoW + PoW habilitado + Prueba de trabajo + Minando… + pow: %1$dbit + + + Requerido para descubrir usuarios bitchat a través de Bluetooth + Permitir que bitchat se conecte con dispositivos cercanos + Requerido por Android para descubrir usuarios bitchat cercanos a través de Bluetooth + bitchat necesita esto para escanear dispositivos cercanos + Recibir notificaciones cuando recibas mensajes privados + Permitir que bitchat te envíe notificaciones + Deshabilitar optimización de batería para asegurar que bitchat funcione de manera confiable en segundo plano y mantenga conexiones de red mesh + Permitir que bitchat funcione sin restricciones de batería + + + Dispositivos cercanos + Ubicación precisa + Micrófono + Notificaciones + Optimización de batería + Otro + + + Ingresar contraseña del canal + El canal %1$s está protegido con contraseña. Ingresa la contraseña para unirte. + Contraseña + Unirse + Cancelar + + + + y %d más + y %d más + + + + 1 persona + %d personas + + + diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml new file mode 100644 index 00000000..dbbf93bf --- /dev/null +++ b/app/src/main/res/values-fa/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + برای چت مستقیم با دیگران بدون اینترنت، به مجوز بلوتوث نیاز است. + برای یافتن دستگاه‌های نزدیک از طریق بلوتوث، به مجوز مکان نیاز است. + برای آگاه‌سازی از پیام‌های جدید، به مجوز اعلان نیاز است. + + + نام مستعار + نوشتن پیام… + گذرواژه + پیوستن به کانال + خروج + ارسال + نمایش دستورات + بازگشت + افراد + کانال‌ها + کاربران آنلاین + هیچ‌کس متصل نیست + برای پاک کردن همهٔ داده‌ها سه بار ضربه بزنید + شبکه + + + بهینه‌سازی باتری شناسایی شد + بهینه‌سازی باتری غیرفعال شد + بهینه‌سازی باتری لازم نیست + در حال بررسی بهینه‌سازی باتری + چرا بهینه‌سازی باتری را غیرفعال کنیم؟ + bitchat برای حفظ اتصال مِش با دستگاه‌های نزدیک در پس‌زمینه اجرا می‌شود. بهینه‌سازی باتری می‌تواند این اتصال‌ها را قطع کند و باعث تأخیر یا از دست رفتن پیام‌ها شود.\n\nغیرفعال‌کردن بهینه‌سازی باتری، ارتباط همتابه‌همتای قابل اعتماد را تضمین می‌کند. + غیرفعال‌کردن بهینه‌سازی باتری + توجه: می‌توانید بعداً در تنظیمات اندروید > برنامه‌ها > bitchat > باتری این مورد را تغییر دهید. + دستگاه شما به تنظیمات بهینه‌سازی باتری نیاز ندارد. bitchat به‌صورت عادی اجرا می‌شود. + دستگاه شما به تنظیمات بهینه‌سازی باتری نیاز ندارد. bitchat به‌صورت عادی اجرا می‌شود. + bitchat می‌تواند با اطمینان در پس‌زمینه اجرا شود + • تحویل مطمئن پیام‌ها\n• حفظ اتصال مِش\n• رلهٔ پیام در پس‌زمینه\n• جلوگیری از قطع اتصال + بررسی مجدد + فعلاً رد کردن + ادامه + تلاش دوباره + رد کردن + + + و %1$d مورد دیگر + %1$d پیام از %2$d نفر + و %1$d گفت‌وگوی دیگر + 👥 کاربران bitchat در نزدیکی! + ۱ نفر در نزدیکی + %1$d نفر در نزدیکی + پیام‌های جدید + پیام‌های مکانی جدید + ذکر شده در %1$s + ذکر شده در %1$s (+%2$d مورد دیگر) + %1$d مورد ذکر در %2$s + فعالیت جدید در %1$s + پیام‌ها در %1$s + %1$s به گفت‌وگو پیوست + bitchat – %1$d مورد ذکر + bitchat – گفت‌وگوی مکانی + %1$d پیام از %2$d موقعیت + ذکر در گفت‌وگوی مِش + %1$d مورد ذکر در گفت‌وگوی مِش + و %1$d موقعیت دیگر + و %1$d مورد دیگر + + + افزودن به موارد دلخواه + حذف از موارد دلخواه + افزودن نشانک + + + بازگشت + کانال: %1$s + خروج + قابل دسترس از طریق Nostr + پیام‌های خصوصی خوانده‌نشده + تغییر وضعیت نشانک + انتقال مکانی + وضعیت Tor + همتایان متصل + شرکت‌کنندگان geohash + آمادهٔ دست‌دهی + دست‌دهی در حال انجام + رمزگذاری سرتاسری + دست‌دهی ناموفق بود + + + 📎 فایل دریافت شد + 📄 %1$s + 📏 اندازه: %1$s + 🏷️ نوع: %1$s + 📂 باز کردن / ذخیره + ❌ بستن + انتخاب تصویر + + + گفت‌وگوی مِش غیرمتمرکز با رمزگذاری سرتاسری + گفت‌وگوی مِش آفلاین + بدون اینترنت یا سرور، مستقیماً از طریق Bluetooth LE ارتباط برقرار کنید. پیام‌ها از طریق دستگاه‌های نزدیک رله می‌شوند تا بُرد افزایش یابد. + کانال‌های geohash آنلاین + از طریق کانال‌های مبتنی بر geohash با افراد منطقهٔ خود ارتباط برقرار کنید. مِش را از طریق رله‌های عمومی اینترنت گسترش دهید. + رمزگذاری سرتاسری + پیام‌های خصوصی رمزگذاری می‌شوند. پیام‌های کانال عمومی هستند. + نما + سامانه + روشن + تیره + گواه کار (Proof of Work) + PoW خاموش + PoW روشن + برای دشوارتر کردن هرزنامه، به پیام‌های geohash گواه کار بیفزایید. + سختی: %1$d بیت (~%2$s) + سختی %1$d به ~%2$s کوشش هش نیاز دارد + نیازی به گواه کار نیست + بسیار کم – کمینهٔ حفاظت در برابر هرزنامه + کم – حفاظت پایه در برابر هرزنامه + متوسط – حفاظت خوب + زیاد – حفاظت قوی + بسیار زیاد – ممکن است تأخیر ایجاد کند + فوق‌العاده – به توان محاسباتی قابل توجه نیاز دارد + شبکه + Tor خاموش + Tor روشن + برای حفظ بیشتر حریم خصوصی، ترافیک اینترنت را از طریق Tor مسیریابی کنید. + وضعیت Tor: %1$s، بوت‌استرپ %2$d%% + آخرین: %1$s + پاکسازی اضطراری داده + نکته: برای پاک کردن همهٔ داده‌های ذخیره‌شده — شامل پیام‌ها، کلیدها و تنظیمات — سه بار روی عنوان برنامه ضربه بزنید. + تنظیمات اشکال‌زدایی + متن‌باز • حریم خصوصی در اولویت • غیرمتمرکز + بستن + لغو + + + هشدار + خدمات مکان + حریم خصوصی + خطا + بهینه‌سازی باتری + مزایا + در حال بررسی بهینه‌سازی باتری + بهینه‌سازی باتری پشتیبانی نمی‌شود + بلوتوث + پیام خوانده‌نشده + باز کردن نقشه + حذف نشانک + انتقال + انتخاب شد + خروج از کانال + قابل دسترس از طریق Nostr + دلخواه (آفلاین) + کاهش دقت + افزایش دقت + انتخاب geohash + اسکرول به پایین + فایل + تصویر + لغو + پیوند + انتخاب رسانه + انتخاب فایل + ذخیرهٔ تصویر فعلی + بستن + تصویر %1$d از %2$d + حریم خصوصی محافظت شده است + ضبط پیام صوتی + گفت‌وگوی مِش آفلاین + کانال‌های geohash آنلاین + رمزگذاری سرتاسری + + + تصویر %1$d از %2$d + تصویر در دسترس نیست + تصویر در \"Downloads\" ذخیره شد + ذخیرهٔ تصویر ناموفق بود + تصویر در \"Downloads\" ذخیره شد + ذخیرهٔ تصویر ناموفق بود + انتخاب فایل + [فایل در دسترس نیست] + نامشخص + + + اقدامی برای این پیام یا کاربر انتخاب کنید + اقدامی برای این کاربر انتخاب کنید + کپی پیام + این پیام را در کلیپ‌بورد کپی کن + %1$s را سیلی بزن + یک سیلی شوخی ارسال کن + %1$s را بغل کن + یک بغل دوستانه ارسال کن + %1$s را مسدود کن + همهٔ پیام‌های این کاربر را مسدود کن + + + #کانال‌های مکانی + از طریق کانال‌های geohash با افراد نزدیک خود چت کنید. فقط geohash کلی به اشتراک گذاشته می‌شود، نه دادهٔ GPS دقیق. برای حفظ حریم خصوصی، لطفاً از این نما اسکرین‌شات نگیرید یا آن را به اشتراک نگذارید. + اعطای مجوز مکان + مجوز مکان رد شد. برای استفاده از کانال‌های مکانی، آن را در تنظیمات فعال کنید. + باز کردن تنظیمات + \u2713 مجوز مکان اعطا شد + در حال بررسی مجوزها … + در حال یافتن کانال‌های نزدیک … + نشانک شده + Geohash + geohash نامعتبر است + انتقال مکانی + غیرفعال‌کردن خدمات مکان + فعال‌کردن خدمات مکان + mesh + بلوک + محله + شهر + استان + منطقه + #bluetooth • %1$s + + + ابزارهای اشکال‌زدایی + ابزارهای توسعه‌دهنده برای عیب‌یابی و کنترل + گزارش‌گیری مفصل + پیوستن/ترک همتا، جهت اتصال، رلهٔ بسته‌ها و مسیرها را ثبت می‌کند + نقش‌های بلوتوث + سرور GATT + اتصال‌ها: %1$d / %2$d + حداکثر سرور + کلاینت GATT + حداکثر کلاینت + اتصال‌ها: %1$d / %2$d + حداکثر کل + رلهٔ بسته + از شروع: %1$d + روشن/خاموش‌کردن نقش‌ها و بستن همهٔ اتصال‌ها هنگام غیرفعالسازی + تنظیمات همگام‌سازی + حداکثر بسته در هر همگام‌سازی: %1$d + حداکثر اندازهٔ فیلتر GCS: %1$d بایت (128–1024) + FPR هدف: %1$.2f%% + دستگاه‌های متصل + شناسهٔ دستگاه ما: %1$s + هیچ + قطع اتصال + دستگاه‌های اخیراً اسکن‌شده + اتصال + کنسول اشکال‌زدایی + پاک‌کردن + ۱۰ث اخیر: %1$d • ۱د: %2$d • ۱۵د: %3$d + P مشتق: %1$s • عناصر حداکثر تخمینی: %2$s + • مستقیم + %1$s • RSSI: %2$s + به عنوان سرور (ما میزبانیم) + به عنوان کلاینت (ما متصل می‌شویم) + + + خدمات مکان لازم است + حریم خصوصی در اولویت + bitchat موقعیت شما را پیگیری نمی‌کند.\n\nبرای اسکن بلوتوث و قابلیت گفت‌وگوی geohash، خدمات مکان لازم است. + bitchat به خدمات مکان برای موارد زیر نیاز دارد: + • اسکن دستگاه‌های بلوتوث\n• یافتن کاربران نزدیک در شبکهٔ مِش\n• قابلیت گفت‌وگوی geohash\n• بدون پیگیری یا جمع‌آوری موقعیت + باز کردن تنظیمات مکان + بررسی دوباره + خدمات مکان در دسترس نیست + خدمات مکان در این دستگاه در دسترس نیست. این غیرمعمول است زیرا خدمات مکان در دستگاه‌های اندرویدی استاندارد است.\n\nبرای عملکرد صحیح اسکن بلوتوث (الزام اندروید) bitchat به خدمات مکان نیاز دارد. بدون آن، برنامه نمی‌تواند کاربران نزدیک را بیابد. + در حال بررسی خدمات مکان … + بلوتوث لازم است + bitchat به بلوتوث برای موارد زیر نیاز دارد: + • یافتن کاربران نزدیک\n• ایجاد اتصال‌های شبکهٔ مِش\n• ارسال و دریافت پیام‌ها\n• کار بدون اینترنت یا سرور + فعال‌کردن بلوتوث + بلوتوث پشتیبانی نمی‌شود + این دستگاه از Bluetooth Low Energy (BLE) که برای کارکرد bitchat لازم است پشتیبانی نمی‌کند.\n\nbitchat برای ایجاد شبکهٔ مِش و ارتباط با دستگاه‌های نزدیک بدون اینترنت به BLE نیاز دارد. + در حال بررسی وضعیت بلوتوث … + بهینه‌سازی باتری شناسایی شد + بهینه‌سازی باتری فعال است + برای حفظ اتصال مِش، bitchat باید در پس‌زمینه اجرا شود. بهینه‌سازی باتری می‌تواند این اتصال‌ها را مختل کند. + مزایای غیرفعالسازی + • تحویل مطمئن پیام‌ها\n• حفظ اتصال مِش\n• جلوگیری از قطع اتصال + غیرفعال‌کردن بهینه‌سازی باتری + بهینه‌سازی باتری غیرفعال شد + ادامه + در حال راه‌اندازی شبکهٔ مِش + در حال تنظیم شبکهٔ مِش بلوتوث … + این کار فقط چند ثانیه طول می‌کشد + راه‌اندازی کامل نشد + تلاش دوباره + حریم خصوصی شما محافظت می‌شود + • بدون پیگیری یا جمع‌آوری داده\n• گفت‌وگوی مِش بلوتوث کاملاً آفلاین است\n• گفت‌وگوی geohash از اینترنت استفاده می‌کند + مجوزها + اعطای مجوزها + bitchat موقعیت شما را پیگیری نمی‌کند + افراد + کسی در اطراف نیست … + (شما) + برای انتخاب geohash، جابه‌جا و زوم کنید + انتخاب + نوشتن پیام … + ذکر + (~%1$s) + v%1$s + image/* + تصویر + فایل + + + 📷 یک تصویر ارسال کرد + 🎤 یک پیام صوتی ارسال کرد + 📎 یک فایل ارسال کرد + + + پخش + توقف + استخراج PoW + PoW فعال است + گواه کار + در حال استخراج … + pow: %1$dbit + + + برای یافتن کاربران bitchat از طریق بلوتوث لازم است + به bitchat اجازه دهید با دستگاه‌های نزدیک متصل شود + برای یافتن کاربران نزدیک bitchat از طریق بلوتوث به‌وسیلهٔ اندروید لازم است + bitchat برای اسکن دستگاه‌های نزدیک به این مورد نیاز دارد + هنگام دریافت پیام خصوصی اعلان دریافت کنید + به bitchat اجازه دهید برای شما اعلان ارسال کند + بهینه‌سازی باتری را غیرفعال کنید تا اطمینان حاصل شود bitchat به‌طور قابل اعتماد در پس‌زمینه اجرا شده و اتصال‌های شبکهٔ مِش را حفظ می‌کند + به bitchat اجازه دهید بدون محدودیت باتری اجرا شود + + + دستگاه‌های نزدیک + مکان دقیق + میکروفون + اعلان‌ها + بهینه‌سازی باتری + سایر + + + گذرواژهٔ کانال را وارد کنید + کانال %1$s با گذرواژه محافظت می‌شود. برای پیوستن، گذرواژه را وارد کنید. + گذرواژه + پیوستن + لغو + + + + و %d مورد دیگر + و %d مورد دیگر + + + + ۱ نفر + %d نفر + + + diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml new file mode 100644 index 00000000..32bf80ce --- /dev/null +++ b/app/src/main/res/values-fil/strings.xml @@ -0,0 +1,366 @@ + + + bitchat + + + Kailangan ang permiso sa Bluetooth para sa direktang pag‑usap kahit walang internet. + Kailangan ang permiso sa Lokasyon para mahanap ang mga kalapit na device gamit ang Bluetooth. + Kailangan ang permiso sa Abiso para ipaalam ang mga bagong mensahe. + + + palayaw + magtype ng mensahe… + Password + Sumali sa Channel + Umalis + Ipadala + Ipakita ang mga utos + Bumalik + Tao + Mga Channel + Mga Online na User + Walang nakakonekta + I‑tap nang tatlong beses para burahin ang lahat ng data + Network + + + Natukoy ang pag‑optimize ng baterya + Naka‑disable ang pag‑optimize ng baterya + Hindi kailangan ang pag‑optimize ng baterya + Sinusuri ang pag‑optimize ng baterya + Bakit i‑disable ang pag‑optimize? + Tumatakbo ang bitchat sa background upang mapanatili ang mesh na koneksyon sa mga kalapit na device. Maaaring maputol ito ng pag‑optimize ng baterya na nagdudulot ng pagkaantala o pagkawala ng mensahe.\n\nAng pag‑disable nito ay tinitiyak ang maaasahang peer‑to‑peer na pagmemensahe. + I‑disable ang pag‑optimize + Tandaan: Maaari itong baguhin sa Android Settings > Apps > bitchat > Battery + Hindi kailangan ng iyong device ng mga setting ng pag‑optimize ng baterya. Normal na gagana ang bitchat. + Hindi kailangan ng iyong device ng mga setting ng pag‑optimize ng baterya. Normal na gagana ang bitchat. + Maaasahang tatakbo ang bitchat sa background + • Maaasahang paghatid ng mensahe\n• Pinananatili ang mesh na koneksyon\n• Background relay ng mensahe\n• Iwas putol ng koneksyon + Suriin muli + Laktawan muna + Magpatuloy + Subukang muli + Laktawan + + + at %1$d pa + %1$d mensahe mula sa %2$d tao + at %1$d pang usapan + 👥 mga bitchatter na malapit! + 1 tao sa paligid + %1$d tao sa paligid + Mga bagong mensahe + Mga mensahe sa lokasyon + Nabanggit sa %1$s + Nabanggit sa %1$s (+%2$d pa) + %1$d banggit sa %2$s + Bagong aktibidad sa %1$s + Mga mensahe sa %1$s + Sumali si %1$s sa usapan + bitchat – %1$d banggit + bitchat – mga chat sa lokasyon + %1$d mensahe mula sa %2$d lokasyon + Nabanggit sa Mesh Chat + %1$d banggit sa Mesh Chat + at %1$d pang lokasyon + at %1$d pa + + + Idagdag sa paborito + Alisin sa paborito + Mag‑bookmark + + + bumalik + channel: %1$s + umalis + Maabot sa Nostr + Hindi nabasang pribadong mensahe + I‑toggle ang bookmark + Naiteleport + Katayuan ng Tor + Nakakonektang peers + Mga kalahok sa geohash + Handa para sa handshake + Isinasagawa ang handshake + End‑to‑end naka‑encrypt + Bigo ang handshake + + + 📎 Nakakuha ng file + 📄 %1$s + 📏 Laki: %1$s + 🏷️ Uri: %1$s + 📂 Buksan / I‑save + ❌ Isara + Pumili ng larawan + + + desentralisadong mesh messaging na may end‑to‑end encryption + Offline Mesh Chat + Makipag‑usap direkta sa Bluetooth LE nang walang internet o server. Ang mga mensahe ay nire‑relay ng mga kalapit na device. + Online na Geohash na mga Channel + Makipag‑ugnayan sa mga tao sa paligid gamit ang geohash‑based na mga channel. Palawakin ang mesh sa pampublikong internet relays. + End‑to‑End Encryption + Ang mga pribadong mensahe ay naka‑encrypt. Ang mga mensahe sa channel ay publiko. + hitsura + system + light + dark + proof of work + pow off + pow on + magdagdag ng proof of work sa mga geohash na mensahe para iwas spam. + hirap: %1$d bits (~%2$s) + ang hirap na %1$d ay ~%2$s hash attempts + walang proof of work na kailangan + napakababa – minimal na proteksyon + mababa – batayang proteksyon + katamtaman – magandang proteksyon + mataas – matibay na proteksyon + napakataas – posibleng may pagkaantala + matindi – malaking komputasyon ang kailangan + network + tor off + tor on + iruta ang internet sa Tor para sa mas mataas na privacy. + katayuan ng Tor: %1$s, bootstrap %2$d%% + Huli: %1$s + Emergency Data Deletion + Tip: i‑tap ang pamagat ng app nang 3 beses para burahin ang lahat ng data (mga mensahe, susi, setting). + Debug Settings + Open Source • Privacy First • Desentralisado + Isara + kanselahin + + + Babala + Mga serbisyo sa lokasyon + Privacy + Error + Pag‑optimize ng baterya + Mga benepisyo + Sinusuri ang pag‑optimize + Hindi suportado + Bluetooth + Hindi nabasang mensahe + Buksan ang mapa + Alisin ang bookmark + Teleport + Napili + Umalis sa channel + Maabot sa Nostr + Paborito (offline) + Bawasan ang precision + Dagdagan ang precision + Piliin ang geohash + Mag‑scroll pababa + File + Larawan + Kanselahin + Link + Pumili ng media + Mag‑record ng voice note + Offline Mesh Chat + Online na Geohash Channels + End‑to‑End Encryption + + + Larawan %1$d ng %2$d + Hindi available ang larawan + Na‑save ang larawan sa "Downloads" + Nabigo ang pag‑save ng larawan + Pumili ng file + [hindi available ang file] + hindi kilala + + + pumili ng aksyon para sa mensaheng ito o user + pumili ng aksyon para sa user na ito + kopyahin ang mensahe + kopyahin ang mensaheng ito sa clipboard + sapakin si %1$s + magpadala ng birong sampal + yakapin si %1$s + magpadala ng magiliw na yakap + harangan si %1$s + harangan ang lahat ng mensahe mula sa user na ito + + + #mga channel sa lokasyon + makipag‑usap sa mga tao sa paligid gamit ang mga geohash na channel. tanging malabong geohash ang ibinabahagi, hindi eksaktong gps. huwag mag‑screenshot o ibahagi ang screen na ito para sa privacy. + payagan ang lokasyon + tinanggihan ang permiso sa lokasyon. i‑enable sa settings para magamit ang mga channel sa lokasyon. + Buksan ang Settings + \u2713 pinayagan ang lokasyon + sini‑siyasat ang mga permiso… + naghahanap ng kalapit na channel… + na‑bookmark + geohash + maling geohash + teleport + i‑disable ang location services + i‑enable ang location services + #bluetooth • %1$s + mesh + bloke + barangay + lungsod + probinsya + rehiyon + + + mga kasangkapan sa debug + masalitang pag‑log + mga tungkulin sa Bluetooth + GATT server + mga koneksyon: %1$d / %2$d + max server + GATT client + max client + mga koneksyon: %1$d / %2$d + max kabuuan + packet relay + mula umpisa: %1$d + mga setting ng sync + max packet bawat sync: %1$d + max laki ng GCS filter: %1$d bytes (128–1024) + target FPR: %1$.2f%% + mga nakakonektang device + ID ng aming device: %1$s + wala + i‑disconnect + mga huling resulta ng scan + kumonekta + debug console + limasin + huling 10s: %1$d • 1m: %2$d • 15m: %3$d + hinangong P: %1$s • tantyang max na elemento: %2$s + • direkta + %1$s • RSSI: %2$s + ? + bilang server (kami ang nagho‑host) + bilang client (kami ang kumokonekta) + + + Kailangang‑kailangan ang Location Services + Privacy muna + HINDI sinusubaybayan ng bitchat ang iyong lokasyon.\n\nKailangan ang location services para sa Bluetooth scanning at Geohash chat. + Kailangan ng bitchat ang location services para sa: + • Bluetooth device scanning\n• Pagtuklas ng kalapit na user sa mesh\n• Geohash chat\n• Walang tracking o koleksiyon ng lokasyon + Buksan ang Location Settings + Suriin muli + Hindi available ang Location Services + Hindi available ang location services sa device na ito. Hindi ito karaniwan dahil standard ito sa Android.\n\nKailangan ito para maayos ang Bluetooth scanning. Kung wala ito, hindi matutuklasan ang mga kalapit na user. + Sinusuri ang location services… + Kailangan ang Bluetooth + Kailangan ng bitchat ang Bluetooth para sa: + • Tuklasin ang mga kalapit na user\n• Gumawa ng mesh na koneksyon\n• Magpadala at tumanggap ng mensahe\n• Gumana kahit walang internet o server + I‑enable ang Bluetooth + Hindi suportado ang Bluetooth + Hindi sinusuportahan ng device na ito ang Bluetooth Low Energy (BLE) na kailangan para gumana ang bitchat.\n\nKailangan ang BLE para bumuo ng mesh at makipag‑ugnayan sa kalapit na device kahit walang internet. + Sinusuri ang status ng Bluetooth… + natukoy ang pag‑optimize ng baterya + Naka‑enable ang pag‑optimize + kailangang tumakbo ang bitchat sa background para sa mesh; maaaring putulin ito ng pag‑optimize. + Mga benepisyo ng pag‑disable + • maaasahang paghatid\n• panatilihin ang koneksyon\n• iwas putol + I‑disable ang pag‑optimize + na‑disable ang pag‑optimize + Magpatuloy + Ine‑initialize ang mesh network + . + Ise‑set up ang Bluetooth mesh… + Ilang segundo lang ito + ⚠️ + Hindi kumpleto ang setup + Subukang muli + Protektado ang iyong privacy + • walang tracking o koleksiyon\n• offline ang mesh chat sa Bluetooth\n• gumagamit ng internet ang geohash chat + mga permiso + Payagan + HINDI sinusubaybayan ng bitchat ang lokasyon mo + @ + bitchat/ + · ⧉ + TAO + walang tao sa paligid… + (ikaw) + i‑pan at i‑zoom para pumili ng geohash + piliin + magtype ng mensahe… + @%1$s + banggit + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + Larawan + File + + + + + + ✓✓ + + + + + 📷 nagpadala ng larawan + 🎤 nagpadala ng voice message + 📎 nagpadala ng file + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + I‑play + I‑pause + + + Kailangan upang makakita ng mga bitchat user sa Bluetooth + Payagan ang bitchat na kumonekta sa kalapit na device + Kailangan ng Android para sa pagtuklas ng user sa Bluetooth + Kailangan ito ng bitchat para mag‑scan + Tumanggap ng abiso sa mga pribadong mensahe + Payagan ang bitchat na magpadala ng abiso + I‑disable ang pag‑optimize upang tumakbo nang maaasahan at mapanatili ang mesh na koneksyon + Payagan ang bitchat na tumakbo nang walang limitasyong baterya + + + Kalapit na device + Eksaktong lokasyon + Mikropono + Mga abiso + Pag‑optimize ng baterya + Iba pa + + + Ilagay ang password ng channel + Ang channel na %1$s ay protektado. Ilagay ang password para sumali. + Password + Sumali + Kanselahin + + + + at %d pa + at %d pa + + + + 1 tao + %d tao + + + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 00000000..fad84e20 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,367 @@ + + + bitchat + + + L’autorisation Bluetooth est requise pour discuter en pair à pair sans internet. + L’autorisation de localisation est requise pour découvrir les appareils à proximité via Bluetooth. + L’autorisation de notifications est requise pour t’alerter des nouveaux messages. + + + pseudo + écrire un message… + Mot de passe + Rejoindre le canal + Quitter + Envoyer + Afficher les commandes + Retour + Personnes + Canaux + Utilisateurs en ligne + Personne connecté + Tapoter 3 fois pour effacer toutes les données + Réseau + + + Optimisation de la batterie détectée + Optimisation de la batterie désactivée + Optimisation de la batterie non requise + Vérification de l’optimisation de la batterie + Pourquoi désactiver l’optimisation de la batterie ? + bitchat s’exécute en arrière-plan pour maintenir des connexions mesh avec les appareils à proximité. L’optimisation de la batterie peut interrompre ces connexions, entraînant des retards ou des pertes de messages.\n\nLa désactiver garantit une messagerie pair à pair fiable. + Désactiver l’optimisation + Remarque : tu peux modifier ce réglage plus tard dans Paramètres Android > Apps > bitchat > Batterie + Ton appareil n’a pas besoin de réglages d’optimisation de batterie. bitchat fonctionnera normalement. + Ton appareil n’a pas besoin de réglages d’optimisation de batterie. bitchat fonctionnera normalement. + bitchat peut fonctionner de manière fiable en arrière‑plan + • Livraison fiable des messages\n• Maintien de la connectivité mesh\n• Relais des messages en arrière‑plan\n• Évite les coupures + Vérifier à nouveau + Ignorer pour l’instant + Continuer + Réessayer + Ignorer + + + et %1$d de plus + %1$d messages de %2$d personnes + et %1$d conversations de plus + 👥 bitchatters à proximité ! + 1 personne à proximité + %1$d personnes à proximité + Nouveaux messages + Nouveaux messages de lieu + Mentionné dans %1$s + Mentionné dans %1$s (+%2$d de plus) + %1$d mentions dans %2$s + Nouvelle activité dans %1$s + Messages dans %1$s + %1$s a rejoint la conversation + bitchat – %1$d mentions + bitchat – discussions par lieu + %1$d messages depuis %2$d lieux + Mentionné dans le chat Mesh + %1$d mentions dans le chat Mesh + et %1$d lieux de plus + et %1$d de plus + + + Ajouter aux favoris + Retirer des favoris + Ajouter un signet + + + retour + canal : %1$s + quitter + Joignable via Nostr + Messages privés non lus + Basculer le signet + Téléporté + Statut Tor + Pairs connectés + Participants geohash + Prêt pour l’échange de clés + Échange de clés en cours + Chiffré de bout en bout + Échec de l’échange + + + 📎 Fichier reçu + 📄 %1$s + 📏 Taille : %1$s + 🏷️ Type : %1$s + 📂 Ouvrir / Enregistrer + ❌ Fermer + Choisir une image + + + messagerie mesh décentralisée avec chiffrement de bout en bout + Chat Mesh hors‑ligne + Communique directement via Bluetooth LE sans internet ni serveurs. Les messages sont relayés par les appareils proches pour étendre la portée. + Canaux Geohash en ligne + Discute avec des personnes proches via des canaux basés sur geohash. Étends le mesh grâce à des relais internet publics. + Chiffrement de bout en bout + Les messages privés sont chiffrés. Les messages de canal sont publics. + apparence + système + clair + sombre + proof of work + pow désactivé + pow activé + ajoute un proof of work aux messages geohash pour dissuader le spam. + difficulté : %1$d bits (~%2$s) + la difficulté %1$d nécessite ~%2$s tentatives de hachage + aucun proof of work requis + très faible – protection minimale + faible – protection basique + moyenne – bonne protection + élevée – forte protection + très élevée – peut causer des délais + extrême – calcul important requis + réseau + tor désactivé + tor activé + router internet via Tor pour plus de confidentialité. + statut Tor : %1$s, bootstrap %2$d%% + Dernier : %1$s + Suppression d’urgence des données + Astuce : tapote 3 fois le titre de l’app pour supprimer toutes les données (messages, clés, paramètres). + Paramètres de debug + Open Source • Privacy First • Décentralisé + Fermer + annuler + + + Avertissement + Services de localisation + Confidentialité + Erreur + Optimisation de la batterie + Avantages + Vérification de l’optimisation de la batterie + Optimisation non prise en charge + Bluetooth + Message non lu + Ouvrir la carte + Retirer le signet + Téléporter + Sélectionné + Quitter le canal + Joignable via Nostr + Favori (hors‑ligne) + Diminuer la précision + Augmenter la précision + Sélectionner le geohash + Aller en bas + Fichier + Image + Annuler + Lien + Choisir un média + Enregistrer un message vocal + Chat Mesh hors‑ligne + Canaux Geohash en ligne + Chiffrement de bout en bout + + + Image %1$d sur %2$d + Image indisponible + Image enregistrée dans "Téléchargements" + Échec de l’enregistrement de l’image + Choisir un fichier + [fichier indisponible] + inconnu + + + choisis une action pour ce message ou cet utilisateur + choisis une action pour cet utilisateur + copier le message + copier ce message dans le presse‑papiers + gifler %1$s + envoyer une gifle amicale + prendre %1$s dans les bras + envoyer une accolade amicale + bloquer %1$s + bloquer tous les messages de cet utilisateur + + + #canaux de lieu + discute avec des personnes proches via des canaux geohash. seul un geohash approximatif est partagé, jamais un GPS exact. ne prends pas de capture d’écran et ne partage pas cet écran pour protéger ta vie privée. + accorder la permission de localisation + permission de localisation refusée. active‑la dans les paramètres pour utiliser les canaux de lieu. + Ouvrir les paramètres + \u2713 permission de localisation accordée + vérification des permissions… + recherche des canaux à proximité… + ajouté aux favoris + geohash + geohash invalide + téléporter + désactiver les services de localisation + activer les services de localisation + #bluetooth • %1$s + mesh + bloc + quartier + ville + province + région + + + outils de debug + outils développeur pour diagnostic et contrôle + journalisation verbeuse + rôles Bluetooth + serveur GATT + connexions : %1$d / %2$d + max serveur + client GATT + max client + connexions : %1$d / %2$d + max global + relais de paquets + depuis le début : %1$d + paramètres de synchro + paquets max par synchro : %1$d + taille max du filtre GCS : %1$d octets (128–1024) + FPR cible : %1$.2f%% + appareils connectés + ID de notre appareil : %1$s + aucun + déconnecter + résultats de scan récents + connecter + console de debug + effacer + dernières 10s : %1$d • 1m : %2$d • 15m : %3$d + P dérivé : %1$s • nb max estimé : %2$s + • direct + %1$s • RSSI : %2$s + ? + en tant que serveur (nous hébergeons) + en tant que client (nous nous connectons) + + + Services de localisation requis + Confidentialité d’abord + bitchat ne suit PAS ta position.\n\nLes services de localisation sont requis pour le scan Bluetooth et pour la fonction de chat Geohash. + bitchat a besoin des services de localisation pour : + • Scan des appareils Bluetooth\n• Découvrir les utilisateurs à proximité sur le réseau mesh\n• Fonction de chat Geohash\n• Pas de suivi ni de collecte de position + Ouvrir les paramètres de localisation + Vérifier à nouveau + Services de localisation indisponibles + Les services de localisation ne sont pas disponibles sur cet appareil. C’est inhabituel car ils sont standard sur Android.\n\nL’app en a besoin pour que le scan Bluetooth fonctionne correctement (exigence Android). Sans cela, l’app ne peut pas découvrir les utilisateurs à proximité. + Vérification des services de localisation… + Bluetooth requis + bitchat a besoin de Bluetooth pour : + • Découvrir les utilisateurs à proximité\n• Créer des connexions de réseau mesh\n• Envoyer et recevoir des messages\n• Fonctionner sans internet ni serveurs + Activer Bluetooth + Bluetooth non pris en charge + Cet appareil ne prend pas en charge Bluetooth Low Energy (BLE), requis pour le fonctionnement de bitchat.\n\nbitchat a besoin de BLE pour créer des réseaux mesh et communiquer sans internet avec les appareils à proximité. + Vérification du statut Bluetooth… + optimisation de la batterie détectée + Optimisation de la batterie activée + bitchat doit fonctionner en arrière‑plan pour maintenir les connexions mesh. l’optimisation de la batterie peut les interrompre. + Avantages de la désactivation + • livraison fiable des messages\n• maintient la connectivité mesh\n• évite les coupures + Désactiver l’optimisation + optimisation de la batterie désactivée + Continuer + Initialisation du réseau mesh + . + Configuration du mesh Bluetooth… + Cela ne devrait prendre que quelques secondes + ⚠️ + Configuration incomplète + Réessayer + Ta confidentialité est protégée + • pas de suivi ni collecte de données\n• chats mesh Bluetooth entièrement hors‑ligne\n• les chats geohash utilisent internet + autorisations + Accorder les autorisations + bitchat ne suit PAS ta position + @ + bitchat/ + · ⧉ + PERSONNES + personne aux alentours… + (toi) + déplacer et zoomer pour choisir un geohash + sélectionner + écrire un message… + @%1$s + mention + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + Image + Fichier + + + + + + ✓✓ + + + + + 📷 a envoyé une image + 🎤 a envoyé un message vocal + 📎 a envoyé un fichier + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + Lire + Pause + + + Nécessaire pour découvrir des utilisateurs bitchat via Bluetooth + Autoriser bitchat à se connecter aux appareils à proximité + Requis par Android pour découvrir des utilisateurs bitchat via Bluetooth + bitchat en a besoin pour rechercher des appareils à proximité + Recevoir des notifications de messages privés + Autoriser bitchat à t’envoyer des notifications + Désactiver l’optimisation de la batterie pour assurer un fonctionnement fiable en arrière‑plan et maintenir les connexions mesh + Autoriser bitchat à fonctionner sans restrictions de batterie + + + Appareils à proximité + Localisation précise + Microphone + Notifications + Optimisation de la batterie + Autre + + + Entrer le mot de passe du canal + Le canal %1$s est protégé par mot de passe. Entre le mot de passe pour rejoindre. + Mot de passe + Rejoindre + Annuler + + + + et %d de plus + et %d de plus + + + + 1 personne + %d personnes + + + diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml new file mode 100644 index 00000000..fbca26d0 --- /dev/null +++ b/app/src/main/res/values-he/strings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml new file mode 100644 index 00000000..cf2aa253 --- /dev/null +++ b/app/src/main/res/values-hi/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + ब्लूटूथ अनुमति इंटरनेट के बिना सीधे दूसरों से चैट करने के लिए आवश्यक है। + स्थान अनुमति ब्लूटूथ के माध्यम से आस-पास के डिवाइस खोजने के लिए आवश्यक है। + सूचनाओं की अनुमति नए संदेशों के बारे में बताने के लिए आवश्यक है। + + + उपनाम + संदेश लिखें… + पासवर्ड + चैनल में शामिल हों + छोड़ें + भेजें + कमांड दिखाएँ + वापस + लोग + चैनल + ऑनलाइन उपयोगकर्ता + कोई कनेक्टेड नहीं + सभी डेटा मिटाने के लिए तीन बार टैप करें + आपका नेटवर्क + + + बैटरी अनुकूलन मिला + बैटरी अनुकूलन बंद है + बैटरी अनुकूलन आवश्यक नहीं + बैटरी अनुकूलन जाँच रहे हैं + बैटरी अनुकूलन क्यों बंद करें? + bitchat पृष्ठभूमि में चलती है ताकि पास के उपकरणों के साथ मेष कनेक्शन बनाए रखे। बैटरी अनुकूलन इन कनेक्शनों को बाधित कर सकता है, जिससे संदेश देर से पहुँचें या खो जाएँ।\n\nबैटरी अनुकूलन बंद करने से विश्वसनीय पीयर‑टू‑पीयर संचार सुनिश्चित होता है। + बैटरी अनुकूलन बंद करें + नोट: आप इसे बाद में Android सेटिंग्स > ऐप्स > bitchat > बैटरी में बदल सकते हैं। + आपके डिवाइस को बैटरी अनुकूलन सेटिंग्स की आवश्यकता नहीं है। bitchat सामान्य रूप से चलेगी। + आपके डिवाइस को बैटरी अनुकूलन सेटिंग्स की आवश्यकता नहीं है। bitchat सामान्य रूप से चलेगी। + bitchat पृष्ठभूमि में विश्वसनीय रूप से चल सकती है + • संदेशों की विश्वसनीय डिलीवरी\n• मेष कनेक्शन बनाए रखना\n• पृष्ठभूमि में संदेश फॉरवर्डिंग\n• डिसकनेक्शन से बचाव + फिर से जाँचें + अभी छोड़ें + जारी रखें + दोबारा प्रयास करें + छोड़ें + + + और %1$d + %2$d लोगों से %1$d संदेश + और %1$d वार्तालाप + 👥 पास में उपयोगकर्ता! + पास में 1 व्यक्ति + पास में %1$d लोग + नए संदेश + नई स्थान संदेश + %1$s में उल्लेख + %1$s में उल्लेख (+%2$d) + %2$s में %1$d उल्लेख + %1$s में नई गतिविधि + %1$s में संदेश + %1$s बातचीत में शामिल हुआ/हुई + bitchat – %1$d उल्लेख + bitchat – स्थान चैट + %2$d स्थानों से %1$d संदेश + मेष चैट में उल्लेख + मेष चैट में %1$d उल्लेख + और %1$d स्थान + और %1$d + + + पसंदीदा में जोड़ें + पसंदीदा से हटाएँ + बुकमार्क जोड़ें + + + वापस + चैनल: %1$s + छोड़ें + Nostr के माध्यम से उपलब्ध + अपठित निजी संदेश + बुकमार्क टॉगल करें + टेलीपोर्ट हुआ + Tor स्थिति + कनेक्टेड पीयर्स + geohash प्रतिभागी + हैंडशेक के लिए तैयार + हैंडशेक जारी है + एंड‑टू‑एंड एन्क्रिप्टेड + हैंडशेक विफल + + + 📎 फ़ाइल प्राप्त + 📄 %1$s + 📏 आकार: %1$s + 🏷️ प्रकार: %1$s + 📂 खोलें / सहेजें + ❌ बंद करें + छवि चुनें + + + विकेन्द्रीकृत मेष चैट • एंड‑टू‑एंड एन्क्रिप्शन + ऑफ़लाइन मेष चैट + इंटरनेट या सर्वर के बिना Bluetooth LE के माध्यम से सीधे संवाद करें। संदेशों को पास के उपकरणों के माध्यम से रिले किया जाता है ताकि पहुँच बढ़े। + ऑनलाइन geohash चैनल + geohash आधारित चैनलों के माध्यम से अपने आस‑पास के लोगों से जुड़ें। सार्वजनिक इंटरनेट रिले के माध्यम से मेष का विस्तार करें। + एंड‑टू‑एंड एन्क्रिप्शन + निजी संदेश एन्क्रिप्टेड हैं। चैनल संदेश सार्वजनिक हैं। + रूप + सिस्टम + लाइट + डार्क + प्रूफ़ ऑफ़ वर्क + PoW बंद + PoW चालू + स्पैम को कठिन बनाने के लिए geohash संदेशों में Proof of Work जोड़ें। + कठिनाई: %1$d बिट (~%2$s) + कठिनाई %1$d के लिए ~%2$s हैश प्रयास + Proof of Work आवश्यक नहीं + बहुत कम – न्यूनतम स्पैम सुरक्षा + कम – बुनियादी स्पैम सुरक्षा + मध्यम – अच्छी स्पैम सुरक्षा + उच्च – मजबूत स्पैम सुरक्षा + बहुत उच्च – विलंब हो सकता है + अत्यधिक – काफ़ी गणनात्मक संसाधन चाहिए + नेटवर्क + Tor बंद + Tor चालू + अधिक गोपनीयता के लिए इंटरनेट ट्रैफ़िक को Tor के माध्यम से रूट करें। + Tor स्थिति: %1$s, बूटस्ट्रैप %2$d%% + अंतिम: %1$s + आपातकालीन डेटा मिटाना + संकेत: सभी सहेजे डेटा – संदेश, कुंजियाँ और सेटिंग्स सहित – मिटाने के लिए ऐप शीर्षक पर तीन बार टैप करें। + डिबग सेटिंग्स + ओपन सोर्स • गोपनीयता पहले • विकेन्द्रीकृत + बंद करें + रद्द करें + + + चेतावनी + स्थान सेवाएँ + गोपनीयता + त्रुटि + बैटरी अनुकूलन + लाभ + बैटरी अनुकूलन जाँच रहे हैं + बैटरी अनुकूलन समर्थित नहीं + Bluetooth + अपठित संदेश + मानचित्र खोलें + बुकमार्क हटाएँ + टेलीपोर्ट + चयनित + चैनल छोड़ें + Nostr के माध्यम से उपलब्ध + पसंदीदा (ऑफ़लाइन) + सटीकता घटाएँ + सटीकता बढ़ाएँ + geohash चुनें + नीचे स्क्रॉल करें + फ़ाइल + छवि + रद्द करें + लिंक + मीडिया चुनें + फ़ाइल चुनें + वर्तमान छवि सहेजें + बंद करें + छवि %1$d / %2$d + गोपनीयता सुरक्षित + वॉइस नोट रिकॉर्ड करें + ऑफ़लाइन मेष चैट + ऑनलाइन geohash चैनल + एंड‑टू‑एंड एन्क्रिप्शन + + + छवि %1$d / %2$d + छवि उपलब्ध नहीं + छवि "Downloads" में सहेजी गई + छवि सहेजी नहीं जा सकी + छवि "Downloads" में सहेजी गई + छवि सहेजी नहीं जा सकी + फ़ाइल चुनें + [फ़ाइल उपलब्ध नहीं] + अज्ञात + + + इस संदेश या उपयोगकर्ता के लिए क्रिया चुनें + इस उपयोगकर्ता के लिए क्रिया चुनें + संदेश कॉपी करें + इस संदेश को क्लिपबोर्ड में कॉपी करें + %1$s को थप्पड़ + मज़ाकिया थप्पड़ भेजें + %1$s को गले लगाएँ + दोस्ताना आलिंगन भेजें + %1$s को ब्लॉक करें + इस उपयोगकर्ता के सभी संदेश ब्लॉक करें + + + #स्थान चैनल + geohash चैनलों के माध्यम से अपने पास के लोगों के साथ चैट करें। केवल एक मोटा geohash साझा किया जाता है, कभी भी सटीक GPS डेटा नहीं। अपनी गोपनीयता के लिए, स्क्रीनशॉट न लें और इस स्क्रीन को साझा न करें। + स्थान अनुमति दें + स्थान अनुमति अस्वीकार कर दी गई। स्थान चैनल उपयोग करने के लिए सेटिंग्स में सक्षम करें। + सेटिंग्स खोलें + \u2713 स्थान अनुमति दी गई + अनुमतियाँ जाँच रहे हैं… + पास के चैनल ढूँढ़ रहे हैं… + बुकमार्क + Geohash + अमान्य geohash + टेलीपोर्ट + स्थान सेवाएँ बंद करें + स्थान सेवाएँ चालू करें + mesh + ब्लॉक + पड़ोस + शहर + प्रांत + क्षेत्र + #bluetooth • %1$s + + + डिबग उपकरण + निदान और नियंत्रण के लिए डेवलपर टूल + विस्तृत लॉगिंग + पीयर जुड़ना/छोड़ना, कनेक्शन दिशा, पैकेट रिले और रिले को लॉग करता है + Bluetooth भूमिकाएँ + GATT सर्वर + कनेक्शन: %1$d / %2$d + अधिकतम सर्वर + GATT क्लाइंट + अधिकतम क्लाइंट + कनेक्शन: %1$d / %2$d + कुल अधिकतम + पैकेट रिले + आरंभ से: %1$d + भूमिकाएँ ऑन/ऑफ करें और बंद करने पर सभी कनेक्शन बंद करें + सिंक सेटिंग्स + प्रति सिंक अधिकतम पैकेट: %1$d + अधिकतम GCS फ़िल्टर आकार: %1$d बाइट (128–1024) + लक्ष्य FPR: %1$.2f%% + कनेक्टेड डिवाइस + हमारा डिवाइस ID: %1$s + कोई नहीं + डिसकनेक्ट + हाल में स्कैन किए डिवाइस + कनेक्ट + डिबग कंसोल + साफ़ करें + पिछले 10 से.: %1$d • 1 मि.: %2$d • 15 मि.: %3$d + व्युत्पन्न P: %1$s • अनुमानित अधिकतम आइटम: %2$s + • डायरेक्ट + %1$s • RSSI: %2$s + सर्वर के रूप में (हम होस्ट करते हैं) + क्लाइंट के रूप में (हम कनेक्ट करते हैं) + + + स्थान सेवाएँ आवश्यक + गोपनीयता पहले + bitchat आपकी लोकेशन ट्रैक नहीं करती।\n\nBluetooth स्कैनिंग और geohash चैट फीचर के लिए स्थान सेवाएँ आवश्यक हैं। + bitchat को इन कारणों से स्थान सेवाएँ चाहिए: + • Bluetooth डिवाइस स्कैनिंग\n• मेष नेटवर्क में पास के उपयोगकर्ताओं की खोज\n• geohash चैट फीचर\n• कोई ट्रैकिंग या लोकेशन संग्रह नहीं + स्थान सेटिंग्स खोलें + फिर से जाँचें + स्थान सेवाएँ उपलब्ध नहीं + इस डिवाइस पर स्थान सेवाएँ उपलब्ध नहीं हैं। यह असामान्य है क्योंकि Android डिवाइसों पर वे सामान्यतः होती हैं।\n\nBluetooth स्कैनिंग (Android आवश्यकता) के ठीक से काम करने के लिए स्थान सेवाएँ जरूरी हैं। इसके बिना ऐप पास के उपयोगकर्ताओं को नहीं ढूँढ़ सकती। + स्थान सेवाएँ जाँची जा रही हैं… + Bluetooth आवश्यक + bitchat को Bluetooth की आवश्यकता: + • पास के उपयोगकर्ताओं की खोज\n• मेष कनेक्शन बनाना\n• संदेश भेजना और प्राप्त करना\n• इंटरनेट या सर्वर के बिना काम करना + Bluetooth चालू करें + Bluetooth समर्थित नहीं + यह डिवाइस Bluetooth Low Energy (BLE) को सपोर्ट नहीं करता, जो bitchat के लिए आवश्यक है।\n\nइंटरनेट के बिना पास के डिवाइसों के साथ मेष नेटवर्क बनाने और संवाद करने के लिए BLE आवश्यक है। + Bluetooth स्थिति जाँच रहे हैं… + बैटरी अनुकूलन मिला + बैटरी अनुकूलन चालू है + मेष कनेक्शन बनाए रखने के लिए bitchat को पृष्ठभूमि में चलना होता है। बैटरी अनुकूलन इन कनेक्शनों को बाधित कर सकता है। + बंद करने के लाभ + • विश्वसनीय डिलीवरी\n• मेष कनेक्टिविटी बनाए रखें\n• डिसकनेक्शन रोकें + बैटरी अनुकूलन बंद करें + बैटरी अनुकूलन बंद + जारी रखें + मेष नेटवर्क प्रारंभ कर रहे हैं + Bluetooth मेष नेटवर्क सेट कर रहे हैं… + इसमें केवल कुछ सेकंड लगेंगे + सेटअप पूरा नहीं हुआ + फिर से प्रयास करें + आपकी गोपनीयता सुरक्षित है + • कोई ट्रैकिंग या डेटा संग्रह नहीं\n• Bluetooth मेष चैट पूरी तरह ऑफ़लाइन\n• geohash चैट इंटरनेट का उपयोग करती है + अनुमतियाँ + अनुमतियाँ दें + bitchat आपकी लोकेशन ट्रैक नहीं करती + लोग + आस‑पास कोई नहीं… + (आप) + geohash चुनने के लिए पैन/ज़ूम करें + चयन करें + संदेश लिखें… + उल्लेख + (~%1$s) + v%1$s + image/* + छवि + फ़ाइल + + + 📷 छवि भेजी + 🎤 वॉइस नोट भेजा + 📎 फ़ाइल भेजी + + + चलाएँ + रोकें + PoW माइनिंग + PoW सक्षम + प्रूफ़ ऑफ़ वर्क + माइनिंग… + pow: %1$dbit + + + ब्लूटूथ के माध्यम से bitchat उपयोगकर्ताओं की खोज के लिए आवश्यक + bitchat को पास के उपकरणों से कनेक्ट करने दें + Android द्वारा आवश्यक: ब्लूटूथ के माध्यम से पास के bitchat उपयोगकर्ताओं की खोज + पास के उपकरण स्कैन करने के लिए bitchat को यह चाहिए + निजी संदेश मिलने पर सूचनाएँ प्राप्त करें + bitchat को आपको सूचनाएँ भेजने दें + बैटरी अनुकूलन बंद करें ताकि bitchat पृष्ठभूमि में विश्वसनीय रूप से चल सके और मेष कनेक्शन बनाए रख सके + bitchat को बैटरी प्रतिबंधों के बिना चलने दें + + + पास के उपकरण + सटीक स्थान + माइक्रोफ़ोन + सूचनाएँ + बैटरी अनुकूलन + अन्य + + + चैनल पासवर्ड दर्ज करें + चैनल %1$s पासवर्ड द्वारा सुरक्षित है। शामिल होने के लिए पासवर्ड दर्ज करें। + पासवर्ड + शामिल हों + रद्द करें + + + + और %d + और %d + + + + 1 व्यक्ति + %d लोग + + + diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml new file mode 100644 index 00000000..d5514e16 --- /dev/null +++ b/app/src/main/res/values-id/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + Izin Bluetooth diperlukan untuk chatting langsung dengan orang lain tanpa Internet. + Izin lokasi diperlukan untuk menemukan perangkat terdekat melalui Bluetooth. + Izin notifikasi diperlukan untuk memberitahu Anda tentang pesan baru. + + + Nama panggilan + Ketik pesan… + Kata sandi + Bergabung ke channel + Keluar + Kirim + Tampilkan perintah + Kembali + Orang + Channel + Pengguna online + Tidak ada yang terhubung + Ketuk tiga kali untuk menghapus semua data + Jaringan + + + Optimalisasi baterai terdeteksi + Optimalisasi baterai dinonaktifkan + Optimalisasi baterai tidak diperlukan + Memeriksa optimalisasi baterai + Mengapa menonaktifkan optimalisasi baterai? + bitchat berjalan di latar belakang untuk mempertahankan koneksi mesh dengan perangkat terdekat. Optimalisasi baterai dapat mengganggu koneksi ini, menyebabkan pesan tertunda atau hilang.\n\nMenonaktifkan optimalisasi baterai memastikan komunikasi peer-to-peer yang andal. + Nonaktifkan optimalisasi baterai + Catatan: Anda dapat mengubahnya nanti di Pengaturan Android > Aplikasi > bitchat > Baterai. + Perangkat Anda tidak memerlukan pengaturan optimalisasi baterai. bitchat akan berjalan normal. + Perangkat Anda tidak memerlukan pengaturan optimalisasi baterai. bitchat akan berjalan normal. + bitchat dapat berjalan andal di latar belakang + • Pengiriman pesan yang andal\n• Mempertahankan koneksi mesh\n• Relay pesan latar belakang\n• Mencegah putusnya koneksi + Periksa lagi + Lewati sekarang + Lanjut + Coba lagi + Lewati + + + dan %1$d lagi + %1$d pesan dari %2$d orang + dan %1$d percakapan lagi + 👥 bitchatter terdekat! + 1 orang terdekat + %1$d orang terdekat + Pesan baru + Pesan lokasi baru + Disebut di %1$s + Disebut di %1$s (+%2$d lagi) + %1$d penyebutan di %2$s + Aktivitas baru di %1$s + Pesan di %1$s + %1$s bergabung dengan percakapan + bitchat – %1$d penyebutan + bitchat – Chat lokasi + %1$d pesan dari %2$d lokasi + Disebut di Mesh Chat + %1$d penyebutan di Mesh Chat + dan %1$d lokasi lagi + dan %1$d lagi + + + Tambah ke favorit + Hapus dari favorit + Tambah bookmark + + + kembali + Channel: %1$s + keluar + Dapat dijangkau melalui Nostr + Pesan pribadi yang belum dibaca + Alihkan bookmark + Diteleportasi + Status Tor + Peer yang terhubung + Peserta geohash + Siap untuk handshake + Handshake sedang berlangsung + Terenkripsi end-to-end + Handshake gagal + + + 📎 File diterima + 📄 %1$s + 📏 Ukuran: %1$s + 🏷️ Jenis: %1$s + 📂 Buka / Simpan + ❌ Tutup + Pilih gambar + + + chat mesh terdesentralisasi dengan enkripsi end-to-end + Chat Mesh Offline + Berkomunikasi langsung melalui Bluetooth LE tanpa Internet atau server. Pesan diteruskan melalui perangkat terdekat untuk memperluas jangkauan. + Channel Geohash Online + Terhubung dengan orang-orang di area Anda melalui channel berbasis geohash. Perluas mesh melalui relay Internet publik. + Enkripsi end-to-end + Pesan pribadi dienkripsi. Pesan channel bersifat publik. + Tampilan + Sistem + Terang + Gelap + Proof of Work + PoW mati + PoW hidup + Tambahkan proof of work ke pesan geohash untuk mempersulit spam. + Kesulitan: %1$d bit (~%2$s) + Kesulitan %1$d memerlukan ~%2$s percobaan hash + tidak ada proof of work yang diperlukan + sangat rendah – perlindungan spam minimal + rendah – perlindungan spam dasar + sedang – perlindungan spam yang baik + tinggi – perlindungan spam yang kuat + sangat tinggi – dapat menyebabkan keterlambatan + ekstrem – memerlukan daya komputasi yang signifikan + Jaringan + Tor mati + Tor hidup + Rutekan lalu lintas Internet melalui Tor untuk privasi ekstra. + Status Tor: %1$s, Bootstrap %2$d%% + Terakhir: %1$s + Hapus data darurat + Tips: Ketuk tiga kali pada judul aplikasi untuk menghapus semua data tersimpan – termasuk pesan, kunci, dan pengaturan. + Pengaturan debug + Sumber Terbuka • Privasi Pertama • Terdesentralisasi + Tutup + batal + + + Peringatan + Layanan lokasi + Privasi + Kesalahan + Optimalisasi baterai + Manfaat + Memeriksa optimalisasi baterai + Optimalisasi baterai tidak didukung + Bluetooth + Pesan yang belum dibaca + Buka peta + Hapus bookmark + Teleportasi + Dipilih + Keluar dari channel + Dapat dijangkau melalui Nostr + Favorit (offline) + Kurangi presisi + Tingkatkan presisi + Pilih geohash + Gulir ke bawah + File + Gambar + Batal + Tautan + Pilih media + Pilih file + Simpan gambar saat ini + Tutup + Gambar %1$d dari %2$d + Privasi terlindungi + Rekam pesan suara + Chat Mesh Offline + Channel Geohash Online + Enkripsi end-to-end + + + Gambar %1$d dari %2$d + Gambar tidak tersedia + Gambar disimpan ke \"Downloads\" + Gagal menyimpan gambar + Gambar disimpan ke \"Downloads\" + Gagal menyimpan gambar + Pilih file + [File tidak tersedia] + tidak diketahui + + + Pilih aksi untuk pesan atau pengguna ini + Pilih aksi untuk pengguna ini + Salin pesan + Salin pesan ini ke clipboard + Tampar %1$s + Kirim tamparan main-main + Peluk %1$s + Kirim pelukan yang ramah + Blokir %1$s + Blokir semua pesan dari pengguna ini + + + #Channel lokasi + Chat dengan orang-orang di dekat Anda melalui channel geohash. Hanya geohash kasar yang dibagikan, bukan data GPS yang tepat. Harap jangan tangkap layar atau bagikan tampilan ini untuk privasi. + Berikan izin lokasi + Izin lokasi ditolak. Aktifkan di Pengaturan untuk menggunakan channel lokasi. + Buka Pengaturan + \u2713 Izin lokasi diberikan + Memeriksa izin … + Mencari channel terdekat … + Dibookmark + Geohash + Geohash tidak valid + teleportasi + Nonaktifkan layanan lokasi + Aktifkan layanan lokasi + mesh + Blok + Lingkungan + Kota + Provinsi + Wilayah + #bluetooth • %1$s + + + Alat debug + Alat pengembang untuk diagnostik dan kontrol + logging verbose + Log bergabung/keluar peer, arah koneksi, penerusan paket dan relay + Peran Bluetooth + GATT Server + Koneksi: %1$d / %2$d + server maks + GATT Client + client maks + Koneksi: %1$d / %2$d + maks keseluruhan + Packet Relay + sejak mulai: %1$d + Aktifkan/nonaktifkan peran dan tutup semua koneksi saat menonaktifkan + Pengaturan sinkronisasi + paket maks per sinkronisasi: %1$d + ukuran filter GCS maks: %1$d Byte (128–1024) + FPR target: %1$.2f%% + perangkat terhubung + ID perangkat kami: %1$s + tidak ada + putuskan koneksi + perangkat yang baru dipindai + hubungkan + Konsol debug + hapus + 10 detik terakhir: %1$d • 1m: %2$d • 15m: %3$d + P turunan: %1$s • elemen maks perkiraan: %2$s + • langsung + %1$s • RSSI: %2$s + sebagai server (kami host) + sebagai client (kami hubungkan) + + + Layanan lokasi diperlukan + Privasi pertama + bitchat TIDAK melacak lokasi Anda.\n\nLayanan lokasi diperlukan untuk pemindaian Bluetooth dan fitur geohash chat. + bitchat memerlukan layanan lokasi untuk: + • Pemindaian perangkat Bluetooth\n• Menemukan pengguna terdekat di jaringan mesh\n• Fitur geohash chat\n• Tidak ada pelacakan atau pengumpulan lokasi + Buka pengaturan lokasi + Periksa lagi + Layanan lokasi tidak tersedia + Layanan lokasi tidak tersedia di perangkat ini. Ini tidak biasa karena layanan lokasi standar di perangkat Android.\n\nbitchat memerlukan layanan lokasi agar pemindaian Bluetooth berfungsi dengan benar (persyaratan Android). Tanpanya, aplikasi tidak dapat menemukan pengguna terdekat. + Memeriksa layanan lokasi … + Bluetooth diperlukan + bitchat memerlukan Bluetooth untuk: + • Menemukan pengguna terdekat\n• Membuat koneksi jaringan mesh\n• Mengirim dan menerima pesan\n• Berfungsi tanpa Internet atau server + Aktifkan Bluetooth + Bluetooth tidak didukung + Perangkat ini tidak mendukung Bluetooth Low Energy (BLE), yang diperlukan agar bitchat berfungsi.\n\nbitchat memerlukan BLE untuk membuat jaringan mesh dan berkomunikasi dengan perangkat terdekat tanpa Internet. + Memeriksa status Bluetooth … + Optimalisasi baterai terdeteksi + Optimalisasi baterai diaktifkan + bitchat harus berjalan di latar belakang untuk mempertahankan koneksi mesh. Optimalisasi baterai dapat mengganggu koneksi ini. + Manfaat menonaktifkan + • pengiriman pesan yang andal\n• mempertahankan koneksi mesh\n• mencegah putusnya koneksi + Nonaktifkan optimalisasi baterai + Optimalisasi baterai dinonaktifkan + Lanjut + Menginisialisasi jaringan mesh + Menyiapkan jaringan Bluetooth mesh … + Ini seharusnya hanya memakan waktu beberapa detik + Penyiapan tidak lengkap + Coba lagi + Privasi Anda terlindungi + • tidak ada pelacakan atau pengumpulan data\n• Bluetooth mesh chat sepenuhnya offline\n• Geohash chat menggunakan Internet + Izin + Berikan izin + bitchat TIDAK melacak lokasi Anda + ORANG + tidak ada orang di sekitar … + (Anda) + geser dan zoom untuk memilih geohash + pilih + Ketik pesan … + sebut + (~%1$s) + v%1$s + image/* + Gambar + File + + + 📷 mengirim gambar + 🎤 mengirim pesan suara + 📎 mengirim file + + + Putar + Jeda + Mining PoW + PoW diaktifkan + Proof of Work + Mining … + pow: %1$dbit + + + Diperlukan untuk menemukan pengguna bitchat melalui Bluetooth + Izinkan bitchat terhubung dengan perangkat terdekat + Diperlukan oleh Android untuk menemukan pengguna bitchat terdekat melalui Bluetooth + bitchat memerlukan ini untuk memindai perangkat terdekat + Terima notifikasi saat Anda menerima pesan pribadi + Izinkan bitchat mengirim notifikasi kepada Anda + Nonaktifkan optimalisasi baterai untuk memastikan bitchat berjalan andal di latar belakang dan mempertahankan koneksi jaringan mesh + Izinkan bitchat berjalan tanpa pembatasan baterai + + + Perangkat terdekat + Lokasi yang tepat + Mikrofon + Notifikasi + Optimalisasi baterai + Lainnya + + + Masukkan kata sandi channel + Channel %1$s dilindungi kata sandi. Masukkan kata sandi untuk bergabung. + Kata sandi + Bergabung + Batal + + + + dan %d lagi + dan %d lagi + + + + 1 orang + %d orang + + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 00000000..dff2ed20 --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,387 @@ + + + bitchat + + + Il permesso Bluetooth è necessario per la messaggistica peer-to-peer senza internet. + Il permesso di localizzazione è necessario per scoprire i dispositivi vicini tramite Bluetooth. + Il permesso di notifica è necessario per avvisarti di nuovi messaggi. + + + nickname + scrivi un messaggio… + Password + Entra nel canale + Esci + Invia + Mostra comandi + Indietro + Persone + Canali + Utenti online + Nessuno connesso + Tocca tre volte per cancellare tutti i dati + Rete + + + Ottimizzazione batteria rilevata + Ottimizzazione batteria disattivata + Ottimizzazione batteria non richiesta + Controllo ottimizzazione batteria + Perché disattivare l\'ottimizzazione della batteria? + bitchat viene eseguito in background per mantenere le connessioni di rete mesh con i dispositivi vicini. L\'ottimizzazione della batteria può interrompere queste connessioni, causando ritardi o perdita di messaggi.\n\nDisattivare l\'ottimizzazione della batteria garantisce una messaggistica peer-to-peer affidabile. + Disattiva ottimizzazione batteria + Nota: puoi modificare questa impostazione in seguito in Impostazioni Android > App > bitchat > Batteria + Il tuo dispositivo non richiede impostazioni di ottimizzazione della batteria. bitchat funzionerà normalmente. + Il tuo dispositivo non richiede impostazioni di ottimizzazione della batteria. bitchat funzionerà normalmente. + bitchat può funzionare in modo affidabile in background + • Garantisce la consegna affidabile dei messaggi\n• Mantiene la connettività della rete mesh\n• Consente l\'inoltro dei messaggi in background\n• Previene le interruzioni della connessione + Controlla di nuovo + Salta per ora + Continua + Riprova + Salta + + + e altri %1$d + %1$d messaggi da %2$d persone + e altre %1$d conversazioni + 👥 bitchatter nelle vicinanze! + 1 persona nei dintorni + %1$d persone nei dintorni + Nuovi messaggi + Nuovi messaggi di posizione + Menzionato in %1$s + Menzionato in %1$s (+%2$d altri) + %1$d menzioni in %2$s + Nuova attività in %1$s + Messaggi in %1$s + %1$s si è unito alla conversazione + bitchat - %1$d menzioni + bitchat - chat di posizione + %1$d messaggi da %2$d posizioni + Menzionato nella chat mesh + %1$d menzioni nella chat mesh + e altre %1$d posizioni + e altri %1$d + + + Aggiungi ai preferiti + Rimuovi dai preferiti + Aggiungi segnalibro + + + indietro + canale: %1$s + esci + Raggiungibile via Nostr + Messaggi privati non letti + Attiva/disattiva segnalibro + Teletrasportato + Stato Tor + Peer connessi + Partecipanti geohash + Pronto per l\'handshake + Handshake in corso + Crittografia end-to-end + Handshake fallito + + + 📎 File ricevuto + 📄 %1$s + 📏 Dimensione: %1$s + 🏷️ Tipo: %1$s + 📂 Apri / Salva + ❌ Chiudi + Scegli immagine + + + messaggistica mesh decentralizzata con crittografia end-to-end + Chat mesh offline + Comunica direttamente tramite Bluetooth LE senza internet o server. I messaggi vengono inoltrati attraverso i dispositivi vicini per estendere la portata. + Canali geohash online + Connettiti con persone nella tua area usando canali basati su geohash. Estendi la rete mesh usando relay internet pubblici. + Crittografia end-to-end + I messaggi privati sono crittografati. I messaggi dei canali sono pubblici. + aspetto + sistema + chiaro + scuro + proof of work + PoW off + PoW on + aggiungi proof of work ai messaggi geohash per scoraggiare lo spam. + difficoltà: %1$d bit (~%2$s) + difficoltà %1$d richiede ~%2$s tentativi di hash + nessun proof of work richiesto + molto bassa - protezione spam minima + bassa - protezione spam base + media - buona protezione spam + alta - forte protezione spam + molto alta - può causare ritardi + estrema - richiede calcoli significativi + rete + Tor off + Tor on + instrada internet su Tor per una maggiore privacy. + Stato Tor: %1$s, bootstrap %2$d%% + Ultimo: %1$s + Eliminazione dati di emergenza + Suggerimento: fai triplo clic sul titolo dell\'app per eliminare in emergenza tutti i dati memorizzati, inclusi messaggi, chiavi e impostazioni. + Impostazioni di debug + Open Source • Privacy First • Decentralizzato + Chiudi + annulla + + + Avviso + Servizi di localizzazione + Privacy + Errore + Ottimizzazione batteria + Vantaggi + Controllo ottimizzazione batteria + Ottimizzazione batteria non supportata + Bluetooth + Messaggio non letto + Apri mappa + Rimuovi segnalibro + Teletrasporta + Selezionato + Esci dal canale + Raggiungibile via Nostr + Preferito offline + Diminuisci precisione + Aumenta precisione + Seleziona geohash + Scorri in fondo + File + Immagine + Annulla + Link + Scegli media + Scegli file + Salva immagine corrente + Chiudi + Immagine %1$d di %2$d + Privacy protetta + Registra nota vocale + Chat mesh offline + Canali geohash online + Crittografia end-to-end + + + Immagine %1$d di %2$d + Immagine non disponibile + Immagine salvata in Download + Impossibile salvare l\'immagine + Immagine salvata in Download + Impossibile salvare l\'immagine + Scegli file + [file non disponibile] + sconosciuto + + + scegli un\'azione per questo messaggio o utente + scegli un\'azione per questo utente + copia messaggio + copia questo messaggio negli appunti + schiaffeggia %1$s + invia uno schiaffo giocoso + abbraccia %1$s + invia un abbraccio amichevole + blocca %1$s + blocca tutti i messaggi da questo utente + + + #canali di posizione + chatta con persone vicino a te usando i canali geohash. viene condiviso solo un geohash approssimativo, mai la posizione GPS esatta. non fare screenshot o condividere questa schermata per proteggere la tua privacy. + concedi permesso di localizzazione + permesso di localizzazione negato. abilita nelle impostazioni per usare i canali di posizione. + Apri impostazioni + \u2713 permesso di localizzazione concesso + controllo permessi… + ricerca canali vicini… + segnalibro + geohash + geohash non valido + teletrasporta + disattiva servizi di localizzazione + attiva servizi di localizzazione + mesh + blocco + quartiere + città + provincia + regione + #bluetooth • %1$s + + + strumenti di debug + utilità per sviluppatori per diagnostica e controllo + logging dettagliato + registra entrate/uscite peer, direzione connessione, instradamento pacchetti e relay + ruoli Bluetooth + server GATT + connessioni: %1$d / %2$d + max server + client GATT + max client + connessioni: %1$d / %2$d + max totali + relay pacchetti + dall\'avvio: %1$d + attiva/disattiva ruoli e chiudi tutte le connessioni quando disabilitato + impostazioni sincronizzazione + max pacchetti per sync: %1$d + dimensione max filtro GCS: %1$d byte (128–1024) + FPR obiettivo: %1$.2f%% + dispositivi connessi + ID del nostro dispositivo: %1$s + nessuno + disconnetti + risultati scansione recenti + connetti + console di debug + cancella + ultimi 10s: %1$d • 1m: %2$d • 15m: %3$d + P derivato: %1$s • max elementi stimati: %2$s + • diretto + %1$s • RSSI: %2$s + come server (noi ospitiamo) + come client (noi connettiamo) + + + Servizi di localizzazione richiesti + Privacy prima di tutto + bitchat NON traccia la tua posizione.\n\nI servizi di localizzazione sono necessari per la scansione Bluetooth e per la funzionalità di chat geohash. + bitchat ha bisogno dei servizi di localizzazione per: + • Scansione dispositivi Bluetooth\n• Scoprire utenti vicini nella rete mesh\n• Funzionalità chat geohash\n• Nessun tracciamento o raccolta di posizione + Apri impostazioni di localizzazione + Controlla di nuovo + Servizi di localizzazione non disponibili + I servizi di localizzazione non sono disponibili su questo dispositivo. Ciò è insolito poiché i servizi di localizzazione sono standard sui dispositivi Android.\n\nbitchat ha bisogno dei servizi di localizzazione per far funzionare correttamente la scansione Bluetooth (requisito Android). Senza questo, l\'app non può scoprire gli utenti vicini. + Controllo servizi di localizzazione… + Bluetooth richiesto + bitchat ha bisogno del Bluetooth per: + • Scoprire utenti vicini\n• Creare connessioni di rete mesh\n• Inviare e ricevere messaggi\n• Funzionare senza internet o server + Attiva Bluetooth + Bluetooth non supportato + Questo dispositivo non supporta Bluetooth Low Energy (BLE), che è necessario per il funzionamento di bitchat.\n\nbitchat ha bisogno di BLE per creare reti mesh e comunicare con dispositivi vicini senza internet. + Controllo stato Bluetooth… + ottimizzazione batteria rilevata + Ottimizzazione batteria abilitata + bitchat deve essere eseguito in background per mantenere le connessioni mesh. l\'ottimizzazione della batteria può interrompere queste connessioni. + Vantaggi della disattivazione + • consegna messaggi affidabile\n• mantiene la connettività mesh\n• previene le interruzioni della connessione + Disattiva ottimizzazione batteria + ottimizzazione batteria disattivata + Continua + Inizializzazione rete mesh + Configurazione rete mesh Bluetooth… + Dovrebbe richiedere solo pochi secondi + Configurazione non completata + Riprova + La tua privacy è protetta + • nessun tracciamento o raccolta dati\n• le chat mesh Bluetooth sono completamente offline\n• le chat geohash usano internet + permessi + Concedi permessi + bitchat NON traccia la tua posizione + PERSONE + nessuno nei dintorni… + (tu) + scorri e ingrandisci per selezionare un geohash + seleziona + scrivi un messaggio… + menzione + (~%1$s) + v%1$s + image/* + Immagine + File + + + 📷 ha inviato un\'immagine + 🎤 ha inviato un messaggio vocale + 📎 ha inviato un file + + + Riproduci + Pausa + Mining PoW + PoW abilitato + Proof of Work + mining… + pow: %1$dbit + + + Necessario per scoprire utenti bitchat tramite Bluetooth + Consenti a bitchat di connettersi a dispositivi vicini + Richiesto da Android per scoprire utenti bitchat vicini tramite Bluetooth + bitchat ha bisogno di questo per cercare dispositivi vicini + Ricevi notifiche quando ricevi messaggi privati + Consenti a bitchat di inviarti notifiche + Disattiva l\'ottimizzazione della batteria per garantire che bitchat funzioni in modo affidabile in background e mantenga le connessioni di rete mesh + Consenti a bitchat di funzionare senza restrizioni della batteria + + + Dispositivi vicini + Posizione precisa + Microfono + Notifiche + Ottimizzazione batteria + Altro + + + Inserisci password del canale + Il canale %1$s è protetto da password. Inserisci la password per entrare. + Password + Entra + Annulla + + + @ + bitchat/ + · ⧉ + @%1$s + %1$d / %2$d + @%1$s + # + _ + [%1$s] %2$d%% + + + . + ⚠️ + + + + + + ✓✓ + + + + + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + ? + + + + e %d altro + e altri %d + + + + 1 persona + %d persone + + + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml new file mode 100644 index 00000000..bfb56623 --- /dev/null +++ b/app/src/main/res/values-ja/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + Bluetooth の許可は、インターネットなしで他の人と直接チャットするために必要です。 + 位置情報の許可は、Bluetooth で近くのデバイスを見つけるために必要です。 + 通知の許可は、新しいメッセージをお知らせするために必要です。 + + + ニックネーム + メッセージを入力… + パスワード + チャンネルに参加 + 退出 + 送信 + コマンドを表示 + 戻る + + チャンネル + オンラインユーザー + 接続中のユーザーはいません + 3 回タップで全データを消去 + あなたのネットワーク + + + バッテリー最適化を検出 + バッテリー最適化は無効です + バッテリー最適化は不要です + バッテリー最適化を確認中 + なぜバッテリー最適化を無効にするのか + bitchat はバックグラウンドで動作して、近くのデバイスとのメッシュ接続を維持します。バッテリー最適化はこれらの接続を中断し、メッセージの遅延や欠落を引き起こす可能性があります。\n\nバッテリー最適化を無効にすると、信頼できるピアツーピア通信が可能になります。 + バッテリー最適化を無効にする + 注: 後で Android の設定 > アプリ > bitchat > バッテリー で変更できます。 + この端末ではバッテリー最適化の設定は不要です。bitchat は通常通り動作します。 + この端末ではバッテリー最適化の設定は不要です。bitchat は通常通り動作します。 + bitchat はバックグラウンドで信頼して動作できます + • メッセージの確実な配信\n• メッシュ接続の維持\n• バックグラウンド転送\n• 切断の防止 + 再確認 + 今はスキップ + 続行 + 再試行 + スキップ + + + ほか %1$d 件 + %2$d 人からの %1$d 件のメッセージ + ほか %1$d 会話 + 👥 近くに bitchatter ! + 近くに 1 人 + 近くに %1$d 人 + 新着メッセージ + 新しい位置情報メッセージ + %1$s でのメンション + %1$s でのメンション (+%2$d) + %2$s で %1$d 件のメンション + %1$s の新しいアクティビティ + %1$s のメッセージ + %1$s が会話に参加しました + bitchat – %1$d 件のメンション + bitchat – ロケーションチャット + %2$d 箇所からの %1$d 件のメッセージ + メッシュチャットでメンション + メッシュチャットで %1$d 件のメンション + ほか %1$d 箇所 + ほか %1$d + + + お気に入りに追加 + お気に入りから削除 + ブックマークに追加 + + + 戻る + チャンネル: %1$s + 退出 + Nostr 経由で到達可能 + 未読のプライベートメッセージ + ブックマークを切り替え + テレポート済み + Tor ステータス + 接続中のピア + Geohash 参加者 + ハンドシェイク準備完了 + ハンドシェイク中 + エンドツーエンド暗号化 + ハンドシェイク失敗 + + + 📎 ファイルを受信 + 📄 %1$s + 📏 サイズ: %1$s + 🏷️ 種類: %1$s + 📂 開く / 保存 + ❌ 閉じる + 画像を選択 + + + 分散型メッシュチャット・エンドツーエンド暗号化 + オフライン・メッシュチャット + インターネットやサーバーなしで、Bluetooth LE 経由で直接通信します。近隣のデバイスを経由してメッセージを中継し、到達範囲を広げます。 + オンライン Geohash チャンネル + Geohash ベースのチャンネルで近くの人々とつながります。公開インターネットのリレーを介してメッシュを拡張します。 + エンドツーエンド暗号化 + プライベートメッセージは暗号化されます。チャンネルメッセージは公開です。 + 表示 + システム + ライト + ダーク + Proof of Work + PoW オフ + PoW オン + スパム対策として Geohash メッセージに Proof of Work を追加します。 + 難易度: %1$d ビット (~%2$s) + 難易度 %1$d は約 %2$s 回のハッシュ試行が必要 + Proof of Work は不要 + 非常に低い – 最小限のスパム対策 + 低い – 基本的なスパム対策 + 中 – 良好なスパム対策 + 高い – 強力なスパム対策 + 非常に高い – 遅延が発生する可能性 + 極めて高い – 相当な計算資源が必要 + ネットワーク + Tor オフ + Tor オン + プライバシー向上のため、インターネット通信を Tor 経由にします。 + Tor ステータス: %1$s、ブートストラップ %2$d%% + 最終: %1$s + 緊急データ消去 + ヒント: アプリタイトルを 3 回タップすると、メッセージ・鍵・設定を含む保存データをすべて消去します。 + デバッグ設定 + オープンソース • プライバシーファースト • 分散型 + 閉じる + キャンセル + + + 警告 + 位置情報サービス + プライバシー + エラー + バッテリー最適化 + 利点 + バッテリー最適化を確認中 + バッテリー最適化は非対応 + Bluetooth + 未読メッセージ + 地図を開く + ブックマークを削除 + テレポート + 選択済み + チャンネルから退出 + Nostr 経由で到達可能 + お気に入り (オフライン) + 精度を下げる + 精度を上げる + Geohash を選択 + 一番下へスクロール + ファイル + 画像 + キャンセル + リンク + メディアを選択 + ファイルを選択 + 現在の画像を保存 + 閉じる + 画像 %1$d / %2$d + プライバシー保護 + ボイスメモを録音 + オフライン・メッシュチャット + オンライン Geohash チャンネル + エンドツーエンド暗号化 + + + 画像 %1$d / %2$d + 画像は利用できません + 画像を「ダウンロード」に保存しました + 画像を保存できませんでした + 画像を「ダウンロード」に保存しました + 画像を保存できませんでした + ファイルを選択 + [ファイルは利用できません] + 不明 + + + このメッセージまたはユーザーの操作を選択 + このユーザーの操作を選択 + メッセージをコピー + このメッセージをクリップボードにコピー + %1$s を平手打ち + 冗談の平手打ちを送る + %1$s をハグ + フレンドリーなハグを送る + %1$s をブロック + このユーザーからのすべてのメッセージをブロック + + + #ロケーション・チャンネル + Geohash チャンネルで近くの人とチャットしましょう。共有されるのは大まかな geohash のみで、正確な GPS データは共有されません。プライバシー保護のため、この画面のスクリーンショットや共有は行わないでください。 + 位置情報の許可を与える + 位置情報の許可が拒否されました。ロケーション・チャンネルを使用するには設定で有効にしてください。 + 設定を開く + \u2713 位置情報の許可が付与されました + 権限を確認中… + 近くのチャンネルを検索中… + ブックマーク + Geohash + 無効な geohash + テレポート + 位置情報サービスを無効にする + 位置情報サービスを有効にする + mesh + ブロック + 近隣 + + 州 / 県 + 地域 + #bluetooth • %1$s + + + デバッグツール + 診断と制御のための開発者ツール + 詳細ログ + ピアの参加/離脱、接続方向、パケット転送、リレーを記録 + Bluetooth ロール + GATT サーバー + 接続: %1$d / %2$d + 最大サーバー + GATT クライアント + 最大クライアント + 接続: %1$d / %2$d + 合計最大 + パケットリレー + 開始以降: %1$d + ロールのオン/オフを切り替え、オフ時にすべての接続を閉じる + 同期設定 + 同期あたりの最大パケット: %1$d + GCS フィルター最大サイズ: %1$d バイト (128–1024) + 目標 FPR: %1$.2f%% + 接続済みデバイス + 自分のデバイス ID: %1$s + なし + 切断 + 最近スキャンしたデバイス + 接続 + デバッグコンソール + クリア + 直近 10 秒: %1$d • 1 分: %2$d • 15 分: %3$d + 導出 P: %1$s • 推定最大アイテム: %2$s + • 直接 + %1$s • RSSI: %2$s + サーバーとして (自分がホスト) + クライアントとして (自分が接続) + + + 位置情報サービスが必要です + プライバシー第一 + bitchat はあなたの位置情報を追跡しません。\n\n位置情報サービスは、Bluetooth スキャンと geohash チャット機能に必要です。 + bitchat が位置情報サービスを必要とする理由: + • Bluetooth デバイスのスキャン\n• メッシュネットワークで近くのユーザーを発見\n• geohash チャット機能\n• 位置情報の追跡や収集は行いません + 位置情報の設定を開く + 再確認 + 位置情報サービスが利用できません + この端末では位置情報サービスが利用できません。Android 端末では通常標準機能のため、これは珍しい状況です。\n\nBluetooth スキャン (Android の要件) を正しく動作させるために位置情報サービスが必要です。これがないと、近くのユーザーを検出できません。 + 位置情報サービスを確認中… + Bluetooth が必要です + bitchat が Bluetooth を必要とする理由: + • 近くのユーザーを発見\n• メッシュネットワーク接続を作成\n• メッセージの送受信\n• インターネットやサーバーなしで動作 + Bluetooth を有効にする + Bluetooth はサポートされていません + この端末は Bluetooth Low Energy (BLE) をサポートしていません。bitchat の動作に必要です。\n\nBLE は、インターネットなしで近くのデバイスとメッシュネットワークを作るために必要です。 + Bluetooth ステータスを確認中… + バッテリー最適化を検出 + バッテリー最適化が有効 + メッシュ接続を維持するため、bitchat はバックグラウンドで動作する必要があります。バッテリー最適化は接続を中断する可能性があります。 + 無効化の利点 + • 信頼できるメッセージ配信\n• メッシュ接続の維持\n• 切断の防止 + バッテリー最適化を無効化 + バッテリー最適化は無効 + 続行 + メッシュネットワークを初期化中 + Bluetooth メッシュネットワークを設定中… + 数秒で完了するはずです + 設定が完了していません + 再試行 + あなたのプライバシーは保護されています + • 追跡やデータ収集はありません\n• Bluetooth メッシュチャットは完全にオフライン\n• geohash チャットはインターネットを使用 + 権限 + 権限を付与 + bitchat はあなたの位置情報を追跡しません + 人々 + 誰もいません… + (あなた) + パン/ズームして geohash を選択 + 選択 + メッセージを入力… + メンション + (~%1$s) + v%1$s + image/* + 画像 + ファイル + + + 📷 画像を送信しました + 🎤 ボイスメモを送信しました + 📎 ファイルを送信しました + + + 再生 + 一時停止 + PoW をマイニング中 + PoW 有効 + Proof of Work + マイニング中… + pow: %1$dbit + + + Bluetooth で bitchat ユーザーを検出するために必要です + bitchat が近くのデバイスに接続することを許可 + Android の要件: Bluetooth 経由で近くの bitchat ユーザーを検出 + bitchat が近くのデバイスをスキャンするために必要です + プライベートメッセージを受信したときに通知を受け取る + bitchat から通知を送信することを許可 + bitchat がバックグラウンドで安定して動作し、メッシュ接続を維持できるように、バッテリー最適化を無効にします + bitchat がバッテリー制限なしで動作することを許可 + + + 近くのデバイス + 正確な位置情報 + マイク + 通知 + バッテリー最適化 + その他 + + + チャンネルのパスワードを入力 + チャンネル %1$s はパスワードで保護されています。参加するにはパスワードを入力してください。 + パスワード + 参加 + キャンセル + + + + ほか %d + ほか %d + + + + 1 人 + %d 人 + + + diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml new file mode 100644 index 00000000..742fedd3 --- /dev/null +++ b/app/src/main/res/values-ka/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + Bluetooth-ის ნებართვა საჭიროა, რომ ინტერნეტის გარეშე პირდაპირ ისაუბროთ სხვებთან. + მდებარეობის ნებართვა საჭიროა ახლომდებარე მოწყობილობების Bluetooth-ით საპოვნელად. + შეტყობინებების ნებართვა საჭიროა ახალი შეტყობინებების შეგახსენებლად. + + + მეტსახელი + შეიყვანეთ შეტყობინება… + პაროლი + არხში შეუერთება + გამოსვლა + გაგზავნა + ბრძანებების ჩვენება + უკან + ხალხი + არხები + ონლაინ მომხმარებლები + არავინ არის დაკავშირებული + სამჯერ დააჭირეთ ყველა მონაცემის წასაშლელად + თქვენი ქსელი + + + ბატარეის ოპტიმიზაცია აღმოჩნდა + ბატარეის ოპტიმიზაცია გამორთულია + ბატარეის ოპტიმიზაცია არ არის საჭირო + ბატარეის ოპტიმიზაციის შემოწმება + რატომ უნდა გამოირთოს ბატარეის ოპტიმიზაცია? + bitchat მუშაობს ფონში, რათა ახლომდებარე მოწყობილობებთან mesh-კავშირები შეინარჩუნოს. ბატარეის ოპტიმიზაციამ შეიძლება დააწყვეტინოს ეს კავშირები, რის გამოც შეტყობინებები დაგვიანდეს ან დაიკარგოს.\n\nბატარეის ოპტიმიზაციის გამორთვა უზრუნველყოფს სანდო peer-to-peer კომუნიკაციას. + ბატარეის ოპტიმიზაციის გამორთვა + შენიშვნა: შეგიძლიათ შეცვალოთ მოგვიანებით Android-ის პარამეტრებში > აპები > bitchat > ბატარეა. + თქვენს მოწყობილობას ბატარეის ოპტიმიზაცია არ სჭირდება. bitchat ჩვეულებრივ იმუშავებს. + თქვენს მოწყობილობას ბატარეის ოპტიმიზაცია არ სჭირდება. bitchat ჩვეულებრივ იმუშავებს. + bitchat შეძლებს სანდოდ იმუშაოს ფონში + • შეტყობინებების სანდო მიწოდება\n• mesh-კავშირის შენარჩუნება\n• ფონური გადაგზავნა\n• გათიშვების თავიდან აცილება + თავიდან შემოწმება + ახლა გამოტოვება + გაგრძელება + კვლავ ცდა + გამოტოვება + + + და კიდევ %1$d + %2$d ადამიანიდან %1$d შეტყობინება + და კიდევ %1$d საუბარი + 👥 bitchatter-ები ახლოს! + 1 ადამიანი ახლოს + ახლოს %1$d ადამიანი + ახალი შეტყობინებები + მდებარეობის ახალი შეტყობინებები + ხსენება %1$s-ში + ხსენება %1$s-ში (+%2$d) + %2$s-ში %1$d ხსენება + ახალი აქტივობა %1$s-ში + შეტყობინებები %1$s-ში + %1$s შეუერთდა საუბარს + bitchat – %1$d ხსენება + bitchat – მდებარეობის ჩათები + %2$d ადგილიდან %1$d შეტყობინება + mesh-ჩათში ხსენება + mesh-ჩათში %1$d ხსენება + და კიდევ %1$d ადგილი + და კიდევ %1$d + + + რჩეულებში დამატება + რჩეულებიდან წაშლა + სანიშნეს დამატება + + + უკან + არხი: %1$s + გასვლა + მისაწვდომია Nostr-ით + წაუკითხავი პირადი შეტყობინებები + სანიშნეს გადართვა + ტელეპორტირებული + Tor-ის სტატუსი + დაკავშირებული პირები + geohash მონაწილეები + მზადაა ხელის ჩამოსართმევად + მიმდინარეობს ხელის ჩამორთმევა + ბოლო-მდე დაშიფვრა + ხელის ჩამორთმევა წარუმატებლად დასრულდა + + + 📎 ფაილი მიღებულია + 📄 %1$s + 📏 ზომა: %1$s + 🏷️ ტიპი: %1$s + 📂 გახსნა / შენახვა + ❌ დახურვა + სურათის არჩევა + + + დეცენტრალიზებული mesh-ჩათი ბოლო-მდე დაშიფვრით + ოფლაინ mesh-ჩათი + ესაუბრეთ პირდაპირ Bluetooth LE-ის საშუალებით ინტერნეტის ან სერვერების გარეშე. შეტყობინებები გადაიგზავნება ახლომდებარე მოწყობილობებზე, რათა გაიზარდოს დაფარვა. + ონლაინ geohash არხები + დაუკავშირდით ახლომდებარე ხალხს geohash-ზე დაფუძნებული არხებით. გააფართოვეთ mesh საჯარო ინტერნეტ რილეებით. + ბოლო-მდე დაშიფვრა + პირადი შეტყობინებები დაშიფრულია. არხის შეტყობინებები საჯაროა. + გარეგნობა + სისტემა + ღია + მუქი + Proof of Work + PoW გამორთულია + PoW ჩართულია + დაამატეთ Proof of Work geohash შეტყობინებებს სპამის შესამცირებლად. + სირთულე: %1$d ბიტი (~%2$s) + სირთულე %1$d მოითხოვს ~%2$s ჰეშის მცდელობას + Proof of Work საჭირო არ არის + ძალიან დაბალი – მინიმალური სპამის დაცვა + დაბალი – საბაზისო დაცვა + საშუალო – კარგი დაცვა + მაღალი – ძლიერი დაცვა + ძალიან მაღალი – შეიძლება გამოიწვიოს დაყოვნება + ექსტრემალური – საჭიროებს დიდ გამოთვლით რესურსს + ქსელი + Tor გამორთულია + Tor ჩართულია + ინტერნეტ ტრაფიკის Tor-ით მარშრუტიზაცია პერსონალურობისთვის. + Tor სტატუსი: %1$s, ჩატვირთვა %2$d%% + ბოლო: %1$s + სასწრაფო მონაცემების წაშლა + რჩევა: დააჭირეთ აპის სათაურს სამჯერ ყველა შენახული მონაცემის – შეტყობინებების, გასაღებებისა და პარამეტრების – წასაშლელად. + დebug პარამეტრები + ღია კოდი • კონფიდენციალობა პირველია • დეცენტრალიზებული + დახურვა + გაუქმება + + + გაფრთხილება + მდებარეობის სერვისები + კონფიდენციალობა + შეცდომა + ბატარეის ოპტიმიზაცია + სარგებელი + ბატარეის ოპტიმიზაციის შემოწმება + ბატარეის ოპტიმიზაცია მხარდაჭერილი არ არის + Bluetooth + წაუკითხავი შეტყობინება + რუკის გახსნა + სანიშნეს წაშლა + ტელეპორტი + მონიშნული + არხიდან გამოსვლა + მისაწვდომია Nostr-ით + რჩეული (ოფლაინ) + სიზუსტის შემცირება + სიზუსტის გაზრდა + აირჩიეთ geohash + ქვემოთ გადახვევა + ფაილი + სურათი + გაუქმება + ბმული + მედიის არჩევა + ფაილის არჩევა + მიმდინარე სურათის შენახვა + დახურვა + სურათი %1$d %2$d-დან + კონფიდენციალობა დაცულია + ხმოვანი ჩანაწერის ჩაწერა + ოფლაინ mesh-ჩათი + ონლაინ geohash არხები + ბოლო-მდე დაშიფვრა + + + სურათი %1$d %2$d-დან + სურათი მიუწვდომელია + სურათი შენახულია "ჩამოტვირთვებში" + სურათის შენახვა ვერ მოხერხდა + სურათი შენახულია "ჩამოტვირთვებში" + სურათის შენახვა ვერ მოხერხდა + ფაილის არჩევა + [ფაილი მიუწვდომელია] + უცნობი + + + აირჩიეთ ქმედება ამ შეტყობინებისთვის ან მომხმარებლისთვის + აირჩიეთ ქმედება ამ მომხმარებლისთვის + შეტყობინების კოპირება + ამ შეტყობინების კოპირება ბუფერში + %1$s-ის ლ®აპით დარტყმა + გაგზავნეთ ხუმრობით ლ®აპი + %1$s-ის ჩახუტება + გაგზავნეთ მეგობრული ჩახუტება + %1$s-ის დაბლოკვა + ამ მომხმარებლის ყველა შეტყობინების დაბლოკვა + + + #მდებარეობის არხები + ესაუბრეთ თქვენს ახლოს მყოფ ადამიანებს geohash არხებით. იზიარება მხოლოდApprox geohash, არასოდეს ზუსტი GPS მონაცემები. თქვენი კონფიდენციალურობის დასაცავად ნუ გადაიღებთ სკრინშოტებს და ნუ გააზიარებთ ამ ეკრანს. + მდებარეობის ნებართვის მინიჭება + მდებარეობის ნებართვა უარყოფილია. ჩართეთ პარამეტრებში მდებარეობის არხების გამოსაყენებლად. + პარამეტრების გახსნა + \u2713 მდებარეობის ნებართვა მინიჭებულია + ნებართვების შემოწმება… + ახლომდებარე არხების ძიება… + სანიშნეები + Geohash + არასწორი geohash + ტელეპორტი + მდებარეობის სერვისების გამორთვა + მდებარეობის სერვისების ჩართვა + mesh + კვარტალი + ახლომდებარე რაიონი + ქალაქი + პროვინცია + რეგიონი + #bluetooth • %1$s + + + დაბაგირების ხელსაწყოები + დეველოპერის ხელსაწყოები დიაგნოზისთვის და კონტროლისთვის + გაფართოებული ლოგირება + იწერება პირების ჩართვა/გამორთვა, კავშირის მიმართულება, პაკეტების გადაცემა და რილეები + Bluetooth როლები + GATT სერვერი + კავშირები: %1$d / %2$d + მაქს. სერვერი + GATT კლიენტი + მაქს. კლიენტი + კავშირები: %1$d / %2$d + მაქს. სულ + პაკეტების რელე + გაშვებიდან: %1$d + როლების გადართვა და გამორთვისას ყველა კავშირის დახურვა + სინქრონიზაციის პარამეტრები + მაქს. პაკეტი სინქრონიზაციაზე: %1$d + მაქს. GCS ფილტრის ზომა: %1$d ბაიტი (128–1024) + სამიზნე FPR: %1$.2f%% + დაკავშირებული მოწყობილობები + ჩვენი მოწყობილობის ID: %1$s + არცერთი + გათიშვა + ბოლო სკანირებული მოწყობილობები + დაკავშირება + დაბაგ კონსოლი + გასუფთავება + ბოლო 10 წმ: %1$d • 1 წთ: %2$d • 15 წთ: %3$d + განმუხტული P: %1$s • სავარაუდო მაქს. ელემენტები: %2$s + • პირდაპირ + %1$s • RSSI: %2$s + სერვერის როლში (ჩვენ ვმასპინძლობთ) + კლიენტის როლში (ჩვენ ვუკავშირდებით) + + + მდებარეობის სერვისებია საჭირო + კონფიდენციალობა პირველია + bitchat არ აკონტროლებს თქვენს მდებარეობას.\n\nმდებარეობის სერვისები საჭიროა Bluetooth სკანირებისა და geohash ჩათის ფუნქციისთვის. + bitchat-ს სჭირდება მდებარეობის სერვისები შემდეგისთვის: + • Bluetooth მოწყობილობების სკანირება\n• mesh ქსელში ახლომდებარე მომხმარებლების აღმოჩენა\n• geohash ჩათის ფუნქცია\n• არც ტრეკინგი, არც მდებარეობის შეგროვება + მდებარეობის პარამეტრების გახსნა + თავიდან შემოწმება + მდებარეობის სერვისები მიუწვდომელია + ამ მოწყობილობაზე მდებარეობის სერვისები მიუწვდომელია. ეს უჩვეულოა, რადგან Android მოწყობილობებზე ისინი სტანდარტულია.\n\nBluetooth სკანირებისთვის (Android-ის მოთხოვნა) საჭიროა მდებარეობის სერვისები. ამის გარეშე აპს არ შეუძლია ახლომდებარე მომხმარებლების აღმოჩენა. + მდებარეობის სერვისების შემოწმება… + Bluetooth საჭიროა + bitchat-ს სჭირდება Bluetooth შემდეგისთვის: + • ახლომდებარე მომხმარებლების აღმოჩენა\n• mesh ქსელის კავშირების შექმნა\n• შეტყობინებების გაგზავნა/მიღება\n• მუშაობა ინტერნეტის ან სერვერების გარეშე + Bluetooth-ის ჩართვა + Bluetooth არ მხარდაჭერილია + ამ მოწყობილობას არ უჭერს მხარს Bluetooth Low Energy (BLE), რომელიც საჭიროა bitchat-ისთვის.\n\nBLE საჭიროა mesh ქსელების შესაქმნელად და ახლომდებარე მოწყობილობებთან ინტერნეტის გარეშე კომუნიკაციისთვის. + Bluetooth სტატუსის შემოწმება… + ბატარეის ოპტიმიზაცია აღმოჩნდა + ბატარეის ოპტიმიზაცია ჩართულია + mesh კავშირების შესანარჩუნებლად bitchat უნდა იმუშავოს ფონში. ბატარეის ოპტიმიზაციამ შეიძლება დაარღვიოს ეს კავშირები. + გამორთვის სარგებელი + • სანდო მიწოდება\n• mesh კავშირის შენარჩუნება\n• გათიშვების თავიდან აცილება + ბატარეის ოპტიმიზაციის გამორთვა + ბატარეის ოპტიმიზაცია გამორთულია + გაგრძელება + mesh ქსელის ინიციალიზაცია + Bluetooth mesh ქსელის მოწყობა… + ეს რამდენიმე წამს უნდა გაგრძელდეს + მოწყობა დაუსრულებელია + კვლავ ცდა + თქვენი კონფიდენციალობა დაცულია + • ტრეკინგი ან მონაცემთა შეგროვება არა\n• Bluetooth mesh-ჩათები სრულად ოფლაინ\n• geohash ჩათი იყენებს ინტერნეტს + ნებართვები + ნებართვების მინიჭება + bitchat არ აკონტროლებს თქვენს მდებარეობას + ხალხი + არავინ არის ახლოს… + (თქვენ) + პანორამირება/ზუმი geohash-ის ასარჩევად + არჩევა + შეიყვანეთ შეტყობინება… + ხსენება + (~%1$s) + v%1$s + image/* + სურათი + ფაილი + + + 📷 გაგზავნა სურათი + 🎤 გაგზავნა ხმოვანი შენიშვნა + 📎 გაგზავნა ფაილი + + + დაკვრა + პაუზა + PoW მაინინგი + PoW ჩართულია + Proof of Work + მაინინგი… + pow: %1$dbit + + + საჭიროა bitchat მომხმარებლების Bluetooth-ით აღმოსაჩენად + დაუშვით bitchat-ს დაუკავშირდეს ახლომდებარე მოწყობილობებს + Android მოითხოვს ახლომდებარე bitchat მომხმარებლების Bluetooth-ით აღმოსაჩენად + ეს საჭიროა ახლომდებარე მოწყობილობების დასასკანად + საინფორმაციო შეტყობინებების მიღება პირადი მესიჯებისას + დაუშვით bitchat-ს გამოგიგზავნოთ შეტყობინებები + გამორთეთ ბატარეის ოპტიმიზაცია, რომ bitchat სანდოდ იმუშაოს ფონში და შეინარჩუნოს mesh-კავშირები + დაუშვით bitchat-ს იმუშაოს ბატარეის შეზღუდვების გარეშე + + + ახლომდებარე მოწყობილობები + ზუსტი მდებარეობა + მიკროფონი + შეტყობინებები + ბატარეის ოპტიმიზაცია + სხვა + + + შეიყვანეთ არხის პაროლი + არხი %1$s დაცულია პაროლით. შეიყვანეთ პაროლი შესაერთებლად. + პაროლი + შეუერთდი + გაუქმება + + + + და კიდევ %d + და კიდევ %d + + + + 1 ადამიანი + %d ადამიანი + + + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml new file mode 100644 index 00000000..3a0a1b6f --- /dev/null +++ b/app/src/main/res/values-ko/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + 인터넷 없이 다른 사람과 직접 채팅하려면 블루투스 권한이 필요합니다. + 블루투스로 주변 기기를 찾으려면 위치 권한이 필요합니다. + 새 메시지를 알려면 알림 권한이 필요합니다. + + + 닉네임 + 메시지 입력… + 비밀번호 + 채널 참가 + 나가기 + 보내기 + 명령 보기 + 뒤로 + 사람들 + 채널 + 온라인 사용자 + 연결된 사람이 없음 + 모든 데이터를 지우려면 세 번 탭하세요 + 네트워크 + + + 배터리 최적화 감지됨 + 배터리 최적화 비활성화됨 + 배터리 최적화 필요 없음 + 배터리 최적화 확인 중 + 왜 배터리 최적화를 끄나요? + bitchat은 근처 기기와의 메쉬 연결을 유지하기 위해 백그라운드에서 동작합니다. 배터리 최적화는 이러한 연결을 중단시켜 메시지가 지연되거나 손실될 수 있습니다.\n\n배터리 최적화를 끄면 신뢰할 수 있는 P2P 통신이 보장됩니다. + 배터리 최적화 끄기 + 참고: 이후 Android 설정 > 앱 > bitchat > 배터리에서 변경할 수 있습니다. + 이 기기는 배터리 최적화 설정이 필요하지 않습니다. bitchat은 정상적으로 동작합니다. + 이 기기는 배터리 최적화 설정이 필요하지 않습니다. bitchat은 정상적으로 동작합니다. + bitchat이 백그라운드에서 안정적으로 실행됩니다 + • 신뢰할 수 있는 메시지 전달\n• 메쉬 연결 유지\n• 백그라운드 메시지 릴레이\n• 연결 끊김 방지 + 다시 확인 + 지금 건너뛰기 + 계속 + 다시 시도 + 건너뛰기 + + + 그리고 %1$d개 더 + %2$d명에게서 %1$d개의 메시지 + 그리고 %1$d개의 대화 더 + 👥 근처 bitchatter! + 근처 1명 + 근처 %1$d명 + 새 메시지 + 새 위치 메시지 + %1$s에서 언급됨 + %1$s에서 언급됨 (+%2$d) + %2$s에서 %1$d회 언급 + %1$s의 새 활동 + %1$s의 메시지 + %1$s님이 대화에 참여했습니다 + bitchat – %1$d회 언급 + bitchat – 위치 채팅 + %2$d개의 장소에서 온 %1$d개의 메시지 + 메쉬 채팅에서 언급됨 + 메쉬 채팅에서 %1$d회 언급 + 그리고 %1$d개의 장소 더 + 그리고 %1$d개 더 + + + 즐겨찾기에 추가 + 즐겨찾기에서 제거 + 북마크 추가 + + + 뒤로 + 채널: %1$s + 나가기 + Nostr로 연결 가능 + 읽지 않은 개인 메시지 + 북마크 전환 + 텔레포트됨 + Tor 상태 + 연결된 피어 + geohash 참여자 + 핸드셰이크 준비됨 + 핸드셰이크 진행 중 + 종단간 암호화 + 핸드셰이크 실패 + + + 📎 파일 수신 + 📄 %1$s + 📏 크기: %1$s + 🏷️ 유형: %1$s + 📂 열기 / 저장 + ❌ 닫기 + 이미지 선택 + + + 종단간 암호화를 갖춘 탈중앙 메쉬 채팅 + 오프라인 메쉬 채팅 + 인터넷이나 서버 없이 Bluetooth LE로 직접 소통합니다. 범위를 확장하기 위해 근처 기기를 통해 메시지가 중계됩니다. + 온라인 geohash 채널 + geohash 기반 채널을 통해 주변 사람들과 연결하세요. 공용 인터넷 릴레이로 메쉬를 확장합니다. + 종단간 암호화 + 개인 메시지는 암호화됩니다. 채널 메시지는 공개입니다. + 모양 + 시스템 + 라이트 + 다크 + 작업증명 + PoW 끔 + PoW 켬 + 스팸을 어렵게 만들기 위해 geohash 메시지에 작업증명을 추가하세요. + 난이도: %1$d 비트 (~%2$s) + 난이도 %1$d는 ~%2$s 해시 시도가 필요합니다 + 작업증명 필요 없음 + 매우 낮음 – 최소 스팸 보호 + 낮음 – 기본 스팸 보호 + 중간 – 좋은 스팸 보호 + 높음 – 강한 스팸 보호 + 매우 높음 – 지연이 발생할 수 있음 + 매우 극단 – 상당한 연산 능력 필요 + 네트워크 + Tor 끔 + Tor 켬 + 개인정보 보호를 위해 인터넷 트래픽을 Tor를 통해 라우팅합니다. + Tor 상태: %1$s, 부트스트랩 %2$d%% + 마지막: %1$s + 긴급 데이터 삭제 + 팁: 저장된 모든 데이터(메시지, 키, 설정 포함)를 삭제하려면 앱 제목을 세 번 탭하세요. + 디버그 설정 + 오픈 소스 • 프라이버시 우선 • 탈중앙 + 닫기 + 취소 + + + 경고 + 위치 서비스 + 개인정보 + 오류 + 배터리 최적화 + 이점 + 배터리 최적화 확인 중 + 배터리 최적화 미지원 + 블루투스 + 읽지 않은 메시지 + 지도 열기 + 북마크 제거 + 텔레포트 + 선택됨 + 채널 나가기 + Nostr로 연결 가능 + 즐겨찾기 (오프라인) + 정밀도 낮추기 + 정밀도 높이기 + geohash 선택 + 아래로 스크롤 + 파일 + 이미지 + 취소 + 링크 + 미디어 선택 + 파일 선택 + 현재 이미지 저장 + 닫기 + 이미지 %1$d / %2$d + 개인정보 보호됨 + 음성 메시지 녹음 + 오프라인 메쉬 채팅 + 온라인 geohash 채널 + 종단간 암호화 + + + 이미지 %1$d / %2$d + 이미지를 사용할 수 없음 + 이미지가 \"Downloads\"에 저장됨 + 이미지를 저장하지 못했습니다 + 이미지가 \"Downloads\"에 저장됨 + 이미지를 저장하지 못했습니다 + 파일 선택 + [파일을 사용할 수 없음] + 알 수 없음 + + + 이 메시지 또는 사용자에 대한 동작 선택 + 이 사용자에 대한 동작 선택 + 메시지 복사 + 이 메시지를 클립보드에 복사 + %1$s를 때리기 + 장난스러운 따귀 보내기 + %1$s를 안기 + 친근한 포옹 보내기 + %1$s 차단 + 이 사용자의 모든 메시지 차단 + + + #위치 채널 + geohash 채널을 통해 주변 사람들과 채팅하세요. 정확한 GPS 데이터가 아닌 대략적인 geohash만 공유됩니다. 개인 정보 보호를 위해 이 화면을 스크린샷하거나 공유하지 마세요. + 위치 권한 허용 + 위치 권한이 거부되었습니다. 위치 채널을 사용하려면 설정에서 활성화하세요. + 설정 열기 + \u2713 위치 권한 허용됨 + 권한 확인 중 … + 주변 채널 찾는 중 … + 북마크됨 + Geohash + 유효하지 않은 geohash + 텔레포트 + 위치 서비스 비활성화 + 위치 서비스 활성화 + mesh + 블록 + 이웃 + 도시 + 주/도 + 지역 + #bluetooth • %1$s + + + 디버그 도구 + 진단 및 제어를 위한 개발자 도구 + 상세 로깅 + 피어 참여/이탈, 연결 방향, 패킷 전달 및 릴레이를 기록합니다 + 블루투스 역할 + GATT 서버 + 연결: %1$d / %2$d + 최대 서버 + GATT 클라이언트 + 최대 클라이언트 + 연결: %1$d / %2$d + 총 최대 + 패킷 릴레이 + 시작 이후: %1$d + 역할을 켜고/끄고 비활성화 시 모든 연결 닫기 + 동기화 설정 + 동기화당 최대 패킷: %1$d + 최대 GCS 필터 크기: %1$d Byte (128–1024) + 목표 FPR: %1$.2f%% + 연결된 장치 + 우리 장치 ID: %1$s + 없음 + 연결 해제 + 최근 스캔된 장치 + 연결 + 디버그 콘솔 + 지우기 + 마지막 10초: %1$d • 1분: %2$d • 15분: %3$d + 유도 P: %1$s • 예상 최대 요소: %2$s + • 직접 + %1$s • RSSI: %2$s + 서버로서 (우리가 호스트) + 클라이언트로서 (우리가 연결) + + + 위치 서비스 필요 + 개인정보 우선 + bitchat은 사용자의 위치를 추적하지 않습니다.\n\n블루투스 스캔 및 geohash 채팅 기능에 위치 서비스가 필요합니다. + bitchat은 다음을 위해 위치 서비스가 필요합니다: + • 블루투스 기기 스캔\n• 메쉬 네트워크에서 근처 사용자 발견\n• geohash 채팅 기능\n• 추적 또는 위치 수집 없음 + 위치 설정 열기 + 다시 확인 + 위치 서비스를 사용할 수 없음 + 이 기기에서는 위치 서비스를 사용할 수 없습니다. Android 기기에서 위치 서비스는 표준이므로 이는 드문 경우입니다.\n\n블루투스 스캔이 제대로 작동하려면 bitchat에 위치 서비스가 필요합니다(Android 요구 사항). 그렇지 않으면 앱이 주변 사용자를 찾지 못합니다. + 위치 서비스 확인 중 … + 블루투스 필요 + bitchat은 다음을 위해 블루투스가 필요합니다: + • 근처 사용자 찾기\n• 메쉬 네트워크 연결 생성\n• 메시지 보내고 받기\n• 인터넷이나 서버 없이 작동 + 블루투스 켜기 + 블루투스 미지원 + 이 기기는 bitchat이 동작하는 데 필요한 Bluetooth Low Energy (BLE)를 지원하지 않습니다.\n\nbitchat은 인터넷 없이 근처 장치와 통신하고 메쉬 네트워크를 생성하기 위해 BLE가 필요합니다. + 블루투스 상태 확인 중 … + 배터리 최적화 감지됨 + 배터리 최적화 활성화됨 + 메쉬 연결을 유지하려면 bitchat이 백그라운드에서 실행되어야 합니다. 배터리 최적화는 이러한 연결을 방해할 수 있습니다. + 비활성화의 이점 + • 신뢰할 수 있는 메시지 전달\n• 메쉬 연결 유지\n• 연결 끊김 방지 + 배터리 최적화 끄기 + 배터리 최적화 비활성화됨 + 계속 + 메쉬 네트워크 초기화 중 + 블루투스 메쉬 네트워크 설정 중 … + 몇 초 정도 소요됩니다 + 설정이 완료되지 않았습니다 + 다시 시도 + 개인정보가 보호됩니다 + • 추적 또는 데이터 수집 없음\n• 블루투스 메쉬 채팅은 완전 오프라인\n• geohash 채팅은 인터넷 사용 + 권한 + 권한 허용 + bitchat은 사용자의 위치를 추적하지 않습니다 + 사람들 + 주변에 아무도 없음 … + (나) + geohash를 선택하려면 이동하고 확대/축소하세요 + 선택 + 메시지 입력 … + 멘션 + (~%1$s) + v%1$s + image/* + 이미지 + 파일 + + + 📷 이미지 보냄 + 🎤 음성 메시지 보냄 + 📎 파일 보냄 + + + 재생 + 일시정지 + PoW 채굴 + PoW 사용 + 작업증명 + 채굴 중 … + pow: %1$dbit + + + 블루투스를 통해 bitchat 사용자를 발견하는 데 필요 + 근처 기기와 연결하도록 bitchat을 허용 + 블루투스를 통해 근처 bitchat 사용자를 찾기 위해 Android에 필요 + 근처 기기를 스캔하려면 bitchat에 필요 + 개인 메시지를 받으면 알림 받기 + bitchat이 알림을 보내도록 허용 + bitchat이 백그라운드에서 안정적으로 실행되고 메쉬 연결을 유지하도록 배터리 최적화를 끄세요 + 배터리 제한 없이 실행하도록 bitchat을 허용 + + + 근처 기기 + 정확한 위치 + 마이크 + 알림 + 배터리 최적화 + 기타 + + + 채널 비밀번호 입력 + 채널 %1$s은 비밀번호로 보호됩니다. 참여하려면 비밀번호를 입력하세요. + 비밀번호 + 참가 + 취소 + + + + 그리고 %d개 더 + 그리고 %d개 더 + + + + 1명 + %d명 + + + diff --git a/app/src/main/res/values-mg/strings.xml b/app/src/main/res/values-mg/strings.xml new file mode 100644 index 00000000..716bccc5 --- /dev/null +++ b/app/src/main/res/values-mg/strings.xml @@ -0,0 +1,380 @@ + + + bitchat + + + Ilaina ny alalana Bluetooth mba hifandraisan-davitra tsy misy Internet. + Ilaina ny alalana momba ny toerana mba hahitana fitaovana akaiky amin\'ny alalan\'ny Bluetooth. + Ilaina ny alalana fampandrenesana mba hampandre anao rehefa misy hafatra vaovao. + + + anarana kely + soraty hafatra… + Teny miafina + Hiditra amin\'ny fantsona + Hiala + Handefa + Haneho baiko + Hiverina + Olona + Fantsona + Mpampiasa an-tserasera + Tsy misy olona mifandray + Tsindrio in-telo mba hamafana ny angona rehetra + Tambazotry + + + Hita ny Fanamafisana Bateria + Najanona ny Fanamafisana Bateria + Tsy ilaina ny Fanamafisana Bateria + Manamarina ny Fanamafisana Bateria + Nahoana no mijanona ny fanamafisana bateria? + Mihazakazaka ao ambadika ny bitchat mba hitazona ny fifandraisana tambazotry mesh amin\'ny fitaovana akaiky. Ny fanamafisana bateria dia afaka manelingelina ireo fifandraisana ireo, ka mahatonga ny hafatra hataran-tara na very.\n\nNy fanajanona ny fanamafisana bateria dia miantoka ny fifandraisan-davitra azo itokisana. + Hajanona ny Fanamafisana Bateria + Fanamarihana: Azonao ovaina ato aoriana izany amin\'ny Toetry Android > Apps > bitchat > Bateria + Ny fitaovanao dia tsy mila fametrahana fanamafisana bateria. Ny bitchat dia handeha ara-dalàna. + Ny fitaovanao dia tsy mila fametrahana fanamafisana bateria. Ny bitchat dia handeha ara-dalàna. + Afaka mihazakazaka azo itokisana ao ambadika ny bitchat + • Miantoka ny fandefasana hafatra azo itokisana\n• Mitazona ny fifandraisana tambazotry mesh\n• Mamela ny famindrana hafatra ao ambadika\n• Misoroka ny fahatapahan\'ny fifandraisana + Hanamarina indray + Hitsambikina ankehitriny + Hanohy + Hanandrana indray + Hitsambikina + + + ary %1$d hafa + %1$d hafatra avy amin\'ny olona %2$d + ary %1$d resaka hafa + 👥 bitchatter akaiky! + Olona 1 manodidina + Olona %1$d manodidina + Hafatra vaovao + Hafatra Toerana Vaovao + Voatonona ao amin\'ny %1$s + Voatonona ao amin\'ny %1$s (+%2$d hafa) + %1$d fanaovana tsiahy ao amin\'ny %2$s + Hetsika vaovao ao amin\'ny %1$s + Hafatra ao amin\'ny %1$s + %1$s dia niditra tamin\'ny resaka + bitchat - %1$d fanaovana tsiahy + bitchat - resaka toerana + %1$d hafatra avy amin\'ny toerana %2$d + Voatonona ao amin\'ny Mesh Chat + %1$d fanaovana tsiahy ao amin\'ny Mesh Chat + ary %1$d toerana hafa + ary %1$d hafa + + + Hampidirina amin\'ny ankafizina + Hanesorana amin\'ny ankafizina + Hanampy bookmark + + + miverina + fantsona: %1$s + hiala + Azo tratrarina amin\'ny alalan\'ny Nostr + Hafatra manokana tsy voavaky + Hanova bookmark + Nafindra toerana + Toe-javatra Tor + Mpiara-miasa mifandray + Mpandray anjara Geohash + Vonona ho amin\'ny fifampiraharahana + Fifampiraharahana mandeha eo + Voafono farany amin\'ny farany + Tsy nahomby ny fifampiraharahana + + + 📎 Rakitra Voaray + 📄 %1$s + 📏 Habeny: %1$s + 🏷️ Karazana: %1$s + 📂 Hanokatra / Hitahiry + ❌ Hanakatona + Hifidy sary + + + hafatra mesh tsy misy foibe misy fandokoana farany amin\'ny farany + Mesh Chat tsy an-tserasera + Mifandraisa mivantana amin\'ny alalan\'ny Bluetooth LE tsy misy Internet na mpizara. Ny hafatra dia mamindra amin\'ny alalan\'ny fitaovana akaiky mba hanitarana ny elanelana. + Fantsona Geohash an-tserasera + Mifandray amin\'ny olona eo amin\'ny faritra misy anao amin\'ny fampiasana fantsona mifototra amin\'ny geohash. Manitatra ny mesh amin\'ny fampiasana relay Internet ho an\'ny daholobe. + Fandokoana Farany amin\'ny Farany + Voafono ny hafatra manokana. Hafatra ho an\'ny daholobe ny hafatra fantsona. + endrika + rafitra + mazava + maizina + porofo asa + pow tapaka + pow mandeha + ampio porofo asa amin\'ny hafatra geohash mba hanakanana spam. + sarotra: %1$d bit (~%2$s) + sarotra %1$d mitaky ~%2$s fanandramana hash + tsy misy porofo asa ilaina + ambany indrindra - fiarovana spam kely + ambany - fiarovana spam fototra + antonony - fiarovana spam tsara + avo - fiarovana spam matanjaka + avo dia avo - mety miteraka fahatarana + faran\'izany - mitaky kajy lehibe + tambazotry + tor tapaka + tor mandeha + alefaso amin\'ny alalan\'ny tor ny Internet mba hahazoana fiainana manokana bebe kokoa. + Toe-javatra Tor: %1$s, bootstrap %2$d%% + Farany: %1$s + Famafana Angona Maika + Toro-hevitra: Tsindrio in-telo ny anaran\'ny fampiharana mba hamafana maika ny angona rehetra voatahiry ao anatin\'izany ny hafatra, ny lakile ary ny fametrahana. + Fametrahana Debug + Loharanom-baovao misokatra • Fiainana manokana voalohany • Tsy misy foibe + Hanakatona + hanafoana + + + Fampitandremana + Sampan-draharaham-pitoerana + Fiainana manokana + Hadisoana + Fanamafisana Bateria + Tombontsoa + Manamarina ny Fanamafisana Bateria + Tsy tohanana ny Fanamafisana Bateria + Bluetooth + Hafatra tsy voavaky + Hanokatra sarintany + Hanesorana bookmark + Hamindra toerana + Voafidy + Hiala amin\'ny fantsona + Azo tratrarina amin\'ny alalan\'ny Nostr + Ankafizina tsy an-tserasera + Hampihenana ny fahamarinana + Hampitombo ny fahamarinana + Hifidy geohash + Hidina any ambany + Rakitra + Sary + Hanafoana + Rohy + Hifidy media + Hifidy rakitra + Hitahiry ny sary ankehitriny + Hanakatona + Sary %1$d amin\'ny %2$d + Voaaro ny Fiainana Manokana + Handrakitra feo + Mesh Chat tsy an-tserasera + Fantsona Geohash an-tserasera + Fandokoana Farany amin\'ny Farany + + + Sary %1$d amin\'ny %2$d + Tsy misy sary + Sary voatahiry ao amin\'ny Downloads + Tsy afaka mitahiry sary + Sary voatahiry ao amin\'ny Downloads + Tsy afaka mitahiry sary + Hifidy rakitra + [rakitra tsy misy] + tsy fantatra + + + safidio hetsika ho an\'ity hafatra na mpampiasa ity + safidio hetsika ho an\'ity mpampiasa ity + adikao ny hafatra + adikao ity hafatra ity any amin\'ny clipboard + kapohina %1$s + handefasa hafatra kapohana an-dalao + honofinofy %1$s + handefasa hafatra honofinofy sariaka + hanorina %1$s + hanorina ny hafatra rehetra avy amin\'ity mpampiasa ity + + + #fantsona toerana + miresaka amin\'ny olona akaiky anao amin\'ny fampiasana fantsona geohash. geohash marivo ihany no zarainy, tsy GPS marina akory. aza maka sary an-efijery na mizara ity efijery ity mba hiarovana ny fiainanao manokana. + omeo alalana momba ny toerana + nolavina ny alalana momba ny toerana. alefaso ao amin\'ny fametrahana mba hampiasa fantsona toerana. + Hanokatra fametrahana + \u2713 omena ny alalana momba ny toerana + manamarina ny alalana... + mitady fantsona akaiky… + voaisy bookmark + geohash + geohash tsy mety + hamindra toerana + hanajanona sampan-draharaham-pitoerana + halefa sampan-draharaham-pitoerana + mesh + sakana + manodidina + tanàna + faritany + faritra + #bluetooth • %1$s + + + fitaovana debug + fitaovana mpamorona ho an\'ny diagnostika sy fifehezana + firaketana amin\'ny antsipiriany + raketo ny fidiran\'ny mpiara-miasa / ny fialana, ny fanolorana fifandraisana, ny routing pakets ary ny relays + andraikitry Bluetooth + mpizara GATT + fifandraisana: %1$d / %2$d + mpizara max + mpanjifa GATT + mpanjifa max + fifandraisana: %1$d / %2$d + max ankapobeny + relay pakets + hatramin\'ny fanombohana: %1$d + alefaso / tapaho ny andraikitra ary akatony ny fifandraisana rehetra rehefa tapaka + fametrahana sync + pakets max isaky ny sync: %1$d + haben\'ny sivana GCS max: %1$d bytes (128–1024) + FPR kendrena: %1$.2f%% + fitaovana mifandray + ID fitaovanay: %1$s + tsy misy + hisaraka + valim-panadihadiana vao haingana + hifandray + console debug + hamafa + 10s farany: %1$d • 1m: %2$d • 15m: %3$d + P azo: %1$s • tombana singa max: %2$s + • mivantana + %1$s • RSSI: %2$s + ho mpizara (isika mampiantrano) + ho mpanjifa (isika mifandray) + + + Ilaina ny Sampan-draharaham-pitoerana + Fiainana Manokana Voalohany + Ny bitchat dia TSY manaraka ny toerananao.\n\nIlaina ny sampan-draharaham-pitoerana ho an\'ny scan Bluetooth sy ny endri-javatra resaka Geohash. + Ny bitchat dia mila sampan-draharaham-pitoerana ho an\'ny: + • Scan fitaovana Bluetooth\n• Fahitana mpampiasa akaiky amin\'ny tambazotry mesh\n• Endri-javatra resaka Geohash\n• Tsy misy fanaraha-maso na fanangonana toerana + Hanokatra Fametrahana Toerana + Hanamarina Indray + Tsy Misy Sampan-draharaham-pitoerana + Tsy misy sampan-draharaham-pitoerana amin\'ity fitaovana ity. Mahagaga izany satria mahazatra amin\'ny fitaovana Android ny sampan-draharaham-pitoerana.\n\nMila sampan-draharaham-pitoerana ny bitchat mba hiasa tsara ny scan Bluetooth (takiana Android). Raha tsy izany, ny fampiharana dia tsy afaka mahita mpampiasa akaiky. + Manamarina sampan-draharaham-pitoerana... + Ilaina ny Bluetooth + Mila Bluetooth ny bitchat mba: + • Hahita mpampiasa akaiky\n• Hamorona fifandraisana tambazotry mesh\n• Handefa sy handray hafatra\n• Hiasa tsy misy Internet na mpizara + Alefaso ny Bluetooth + Tsy Tohanana ny Bluetooth + Ity fitaovana ity dia tsy manohana ny Bluetooth Low Energy (BLE), izay ilaina mba hiasan\'ny bitchat.\n\nMila BLE ny bitchat mba hamoronana tambazotry mesh sy hifandray amin\'ny fitaovana akaiky tsy misy Internet. + Manamarina ny toe-javatra Bluetooth... + hita ny fanamafisana bateria + Alefa ny Fanamafisana Bateria + Mila mihazakazaka ao ambadika ny bitchat mba hitazona ny fifandraisana mesh. ny fanamafisana bateria dia afaka manelingelina ireo fifandraisana ireo. + Tombontsoam-panajanona + • fandefasana hafatra azo itokisana\n• mitazona ny fifandraisana mesh\n• misoroka ny fahatapahan\'ny fifandraisana + Hajanona ny Fanamafisana Bateria + najanona ny fanamafisana bateria + Hanohy + Manomboka ny tambazotry mesh + . + Mametraka ny tambazotry mesh Bluetooth... + Tokony haharitra segaondra vitsivitsy ihany izany + ⚠️ + Tsy Vita ny Fametrahana + Andramo Indray + Voaaro ny Fiainanao Manokana + • tsy misy fanaraha-maso na fanangonana angona\n• tsy an-tserasera tanteraka ny resaka mesh Bluetooth\n• mampiasa Internet ny resaka Geohash + alalana + Omeo Alalana + Ny bitchat dia TSY manaraka ny toerananao + @ + bitchat/ + · ⧉ + OLONA + tsy misy olona manodidina... + (ianao) + ahetsika sy ataovy lehibe mba hifidianana geohash + hifidy + soraty hafatra... + @%1$s + hanonona + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + Sary + Rakitra + + + + + + ✓✓ + + + + + 📷 nandefasa sary + 🎤 nandefasa hafatra feo + 📎 nandefasa rakitra + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + Hilalao + Hijanona + Mihaingam-poana PoW + Alefa ny PoW + Porofo Asa + mihaingana... + pow: %1$dbit + + + Ilaina mba hahitana mpampiasa bitchat amin\'ny alalan\'ny Bluetooth + Avelao ny bitchat hifandray amin\'ny fitaovana akaiky + Takian\'ny Android mba hahitana mpampiasa bitchat akaiky amin\'ny alalan\'ny Bluetooth + Mila izany ny bitchat mba hisikidy fitaovana akaiky + Mandray fampandrenesana rehefa mahazo hafatra manokana ianao + Avelao ny bitchat handefasa fampandrenesana aminao + Ajanony ny fanamafisana bateria mba hahazoana antoka fa mihazakazaka azo itokisana ao ambadika ny bitchat ary mitazona ny fifandraisana tambazotry mesh + Avelao ny bitchat handeha tsy misy famerana bateria + + + Fitaovana Akaiky + Toerana Marina + Mikraofona + Fampandrenesana + Fanamafisana Bateria + Hafa + + + Ampidiro ny Teny Miafina Fantsona + Voaaro amin\'ny teny miafina ny fantsona %1$s. Ampidiro ny teny miafina mba hidirana. + Teny miafina + Hiditra + Hanafoana + + + + ary %d hafa + ary %d hafa + + + + Olona 1 + Olona %d + + + diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml new file mode 100644 index 00000000..21d90e30 --- /dev/null +++ b/app/src/main/res/values-ms/strings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml new file mode 100644 index 00000000..86206111 --- /dev/null +++ b/app/src/main/res/values-ne/strings.xml @@ -0,0 +1,366 @@ + + + bitchat + + + इन्टरनेट बिना प्रत्यक्ष कुराकानीका लागि ब्लुटुथ अनुमति आवश्यक हुन्छ। + ब्लुटुथमार्फत नजिकका यन्त्रहरू फेला पार्न स्थान अनुमति आवश्यक हुन्छ। + नयाँ सन्देशबारे सूचित गर्न सूचनाको अनुमति आवश्यक हुन्छ। + + + उपनाम + सन्देश टाइप गर्नुहोस्… + पासवर्ड + च्यानलमा जोडिनुहोस् + छोड्नुहोस् + पठाउनुहोस् + आज्ञाहरू देखाउनुहोस् + पछाडि + मानिसहरू + च्यानलहरू + अनलाइन प्रयोगकर्ता + कसैसँग जडान छैन + सबै डेटा मेटाउन तीन पटक ट्याप गर्नुहोस् + सञ्जाल + + + ब्याट्री अनुकूलन भेटियो + ब्याट्री अनुकूलन बन्द + ब्याट्री अनुकूलन आवश्यक छैन + ब्याट्री अनुकूलन जाँचिँदै + ब्याट्री अनुकूलन किन बन्द गर्ने? + bitchat पछाडिबाट चल्छ ताकि नजिकका यन्त्रहरूसँग मेष जडान कायम रहोस्। ब्याट्री अनुकूलनले यी जडान विच्छेद गराउन सक्छ, जसले सन्देश ढिलो वा हराउन सक्छ।\n\nअनुकूलन बन्द गर्दा भरपर्दो peer‑to‑peer सन्देश सुनिश्चित हुन्छ। + ब्याट्री अनुकूलन बन्द गर्नुहोस् + नोट: यो सेटिङ पछि Android सेटिङहरू > Apps > bitchat > Battery मा परिवर्तन गर्न सकिन्छ। + तपाईंको यन्त्रलाई ब्याट्री अनुकूलन सेटिङ आवश्यक छैन। bitchat सामान्य रूपमा चल्नेछ। + तपाईंको यन्त्रलाई ब्याट्री अनुकूलन सेटिङ आवश्यक छैन। bitchat सामान्य रूपमा चल्नेछ। + bitchat पछाडिबाट भरपर्दो रूपमा चल्न सक्छ + • सन्देश विश्वसनीय डेलिभरी\n• मेष जडान कायम राख्ने\n• पृष्ठभूमिमा रिले\n• जडान विच्छेद हुन नदिने + फेरि जाँच्नुहोस् + अहिलेलाई बेवास्ता गर्नुहोस् + जारी राख्नुहोस् + फेरि प्रयास गर्नुहोस् + बेवास्ता गर्नुहोस् + + + र %1$d थप + %1$d सन्देश %2$d जनाबाट + र %1$d अरू कुराकानी + 👥 नजिकै bitchatter हरू! + १ जना नजिकै + %1$d जना नजिकै + नयाँ सन्देश + नयाँ स्थान सन्देश + %1$s मा उल्लेख + %1$s मा उल्लेख (+%2$d थप) + %1$d उल्लेख %2$s मा + %1$s मा नयाँ गतिविधि + %1$s मा सन्देश + %1$s वार्तालापमा सामेल भयो + bitchat – %1$d उल्लेख + bitchat – स्थान च्याट + %2$d स्थानबाट %1$d सन्देश + मेष च्याटमा उल्लेख + मेष च्याटमा %1$d उल्लेख + र %1$d थप स्थान + र %1$d थप + + + मनपर्नेमा थप्नुहोस् + मनपरिबाट हटाउनुहोस् + बुकमार्क थप्नुहोस् + + + पछाडि + च्यानल: %1$s + छोड्नुहोस् + Nostr मार्फत पुग्न सकिने + नपढिएका निजी सन्देश + बुकमार्क टगल + टेलिपोर्ट भयो + Tor स्थिति + जडान भएका साथीहरू + Geohash सहभागिहरू + ह्यान्डशेकका लागि तयार + ह्यान्डशेक भइरहेको + अन्त्यदेखि अन्त्य एनक्रिप्टेड + ह्यान्डशेक असफल + + + 📎 फाइल प्राप्त भयो + 📄 %1$s + 📏 साइज: %1$s + 🏷️ प्रकार: %1$s + 📂 खोल्नुहोस् / बचत गर्नुहोस् + ❌ बन्द गर्नुहोस् + तस्वीर छान्नुहोस् + + + विकेन्द्रित मेष सन्देश अन्त्यदेखि अन्त्य इन्क्रिप्सनसहित + अफलाइन मेष च्याट + इन्टरनेट वा सर्भर बिना सिधै Bluetooth LE मार्फत सञ्चार गर्नुहोस्। नजिकका यन्त्रहरूबाट सन्देश रिल레이 हुन्छ। + अनलाइन Geohash च्यानलहरू + Geohash आधारित च्यानलमार्फत नजिकका मानिसहरूसँग जोडिनुहोस्। सार्वजनिक इन्टरनेट रिलेलाई प्रयोग गरेर मेष विस्तार गर्नुहोस्। + एन्ड‑टु‑एन्ड इन्क्रिप्सन + निजी सन्देश इन्क्रिप्टेड हुन्छन्। च्यानल सन्देश सार्वजनिक हुन्छन्। + देखावट + सिस्टम + हल्का + गाढा + प्रुफ अफ वर्क + pow बन्द + pow चालु + स्पाम रोकथामका लागि geohash सन्देशमा proof of work थप्नुहोस्। + कठिनाइ: %1$d बिट (~%2$s) + कठिनाइ %1$d का लागि ~%2$s ह्यास प्रयास + proof of work आवश्यक छैन + अति कम – न्यून सुरक्षा + कम – आधारभूत सुरक्षा + मध्यम – राम्रो सुरक्षा + उच्च – बलियो सुरक्षा + एकदम उच्च – ढिलाइ हुन सक्छ + अत्यधिक – धेरै गणना आवश्यक + सञ्जाल + tor बन्द + tor चालु + बढी गोपनीयताका लागि Tor मार्फत इन्टरनेट रुट गर्नुहोस्। + Tor स्थिति: %1$s, बुटस्ट्र्याप %2$d%% + अन्तिम: %1$s + आपतकालीन डेटा मेटाउने + सुझाव: एप शीर्षक तीन पटक ट्याप गरी सबै डेटा (सन्देश, कुञ्जी, सेटिङ) मेटाउनुहोस्। + डिबग सेटिङ + Open Source • Privacy First • विकेन्द्रित + बन्द गर्नुहोस् + रद्द गर्नुहोस् + + + चेतावनी + स्थान सेवाहरू + गोपनीयता + त्रुटि + ब्याट्री अनुकूलन + फाइदाहरू + ब्याट्री अनुकूलन जाँचिँदै + समर्थन छैन + ब्लुटुथ + नपढिएको सन्देश + नक्सा खोल्नुहोस् + बुकमार्क हटाउनुहोस् + टेलिपोर्ट + छानिएको + च्यानल छोड्नुहोस् + Nostr बाट पहुँचयोग्य + मनपर्ने (अफलाइन) + शुद्धता घटाउनुहोस् + शुद्धता बढाउनुहोस् + geohash छान्नुहोस् + तल स्क्रोल गर्नुहोस् + फाइल + तस्वीर + रद्द + लिङ्क + मेडिया छान्नुहोस् + भ्वाइस नोट रेकर्ड + अफलाइन मेष च्याट + अनलाइन Geohash च्यानल + एन्ड‑टु‑एन्ड इन्क्रिप्सन + + + तस्वीर %1$d / %2$d + तस्वीर उपलब्ध छैन + तस्वीर "Downloads" मा सुरक्षित भयो + तस्वीर बचत असफल + फाइल छान्नुहोस् + [फाइल उपलब्ध छैन] + अज्ञात + + + यो सन्देश वा प्रयोगकर्ताका लागि कार्य छान्नुहोस् + यस प्रयोगकर्ताका लागि कार्य छान्नुहोस् + सन्देश प्रतिलिपि + यो सन्देश क्लिपबोर्डमा प्रतिलिपि गर्नुहोस् + %1$s लाई चड्कन + मनोरञ्जनका लागि चड्कन पठाउनुहोस् + %1$s लाई अँगालो + मैत्रीपूर्ण अँगालो पठाउनुहोस् + %1$s लाई ब्लक गर्नुहोस् + यस प्रयोगकर्ताबाट सबै सन्देश ब्लक गर्नुहोस् + + + #स्थान च्यानल + तपाईंको वरिपरिका मानिसहरूसँग geohash च्यानल प्रयोग गरी च्याट गर्नुहोस्। केवल सामान्य geohash साझा हुन्छ, कहिल्यै ठ्याक्कै GPS होइन। गोपनीयताका लागि स्क्रिनसट नलिनुहोस् र नबाँड्नुहोस्। + स्थान अनुमति दिनुहोस् + स्थान अनुमति अस्वीकार। स्थान च्यानल प्रयोग गर्न सेटिङमा सक्षम गर्नुहोस्। + सेटिङ खोल्नुहोस् + \u2713 स्थान अनुमति दिइयो + अनुमति जाँचिँदै… + नजिकका च्यानल खोजिँदै… + बुकमार्क गरिएको + geohash + अवैध geohash + टेलिपोर्ट + स्थान सेवाहरू बन्द गर्नुहोस् + स्थान सेवाहरू सुरु गर्नुहोस् + #bluetooth • %1$s + mesh + ब्लक + छिमेक + सहर + प्रान्त + क्षेत्र + + + डिबग उपकरण + विस्तृत लगिङ + ब्लुटुथ भूमिकाहरू + GATT सर्भर + जडान: %1$d / %2$d + अधिकतम सर्भर + GATT क्लाइन्ट + अधिकतम क्लाइन्ट + जडान: %1$d / %2$d + अधिकतम कुल + प्याकेट रिल레이 + सुरु भएकोयता: %1$d + सिङ्क सेटिङ + प्रत्येक सिङ्कका अधिकतम प्याकेट: %1$d + GCS फिल्टर साइज अधिकतम: %1$d बाइट (128–1024) + लक्ष्य FPR: %1$.2f%% + जडान भएका यन्त्रहरू + हाम्रो यन्त्र आईडी: %1$s + केही छैन + डिस्कनेक्ट + हालैका स्क्यान नतिजा + जोड्नुहोस् + डिबग कन्सोल + खाली गर्नुहोस् + अन्तिम 10s: %1$d • 1m: %2$d • 15m: %3$d + व्युत्पन्न P: %1$s • अनुमानित अधिकतम तत्व: %2$s + • प्रत्यक्ष + %1$s • RSSI: %2$s + ? + सर्भरको रूपमा (हामी होस्ट गर्छौं) + क्लाइन्टको रूपमा (हामी जडान गर्छौं) + + + स्थान सेवाहरू आवश्यक + गोपनीयता पहिलो + bitchat ले तपाईंको स्थान पछ्याउँदैन।\n\nब्लुटुथ स्क्यान र Geohash च्याट सुविधा लागि स्थान सेवा आवश्यक छन्। + bitchat लाई स्थान सेवा आवश्यक पर्छ: + • ब्लुटुथ यन्त्र स्क्यान\n• मेष सञ्जालमा नजिकका प्रयोगकर्ता पत्ता लगाउने\n• Geohash च्याट सुविधा\n• कुनै ट्र्याकिङ वा स्थान सङ्कलन छैन + स्थान सेटिङ खोल्नुहोस् + फेरि जाँच्नुहोस् + स्थान सेवाहरू उपलब्ध छैनन् + यस यन्त्रमा स्थान सेवाहरू उपलब्ध छैनन्। यो असामान्य हो किनकि Android यन्त्रमा यो मानक हो।\n\nब्लुटुथ स्क्यान ठीकसँग चल्न (Android को आवश्यक) स्थान सेवा चाहिन्छ। अन्यथा नजिकका प्रयोगकर्ता पत्ता लाग्दैनन्। + स्थान सेवाहरू जाँचिँदै… + ब्लुटुथ आवश्यक + bitchat लाई ब्लुटुथ आवश्यक छ: + • नजिकका प्रयोगकर्ता पत्ता लगाउने\n• मेष जडान बनाउने\n• सन्देश पठाउने/प्राप्त गर्ने\n• इन्टरनेट वा सर्भर बिना काम गर्ने + ब्लुटुथ सक्षम गर्नुहोस् + ब्लुटुथ समर्थित छैन + यो यन्त्रले Bluetooth Low Energy (BLE) समर्थन गर्दैन, जुन bitchat को लागि आवश्यक छ।\n\nनजिकका यन्त्रहरूसँग इन्टरनेट बिना सञ्चार गर्न र मेष बनाउन BLE चाहिन्छ। + ब्लुटुथ स्थिति जाँचिँदै… + ब्याट्री अनुकूलन भेटियो + ब्याट्री अनुकूलन सक्षम + मेष जडान कायम राख्न bitchat पछाडिबाट चल्नुपर्छ। ब्याट्री अनुकूलनले जडान काट्न सक्छ। + बन्द गर्ने फाइदाहरू + • भरपर्दो डेलिभरी\n• मेष कन्नेक्टिभिटी कायम\n• विच्छेद रोक्छ + अनुकूलन बन्द गर्नुहोस् + ब्याट्री अनुकूलन बन्द + जारी राख्नुहोस् + मेष सञ्जाल सुरु गर्दै + . + ब्लुटुथ मेष सेटअप गर्दै… + यसलाई केही सेकेन्ड मात्र लाग्छ + ⚠️ + सेटअप पूरा भएन + फेरि प्रयास गर्नुहोस् + तपाईंको गोपनीयता सुरक्षित छ + • कुनै ट्र्याकिङ वा डेटा सङ्कलन छैन\n• ब्लुटुथ मेष च्याट पूर्णतया अफलाइन\n• Geohash च्याट इन्टरनेट प्रयोग गर्छ + अनुमति + अनुमति दिनुहोस् + bitchat ले तपाईंको स्थान पछ्याउँदैन + @ + bitchat/ + · ⧉ + मानिसहरू + वरिपरि कोही छैन… + (तपाईं) + geohash छान्न प्यान र जुम गर्नुहोस् + छान्नुहोस् + सन्देश टाइप गर्नुहोस्… + @%1$s + उल्लेख + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + तस्वीर + फाइल + + + + + + ✓✓ + + + + + 📷 तस्वीर पठाइयो + 🎤 भ्वाइस सन्देश पठाइयो + 📎 फाइल पठाइयो + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + प्ले + पज + + + ब्लुटुथमार्फत bitchat प्रयोगकर्ता फेला पार्न आवश्यक + bitchat लाई नजिकका यन्त्र जडान गर्न अनुमति दिनुहोस् + Android अनुसार ब्लुटुथमार्फत नजिकका प्रयोगकर्ता फेला पार्न आवश्यक + नजिकका यन्त्र स्क्यान गर्न bitchat लाई आवश्यक + निजी सन्देश आउँदा सूचना पाउनुहोस् + bitchat लाई तपाईंलाई सूचना पठाउन दिनुहोस् + bitchat लाई पछाडिबाट भरपर्दो रूपमा चलाउन र मेष जडान कायम राख्न ब्याट्री अनुकूलन बन्द गर्नुहोस् + ब्याट्री प्रतिबन्ध बिना चल्न अनुमति दिनुहोस् + + + नजिकका यन्त्रहरू + ठ्याक्कै स्थान + माइक + सूचना + ब्याट्री अनुकूलन + अन्य + + + च्यानल पासवर्ड प्रविष्ट गर्नुहोस् + %1$s च्यानल पासवर्ड सुरक्षित छ। जडान हुन पासवर्ड लेख्नुहोस्। + पासवर्ड + जोडिनुहोस् + रद्द + + + + र %d थप + र %d थप + + + + 1 जना + %d जना + + + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml new file mode 100644 index 00000000..2f790c44 --- /dev/null +++ b/app/src/main/res/values-nl/strings.xml @@ -0,0 +1,385 @@ + + + bitchat + + + Bluetooth-toestemming is vereist voor peer-to-peer berichten zonder internet. + Locatietoestemming is vereist om apparaten in de buurt via Bluetooth te ontdekken. + Meldingstoestemming is vereist om u te waarschuwen voor nieuwe berichten. + + + bijnaam + typ een bericht… + Wachtwoord + Kanaal deelnemen + Verlaten + Verzenden + Commando\'s weergeven + Terug + Personen + Kanalen + Online gebruikers + Niemand verbonden + Tik drie keer om alle gegevens te wissen + Netwerk + + + Batterijoptimalisatie gedetecteerd + Batterijoptimalisatie uitgeschakeld + Batterijoptimalisatie niet vereist + Batterijoptimalisatie controleren + Waarom batterijoptimalisatie uitschakelen? + bitchat draait op de achtergrond om meshnetwerkverbindingen met apparaten in de buurt te onderhouden. Batterijoptimalisatie kan deze verbindingen onderbreken, waardoor berichten vertraagd of gemist worden.\n\nHet uitschakelen van batterijoptimalisatie zorgt voor betrouwbare peer-to-peer communicatie. + Batterijoptimalisatie uitschakelen + Opmerking: U kunt deze instelling later wijzigen in Android-instellingen > Apps > bitchat > Batterij + Uw apparaat vereist geen batterijoptimalisatie-instellingen. bitchat zal normaal draaien. + Uw apparaat vereist geen batterijoptimalisatie-instellingen. bitchat zal normaal draaien. + bitchat kan betrouwbaar op de achtergrond draaien + • Zorgt voor betrouwbare berichtbezorging\n• Onderhoudt meshnetwerkconnectiviteit\n• Staat berichtrelay op achtergrond toe\n• Voorkomt verbindingsonderbrekingen + Opnieuw controleren + Nu overslaan + Doorgaan + Opnieuw proberen + Overslaan + + + en %1$d meer + %1$d berichten van %2$d personen + en %1$d meer conversaties + 👥 bitchatters in de buurt! + 1 persoon in de buurt + %1$d personen in de buurt + Nieuwe berichten + Nieuwe locatieberichten + Vermeld in %1$s + Vermeld in %1$s (+%2$d meer) + %1$d vermeldingen in %2$s + Nieuwe activiteit in %1$s + Berichten in %1$s + %1$s is toegetreden tot het gesprek + bitchat - %1$d vermeldingen + bitchat - locatiechats + %1$d berichten van %2$d locaties + Vermeld in meshchat + %1$d vermeldingen in meshchat + en %1$d meer locaties + en %1$d meer + + + Toevoegen aan favorieten + Verwijderen uit favorieten + Bladwijzer toevoegen + + + terug + kanaal: %1$s + verlaten + Bereikbaar via Nostr + Ongelezen privéberichten + Bladwijzer omschakelen + Geteleporteerd + Tor-status + Verbonden peers + Geohash-deelnemers + Klaar voor handshake + Handshake bezig + End-to-end versleuteld + Handshake mislukt + + + 📎 Bestand ontvangen + 📄 %1$s + 📏 Grootte: %1$s + 🏷️ Type: %1$s + 📂 Openen / Opslaan + ❌ Sluiten + Afbeelding kiezen + + + gedecentraliseerde meshcommunicatie met end-to-end-versleuteling + Offline meshchat + Communiceer rechtstreeks via Bluetooth LE zonder internet of servers. Berichten worden doorgestuurd via apparaten in de buurt om het bereik te vergroten. + Online geohash-kanalen + Maak contact met mensen in uw omgeving met geohash-gebaseerde kanalen. Breid het mesh uit met openbare internetrelays. + End-to-end-versleuteling + Privéberichten zijn versleuteld. Kanaalberichten zijn openbaar. + uiterlijk + systeem + licht + donker + proof of work + PoW uit + PoW aan + voeg proof of work toe aan geohash-berichten voor spamafschrikking. + moeilijkheidsgraad: %1$d bits (~%2$s) + moeilijkheidsgraad %1$d vereist ~%2$s hash-pogingen + geen proof of work vereist + zeer laag - minimale spambescherming + laag - basis spambescherming + gemiddeld - goede spambescherming + hoog - sterke spambescherming + zeer hoog - kan vertragingen veroorzaken + extreem - aanzienlijke berekening vereist + netwerk + Tor uit + Tor aan + route internet via Tor voor verbeterde privacy. + Tor-status: %1$s, bootstrap %2$d%% + Laatste: %1$s + Noodgegevensverwijdering + Tip: Driedubbel klik op de app-titel om alle opgeslagen gegevens inclusief berichten, sleutels en instellingen noodmatig te verwijderen. + Debug-instellingen + Open Source • Privacy First • Gedecentraliseerd + Sluiten + annuleren + + + Waarschuwing + Locatiediensten + Privacy + Fout + Batterijoptimalisatie + Voordelen + Batterijoptimalisatie controleren + Batterijoptimalisatie niet ondersteund + Bluetooth + Ongelezen bericht + Kaart openen + Bladwijzer verwijderen + Teleporteren + Geselecteerd + Kanaal verlaten + Bereikbaar via Nostr + Offline favoriet + Precisie verlagen + Precisie verhogen + Geohash selecteren + Naar beneden scrollen + Bestand + Afbeelding + Annuleren + Link + Media kiezen + Bestand kiezen + Huidige afbeelding opslaan + Sluiten + Afbeelding %1$d van %2$d + Privacy beschermd + Spraaknotitie opnemen + Offline meshchat + Online geohash-kanalen + End-to-end-versleuteling + + + Afbeelding %1$d van %2$d + Afbeelding niet beschikbaar + Afbeelding opgeslagen in Downloads + Opslaan afbeelding mislukt + Afbeelding opgeslagen in Downloads + Opslaan afbeelding mislukt + Bestand kiezen + [bestand niet beschikbaar] + onbekend + + + kies een actie voor dit bericht of deze gebruiker + kies een actie voor deze gebruiker + bericht kopiëren + kopieer dit bericht naar klembord + %1$s een tik geven + stuur een speelse tik + %1$s knuffelen + stuur een vriendelijke knuffel + %1$s blokkeren + blokkeer alle berichten van deze gebruiker + + + #locatiekanalen + chat met mensen in uw buurt via geohash-kanalen. alleen een grove geohash wordt gedeeld, nooit exacte GPS. maak geen screenshot of deel dit scherm niet om uw privacy te beschermen. + locatietoestemming verlenen + locatietoestemming geweigerd. schakel in instellingen in om locatiekanalen te gebruiken. + Instellingen openen + \u2713 locatietoestemming verleend + toestemmingen controleren… + nabije kanalen zoeken… + bladwijzer toegevoegd + geohash + ongeldige geohash + teleporteren + locatiediensten uitschakelen + locatiediensten inschakelen + mesh + blok + buurt + stad + provincie + regio + #bluetooth • %1$s + + + debug-tools + ontwikkelaarsgereedschap voor diagnostiek en controle + uitgebreide logging + logt peer deelnames/vertrek, verbindingsrichting, pakketrouting en relays + Bluetooth-rollen + GATT-server + verbindingen: %1$d / %2$d + max server + GATT-client + max client + verbindingen: %1$d / %2$d + max totaal + pakketrelay + sinds start: %1$d + schakel rollen in/uit en sluit alle verbindingen bij uitschakelen + sync-instellingen + max pakketten per sync: %1$d + max GCS-filtergrootte: %1$d bytes (128–1024) + doel-FPR: %1$.2f%% + verbonden apparaten + ons apparaat-ID: %1$s + geen + verbreken + recente scanresultaten + verbinden + debug-console + wissen + laatste 10s: %1$d • 1m: %2$d • 15m: %3$d + afgeleide P: %1$s • gesch. max elementen: %2$s + • direct + %1$s • RSSI: %2$s + als server (wij hosten) + als client (wij verbinden) + + + Locatiediensten vereist + Privacy eerst + bitchat volgt NIET uw locatie.\n\nLocatiediensten zijn vereist voor Bluetooth-scanning en voor de geohash-chatfunctie. + bitchat heeft locatiediensten nodig voor: + • Bluetooth-apparaat scanning\n• Ontdekken van gebruikers in de buurt op meshnetwerk\n• Geohash-chatfunctie\n• Geen tracking of locatieverzameling + Locatie-instellingen openen + Opnieuw controleren + Locatiediensten niet beschikbaar + Locatiediensten zijn niet beschikbaar op dit apparaat. Dit is ongebruikelijk omdat locatiediensten standaard zijn op Android-apparaten.\n\nbitchat heeft locatiediensten nodig om Bluetooth-scanning goed te laten werken (Android-vereiste). Zonder dit kan de app geen gebruikers in de buurt ontdekken. + Locatiediensten controleren… + Bluetooth vereist + bitchat heeft Bluetooth nodig om: + • Gebruikers in de buurt te ontdekken\n• Meshnetwerkverbindingen te maken\n• Berichten te verzenden en ontvangen\n• Te werken zonder internet of servers + Bluetooth inschakelen + Bluetooth niet ondersteund + Dit apparaat ondersteunt geen Bluetooth Low Energy (BLE), wat vereist is om bitchat te laten functioneren.\n\nbitchat heeft BLE nodig om meshnetwerken te maken en te communiceren met apparaten in de buurt zonder internet. + Bluetooth-status controleren… + batterijoptimalisatie gedetecteerd + Batterijoptimalisatie ingeschakeld + bitchat moet op de achtergrond draaien om meshverbindingen te onderhouden. batterijoptimalisatie kan deze verbindingen onderbreken. + Voordelen van uitschakelen + • betrouwbare berichtbezorging\n• onderhoudt meshconnectiviteit\n• voorkomt verbindingsonderbrekingen + Batterijoptimalisatie uitschakelen + batterijoptimalisatie uitgeschakeld + Doorgaan + Meshnetwerk initialiseren + Bluetooth-meshnetwerk instellen… + Dit zou slechts enkele seconden moeten duren + Installatie niet voltooid + Opnieuw proberen + Uw privacy is beschermd + • geen tracking of gegevensverzameling\n• Bluetooth-meshchats zijn volledig offline\n• Geohash-chats gebruiken internet + toestemmingen + Toestemmingen verlenen + bitchat volgt NIET uw locatie + PERSONEN + niemand in de buurt… + (jij) + pan en zoom om een geohash te selecteren + selecteren + typ een bericht… + vermelden + (~%1$s) + v%1$s + image/* + Afbeelding + Bestand + + + 📷 heeft een afbeelding verstuurd + 🎤 heeft een spraakbericht verstuurd + 📎 heeft een bestand verstuurd + + + Afspelen + Pauzeren + Mining-PoW + PoW ingeschakeld + Proof of Work + minen… + pow: %1$dbit + + + Vereist om bitchat-gebruikers via Bluetooth te ontdekken + bitchat toestaan om verbinding te maken met apparaten in de buurt + Vereist door Android om bitchat-gebruikers in de buurt via Bluetooth te ontdekken + bitchat heeft dit nodig om te scannen naar apparaten in de buurt + Ontvang meldingen wanneer u privéberichten ontvangt + bitchat toestaan om u meldingen te sturen + Schakel batterijoptimalisatie uit om ervoor te zorgen dat bitchat betrouwbaar op de achtergrond draait en meshnetwerkverbindingen onderhoudt + bitchat toestaan om zonder batterijbeperkingen te draaien + + + Apparaten in de buurt + Precieze locatie + Microfoon + Meldingen + Batterijoptimalisatie + Overig + + + Kanaalwachtwoord invoeren + Kanaal %1$s is met een wachtwoord beveiligd. Voer het wachtwoord in om deel te nemen. + Wachtwoord + Deelnemen + Annuleren + + + @ + bitchat/ + · ⧉ + @%1$s + %1$d / %2$d + @%1$s + # + _ + [%1$s] %2$d%% + + + . + ⚠️ + ? + + + + + + ✓✓ + + + + + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + + en %d meer + en %d meer + + + + 1 persoon + %d personen + + + diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml new file mode 100644 index 00000000..1fa5701c --- /dev/null +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + انٹرنیٹ توں بغیر سیدھی چیٹ لئی بلوٹوتھ دی اجازت ضروری اے۔ + بلوٹوتھ راہین نیڑے ڈیوائس لبھن لئی لوکیشن دی اجازت ضروری اے۔ + نوٹیفکیشن دی اجازت نواں پیغام دسدے لئی ضروری اے۔ + + + عرفی ناں + پیغام لکھو… + پاس ورڈ + چینل وچ شامل ہوو + باہر آؤ + پھجو + کمانڈ وکھاؤ + واپس + لوگ + چینل + آن لائن یوزر + کوئی وی منسلک نہیں + ساری ڈیٹا مٹاون لئی تین وار ٹیپ کرو + نیٹ ورک + + + بیٹری آپٹمائزیشن لبھیا گیا + بیٹری آپٹمائزیشن بند اے + بیٹری آپٹمائزیشن دی لوڑ نئیں + بیٹری آپٹمائزیشن چیک ہورہی اے + بیٹری آپٹمائزیشن کیوں بند کریے؟ + bitchat پس منظر وچ چلدا اے تے نیڑے ڈیوائس نال میش کنکشن برقرار رکھدا اے۔ بیٹری آپٹمائزیشن ایہ کنکشناں نوں روک سکدی اے، جِنہ نال پیغام لیٹ یا غائب ہوسکدے نیں۔\n\nبیٹری آپٹمائزیشن بند کرن نال معتبر ہم رتبہ رابطہ یقینی ہوندا اے۔ + بیٹری آپٹمائزیشن بند کرو + نوٹ: تُسی ایہ بعد وچ Android سیٹنگز > ایپس > bitchat > بیٹری وچ بدَل سکدے او۔ + توانڈے ڈیوائس نوں بیٹری آپٹمائزیشن سیٹنگ دی لوڑ نئیں۔ bitchat عام طرح چلّو گا۔ + توانڈے ڈیوائس نوں بیٹری آپٹمائزیشن سیٹنگ دی لوڑ نئیں۔ bitchat عام طرح چلّو گا۔ + bitchat پس منظر وچ قابلِ اعتماد چل سکدا اے + • معتبر پیغام ترسیل\n• میش کنکشن برقرار\n• پس منظر وچ پیغام ریلے\n• کنکشن ٹٹّن توں بچاؤ + فیر چیک کرو + ہور ویلے + جاری رکھو + فیر کوشِش کرو + سکِپ + + + تے %1$d ہور + %2$d لوکان کولوں %1$d پیغام + تے %1$d ہور گلاں + 👥 نیڑے bitchatter! + نیڑے 1 بندہ + نیڑے %1$d بندے + نویں پیغام + نویں لوکیشن پیغام + %1$s وچ ذکر ہویا + %1$s وچ ذکر (+%2$d ہور) + %2$s وچ %1$d وار ذکر + %1$s وچ نویں سرگرمی + %1$s وچ پیغام + %1$s گفتگو وچ شامل ہویا + bitchat – %1$d ذکر + bitchat – لوکیشن چیٹ + %2$d ٹھاں توں %1$d پیغام + میش چیٹ وچ ذکر + میش چیٹ وچ %1$d ذکر + تے %1$d ہور ٹھاں + تے %1$d ہور + + + پسندیدہ وچ پاؤ + پسندیدہ توں ہٹاؤ + بُک مارک پاؤ + + + واپس + چینل: %1$s + باہر آؤ + Nostr راہین پہنچ ممکن اے + انہ پڑھیا ذاتی پیغام + بُک مارک ٹوگل کرو + ٹیلپورٹ کیتا گیا + Tor حالت + جُڑے پیئر + geohash شریک + ہینڈشیک لئی تیار + ہینڈشیک جاری + اینڈ ٹو اینڈ انکرپٹڈ + ہینڈشیک فیل ہویا + + + 📎 فائل ملی + 📄 %1$s + 📏 سائز: %1$s + 🏷️ قسم: %1$s + 📂 کھولو / سیو کرو + ❌ بند کرو + تصویر چُنو + + + اینڈ ٹو اینڈ انکرپشن نال غیر مرکزی میش چیٹ + آف لائن میش چیٹ + انٹرنیٹ یا سرور توں بغیر Bluetooth LE راہین سیدھا رابطہ کرو۔ رینج ودھاؤن لئی پیغام نیڑے ڈیوائساں راہین ریلے ہوندے نیں۔ + آن لائن geohash چینل + geohash بیسڈ چینلاں راہین اپنے علاقے دے لوکاں نال جڑو۔ پبلک انٹرنیٹ ریلے راہین میش نوں وسیع کرو۔ + اینڈ ٹو اینڈ انکرپشن + ذاتی پیغام انکرپٹڈ ہوندے نیں۔ چینل پیغام پبلک ہوندے نیں۔ + دِکھ + سسٹم + ہلکا + گھُپ + ثبوتِ کار (Proof of Work) + PoW بند + PoW چالو + سپیم مشکل کرن لئی geohash پیغام وچ Proof of Work شامل کرو۔ + مشکلی: %1$d بٹ (~%2$s) + مشکلی %1$d لئی ~%2$s ہیش کوششاں چاہیدن + کسے Proof of Work دی لوڑ نئیں + بوہت گھٹ – گھٹ توں گھٹ سپیم تحفظ + گھٹ – بنیادی سپیم تحفظ + درمیانہ – اچھا سپیم تحفظ + وڈا – مضبوط سپیم تحفظ + بوہت وڈا – ڈیلے ہوسکدا اے + انتہائی – وڈی کمپیوٹنگ پاور دی لوڑ + نیٹ ورک + Tor بند + Tor چالو + وَدھ پرائیویسی لئی انٹرنیٹ ٹریفک نوں Tor راہین رُوٹ کرو۔ + Tor حالت: %1$s، بوٹ اسٹرَیپ %2$d%% + آخری: %1$s + ایمرجنسی ڈیٹا صاف + ٹِپ: سارے محفوظ ڈیٹا (پیغام، کُنجیاں، سیٹنگا) مٹاؤن لئی ایپ دے عنوان تے تین وار ٹیپ کرو۔ + ڈی بگ سیٹنگا + اوپن سورس • پرائیویسی پہلے • غیر مرکزی + بند کرو + منسوخ + + + خبردار + لوکیشن سروسز + پرائیویسی + غلطی + بیٹری آپٹمائزیشن + فائدے + بیٹری آپٹمائزیشن چیک ہورہی اے + بیٹری آپٹمائزیشن سپورٹڈ نئیں + بلوٹوتھ + انہ پڑھیا پیغام + نقشہ کھولو + بُک مارک ہٹاؤ + ٹیلپورٹ + چُنے ہوۓ + چینل چھوڑو + Nostr راہین پہنچ ممکن اے + پسندیدہ (آف لائن) + درستگی گھٹاؤ + درستگی وداؤ + geohash چُنو + تھلے سکرول کرو + فائل + تصویر + منسوخ + لنک + میڈیا چُنو + فائل چُنو + موجودہ تصویر سیو کرو + بند کرو + تصویر %1$d توں %2$d + پرائیویسی محفوظ اے + وائس پیغام ریکارڈ کرو + آف لائن میش چیٹ + آن لائن geohash چینل + اینڈ ٹو اینڈ انکرپشن + + + تصویر %1$d وچوں %2$d + تصویر دستیاب نئیں + تصویر \"Downloads\" وچ سیو ہو گئی + تصویر سیو نئیں ہو سکدی + تصویر \"Downloads\" وچ سیو ہو گئی + تصویر سیو نئیں ہو سکدی + فائل چُنو + [فائل دستیاب نئیں] + نامعلوم + + + اس پیغام یا یوزر لئی عمل چُنو + اس یوزر لئی عمل چُنو + پیغام کاپی کرو + ایہ پیغام کلپ بورڈ وچ کاپی کرو + %1$s نوں چپیڑ مارو + مزاحیہ چپیڑ پھجو + %1$s نوں گلے لاؤ + دوستانہ گلے ملنا پھجو + %1$s نوں بلاک کرو + اس یوزر دے سارے پیغام بلاک کرو + + + #لوکیشن چینل + geohash چینلاں راہین اپنے نیڑے والے لوکاں نال چیٹ کرو۔ صرف اوکھا geohash شیئر ہوندا اے، ٹھیک GPS ڈیٹا نئیں۔ پرائیویسی لئی مہربانی کر کے ایہہ ویو اسکرین شاٹ یا شیئر نہ کرو۔ + لوکیشن دی اجازت دو + لوکیشن دی اجازت رد ہوگئی۔ لوکیشن چینل لئی سیٹنگز وچ فعال کرو۔ + سیٹنگز کھولو + \u2713 لوکیشن دی اجازت مل گئی + اجازت چیک ہورہی اے … + نیڑے چینل لبھ رہے آں … + بُک مارک ہویا + Geohash + غلط geohash + ٹیلپورٹ + لوکیشن سروسز بند کرو + لوکیشن سروسز چالو کرو + mesh + بلاک + پڑوس + شہر + صوبہ + خطہ + #bluetooth • %1$s + + + ڈی بگ ٹول + تشخیصی تے کنٹرول لئی ڈویلپر ٹول + تفصیلی لاگنگ + پیئر جوائن/لیو، کنکشن سمت، پیکٹ فارورڈنگ تے ریلے لاگ کرو + بلوٹوتھ کردار + GATT سرور + کنکشن: %1$d / %2$d + وڈ توں وڈ سرور + GATT کلائنٹ + وڈ توں وڈ کلائنٹ + کنکشن: %1$d / %2$d + کل وڈ توں وڈ + پیکٹ ریلے + شروع توں: %1$d + کردار آن/آف کرو تے غیر فعال کرن تے سارے کنکشن بند کرو + سنک سیٹنگا + ہر سنک وِچ وڈ توں وڈ پیکٹ: %1$d + وڈ توں وڈ GCS فلٹر سائز: %1$d بائٹ (128–1024) + ٹارگٹ FPR: %1$.2f%% + جڑے ڈیوائس + ساڈا ڈیوائس ID: %1$s + کچھ وی نئیں + ڈس کنیکٹ + حال ہی وچ سکین ہوۓ ڈیوائس + جڑو + ڈی بگ کنسول + صاف کرو + پچھلے 10s: %1$d • 1m: %2$d • 15m: %3$d + مشتق P: %1$s • اندازاً وڈ توں وڈ عناصر: %2$s + • سیدھا + %1$s • RSSI: %2$s + سرور (اسی ہوسٹ آں) + کلائنٹ (اسی جُڑدے آں) + + + لوکیشن سروسز لازمی نیں + پرائیویسی پہلے + bitchat توانڈی لوکیشن نئیں ٹریک کردا۔\n\nبلوٹوتھ سکیننگ تے geohash چیٹ فیچر لئی لوکیشن سروسز دی لوڑ اے۔ + bitchat نوں لوکیشن سروسز دی لوڑ اے لئی: + • بلوٹوتھ ڈیوائس سکیننگ\n• میش نیٹ ورک وچ نیڑے یوزراں دی تلاش\n• geohash چیٹ فیچر\n• کوئی ٹریکنگ یا لوکیشن جمع نئیں + لوکیشن سیٹنگز کھولو + فیر چیک کرو + لوکیشن سروسز دستیاب نئیں + اس ڈیوائس تے لوکیشن سروسز دستیاب نئیں۔ ایہ غیر معمولی اے کیونجے Android ڈیوائساں تے لوکیشن سروسز معیاری نیں۔\n\nبلوٹوتھ سکیننگ نوں ٹھیک کم کرن لئی bitchat نوں لوکیشن سروسز چاہیدیاں نیں (Android دی شرط)۔ بنا اس دے، ایپ نیڑے یوزر نئیں لبھ سکدی۔ + لوکیشن سروسز چیک ہورھیاں نیں … + بلوٹوتھ لازمی اے + bitchat نوں بلوٹوتھ چاہیدا اے لئی: + • نیڑے یوزر لبھنا\n• میش نیٹ ورک کنکشن بنانا\n• پیغام بھیجنا تے لینا\n• انٹرنیٹ یا سرور توں بغیر کم کرنا + بلوٹوتھ چالو کرو + بلوٹوتھ سپورٹڈ نئیں + ایہ ڈیوائس Bluetooth Low Energy (BLE) نئیں سپورٹ کردا، جو bitchat لئی ضروری اے۔\n\nbitchat نوں BLE چاہیدا اے میش نیٹ ورک بناؤن تے نیڑے ڈیوائساں نال انٹرنیٹ توں بغیر گل کرن لئی۔ + بلوٹوتھ حالت چیک ہورہی اے … + بیٹری آپٹمائزیشن لبھیا گیا + بیٹری آپٹمائزیشن چالو اے + میش کنکشن قائم رکھن لئی bitchat نوں پس منظر وچ چلنا پوے گا۔ بیٹری آپٹمائزیشن ایہ کنکشناں وچ رکاوٹ پا سکدی اے۔ + بند کرن دے فائدے + • معتبر پیغام رسانی\n• میش کنکشن برقرار\n• کنکشن ٹٹّن توں بچاؤ + بیٹری آپٹمائزیشن بند کرو + بیٹری آپٹمائزیشن بند اے + جاری رکھو + میش نیٹ ورک شروع ہورہا اے + بلوٹوتھ میش نیٹ ورک سیٹ اپ ہورہا … + ایہ صرف چند سیکنڈ لگنے چاہیدے نیں + سیٹ اپ مکمل نئیں + فیر کوشِش کرو + توانڈی پرائیویسی محفوظ اے + • کوئی ٹریکنگ یا ڈیٹا جمع نئیں\n• بلوٹوتھ میش چیٹ مکمل آف لائن\n• geohash چیٹ انٹرنیٹ استعمال کردی اے + اجازتاں + اجازت دو + bitchat توانڈی لوکیشن نئیں ٹریک کردا + لوگ + کوئی وی نیڑے نئیں … + (تُسی) + geohash چُنن لئی پین تے زوم کرو + چُنو + پیغام لکھو … + ذکر + (~%1$s) + v%1$s + image/* + تصویر + فائل + + + 📷 تصویر بھیجی + 🎤 وائس پیغام بھیجیا + 📎 فائل بھیجی + + + چلاؤ + روکੋ + PoW مائننگ + PoW چالو + Proof of Work + مائننگ … + pow: %1$dbit + + + بلوٹوتھ راہین bitchat یوزر لبھن لئی ضروری + bitchat نوں نیڑے ڈیوائساں نال جُڑن دی اجازت دو + Android نوں بلوٹوتھ راہین نیڑے bitchat یوزراں دی تلاش لئی لوڑ اے + bitchat نوں نیڑے ڈیوائساں سکین کرن لئی ایہ چاہیدہ + جدو تُہانوں ذاتی پیغام مِلن تاں نوٹیفکیشن لؤ + bitchat نوں نوٹیفکیشن بھیجن دی اجازت دو + ایہ یقینی بناؤن لئی بیٹری آپٹمائزیشن بند کرو کہ bitchat پس منظر وچ معتبر چلّے تے میش نیٹ ورک کنکشناں برقرار رہن + bitchat نوں بغیر بیٹری پابندیاں دے چلّن دی اجازت دو + + + نیڑے ڈیوائس + ٹھیک لوکیشن + مائیکروفون + نوٹیفکیشن + بیٹری آپٹمائزیشن + ہور + + + چینل دا پاس ورڈ لکھو + چینل %1$s پاس ورڈ نال محفوظ اے۔ شامل ہون لئی پاس ورڈ لکھو۔ + پاس ورڈ + شامل ہوو + منسوخ + + + + تے %d ہور + تے %d ہور + + + + 1 بندہ + %d بندے + + + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml new file mode 100644 index 00000000..df589a4b --- /dev/null +++ b/app/src/main/res/values-pl/strings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 00000000..2662de6e --- /dev/null +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + A permissão de Bluetooth é necessária para conversar diretamente com outras pessoas sem internet. + A permissão de localização é necessária para encontrar dispositivos próximos via Bluetooth. + A permissão de notificações é necessária para avisar sobre novas mensagens. + + + Apelido + Digite uma mensagem… + Senha + Entrar no canal + Sair + Enviar + Mostrar comandos + Voltar + Pessoas + Canais + Usuários online + Ninguém conectado + Toque 3 vezes para apagar todos os dados + Sua rede + + + Otimização de bateria detectada + Otimização de bateria desativada + Otimização de bateria não necessária + Verificando otimização de bateria + Por que desativar a otimização de bateria? + O bitchat roda em segundo plano para manter conexões mesh com dispositivos próximos. A otimização de bateria pode interromper essas conexões, fazendo com que mensagens atrasem ou se percam.\n\nDesativar a otimização de bateria garante comunicação P2P confiável. + Desativar otimização de bateria + Nota: Você pode alterar isso depois em Configurações do Android > Apps > bitchat > Bateria. + Seu dispositivo não requer ajustes de otimização de bateria. O bitchat funcionará normalmente. + Seu dispositivo não requer ajustes de otimização de bateria. O bitchat funcionará normalmente. + O bitchat pode operar de forma confiável em segundo plano + • Entrega confiável de mensagens\n• Manutenção da conexão mesh\n• Encaminhamento em segundo plano\n• Evita quedas de conexão + Verificar novamente + Pular agora + Continuar + Tentar novamente + Pular + + + e mais %1$d + %1$d mensagens de %2$d pessoas + e mais %1$d conversas + 👥 pessoas do bitchat por perto! + 1 pessoa por perto + %1$d pessoas por perto + Novas mensagens + Novas mensagens de localização + Mencionado em %1$s + Mencionado em %1$s (+%2$d) + %1$d menções em %2$s + Nova atividade em %1$s + Mensagens em %1$s + %1$s entrou na conversa + bitchat – %1$d menções + bitchat – Chats por localização + %1$d mensagens de %2$d locais + Mencionado no chat mesh + %1$d menções no chat mesh + e mais %1$d locais + e mais %1$d + + + Adicionar aos favoritos + Remover dos favoritos + Adicionar favorito + + + voltar + Canal: %1$s + sair + Acessível via Nostr + Mensagens privadas não lidas + Alternar favorito + Teletransportado + Status do Tor + Peers conectados + Participantes geohash + Pronto para handshake + Handshake em andamento + Criptografado de ponta a ponta + Handshake falhou + + + 📎 Arquivo recebido + 📄 %1$s + 📏 Tamanho: %1$s + 🏷️ Tipo: %1$s + 📂 Abrir / Salvar + ❌ Fechar + Escolher imagem + + + chat mesh descentralizado com criptografia de ponta a ponta + Chat mesh offline + Comunique diretamente via Bluetooth LE sem internet ou servidores. As mensagens são retransmitidas por dispositivos próximos para ampliar o alcance. + Canais geohash online + Conecte-se com pessoas próximas através de canais baseados em geohash. Expanda a mesh por meio de relays públicos na internet. + Criptografia de ponta a ponta + Mensagens privadas são criptografadas. Mensagens de canal são públicas. + Aparência + Sistema + Claro + Escuro + Prova de Trabalho + PoW desligado + PoW ligado + Adicione prova de trabalho às mensagens geohash para dificultar spam. + Dificuldade: %1$d bits (~%2$s) + Dificuldade %1$d requer ~%2$s tentativas de hash + nenhuma prova de trabalho necessária + muito baixa – proteção mínima contra spam + baixa – proteção básica contra spam + média – boa proteção contra spam + alta – proteção forte contra spam + muito alta – pode causar atrasos + extrema – requer muita capacidade de processamento + Rede + Tor desligado + Tor ligado + Roteie o tráfego de internet via Tor para mais privacidade. + Status do Tor: %1$s, bootstrap %2$d%% + Último: %1$s + Limpeza de dados de emergência + Dica: Toque 3 vezes no título do app para apagar todos os dados salvos – incluindo mensagens, chaves e configurações. + Configurações de depuração + Código aberto • Privacidade em primeiro lugar • Descentralizado + Fechar + cancelar + + + Aviso + Serviços de localização + Privacidade + Erro + Otimização de bateria + Benefícios + Verificando otimização de bateria + Otimização de bateria não suportada + Bluetooth + Mensagem não lida + Abrir mapa + Remover favorito + Teletransportar + Selecionado + Sair do canal + Acessível via Nostr + Favorito (offline) + Diminuir precisão + Aumentar precisão + Selecionar geohash + Rolar para o fim + Arquivo + Imagem + Cancelar + Link + Escolher mídia + Escolher arquivo + Salvar imagem atual + Fechar + Imagem %1$d de %2$d + Privacidade protegida + Gravar nota de voz + Chat mesh offline + Canais geohash online + Criptografia de ponta a ponta + + + Imagem %1$d de %2$d + Imagem indisponível + Imagem salva em "Downloads" + Não foi possível salvar a imagem + Imagem salva em "Downloads" + Não foi possível salvar a imagem + Escolher arquivo + [Arquivo indisponível] + desconhecido + + + Escolha uma ação para esta mensagem ou usuário + Escolha uma ação para este usuário + Copiar mensagem + Copiar esta mensagem para a área de transferência + Dar um tapa em %1$s + Enviar um tapa brincalhão + Abraçar %1$s + Enviar um abraço amigável + Bloquear %1$s + Bloquear todas as mensagens deste usuário + + + #Canais de localização + Converse com pessoas próximas através de canais geohash. Apenas um geohash aproximado é compartilhado, nunca dados exatos de GPS. Para preservar sua privacidade, não tire capturas de tela nem compartilhe esta tela. + Conceder permissão de localização + Permissão de localização negada. Ative nas configurações para usar canais de localização. + Abrir configurações + \u2713 Permissão de localização concedida + Verificando permissões… + Procurando canais próximos… + Marcado + Geohash + Geohash inválido + teletransportar + Desativar serviços de localização + Ativar serviços de localização + mesh + Quadra + Vizinhança + Cidade + Estado + Região + #bluetooth • %1$s + + + Ferramentas de depuração + Ferramentas do desenvolvedor para diagnóstico e controle + log detalhado + Registra entradas/saídas de peers, direção da conexão, retransmissão de pacotes e relays + Funções do Bluetooth + Servidor GATT + Conexões: %1$d / %2$d + máx. servidor + Cliente GATT + máx. cliente + Conexões: %1$d / %2$d + máx. geral + Retransmissão de pacotes + desde o início: %1$d + Alternar funções e fechar todas as conexões ao desativar + Configurações de sincronização + máx. pacotes por sincronização: %1$d + máx. tamanho do filtro GCS: %1$d bytes (128–1024) + FPR alvo: %1$.2f%% + dispositivos conectados + nosso ID do dispositivo: %1$s + nenhum + desconectar + dispositivos escaneados recentemente + conectar + Console de depuração + limpar + últimos 10s: %1$d • 1m: %2$d • 15m: %3$d + P derivado: %1$s • itens máx. estimados: %2$s + • direto + %1$s • RSSI: %2$s + como servidor (nós hospedamos) + como cliente (nós conectamos) + + + Serviços de localização necessários + Privacidade em primeiro lugar + O bitchat NÃO rastreia sua localização.\n\nOs serviços de localização são necessários para a varredura do Bluetooth e o recurso de chat geohash. + O bitchat precisa de serviços de localização para: + • Varredura de dispositivos Bluetooth\n• Descobrir usuários próximos na rede mesh\n• Recurso de chat geohash\n• Sem rastreamento nem coleta de localização + Abrir configurações de localização + Verificar novamente + Serviços de localização indisponíveis + Os serviços de localização não estão disponíveis neste dispositivo. Isso é incomum, pois serviços de localização são padrão em dispositivos Android.\n\nO bitchat requer serviços de localização para a varredura Bluetooth funcionar corretamente (requisito do Android). Sem isso, o app não consegue descobrir usuários próximos. + Verificando serviços de localização… + Bluetooth necessário + O bitchat precisa de Bluetooth para: + • Descobrir usuários próximos\n• Criar conexões mesh\n• Enviar e receber mensagens\n• Funcionar sem internet ou servidores + Ativar Bluetooth + Bluetooth não suportado + Este dispositivo não suporta Bluetooth Low Energy (BLE), necessário para o bitchat.\n\nO BLE é necessário para criar redes mesh e comunicar com dispositivos próximos sem internet. + Verificando status do Bluetooth… + Otimização de bateria detectada + Otimização de bateria ativada + O bitchat precisa rodar em segundo plano para manter conexões mesh. A otimização de bateria pode interromper essas conexões. + Benefícios de desativar + • entrega confiável\n• mantém conectividade mesh\n• evita quedas + Desativar otimização de bateria + Otimização de bateria desativada + Continuar + Inicializando rede mesh + Configurando rede mesh Bluetooth… + Deve levar apenas alguns segundos + Configuração não concluída + Tentar novamente + Sua privacidade está protegida + • sem rastreamento ou coleta de dados\n• chats mesh Bluetooth são totalmente offline\n• chats geohash usam internet + Permissões + Conceder permissões + O bitchat NÃO rastreia sua localização + PESSOAS + ninguém por perto… + (você) + arraste/amplie para selecionar um geohash + selecionar + Digite uma mensagem… + mencionar + (~%1$s) + v%1$s + image/* + Imagem + Arquivo + + + 📷 enviou uma imagem + 🎤 enviou uma mensagem de voz + 📎 enviou um arquivo + + + Reproduzir + Pausar + Minerando PoW + PoW ativado + Prova de Trabalho + Minerando… + pow: %1$dbit + + + Necessário para descobrir usuários do bitchat via Bluetooth + Permita que o bitchat se conecte a dispositivos próximos + Necessário pelo Android para descobrir usuários próximos via Bluetooth + O bitchat precisa disso para escanear dispositivos próximos + Receber notificações quando você receber mensagens privadas + Permita que o bitchat envie notificações + Desative a otimização de bateria para que o bitchat funcione de forma confiável em segundo plano e mantenha conexões mesh + Permita que o bitchat funcione sem restrições de bateria + + + Dispositivos próximos + Localização precisa + Microfone + Notificações + Otimização de bateria + Outros + + + Digite a senha do canal + O canal %1$s é protegido por senha. Digite a senha para entrar. + Senha + Entrar + Cancelar + + + + e mais %d + e mais %d + + + + 1 pessoa + %d pessoas + + + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml new file mode 100644 index 00000000..0f30d0e3 --- /dev/null +++ b/app/src/main/res/values-pt/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + A permissão do Bluetooth é necessária para conversar diretamente com outros sem internet. + A permissão de localização é necessária para encontrar dispositivos próximos via Bluetooth. + A permissão de notificações é necessária para alertá-lo sobre novas mensagens. + + + Apelido + Digite uma mensagem… + Palavra-passe + Juntar-se ao canal + Sair + Enviar + Mostrar comandos + Voltar + Pessoas + Canais + Utilizadores online + Ninguém ligado + Toque três vezes para apagar todos os dados + A sua rede + + + Detetada otimização da bateria + Otimização da bateria desativada + Otimização da bateria não necessária + A verificar otimização da bateria + Por que desativar a otimização da bateria? + O bitchat funciona em segundo plano para manter conexões de rede mesh com dispositivos próximos. A otimização da bateria pode interromper essas conexões, fazendo com que as mensagens cheguem atrasadas ou se percam.\n\nDesativar a otimização da bateria garante comunicação peer-to-peer confiável. + Desativar otimização da bateria + Nota: Pode alterar isso posteriormente em Definições do Android > Aplicações > bitchat > Bateria. + O seu dispositivo não requer definições de otimização da bateria. O bitchat funcionará normalmente. + O seu dispositivo não requer definições de otimização da bateria. O bitchat funcionará normalmente. + O bitchat pode funcionar de forma confiável em segundo plano + • Entrega confiável de mensagens\n• Manutenção da conexão mesh\n• Reencaminhamento de mensagens em segundo plano\n• Previne desconexões + Verificar novamente + Ignorar por agora + Continuar + Tentar novamente + Ignorar + + + e mais %1$d + %1$d mensagens de %2$d pessoas + e mais %1$d conversas + 👥 bitchatters por perto! + 1 pessoa por perto + %1$d pessoas por perto + Novas mensagens + Novas mensagens de localização + Mencionado em %1$s + Mencionado em %1$s (+%2$d) + %1$d menções em %2$s + Nova atividade em %1$s + Mensagens em %1$s + %1$s juntou-se à conversa + bitchat – %1$d menções + bitchat – Conversas de localização + %1$d mensagens de %2$d localizações + Mencionado no chat mesh + %1$d menções no chat mesh + e mais %1$d localizações + e mais %1$d + + + Adicionar aos favoritos + Remover dos favoritos + Adicionar marcador + + + voltar + Canal: %1$s + sair + Alcançável via Nostr + Mensagens privadas não lidas + Alternar marcador + Teletransportado + Estado do Tor + Pares ligados + Participantes geohash + Pronto para handshake + Handshake em andamento + Encriptado ponto a ponto + Handshake falhado + + + 📎 Ficheiro recebido + 📄 %1$s + 📏 Tamanho: %1$s + 🏷️ Tipo: %1$s + 📂 Abrir / Guardar + ❌ Fechar + Escolher imagem + + + chat mesh descentralizado com encriptação ponto a ponto + Chat mesh offline + Comunique diretamente via Bluetooth LE sem internet ou servidores. As mensagens são retransmitidas através de dispositivos próximos para estender o alcance. + Canais geohash online + Conecte-se com pessoas perto de si através de canais baseados em geohash. Estenda a mesh através de repetidores de internet pública. + Encriptação ponto a ponto + Mensagens privadas são encriptadas. Mensagens de canal são públicas. + Aparência + Sistema + Claro + Escuro + Prova de Trabalho + PoW desligado + PoW ligado + Adicionar prova de trabalho às mensagens geohash para tornar o spam mais difícil. + Dificuldade: %1$d bits (~%2$s) + Dificuldade %1$d requer ~%2$s tentativas de hash + nenhuma prova de trabalho necessária + muito baixo – proteção mínima contra spam + baixo – proteção básica contra spam + médio – boa proteção contra spam + alto – proteção forte contra spam + muito alto – pode causar atrasos + extremo – requer potência computacional significativa + Rede + Tor desligado + Tor ligado + Encaminhar tráfego de internet através do Tor para maior privacidade. + Estado do Tor: %1$s, bootstrap %2$d%% + Último: %1$s + Limpeza de dados de emergência + Dica: Toque três vezes no título da aplicação para apagar todos os dados guardados – incluindo mensagens, chaves e definições. + Definições de depuração + Código aberto • Privacidade primeiro • Descentralizado + Fechar + cancelar + + + Aviso + Serviços de localização + Privacidade + Erro + Otimização da bateria + Benefícios + A verificar otimização da bateria + Otimização da bateria não suportada + Bluetooth + Mensagem não lida + Abrir mapa + Remover marcador + Teletransportar + Selecionado + Sair do canal + Alcançável via Nostr + Favorito (offline) + Diminuir precisão + Aumentar precisão + Selecionar geohash + Deslocar para baixo + Ficheiro + Imagem + Cancelar + Ligação + Escolher multimédia + Escolher ficheiro + Guardar imagem atual + Fechar + Imagem %1$d de %2$d + Privacidade protegida + Gravar nota de voz + Chat mesh offline + Canais geohash online + Encriptação ponto a ponto + + + Imagem %1$d de %2$d + Imagem indisponível + Imagem guardada em "Transferências" + Não foi possível guardar a imagem + Imagem guardada em "Transferências" + Não foi possível guardar a imagem + Escolher ficheiro + [Ficheiro indisponível] + desconhecido + + + Escolher ação para esta mensagem ou utilizador + Escolher ação para este utilizador + Copiar mensagem + Copiar esta mensagem para a área de transferência + Dar uma palmada em %1$s + Enviar uma palmada brincalhona + Abraçar %1$s + Enviar um abraço amigável + Bloquear %1$s + Bloquear todas as mensagens deste utilizador + + + #Canais de localização + Converse com pessoas perto de si através de canais geohash. Apenas um geohash aproximado é partilhado, nunca dados GPS exatos. Para preservar a sua privacidade, não tire capturas de ecrã nem partilhe este ecrã. + Conceder permissão de localização + Permissão de localização negada. Ative nas definições para usar canais de localização. + Abrir definições + \u2713 Permissão de localização concedida + A verificar permissões… + A procurar canais próximos… + Marcado + Geohash + Geohash inválido + teletransportar + Desativar serviços de localização + Ativar serviços de localização + mesh + Quarteirão + Bairro + Cidade + Província + Região + #bluetooth • %1$s + + + Ferramentas de depuração + Ferramentas de programador para diagnóstico e controlo + registo detalhado + Regista entradas/saídas de pares, direção de conexão, retransmissão de pacotes e repetidores + Funções Bluetooth + Servidor GATT + Conexões: %1$d / %2$d + máx. servidor + Cliente GATT + máx. cliente + Conexões: %1$d / %2$d + máx. geral + Retransmissão de pacotes + desde o início: %1$d + Alternar funções ligado/desligado e fechar todas as conexões ao desativar + Definições de sincronização + máx. pacotes por sincronização: %1$d + máx. tamanho do filtro GCS: %1$d bytes (128–1024) + FPR alvo: %1$.2f%% + dispositivos ligados + nosso ID do dispositivo: %1$s + nenhum + desligar + dispositivos digitalizados recentemente + ligar + Consola de depuração + limpar + últimos 10s: %1$d • 1m: %2$d • 15m: %3$d + P derivado: %1$s • máx. itens estimados: %2$s + • direto + %1$s • RSSI: %2$s + como servidor (nós hospedamos) + como cliente (nós ligamos) + + + Serviços de localização necessários + Privacidade primeiro + O bitchat NÃO rastreia a sua localização.\n\nOs serviços de localização são necessários para a digitalização Bluetooth e a funcionalidade de chat geohash. + O bitchat precisa de serviços de localização para: + • Digitalização de dispositivos Bluetooth\n• Descobrir utilizadores próximos na rede mesh\n• Funcionalidade de chat geohash\n• Sem rastreamento ou recolha de localização + Abrir definições de localização + Verificar novamente + Serviços de localização indisponíveis + Os serviços de localização não estão disponíveis neste dispositivo. Isto é incomum, uma vez que os serviços de localização são padrão em dispositivos Android.\n\nO bitchat requer serviços de localização para o funcionamento adequado da digitalização Bluetooth (requisito do Android). Sem isso, a aplicação não pode descobrir utilizadores próximos. + A verificar serviços de localização… + Bluetooth necessário + O bitchat precisa de Bluetooth para: + • Descobrir utilizadores próximos\n• Criar conexões de rede mesh\n• Enviar e receber mensagens\n• Funcionar sem internet ou servidores + Ativar Bluetooth + Bluetooth não suportado + Este dispositivo não suporta Bluetooth Low Energy (BLE), que é necessário para o bitchat funcionar.\n\nO BLE é necessário para criar redes mesh e comunicar com dispositivos próximos sem internet. + A verificar estado do Bluetooth… + Otimização da bateria detetada + Otimização da bateria ativada + O bitchat precisa de funcionar em segundo plano para manter conexões mesh. A otimização da bateria pode interromper essas conexões. + Benefícios de desativar + • entrega confiável de mensagens\n• mantém conectividade mesh\n• previne desconexões + Desativar otimização da bateria + Otimização da bateria desativada + Continuar + A inicializar rede mesh + A configurar rede mesh Bluetooth… + Isto deve demorar apenas alguns segundos + Configuração não concluída + Tentar novamente + A sua privacidade está protegida + • sem rastreamento ou recolha de dados\n• chats mesh Bluetooth são completamente offline\n• chats geohash usam internet + Permissões + Conceder permissões + O bitchat NÃO rastreia a sua localização + PESSOAS + ninguém por perto… + (você) + arraste e amplie para selecionar um geohash + selecionar + Digite uma mensagem… + mencionar + (~%1$s) + v%1$s + image/* + Imagem + Ficheiro + + + 📷 enviou uma imagem + 🎤 enviou uma nota de voz + 📎 enviou um ficheiro + + + Reproduzir + Pausar + A minerar PoW + PoW ativado + Prova de Trabalho + A minerar… + pow: %1$dbit + + + Necessário para descobrir utilizadores bitchat via Bluetooth + Permitir que o bitchat se ligue a dispositivos próximos + Requerido pelo Android para descobrir utilizadores bitchat próximos via Bluetooth + O bitchat precisa disto para digitalizar dispositivos próximos + Receber notificações quando recebe mensagens privadas + Permitir que o bitchat lhe envie notificações + Desativar otimização da bateria para garantir que o bitchat funcione de forma confiável em segundo plano e mantenha conexões de rede mesh + Permitir que o bitchat funcione sem restrições de bateria + + + Dispositivos próximos + Localização precisa + Microfone + Notificações + Otimização da bateria + Outro + + + Inserir palavra-passe do canal + O canal %1$s está protegido por palavra-passe. Insira a palavra-passe para entrar. + Palavra-passe + Entrar + Cancelar + + + + e mais %d + e mais %d + + + + 1 pessoa + %d pessoas + + + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 00000000..695243a5 --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,343 @@ + + + bitchat + Требуется разрешение Bluetooth для общения p2p без интернета. + Требуется доступ к геопозиции для поиска ближайших устройств по Bluetooth. + Требуется доступ к уведомлениям для оповещения о новых сообщениях. + ник + введите сообщение… + Пароль + Войти в канал + Покинуть + Отправить + Показать команды + Назад + Люди + Каналы + Пользователи онлайн + Нет подключённых + Тройной тап для удаления всех данных + Сеть + + Обнаружена оптимизация батареи + Оптимизация батареи отключена + Оптимизация батареи не требуется + Проверка оптимизации батареи + Зачем отключать оптимизацию? + bitchat работает в фоне для поддержания mesh‑подключений с ближайшими устройствами. Оптимизация батареи может их прервать, что ведёт к задержкам и потерям сообщений.\n\nОтключение гарантирует надёжный обмен p2p. + Отключить оптимизацию + Примечание: это можно изменить позже в Настройки Android > Приложения > bitchat > Батарея + На вашем устройстве не требуются настройки оптимизации. bitchat будет работать штатно. + На вашем устройстве не требуются настройки оптимизации. bitchat будет работать штатно. + bitchat может надёжно работать в фоне + • Надёжная доставка сообщений\n• Поддержка mesh‑связи\n• Фоновая ретрансляция\n• Предотвращение обрывов связи + Проверить снова + Пропустить пока + Продолжить + Повторить + Пропустить + + и ещё %1$d + %1$d сообщений от %2$d людей + и ещё %1$d бесед + 👥 bitchatter рядом! + Рядом 1 человек + Рядом %1$d человек + Новые сообщения + Новые сообщения локаций + Упоминание в %1$s + Упоминание в %1$s (+%2$d) + %1$d упоминаний в %2$s + Новая активность в %1$s + Сообщения в %1$s + %1$s присоединился к беседе + bitchat — %1$d упоминаний + bitchat — чаты по локациям + %1$d сообщений из %2$d локаций + Упоминание в Mesh‑чате + %1$d упоминаний в Mesh‑чате + и ещё %1$d локаций + и ещё %1$d + + В избранное + Убрать из избранного + Добавить закладку + + назад + канал: %1$s + выйти + Доступен через Nostr + Непрочитанные личные + Переключить закладку + Телепортировано + Статус Tor + Подключённые узлы + Участники geohash + Готов к рукопожатию + Рукопожатие… + Сквозное шифрование + Не удалось договориться + + 📎 Получен файл + 📄 %1$s + 📏 Размер: %1$s + 🏷️ Тип: %1$s + 📂 Открыть / Сохранить + ❌ Закрыть + Выбрать изображение + + децентрализованный mesh‑чат со сквозным шифрованием + Оффлайн Mesh‑чат + Общение напрямую по Bluetooth LE без интернета и серверов. Сообщения ретранслируются близлежащими устройствами. + Онлайн‑каналы Geohash + Общайся с людьми поблизости через каналы на основе geohash. Расширяй mesh через публичные ретрансляторы. + Сквозное шифрование + Личные сообщения — зашифрованы. Канальные — публичны. + оформление + система + светлая + тёмная + proof of work + pow выкл + pow вкл + добавь proof of work к сообщениям geohash для защиты от спама. + сложность: %1$d бит (~%2$s) + сложность %1$d ≈ ~%2$s попыток хеширования + proof of work не требуется + очень низкая — минимальная защита + низкая — базовая защита + средняя — хорошая защита + высокая — сильная защита + очень высокая — возможны задержки + экстремальная — требуется много вычислений + сеть + tor выкл + tor вкл + направляй интернет через Tor для приватности. + статус Tor: %1$s, загрузка %2$d%% + Последнее: %1$s + Экстренное удаление данных + Совет: тройной тап по заголовку — удалить все данные (сообщения, ключи, настройки). + Настройки отладки + Open Source • Privacy First • Децентрализация + Закрыть + отмена + + Предупреждение + Службы локации + Приватность + Ошибка + Оптимизация батареи + Преимущества + Проверка оптимизации + Не поддерживается + Bluetooth + Непрочитанное сообщение + Открыть карту + Удалить закладку + Телепорт + Выбрано + Покинуть канал + Доступен через Nostr + Избранное (оффлайн) + Уменьшить точность + Увеличить точность + Выбрать geohash + Прокрутить вниз + Файл + Изображение + Отмена + Ссылка + Выбрать медиа + Записать голос + Оффлайн Mesh‑чат + Онлайн‑каналы Geohash + Сквозное шифрование + + Изображение %1$d / %2$d + Изображение недоступно + Изображение сохранено в «Загрузки» + Не удалось сохранить изображение + Выбрать файл + [файл недоступен] + неизвестно + + выберите действие для сообщения или пользователя + выберите действие для пользователя + копировать сообщение + скопировать сообщение в буфер + дать пощёчину %1$s + отправить шутливую пощёчину + обнять %1$s + отправить дружеские объятия + заблокировать %1$s + заблокировать все сообщения от этого пользователя + + #каналы локации + общайся с людьми рядом через каналы geohash. делится только грубый geohash, никогда точный gps. не делай скриншоты и не делись экраном для защиты приватности. + выдать доступ к локации + доступ к локации запрещён. включите в настройках для использования каналов. + Открыть настройки + \u2713 доступ к локации выдан + проверка разрешений… + поиск близких каналов… + в закладках + geohash + некорректный geohash + телепорт + отключить службы локации + включить службы локации + #bluetooth • %1$s + mesh + квартал + район + город + область + регион + + инструменты отладки + подробное логирование + роли Bluetooth + сервер GATT + подключения: %1$d / %2$d + макс. сервер + клиент GATT + макс. клиент + подключения: %1$d / %2$d + макс. всего + ретрансляция пакетов + с начала: %1$d + настройки синхр. + макс. пакетов на синхр.: %1$d + макс. размер фильтра GCS: %1$d байт (128–1024) + целевой FPR: %1$.2f%% + подключённые устройства + ID нашего устройства: %1$s + нет + отключить + последние результаты сканирования + подключить + консоль отладки + очистить + посл. 10с: %1$d • 1м: %2$d • 15м: %3$d + выведенный P: %1$s • оцен. макс. элементов: %2$s + • напрямую + %1$s • RSSI: %2$s + ? + как сервер (мы хостим) + как клиент (мы подключаемся) + + Требуются службы локации + Приватность прежде всего + bitchat НЕ отслеживает вашу геопозицию.\n\nСлужбы локации нужны для сканирования Bluetooth и функции чата Geohash. + bitchat нужны службы локации для: + • Сканирования устройств Bluetooth\n• Поиска ближайших пользователей в mesh\n• Функции чата Geohash\n• Без отслеживания и сбора геоданных + Открыть настройки локации + Проверить снова + Службы локации недоступны + На этом устройстве службы локации недоступны — это необычно.\n\nОни требуются Android для корректной работы сканирования Bluetooth. Иначе невозможно обнаружить ближайших пользователей. + Проверка служб локации… + Требуется Bluetooth + bitchat нужен Bluetooth для: + • Обнаружения ближайших пользователей\n• Создания mesh‑подключений\n• Отправки и получения сообщений\n• Работы без интернета/серверов + Включить Bluetooth + Bluetooth не поддерживается + Это устройство не поддерживает Bluetooth Low Energy (BLE), необходимый для работы bitchat.\n\nBLE нужен для построения mesh и обмена с ближайшими устройствами без интернета. + Проверка статуса Bluetooth… + обнаружена оптимизация батареи + Оптимизация включена + bitchat должен работать в фоне для mesh; оптимизация может прерывать. + Преимущества отключения + • надёжная доставка\n• поддержка связности\n• предотвращает обрывы + Отключить оптимизацию + оптимизация отключена + Продолжить + Инициализация mesh‑сети + . + Настройка Bluetooth mesh… + Займёт лишь несколько секунд + ⚠️ + Настройка не завершена + Повторить + Ваша приватность защищена + • без трекинга и сбора данных\n• Bluetooth‑mesh чаты полностью оффлайн\n• Geohash‑чаты используют интернет + разрешения + Выдать разрешения + bitchat НЕ отслеживает вашу геопозицию + @ + bitchat/ + · ⧉ + ЛЮДИ + никого рядом… + (вы) + прокрутите/масштабируйте для выбора geohash + выбрать + введите сообщение… + @%1$s + упоминание + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + Изображение + Файл + + + + + ✓✓ + + + + 📷 отправил изображение + 🎤 отправил голосовое + 📎 отправил файл + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + Воспроизвести + Пауза + + Нужно для поиска пользователей bitchat по Bluetooth + Разрешить bitchat подключаться к ближайшим устройствам + Требуется Android для поиска по Bluetooth + bitchat нужно для сканирования ближайших устройств + Получать уведомления о личных сообщениях + Разрешить bitchat отправлять вам уведомления + Отключить оптимизацию, чтобы bitchat работал в фоне и поддерживал mesh‑связь + Разрешить работу без ограничений батареи + + Ближайшие устройства + Точная геопозиция + Микрофон + Уведомления + Оптимизация батареи + Другое + + Введите пароль канала + Канал %1$s защищён паролем. Введите пароль, чтобы присоединиться. + Пароль + Войти + Отмена + + + и ещё %d + и ещё %d + + + + 1 человек + %d человек + + + diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml new file mode 100644 index 00000000..bb538367 --- /dev/null +++ b/app/src/main/res/values-sv/strings.xml @@ -0,0 +1,341 @@ + + + bitchat + Bluetooth-behörighet krävs för direktmeddelanden utan internet. + Platsbehörighet krävs för att hitta enheter i närheten via Bluetooth. + Aviseringsbehörighet krävs för att meddela nya meddelanden. + smeknamn + skriv ett meddelande… + Lösenord + Gå med i kanal + Lämna + Skicka + Visa kommandon + Tillbaka + Personer + Kanaler + Användare online + Ingen ansluten + Tryck tre gånger för att rensa all data + Nätverk + + Batterioptimering upptäckt + Batterioptimering inaktiverad + Batterioptimering krävs inte + Kontrollerar batterioptimering + Varför inaktivera? + bitchat körs i bakgrunden för att upprätthålla mesh-anslutningar till enheter i närheten. Batterioptimering kan avbryta dessa och orsaka fördröjda eller missade meddelanden.\n\nAtt inaktivera säkerställer tillförlitlig P2P-meddelandetrafik. + Inaktivera optimering + Obs: kan ändras senare i Android-inställningar > Appar > bitchat > Batteri + Din enhet kräver inte batterioptimeringsinställningar. bitchat körs normalt. + Din enhet kräver inte batterioptimeringsinställningar. bitchat körs normalt. + bitchat kan köras tillförlitligt i bakgrunden + • Tillförlitlig leverans\n• Upprätthåller mesh-anslutning\n• Bakgrundsrelä\n• Förhindrar avbrott + Kontrollera igen + Hoppa över nu + Fortsätt + Försök igen + Hoppa över + + och %1$d till + %1$d meddelanden från %2$d personer + och %1$d fler konversationer + 👥 bitchatter i närheten! + 1 person i närheten + %1$d personer i närheten + Nya meddelanden + Nya platsmeddelanden + Nämnd i %1$s + Nämnd i %1$s (+%2$d till) + %1$d nämningar i %2$s + Ny aktivitet i %1$s + Meddelanden i %1$s + %1$s gick med i konversationen + bitchat – %1$d nämningar + bitchat – platschattar + %1$d meddelanden från %2$d platser + Nämnd i Mesh‑chatt + %1$d nämningar i Mesh‑chatt + och %1$d fler platser + och %1$d till + + Lägg till som favorit + Ta bort favorit + Lägg till bokmärke + + tillbaka + kanal: %1$s + lämna + Nås via Nostr + Olästa privata meddelanden + Växla bokmärke + Teleporterad + Tor‑status + Anslutna noder + Geohash‑deltagare + Redo för handshake + Handshake pågår + Ända‑till‑ända‑krypterat + Handshake misslyckades + + 📎 Fil mottagen + 📄 %1$s + 📏 Storlek: %1$s + 🏷️ Typ: %1$s + 📂 Öppna / Spara + ❌ Stäng + Välj bild + + decentraliserad mesh‑meddelanden med ända‑till‑ända‑kryptering + Offline Mesh‑chatt + Kommunicera direkt via Bluetooth LE utan internet eller servrar. Meddelanden reläas av enheter i närheten. + Online Geohash‑kanaler + Anslut med personer i närheten via geohash‑kanaler. Utöka mesh via publika internetreläer. + Ända‑till‑ända‑kryptering + Privata meddelanden är krypterade. Kanalmeddelanden är publika. + utseende + system + ljus + mörk + proof of work + pow av + pow på + lägg till proof of work i geohash‑meddelanden för att hindra spam. + svårighet: %1$d bitar (~%2$s) + svårighet %1$d kräver ~%2$s hash‑försök + inget proof of work krävs + mycket låg – minimal skydd + låg – grundläggande skydd + medel – bra skydd + hög – starkt skydd + mycket hög – kan orsaka fördröjning + extrem – kräver mycket beräkning + nätverk + tor av + tor på + routa internet via Tor för ökad integritet. + Tor‑status: %1$s, bootstrap %2$d%% + Senast: %1$s + Nödradering av data + Tips: tryck tre gånger på appens titel för att radera alla data (meddelanden, nycklar, inställningar). + Felsökningsinställningar + Open Source • Privacy First • Decentraliserad + Stäng + avbryt + + Varning + Plats­tjänster + Integritet + Fel + Batterioptimering + Fördelar + Kontrollerar optimering + Stöds ej + Bluetooth + Oläst meddelande + Öppna karta + Ta bort bokmärke + Teleportera + Vald + Lämna kanal + Nås via Nostr + Favorit (offline) + Minska precision + Öka precision + Välj geohash + Rulla längst ned + Fil + Bild + Avbryt + Länk + Välj media + Spela in röstanteckning + Offline Mesh‑chatt + Online Geohash‑kanaler + Ända‑till‑ända‑kryptering + + Bild %1$d / %2$d + Bild ej tillgänglig + Bild sparad i "Hämtade filer" + Kunde inte spara bild + Välj fil + [fil ej tillgänglig] + okänd + + välj en åtgärd för meddelandet eller användaren + välj en åtgärd för den här användaren + kopiera meddelande + kopiera meddelandet till urklipp + ge %1$s en örfil + skicka en skämtsam örfil + krama %1$s + skicka en vänlig kram + blockera %1$s + blockera alla meddelanden från den här användaren + + #platskanaler + chatta med folk nära dig via geohash‑kanaler. endast en grov geohash delas, aldrig exakt gps. ta inte skärmdumpar eller dela skärmen för att skydda din integritet. + ge platsbehörighet + platsbehörighet nekades. aktivera i inställningar för att använda platskanaler. + Öppna inställningar + \u2713 platsbehörighet beviljad + kontrollerar behörigheter… + söker efter kanaler i närheten… + bokmärkt + geohash + ogiltig geohash + teleportera + inaktivera platstjänster + aktivera platstjänster + #bluetooth • %1$s + mesh + kvarter + grannskap + stad + län + region + + felsökningsverktyg + utförlig loggning + Bluetooth‑roller + GATT‑server + anslutningar: %1$d / %2$d + max server + GATT‑klient + max klient + anslutningar: %1$d / %2$d + max totalt + paketrelä + sedan start: %1$d + synkinställningar + max paket per synk: %1$d + max GCS‑filterstorlek: %1$d byte (128–1024) + mål‑FPR: %1$.2f%% + anslutna enheter + vår enhets‑ID: %1$s + ingen + koppla från + senaste skanningsresultat + anslut + felsökningskonsol + rensa + senaste 10 s: %1$d • 1 m: %2$d • 15 m: %3$d + härlett P: %1$s • uppsk. max element: %2$s + • direkt + %1$s • RSSI: %2$s + ? + som server (vi hostar) + som klient (vi ansluter) + + Platstjänster krävs + Integritet först + bitchat SPÅRAR INTE din plats.\n\nPlatstjänster krävs för Bluetooth‑skanning och Geohash‑chatt. + bitchat behöver platstjänster för: + • Bluetooth‑skanning av enheter\n• Hitta användare i närheten i mesh‑nätet\n• Geohash‑chatt\n• Ingen spårning eller insamling + Öppna platsinställningar + Kontrollera igen + Platstjänster inte tillgängliga + Platstjänster saknas på den här enheten. Det är ovanligt.\n\nAndroid kräver dem för att Bluetooth‑skanning ska fungera. Utan dem kan vi inte hitta användare i närheten. + Kontrollerar platstjänster… + Bluetooth krävs + bitchat behöver Bluetooth för: + • Hitta användare i närheten\n• Skapa mesh‑anslutningar\n• Skicka och ta emot meddelanden\n• Fungera utan internet/ servrar + Aktivera Bluetooth + Bluetooth stöds inte + Denna enhet stöder inte Bluetooth Low Energy (BLE), vilket krävs för bitchat.\n\nBLE behövs för att bygga mesh och kommunicera utan internet. + Kontrollerar Bluetooth‑status… + batterioptimering upptäckt + Batterioptimering på + bitchat måste köra i bakgrunden för mesh; optimering kan bryta. + Fördelar med inaktivering + • tillförlitlig leverans\n• håller anslutning\n• förhindrar avbrott + Inaktivera optimering + optimering av + Fortsätt + Initierar mesh‑nätverk + . + Ställer in Bluetooth‑mesh… + Det tar bara några sekunder + ⚠️ + Slutför inte inställningen + Försök igen + Din integritet är skyddad + • ingen spårning eller insamling\n• Bluetooth‑mesh‑chattar helt offline\n• geohash‑chattar använder internet + behörigheter + Ge behörigheter + bitchat spårar INTE din plats + @ + bitchat/ + · ⧉ + PERSONER + ingen i närheten… + (du) + panorera och zooma för att välja geohash + välj + skriv ett meddelande… + @%1$s + nämn + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + Bild + Fil + + + + + ✓✓ + + + + 📷 skickade en bild + 🎤 skickade ett röstmeddelande + 📎 skickade en fil + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + Spela + Pausa + + Krävs för att hitta bitchat‑användare via Bluetooth + Tillåt bitchat att ansluta till enheter i närheten + Krävs av Android för att hitta användare via Bluetooth + bitchat behöver detta för att skanna enheter + Ta emot aviseringar vid privata meddelanden + Tillåt bitchat att skicka aviseringar + Inaktivera batterioptimering för tillförlitlig drift i bakgrunden och mesh‑anslutning + Tillåt körning utan batteribegränsningar + + Enheter i närheten + Exakt plats + Mikrofon + Aviseringar + Batterioptimering + Övrigt + + Ange kanalens lösenord + Kanal %1$s är lösenordsskyddad. Ange lösenordet för att gå med. + Lösenord + Gå med + Avbryt + + + och %d till + och %d till + + + 1 person + %d personer + + diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml new file mode 100644 index 00000000..76893af8 --- /dev/null +++ b/app/src/main/res/values-ta/strings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml new file mode 100644 index 00000000..47c21461 --- /dev/null +++ b/app/src/main/res/values-th/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + จำเป็นต้องมีสิทธิ์บลูทูธเพื่อแชทโดยตรงกับผู้อื่นโดยไม่ใช้อินเทอร์เน็ต + จำเป็นต้องมีสิทธิ์ตำแหน่งเพื่อค้นหาอุปกรณ์ใกล้เคียงผ่านบลูทูธ + จำเป็นต้องมีสิทธิ์การแจ้งเตือนเพื่อแจ้งเตือนคุณเมื่อมีข้อความใหม่ + + + ชื่อเล่น + พิมพ์ข้อความ… + รหัสผ่าน + เข้าร่วมช่อง + ออก + ส่ง + แสดงคำสั่ง + กลับ + ผู้คน + ช่อง + ผู้ใช้ที่ออนไลน์ + ไม่มีการเชื่อมต่อ + แตะสามครั้งเพื่อลบข้อมูลทั้งหมด + เครือข่ายของคุณ + + + ตรวจพบการเพิ่มประสิทธิภาพแบตเตอรี่ + ปิดการเพิ่มประสิทธิภาพแบตเตอรี่แล้ว + ไม่จำเป็นต้องเพิ่มประสิทธิภาพแบตเตอรี่ + กำลังตรวจสอบการเพิ่มประสิทธิภาพแบตเตอรี่ + ทำไมต้องปิดการเพิ่มประสิทธิภาพแบตเตอรี่? + bitchat ทำงานเบื้องหลังเพื่อคงการเชื่อมต่อแบบเมชกับอุปกรณ์ใกล้เคียง การเพิ่มประสิทธิภาพแบตเตอรี่อาจขัดจังหวะการเชื่อมต่อเหล่านี้ ทำให้ข้อความล่าช้าหรือสูญหาย\n\nการปิดการเพิ่มประสิทธิภาพแบตเตอรี่ช่วยให้การสื่อสารแบบเพียร์ทูเพียร์เชื่อถือได้ + ปิดการเพิ่มประสิทธิภาพแบตเตอรี่ + หมายเหตุ: คุณสามารถเปลี่ยนได้ภายหลังที่ การตั้งค่า Android > แอป > bitchat > แบตเตอรี่ + อุปกรณ์ของคุณไม่ต้องการการตั้งค่าการเพิ่มประสิทธิภาพแบตเตอรี่ bitchat จะทำงานตามปกติ + อุปกรณ์ของคุณไม่ต้องการการตั้งค่าการเพิ่มประสิทธิภาพแบตเตอรี่ bitchat จะทำงานตามปกติ + bitchat สามารถทำงานเบื้องหลังได้อย่างเชื่อถือได้ + • ส่งข้อความได้อย่างเชื่อถือ\n• รักษาการเชื่อมต่อแบบเมช\n• ส่งต่อข้อความเบื้องหลัง\n• ป้องกันการหลุดการเชื่อมต่อ + ตรวจสอบอีกครั้ง + ข้ามตอนนี้ + ดำเนินการต่อ + ลองอีกครั้ง + ข้าม + + + และอีก %1$d + ข้อความ %1$d จาก %2$d คน + และการสนทนาอีก %1$d รายการ + 👥 มีผู้ใช้ใกล้คุณ! + มี 1 คนใกล้คุณ + มี %1$d คนใกล้คุณ + ข้อความใหม่ + ข้อความตำแหน่งใหม่ + ถูกกล่าวถึงใน %1$s + ถูกกล่าวถึงใน %1$s (+%2$d) + มี %1$d การกล่าวถึงใน %2$s + กิจกรรมใหม่ใน %1$s + ข้อความใน %1$s + %1$s ได้เข้าร่วมการสนทนา + bitchat – %1$d การกล่าวถึง + bitchat – แชทตามตำแหน่ง + %1$d ข้อความจาก %2$d พื้นที่ + ถูกกล่าวถึงในแชทเมช + ถูกกล่าวถึง %1$d ครั้งในแชทเมช + และอีก %1$d พื้นที่ + และอีก %1$d + + + เพิ่มในรายการโปรด + เอาออกจากรายการโปรด + เพิ่มที่คั่นหน้า + + + กลับ + ช่อง: %1$s + ออก + ติดต่อได้ผ่าน Nostr + ข้อความส่วนตัวยังไม่ได้อ่าน + สลับที่คั่นหน้า + เทเลพอร์ตแล้ว + สถานะ Tor + เพียร์ที่เชื่อมต่อ + ผู้เข้าร่วม geohash + พร้อมสำหรับการจับมือ + กำลังจับมือ + เข้ารหัสจากปลายทางถึงปลายทาง + การจับมือล้มเหลว + + + 📎 รับไฟล์แล้ว + 📄 %1$s + 📏 ขนาด: %1$s + 🏷️ ประเภท: %1$s + 📂 เปิด / บันทึก + ❌ ปิด + เลือกภาพ + + + แชทเมชแบบกระจายศูนย์พร้อมการเข้ารหัสแบบปลายทางถึงปลายทาง + แชทเมชออฟไลน์ + สื่อสารโดยตรงผ่าน Bluetooth LE โดยไม่ใช้อินเทอร์เน็ตหรือเซิร์ฟเวอร์ ข้อความจะถูกส่งต่อผ่านอุปกรณ์ใกล้เคียงเพื่อขยายระยะ + ช่อง geohash ออนไลน์ + เชื่อมต่อกับผู้คนใกล้คุณผ่านช่องที่อ้างอิง geohash ขยายเมชผ่านรีเลย์อินเทอร์เน็ตสาธารณะ + การเข้ารหัสแบบปลายทางถึงปลายทาง + ข้อความส่วนตัวถูกเข้ารหัส ข้อความในช่องเป็นสาธารณะ + ลักษณะ + ระบบ + สว่าง + มืด + พิสูจน์ผลงาน (Proof of Work) + ปิด PoW + เปิด PoW + เพิ่ม Proof of Work ให้ข้อความ geohash เพื่อยากต่อการสแปม + ความยาก: %1$d บิต (~%2$s) + ความยาก %1$d ต้องใช้การลองแฮชประมาณ %2$s ครั้ง + ไม่ต้องใช้ Proof of Work + ต่ำมาก – ป้องกันสแปมน้อยที่สุด + ต่ำ – ป้องกันสแปมพื้นฐาน + ปานกลาง – ป้องกันสแปมได้ดี + สูง – ป้องกันสแปมอย่างแข็งแรง + สูงมาก – อาจทำให้เกิดความล่าช้า + สูงสุด – ต้องใช้ทรัพยากรคำนวณมาก + เครือข่าย + ปิด Tor + เปิด Tor + กำหนดเส้นทางทราฟฟิกอินเทอร์เน็ตผ่าน Tor เพื่อเพิ่มความเป็นส่วนตัว + สถานะ Tor: %1$s, การบูต %2$d%% + ล่าสุด: %1$s + ลบข้อมูลฉุกเฉิน + เคล็ดลับ: แตะชื่อแอปสามครั้งเพื่อลบข้อมูลที่บันทึกทั้งหมด – รวมทั้งข้อความ กุญแจ และการตั้งค่า + การตั้งค่าดีบัก + โอเพนซอร์ส • ความเป็นส่วนตัวมาก่อน • กระจายศูนย์ + ปิด + ยกเลิก + + + คำเตือน + บริการตำแหน่ง + ความเป็นส่วนตัว + ข้อผิดพลาด + การเพิ่มประสิทธิภาพแบตเตอรี่ + ประโยชน์ + กำลังตรวจสอบการเพิ่มประสิทธิภาพแบตเตอรี่ + ไม่รองรับการเพิ่มประสิทธิภาพแบตเตอรี่ + Bluetooth + ข้อความที่ยังไม่ได้อ่าน + เปิดแผนที่ + เอาที่คั่นหน้าออก + เทเลพอร์ต + ที่เลือก + ออกจากช่อง + ติดต่อได้ผ่าน Nostr + รายการโปรด (ออฟไลน์) + ลดความแม่นยำ + เพิ่มความแม่นยำ + เลือก geohash + เลื่อนไปด้านล่างสุด + ไฟล์ + รูปภาพ + ยกเลิก + ลิงก์ + เลือกมีเดีย + เลือกไฟล์ + บันทึกรูปภาพปัจจุบัน + ปิด + รูปภาพ %1$d จาก %2$d + คุ้มครองความเป็นส่วนตัว + บันทึกบันทึกเสียง + แชทเมชออฟไลน์ + ช่อง geohash ออนไลน์ + การเข้ารหัสแบบปลายทางถึงปลายทาง + + + รูปภาพ %1$d จาก %2$d + ไม่สามารถใช้รูปภาพได้ + บันทึกรูปภาพไว้ใน "ดาวน์โหลด" แล้ว + ไม่สามารถบันทึกรูปภาพได้ + บันทึกรูปภาพไว้ใน "ดาวน์โหลด" แล้ว + ไม่สามารถบันทึกรูปภาพได้ + เลือกไฟล์ + [ไม่สามารถใช้ไฟล์ได้] + ไม่ทราบ + + + เลือกการทำงานสำหรับข้อความนี้หรือผู้ใช้นี้ + เลือกการทำงานสำหรับผู้ใช้นี้ + คัดลอกข้อความ + คัดลอกข้อความนี้ไปยังคลิปบอร์ด + ตบ %1$s + ส่งตบแบบขำ ๆ + กอด %1$s + ส่งกอดแบบเป็นมิตร + บล็อก %1$s + บล็อกข้อความทั้งหมดจากผู้ใช้นี้ + + + #ช่องตามตำแหน่ง + แชทกับผู้คนใกล้คุณผ่านช่อง geohash จะแชร์เฉพาะ geohash โดยคร่าว ๆ เท่านั้น ไม่ใช่ข้อมูล GPS ที่แม่นยำ เพื่อคุ้มครองความเป็นส่วนตัวของคุณ โปรดอย่าถ่ายภาพหน้าจอหรือแชร์หน้าจอนี้ + ให้สิทธิ์ตำแหน่ง + ปฏิเสธสิทธิ์ตำแหน่ง เปิดใช้งานในการตั้งค่าเพื่อใช้ช่องตามตำแหน่ง + เปิดการตั้งค่า + \u2713 อนุญาตตำแหน่งแล้ว + กำลังตรวจสอบสิทธิ์… + กำลังค้นหาช่องใกล้เคียง… + มีที่คั่นหน้า + Geohash + geohash ไม่ถูกต้อง + เทเลพอร์ต + ปิดบริการตำแหน่ง + เปิดบริการตำแหน่ง + mesh + บล็อก + ละแวกใกล้เคียง + เมือง + จังหวัด + ภูมิภาค + #bluetooth • %1$s + + + เครื่องมือดีบัก + เครื่องมือสำหรับนักพัฒนาสำหรับการวินิจฉัยและควบคุม + การบันทึกแบบละเอียด + บันทึกการเข้าร่วม/ออกของเพียร์ ทิศทางการเชื่อมต่อ การส่งต่อแพ็กเก็ต และรีเลย์ + บทบาทบลูทูธ + เซิร์ฟเวอร์ GATT + การเชื่อมต่อ: %1$d / %2$d + สูงสุดของเซิร์ฟเวอร์ + ไคลเอนต์ GATT + สูงสุดของไคลเอนต์ + การเชื่อมต่อ: %1$d / %2$d + รวมสูงสุด + การส่งต่อแพ็กเก็ต + ตั้งแต่เริ่มต้น: %1$d + สลับบทบาทและปิดการเชื่อมต่อทั้งหมดเมื่อปิดใช้งาน + การตั้งค่าการซิงค์ + แพ็กเก็ตสูงสุดต่อการซิงค์: %1$d + ขนาดตัวกรอง GCS สูงสุด: %1$d ไบต์ (128–1024) + อัตราบวกเทียมเป้าหมาย: %1$.2f%% + อุปกรณ์ที่เชื่อมต่อ + รหัสอุปกรณ์ของเรา: %1$s + ไม่มี + ตัดการเชื่อมต่อ + อุปกรณ์ที่สแกนล่าสุด + เชื่อมต่อ + คอนโซลดีบัก + ล้าง + 10 วิ ล่าสุด: %1$d • 1 นาที: %2$d • 15 นาที: %3$d + P ที่ได้มา: %1$s • จำนวนรายการสูงสุดโดยประมาณ: %2$s + • โดยตรง + %1$s • RSSI: %2$s + ในบทบาทเซิร์ฟเวอร์ (เราเป็นโฮสต์) + ในบทบาทไคลเอนต์ (เราเชื่อมต่อ) + + + ต้องใช้บริการตำแหน่ง + ความเป็นส่วนตัวมาก่อน + bitchat ไม่ติดตามตำแหน่งของคุณ\n\nต้องใช้บริการตำแหน่งสำหรับการสแกนบลูทูธและคุณสมบัติแชท geohash + bitchat ต้องใช้บริการตำแหน่งสำหรับ: + • สแกนอุปกรณ์บลูทูธ\n• ค้นพบผู้ใช้ใกล้เคียงในเครือข่ายเมช\n• คุณสมบัติแชท geohash\n• ไม่มีการติดตามหรือเก็บตำแหน่ง + เปิดการตั้งค่าตำแหน่ง + ตรวจสอบอีกครั้ง + ไม่สามารถใช้บริการตำแหน่งได้ + บริการตำแหน่งไม่สามารถใช้ได้ในอุปกรณ์นี้ ซึ่งผิดปกติเนื่องจากโดยทั่วไปแล้วอุปกรณ์ Android จะมีบริการตำแหน่ง\n\nต้องใช้บริการตำแหน่งเพื่อให้การสแกนบลูทูธทำงานได้อย่างถูกต้อง (ข้อกำหนดของ Android) หากไม่มี แอปจะไม่สามารถค้นพบผู้ใช้ใกล้เคียงได้ + กำลังตรวจสอบบริการตำแหน่ง… + ต้องใช้บลูทูธ + bitchat ต้องใช้บลูทูธสำหรับ: + • ค้นพบผู้ใช้ใกล้เคียง\n• สร้างการเชื่อมต่อเครือข่ายเมช\n• ส่งและรับข้อความ\n• ทำงานโดยไม่ใช้อินเทอร์เน็ตหรือเซิร์ฟเวอร์ + เปิดบลูทูธ + ไม่รองรับบลูทูธ + อุปกรณ์นี้ไม่รองรับ Bluetooth Low Energy (BLE) ซึ่งจำเป็นสำหรับการทำงานของ bitchat\n\nต้องใช้ BLE เพื่อสร้างเครือข่ายเมชและสื่อสารกับอุปกรณ์ใกล้เคียงโดยไม่ใช้อินเทอร์เน็ต + กำลังตรวจสอบสถานะบลูทูธ… + ตรวจพบการเพิ่มประสิทธิภาพแบตเตอรี่ + เปิดใช้การเพิ่มประสิทธิภาพแบตเตอรี่ + bitchat ต้องทำงานเบื้องหลังเพื่อคงการเชื่อมต่อแบบเมช การเพิ่มประสิทธิภาพแบตเตอรี่อาจขัดจังหวะการเชื่อมต่อเหล่านี้ + ประโยชน์ของการปิดใช้งาน + • ส่งข้อความได้อย่างเชื่อถือ\n• รักษาการเชื่อมต่อแบบเมช\n• ป้องกันการหลุดการเชื่อมต่อ + ปิดการเพิ่มประสิทธิภาพแบตเตอรี่ + ปิดการเพิ่มประสิทธิภาพแบตเตอรี่แล้ว + ดำเนินการต่อ + กำลังเริ่มต้นเครือข่ายเมช + กำลังตั้งค่าเครือข่ายเมช Bluetooth… + ควรใช้เวลาเพียงไม่กี่วินาที + ตั้งค่าไม่เสร็จสมบูรณ์ + ลองอีกครั้ง + ความเป็นส่วนตัวของคุณได้รับการคุ้มครอง + • ไม่มีการติดตามหรือเก็บข้อมูล\n• แชทเมชบลูทูธทำงานแบบออฟไลน์ทั้งหมด\n• แชท geohash ใช้อินเทอร์เน็ต + สิทธิ์ + ให้สิทธิ์ + bitchat ไม่ติดตามตำแหน่งของคุณ + ผู้คน + ไม่มีใครอยู่ใกล้… + (คุณ) + ลาก/ซูมเพื่อเลือก geohash + เลือก + พิมพ์ข้อความ… + กล่าวถึง + (~%1$s) + v%1$s + image/* + รูปภาพ + ไฟล์ + + + 📷 ส่งรูปภาพแล้ว + 🎤 ส่งบันทึกเสียงแล้ว + 📎 ส่งไฟล์แล้ว + + + เล่น + หยุดชั่วคราว + กำลังขุด PoW + เปิดใช้ PoW + Proof of Work + กำลังขุด… + pow: %1$dbit + + + จำเป็นสำหรับการค้นหาผู้ใช้ bitchat ผ่านบลูทูธ + อนุญาตให้ bitchat เชื่อมต่อกับอุปกรณ์ใกล้เคียง + ข้อกำหนดของ Android สำหรับการค้นหาผู้ใช้ bitchat ใกล้เคียงผ่านบลูทูธ + bitchat ต้องใช้สิ่งนี้เพื่อสแกนอุปกรณ์ใกล้เคียง + รับการแจ้งเตือนเมื่อคุณได้รับข้อความส่วนตัว + อนุญาตให้ bitchat ส่งการแจ้งเตือนถึงคุณ + ปิดการเพิ่มประสิทธิภาพแบตเตอรี่เพื่อให้ bitchat ทำงานได้อย่างเชื่อถือในเบื้องหลังและคงการเชื่อมต่อแบบเมช + อนุญาตให้ bitchat ทำงานโดยไม่มีข้อจำกัดของแบตเตอรี่ + + + อุปกรณ์ใกล้เคียง + ตำแหน่งที่แม่นยำ + ไมโครโฟน + การแจ้งเตือน + การเพิ่มประสิทธิภาพแบตเตอรี่ + อื่น ๆ + + + ป้อนรหัสผ่านของช่อง + ช่อง %1$s มีการป้องกันด้วยรหัสผ่าน ป้อนรหัสผ่านเพื่อเข้าร่วม + รหัสผ่าน + เข้าร่วม + ยกเลิก + + + + และอีก %d + และอีก %d + + + + 1 คน + %d คน + + + diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml new file mode 100644 index 00000000..d5babcbc --- /dev/null +++ b/app/src/main/res/values-tr/strings.xml @@ -0,0 +1,341 @@ + + + bitchat + İnternetsiz eşler arası mesajlaşma için Bluetooth izni gerekir. + Bluetooth ile yakın cihazları bulmak için konum izni gerekir. + Yeni mesajlarda bildirim gönderebilmek için izin gerekir. + takma ad + mesaj yaz… + Parola + Kanala katıl + Ayrıl + Gönder + Komutları göster + Geri + Kişiler + Kanallar + Çevrimiçi kullanıcılar + Bağlı kimse yok + Tüm verileri silmek için üç kez dokun + + + Pil optimizasyonu algılandı + Pil optimizasyonu devre dışı + Pil optimizasyonu gerekmiyor + Pil optimizasyonu kontrol ediliyor + Neden devre dışı bırakmalı? + bitchat yakındaki cihazlarla mesh bağlantısını sürdürmek için arka planda çalışır. Pil optimizasyonu bu bağlantıları kesebilir ve mesajlar gecikebilir/ kaybolabilir.\n\nDevre dışı bırakmak güvenilir eşler arası mesajlaşmayı sağlar. + Optimizasyonu kapat + Not: Daha sonra Ayarlar > Uygulamalar > bitchat > Pil üzerinden değiştirebilirsin. + Cihazının pil optimizasyonu ayarlarına ihtiyacı yok. bitchat normal çalışır. + Cihazının pil optimizasyonu ayarlarına ihtiyacı yok. bitchat normal çalışır. + bitchat arka planda güvenle çalışabilir + • Güvenilir mesaj teslimi\n• Mesh bağlantısını korur\n• Arka planda iletim\n• Kopmaları önler + Tekrar kontrol et + Şimdilik atla + Devam + Yeniden dene + Atla + + ve %1$d daha + %2$d kişiden %1$d mesaj + ve %1$d sohbet daha + 👥 yakında bitchatter’lar! + Yakında 1 kişi + Yakında %1$d kişi + Yeni mesajlar + Yeni konum mesajları + %1$s içinde bahsedildi + %1$s içinde bahsedildi (+%2$d) + %2$s içinde %1$d bahsetme + %1$s içinde yeni etkinlik + %1$s içindeki mesajlar + %1$s sohbete katıldı + bitchat – %1$d bahsetme + bitchat – konum sohbetleri + %2$d konumdan %1$d mesaj + Mesh sohbette bahsedildi + Mesh sohbette %1$d bahsetme + ve %1$d konum daha + ve %1$d daha + + Sık kullanılanlara ekle + Sık kullanılandan kaldır + Yer imi ekle + + geri + kanal: %1$s + ayrıl + Nostr üzerinden ulaşılabilir + Okunmamış özel mesaj + Yer imini değiştir + Teleport edildi + Tor durumu + Bağlı eşler + Geohash katılımcıları + El sıkışmaya hazır + El sıkışma sürüyor + Uçtan uca şifreli + El sıkışma başarısız + + 📎 Dosya alındı + 📄 %1$s + 📏 Boyut: %1$s + 🏷️ Tür: %1$s + 📂 Aç / Kaydet + ❌ Kapat + Görsel seç + + uçtan uca şifrelemeli merkezsiz mesh mesajlaşma + Çevrimdışı Mesh Sohbeti + İnternet/ sunucu olmadan doğrudan Bluetooth LE ile iletişim kur. Mesajlar yakındaki cihazlarca aktarılır. + Çevrimiçi Geohash Kanalları + Geohash tabanlı kanallarla yakınındaki insanlarla bağlantı kur. Herkese açık internet röleleriyle mesh’i genişlet. + Uçtan Uca Şifreleme + Özel mesajlar şifrelidir. Kanal mesajları herkese açıktır. + görünüm + sistem + açık + koyu + proof of work + pow kapalı + pow açık + geohash mesajlarına spam’e karşı proof of work ekle. + zorluk: %1$d bit (~%2$s) + %1$d zorluğu ~%2$s hash denemesi gerektirir + proof of work gerekmez + çok düşük – en az koruma + düşük – temel koruma + orta – iyi koruma + yüksek – güçlü koruma + çok yüksek – gecikme olabilir + aşırı – ciddi hesaplama gerekir + + tor kapalı + tor açık + Daha fazla gizlilik için interneti Tor üzerinden yönlendir. + Tor durumu: %1$s, önyükleme %2$d%% + Son: %1$s + Acil veri silme + İpucu: tüm verileri silmek için uygulama başlığına üç kez dokun (mesajlar, anahtarlar, ayarlar). + Hata ayıklama ayarları + Open Source • Privacy First • Merkezsiz + Kapat + iptal + + Uyarı + Konum servisleri + Gizlilik + Hata + Pil optimizasyonu + Faydalar + Optimizasyon kontrol ediliyor + Desteklenmiyor + Bluetooth + Okunmamış mesaj + Haritayı aç + Yer imini kaldır + Teleport + Seçildi + Kanaldan ayrıl + Nostr üzerinden erişilebilir + Favori (çevrimdışı) + Hassasiyeti azalt + Hassasiyeti artır + Geohash seç + Alta kaydır + Dosya + Görsel + İptal + Bağlantı + Medya seç + Ses notu kaydet + Çevrimdışı Mesh Sohbeti + Çevrimiçi Geohash Kanalları + Uçtan uca şifreleme + + Görsel %1$d / %2$d + Görsel kullanılamıyor + Görsel "İndirilenler"e kaydedildi + Görsel kaydedilemedi + Dosya seç + [dosya kullanılamıyor] + bilinmiyor + + bu mesaj veya kullanıcı için bir işlem seç + bu kullanıcı için bir işlem seç + mesajı kopyala + mesajı panoya kopyala + %1$s kişisine şaplak + şakacı bir şaplak gönder + %1$s kişisine sarıl + samimi bir sarılma gönder + %1$s kişisini engelle + bu kullanıcıdan gelen tüm mesajları engelle + + #konum kanalları + yakındaki insanlarla geohash kanallarıyla sohbet et. yalnızca kabaca geohash paylaşılır, kesin gps asla değil. gizliliğin için ekran görüntüsü alma ve paylaşma. + konum izni ver + konum izni reddedildi. konum kanalları için ayarlardan etkinleştir. + Ayarları aç + \u2713 konum izni verildi + izinler kontrol ediliyor… + yakın kanallar aranıyor… + yer imli + geohash + geçersiz geohash + teleport + konum servislerini kapat + konum servislerini aç + #bluetooth • %1$s + mesh + blok + mahalle + şehir + eyalet + bölge + + hata ayıklama araçları + ayrıntılı günlük + Bluetooth rolleri + GATT sunucu + bağlantı: %1$d / %2$d + maks sunucu + GATT istemci + maks istemci + bağlantı: %1$d / %2$d + maks toplam + paket rölesi + başlangıçtan beri: %1$d + senk. ayarları + senk. başına maks paket: %1$d + maks GCS filtre boyutu: %1$d bayt (128–1024) + hedef FPR: %1$.2f%% + bağlı cihazlar + cihaz kimliğimiz: %1$s + yok + bağlantıyı kes + son tarama sonuçları + bağlan + hata ayıklama konsolu + temizle + son 10 sn: %1$d • 1 dk: %2$d • 15 dk: %3$d + türetilen P: %1$s • tahm. maks öge: %2$s + • doğrudan + %1$s • RSSI: %2$s + ? + sunucu olarak (barındırıyoruz) + istemci olarak (bağlanıyoruz) + + Konum servisleri gerekli + Önce gizlilik + bitchat KONUMUNU takip etmez.\n\nBluetooth tarama ve Geohash sohbet için konum servisleri gerekir. + bitchat konum servislerini şunlar için kullanır: + • Bluetooth cihaz tarama\n• Mesh ağında yakın kullanıcıları bulma\n• Geohash sohbet özelliği\n• Takip veya konum toplama yok + Konum ayarlarını aç + Tekrar kontrol et + Konum servisleri kullanılamıyor + Bu cihazda konum servisleri yok. Bu olağandışıdır.\n\nBluetooth taramasının düzgün çalışması (Android gereksinimi) için gerekir. Aksi halde yakın kullanıcılar bulunamaz. + Konum servisleri kontrol ediliyor… + Bluetooth gerekli + bitchat Bluetooth’u şunlar için kullanır: + • Yakın kullanıcıları bulma\n• Mesh bağlantıları kurma\n• Mesaj gönderme/alma\n• İnternetsiz çalışma + Bluetooth’u aç + Bluetooth desteklenmiyor + Bu cihaz Bluetooth Low Energy (BLE) desteklemiyor, bitchat için gereklidir.\n\nBLE, internetsiz yakın cihazlarla iletişim ve mesh için gereklidir. + Bluetooth durumu kontrol ediliyor… + pil optimizasyonu algılandı + Pil optimizasyonu açık + mesh için arka planda çalışmalı; optimizasyon kesintiye yol açabilir. + Devre dışı bırakmanın faydaları + • güvenilir teslimat\n• bağlantıyı korur\n• kopmayı önler + Optimizasyonu kapat + optimizasyon kapalı + Devam + Mesh ağı başlatılıyor + . + Bluetooth mesh ayarlanıyor… + Yalnızca birkaç saniye sürecek + ⚠️ + Kurulum tamamlanmadı + Yeniden dene + Gizliliğin korunuyor + • takip veya veri toplama yok\n• Bluetooth mesh sohbet çevrimdışı\n• geohash sohbet internete ihtiyaç duyar + izinler + İzin ver + bitchat konumunu takip etmez + @ + bitchat/ + · ⧉ + KİŞİLER + yakında kimse yok… + (sen) + geohash seçmek için kaydır/zoom yap + seç + mesaj yaz… + @%1$s + bahset + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + Görsel + Dosya + + + + + ✓✓ + + + + 📷 görsel gönderdi + 🎤 sesli mesaj gönderdi + 📎 dosya gönderdi + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + Oynat + Duraklat + + Bluetooth ile bitchat kullanıcılarını bulmak için gereklidir + bitchat’in yakın cihazlara bağlanmasına izin ver + Android gereği Bluetooth ile yakın kullanıcıları bulmak için gerekli + yakın cihazları taramak için gereklidir + özel mesajlarda bildirim al + bitchat’in bildirim göndermesine izin ver + arka planda güvenilir çalışmak ve mesh’i korumak için pil optimizasyonunu kapat + pil kısıtlaması olmadan çalışmaya izin ver + + Yakın cihazlar + Hassas konum + Mikrofon + Bildirimler + Pil optimizasyonu + Diğer + + Kanal parolasını gir + %1$s kanalı parolalıdır. Katılmak için parola gir. + Parola + Katıl + İptal + + + ve %d daha + ve %d daha + + + 1 kişi + %d kişi + + diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml new file mode 100644 index 00000000..c644c198 --- /dev/null +++ b/app/src/main/res/values-uk/strings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml new file mode 100644 index 00000000..f91f7a3a --- /dev/null +++ b/app/src/main/res/values-ur/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + بلوٹوتھ کی اجازت انٹرنیٹ کے بغیر دوسروں سے براہ راست چیٹ کرنے کے لیے ضروری ہے۔ + مقام کی اجازت بلوٹوتھ کے ذریعے قریبی آلات تلاش کرنے کے لیے ضروری ہے۔ + نوٹیفیکیشن کی اجازت آپ کو نئے پیغامات کے بارے میں بتانے کے لیے ضروری ہے۔ + + + عرفی نام + پیغام لکھیں… + پاس ورڈ + چینل میں شامل ہوں + چھوڑیں + بھیجیں + کمانڈز دکھائیں + واپس + لوگ + چینلز + آن لائن صارفین + کوئی منسلک نہیں + تمام ڈیٹا صاف کرنے کے لیے تین بار ٹیپ کریں + آپ کا نیٹ ورک + + + بیٹری کی اصلاح کا پتہ چلا + بیٹری کی اصلاح بند ہے + بیٹری کی اصلاح ضروری نہیں + بیٹری کی اصلاح چیک کر رہے ہیں + بیٹری کی اصلاح کیوں بند کریں؟ + bitchat قریبی آلات کے ساتھ میش کنیکشن برقرار رکھنے کے لیے پس منظر میں چلتا ہے۔ بیٹری کی اصلاح ان کنیکشنز کو خراب کر سکتی ہے، جس سے پیغامات دیر سے پہنچیں یا کھو جائیں۔\n\nبیٹری کی اصلاح بند کرنا قابل اعتماد پیئر‑ٹو‑پیئر کمیونیکیشن کو یقینی بناتا ہے۔ + بیٹری کی اصلاح بند کریں + نوٹ: آپ بعد میں Android سیٹنگز > ایپس > bitchat > بیٹری میں اسے تبدیل کر سکتے ہیں۔ + آپ کے آلے کو بیٹری کی اصلاح کی سیٹنگز کی ضرورت نہیں۔ bitchat عام طور پر چلے گا۔ + آپ کے آلے کو بیٹری کی اصلاح کی سیٹنگز کی ضرورت نہیں۔ bitchat عام طور پر چلے گا۔ + bitchat پس منظر میں قابل اعتماد طور پر چل سکتا ہے + • پیغامات کی قابل اعتماد ڈیلیوری\n• میش کنیکشن برقرار رکھنا\n• پس منظری پیغام فارورڈنگ\n• منطقی کنیکشن سے بچاؤ + دوبارہ چیک کریں + ابھی چھوڑیں + جاری رکھیں + دوبارہ کوشش کریں + چھوڑیں + + + اور %1$d مزید + %2$d لوگوں سے %1$d پیغامات + اور %1$d مزید گفتگو + 👥 قریب میں bitchatter! + قریب میں 1 شخص + قریب میں %1$d لوگ + نئے پیغامات + نئے مقام کے پیغامات + %1$s میں ذکر + %1$s میں ذکر (+%2$d) + %2$s میں %1$d ذکر + %1$s میں نئی سرگرمی + %1$s میں پیغامات + %1$s گفتگو میں شامل ہوا + bitchat – %1$d ذکر + bitchat – مقام چیٹس + %2$d مقامات سے %1$d پیغامات + میش چیٹ میں ذکر + میش چیٹ میں %1$d ذکر + اور %1$d مزید مقامات + اور %1$d مزید + + + پسندیدہ میں شامل کریں + پسندیدہ سے ہٹائیں + بک مارک شامل کریں + + + واپس + چینل: %1$s + چھوڑیں + Nostr کے ذریعے رسائی + غیر پڑھے ہوئے نجی پیغامات + بک مارک تبدیل کریں + ٹیلی پورٹ + Tor کی کیفیت + منسلک پیئرز + geohash شرکاء + ہینڈ شیک کے لیے تیار + ہینڈ شیک جاری ہے + اینڈ‑ٹو‑اینڈ انکرپٹڈ + ہینڈ شیک ناکام + + + 📎 فائل موصولہ + 📄 %1$s + 📏 سائز: %1$s + 🏷️ قسم: %1$s + 📂 کھولیں / محفوظ کریں + ❌ بند کریں + تصویر منتخب کریں + + + غیر مرکزی میش چیٹ • اینڈ‑ٹو‑اینڈ انکرپشن + آف لائن میش چیٹ + انٹرنیٹ یا سرورز کے بغیر Bluetooth LE کے ذریعے براہ راست بات چیت کریں۔ پیغامات قریبی آلات کے ذریعے ریلے ہوتے ہیں تاکہ رسائی بڑھے۔ + آن لائن geohash چینلز + geohash پر مبنی چینلز کے ذریعے اپنے قریب کے لوگوں سے جڑیں۔ عوامی انٹرنیٹ ریلے کے ذریعے میش کو پھیلائیں۔ + اینڈ‑ٹو‑اینڈ انکرپشن + نجی پیغامات انکرپٹڈ ہیں۔ چینل پیغامات عوامی ہیں۔ + ظاہری شکل + سسٹم + ہلکا + گہرا + پروف آف ورک + PoW بند + PoW چالو + اسپام کو مشکل بنانے کے لیے geohash پیغامات میں Proof of Work شامل کریں۔ + مشکل: %1$d بٹ (~%2$s) + مشکل %1$d کے لیے ~%2$s ہیش کوششیں + Proof of Work ضروری نہیں + بہت کم – کم سے کم اسپام تحفظ + کم – بنیادی اسپام تحفظ + درمیانہ – اچھا اسپام تحفظ + اعلیٰ – مضبوط اسپام تحفظ + بہت اعلیٰ – تاخیر ہو سکتی ہے + انتہائی – اہم کمپیوٹیشنل طاقت درکار + نیٹ ورک + Tor بند + Tor چالو + زیادہ پرائیویسی کے لیے انٹرنیٹ ٹریفک کو Tor کے ذریعے بھیجیں۔ + Tor کی کیفیت: %1$s، بوٹ اسٹریپ %2$d%% + آخری: %1$s + ہنگامی ڈیٹا صافی + تجویز: تمام محفوظ شدہ ڈیٹا – پیغامات، کلیدیں اور سیٹنگز سمیت – صاف کرنے کے لیے ایپ کے ٹائٹل پر تین بار ٹیپ کریں۔ + ڈیبگ سیٹنگز + اوپن سورس • پرائیویسی پہلے • غیر مرکزی + بند کریں + منسوخ کریں + + + خبردار + مقام کی خدمات + پرائیویسی + خرابی + بیٹری کی اصلاح + فوائد + بیٹری کی اصلاح چیک کر رہے ہیں + بیٹری کی اصلاح تعاون یافتہ نہیں + Bluetooth + غیر پڑھا پیغام + نقشہ کھولیں + بک مارک ہٹائیں + ٹیلی پورٹ + منتخب + چینل چھوڑیں + Nostr کے ذریعے رسائی + پسندیدہ (آف لائن) + درستگی کم کریں + درستگی بڑھائیں + geohash منتخب کریں + نیچے اسکرول کریں + فائل + تصویر + منسوخ کریں + لنک + میڈیا منتخب کریں + فائل منتخب کریں + موجودہ تصویر محفوظ کریں + بند کریں + تصویر %1$d / %2$d + پرائیویسی محفوظ + وائس نوٹ ریکارڈ کریں + آف لائن میش چیٹ + آن لائن geohash چینلز + اینڈ‑ٹو‑اینڈ انکرپشن + + + تصویر %1$d / %2$d + تصویر دستیاب نہیں + تصویر "Downloads" میں محفوظ ہوئی + تصویر محفوظ نہیں ہو سکی + تصویر "Downloads" میں محفوظ ہوئی + تصویر محفوظ نہیں ہو سکی + فائل منتخب کریں + [فائل دستیاب نہیں] + نامعلوم + + + اس پیغام یا صارف کے لیے ایکشن منتخب کریں + اس صارف کے لیے ایکشن منتخب کریں + پیغام کاپی کریں + اس پیغام کو کلپ بورڈ میں کاپی کریں + %1$s کو تھپڑ + مزاحیہ تھپڑ بھیجیں + %1$s کو گلے لگائیں + دوستانہ آلنگن بھیجیں + %1$s کو بلاک کریں + اس صارف کے تمام پیغامات بلاک کریں + + + #مقام چینلز + geohash چینلز کے ذریعے اپنے قریب کے لوگوں سے چیٹ کریں۔ صرف ایک مبہم geohash شیئر کیا جاتا ہے، کبھی درست GPS ڈیٹا نہیں۔ اپنی پرائیویسی کے لیے، اس اسکرین کا اسکرین شاٹ نہ لیں اور اسے شیئر نہ کریں۔ + مقام کی اجازت دیں + مقام کی اجازت منع کی گئی۔ مقام چینلز استعمال کرنے کے لیے سیٹنگز میں فعال کریں۔ + سیٹنگز کھولیں + \u2713 مقام کی اجازت دی گئی + اجازات چیک کر رہے ہیں… + قریبی چینلز تلاش کر رہے ہیں… + بک مارکڈ + Geohash + غلط geohash + ٹیلی پورٹ + مقام کی خدمات بند کریں + مقام کی خدمات چالو کریں + mesh + بلاک + محلہ + شہر + صوبہ + علاقہ + #bluetooth • %1$s + + + ڈیبگ ٹولز + تشخیص اور کنٹرول کے لیے ڈیولپر ٹولز + تفصیلی لاگنگ + پیئر جوائن/لیو، کنیکشن ڈائریکشن، پیکٹ ریلے اور ریلے لاگ کرتا ہے + Bluetooth کردار + GATT سرور + کنیکشنز: %1$d / %2$d + زیادہ سے زیادہ سرور + GATT کلائنٹ + زیادہ سے زیادہ کلائنٹ + کنیکشنز: %1$d / %2$d + زیادہ سے زیادہ کل + پیکٹ ریلے + شروع سے: %1$d + کردار آن/آف ٹوگل کریں اور بند کرتے وقت تمام کنیکشنز بند کریں + سنک سیٹنگز + فی سنک زیادہ سے زیادہ پیکٹس: %1$d + زیادہ سے زیادہ GCS فلٹر سائز: %1$d بائٹس (128–1024) + ہدف FPR: %1$.2f%% + منسلک آلات + ہمارا آلہ ID: %1$s + کوئی نہیں + منقطع کریں + حال ہی میں اسکین شدہ آلات + کنیکٹ + ڈیبگ کنسول + صاف کریں + آخری 10 سیکنڈ: %1$d • 1 منٹ: %2$d • 15 منٹ: %3$d + ماخوذ P: %1$s • تخمینی زیادہ سے زیادہ آئٹمز: %2$s + • براہ راست + %1$s • RSSI: %2$s + سرور کے طور پر (ہم ہوسٹ کرتے ہیں) + کلائنٹ کے طور پر (ہم کنیکٹ کرتے ہیں) + + + مقام کی خدمات ضروری + پرائیویسی پہلے + bitchat آپ کا مقام ٹریک نہیں کرتا۔\n\nBluetooth اسکیننگ اور geohash چیٹ فیچر کے لیے مقام کی خدمات ضروری ہیں۔ + bitchat کو مقام کی خدمات کی ضرورت: + • Bluetooth آلات اسکیننگ\n• میش نیٹ ورک میں قریبی صارفین کی دریافت\n• geohash چیٹ فیچر\n• کوئی ٹریکنگ یا مقام کا اجماع نہیں + مقام سیٹنگز کھولیں + دوبارہ چیک کریں + مقام کی خدمات دستیاب نہیں + اس آلے پر مقام کی خدمات دستیاب نہیں ہیں۔ یہ غیر معمولی ہے کیونکہ مقام کی خدمات Android آلات پر معیاری ہیں۔\n\nBluetooth اسکیننگ (Android کی ضرورت) کے ٹھیک سے کام کرنے کے لیے مقام کی خدمات ضروری ہیں۔ اس کے بغیر ایپ قریبی صارفین کو دریافت نہیں کر سکتی۔ + مقام کی خدمات چیک کر رہے ہیں… + Bluetooth ضروری + bitchat کو Bluetooth کی ضرورت: + • قریبی صارفین کی دریافت\n• میش نیٹ ورک کنیکشنز بنانا\n• پیغامات بھیجنا اور وصول کرنا\n• انٹرنیٹ یا سرورز کے بغیر کام کرنا + Bluetooth فعال کریں + Bluetooth تعاون یافتہ نہیں + یہ آلہ Bluetooth Low Energy (BLE) کو سپورٹ نہیں کرتا، جو bitchat کے کام کے لیے ضروری ہے۔\n\nBLE میش نیٹ ورکس بنانے اور انٹرنیٹ کے بغیر قریبی آلات کے ساتھ بات چیت کرنے کے لیے ضروری ہے۔ + Bluetooth کی کیفیت چیک کر رہے ہیں… + بیٹری کی اصلاح کا پتہ چلا + بیٹری کی اصلاح فعال + میش کنیکشنز برقرار رکھنے کے لیے bitchat کو پس منظر میں چلنا ضروری ہے۔ بیٹری کی اصلاح ان کنیکشنز کو خراب کر سکتی ہے۔ + بند کرنے کے فوائد + • قابل اعتماد پیغام کی ڈیلیوری\n• میش کنیکٹویٹی برقرار رکھنا\n• کنیکشن منقطع ہونے سے بچنا + بیٹری کی اصلاح بند کریں + بیٹری کی اصلاح بند + جاری رکھیں + میش نیٹ ورک شروع کر رہے ہیں + Bluetooth میش نیٹ ورک سیٹ کر رہے ہیں… + اس میں صرف چند سیکنڈ لگنے چاہیے + سیٹ اپ مکمل نہیں + دوبارہ کوشش کریں + آپ کی پرائیویسی محفوظ ہے + • کوئی ٹریکنگ یا ڈیٹا اجماع نہیں\n• Bluetooth میش چیٹس مکمل آف لائن\n• geohash چیٹس انٹرنیٹ استعمال کرتے ہیں + اجازات + اجازات دیں + bitchat آپ کا مقام ٹریک نہیں کرتا + لوگ + یہاں کوئی نہیں… + (آپ) + geohash منتخب کرنے کے لیے پین/زوم کریں + منتخب کریں + پیغام لکھیں… + ذکر + (~%1$s) + v%1$s + image/* + تصویر + فائل + + + 📷 تصویر بھیجی + 🎤 وائس نوٹ بھیجا + 📎 فائل بھیجی + + + چلائیں + روکیں + PoW مائننگ + PoW فعال + پروف آف ورک + مائننگ… + pow: %1$dbit + + + بلوٹوتھ کے ذریعے bitchat صارفین کی دریافت کے لیے ضروری + bitchat کو قریبی آلات سے جڑنے کی اجازت دیں + Android کی ضرورت: بلوٹوتھ کے ذریعے قریبی bitchat صارفین کی دریافت + قریبی آلات اسکین کرنے کے لیے bitchat کو یہ چاہیے + نجی پیغامات ملنے پر نوٹیفیکیشن حاصل کریں + bitchat کو آپ کو نوٹیفیکیشن بھیجنے کی اجازت دیں + یقینی بنانے کے لیے کہ bitchat پس منظر میں قابل اعتماد طور پر چلے اور میش کنیکشنز برقرار رکھے، بیٹری کی اصلاح بند کریں + bitchat کو بیٹری کی پابندیوں کے بغیر چلنے کی اجازت دیں + + + قریبی آلات + درست مقام + مائیکروفون + نوٹیفیکیشنز + بیٹری کی اصلاح + دوسرے + + + چینل پاس ورڈ داخل کریں + چینل %1$s پاس ورڈ سے محفوظ ہے۔ شامل ہونے کے لیے پاس ورڈ داخل کریں۔ + پاس ورڈ + شامل ہوں + منسوخ کریں + + + + اور %d مزید + اور %d مزید + + + + 1 شخص + %d لوگ + + + diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml new file mode 100644 index 00000000..14053aed --- /dev/null +++ b/app/src/main/res/values-vi/strings.xml @@ -0,0 +1,353 @@ + + + bitchat + + + Quyền Bluetooth là cần thiết để trò chuyện trực tiếp với những người khác mà không cần Internet. + Quyền vị trí là cần thiết để tìm các thiết bị gần đó qua Bluetooth. + Quyền thông báo là cần thiết để thông báo cho bạn về tin nhắn mới. + + + Biệt danh + Nhập tin nhắn… + Mật khẩu + Tham gia kênh + Rời khỏi + Gửi + Hiển thị lệnh + Quay lại + Mọi người + Kênh + Người dùng trực tuyến + Không có ai kết nối + Nhấn ba lần để xóa tất cả dữ liệu + Mạng lưới + + + Đã phát hiện tối ưu hóa pin + Tối ưu hóa pin đã tắt + Không cần tối ưu hóa pin + Đang kiểm tra tối ưu hóa pin + Tại sao nên tắt tối ưu hóa pin? + bitchat chạy nền để duy trì kết nối mesh với các thiết bị gần đó. Tối ưu hóa pin có thể làm gián đoạn các kết nối này, gây ra tin nhắn bị trễ hoặc mất.\n\nTắt tối ưu hóa pin đảm bảo liên lạc ngang hàng đáng tin cậy. + Tắt tối ưu hóa pin + Lưu ý: Bạn có thể thay đổi điều này sau trong Android Settings > Apps > bitchat > Battery. + Thiết bị của bạn không cần cài đặt tối ưu hóa pin. bitchat sẽ chạy bình thường. + Thiết bị của bạn không cần cài đặt tối ưu hóa pin. bitchat sẽ chạy bình thường. + bitchat có thể chạy đáng tin cậy trong nền + • Gửi tin nhắn đáng tin cậy\n• Duy trì kết nối mesh\n• Chuyển tiếp tin nhắn nền\n• Ngăn ngừa mất kết nối + Kiểm tra lại + Bỏ qua ngay + Tiếp tục + Thử lại + Bỏ qua + + + và %1$d khác + %1$d tin nhắn từ %2$d người + và %1$d cuộc trò chuyện khác + 👥 bitchatter gần đó! + 1 người gần đó + %1$d người gần đó + Tin nhắn mới + Tin nhắn vị trí mới + Được nhắc đến trong %1$s + Được nhắc đến trong %1$s (+%2$d khác) + %1$d lần nhắc đến trong %2$s + Hoạt động mới trong %1$s + Tin nhắn trong %1$s + %1$s đã tham gia cuộc trò chuyện + bitchat – %1$d lần nhắc đến + bitchat – Trò chuyện vị trí + %1$d tin nhắn từ %2$d vị trí + Được nhắc đến trong Mesh Chat + %1$d lần nhắc đến trong Mesh Chat + và %1$d vị trí khác + và %1$d khác + + + Thêm vào yêu thích + Xóa khỏi yêu thích + Thêm bookmark + + + quay lại + Kênh: %1$s + rời khỏi + Có thể tiếp cận qua Nostr + Tin nhắn riêng chưa đọc + Bật/tắt bookmark + Đã dịch chuyển + Trạng thái Tor + Peers đã kết nối + Người tham gia geohash + Sẵn sàng cho handshake + Handshake đang tiến hành + Mã hóa đầu cuối + Handshake thất bại + + + 📎 File đã nhận + 📄 %1$s + 📏 Kích thước: %1$s + 🏷️ Loại: %1$s + 📂 Mở / Lưu + ❌ Đóng + Chọn hình ảnh + + + trò chuyện mesh phi tập trung với mã hóa đầu cuối + Trò chuyện Mesh ngoại tuyến + Liên lạc trực tiếp qua Bluetooth LE mà không cần Internet hoặc máy chủ. Tin nhắn được chuyển tiếp qua các thiết bị gần để mở rộng phạm vi. + Kênh Geohash trực tuyến + Kết nối với những người trong khu vực của bạn qua các kênh dựa trên geohash. Mở rộng mesh qua các relay Internet công cộng. + Mã hóa đầu cuối + Tin nhắn riêng được mã hóa. Tin nhắn kênh là công khai. + Giao diện + Hệ thống + Sáng + Tối + Proof of Work + PoW tắt + PoW bật + Thêm proof of work vào tin nhắn geohash để làm cho spam khó hơn. + Độ khó: %1$d bit (~%2$s) + Độ khó %1$d cần ~%2$s lần thử hash + không cần proof of work + rất thấp – bảo vệ spam tối thiểu + thấp – bảo vệ spam cơ bản + trung bình – bảo vệ spam tốt + cao – bảo vệ spam mạnh + rất cao – có thể gây độ trễ + cực cao – cần sức mạnh tính toán đáng kể + Mạng lưới + Tor tắt + Tor bật + Định tuyến lưu lượng Internet qua Tor để có thêm quyền riêng tư. + Trạng thái Tor: %1$s, Bootstrap %2$d%% + Cuối cùng: %1$s + Xóa dữ liệu khẩn cấp + Mẹo: Nhấn ba lần vào tiêu đề ứng dụng để xóa tất cả dữ liệu đã lưu – bao gồm tin nhắn, khóa và cài đặt. + Cài đặt debug + Mã nguồn mở • Quyền riêng tư trước tiên • Phi tập trung + Đóng + hủy + + + Cảnh báo + Dịch vụ vị trí + Quyền riêng tư + Lỗi + Tối ưu hóa pin + Lợi ích + Đang kiểm tra tối ưu hóa pin + Tối ưu hóa pin không được hỗ trợ + Bluetooth + Tin nhắn chưa đọc + Mở bản đồ + Xóa bookmark + Dịch chuyển + Đã chọn + Rời khỏi kênh + Có thể tiếp cận qua Nostr + Yêu thích (ngoại tuyến) + Giảm độ chính xác + Tăng độ chính xác + Chọn geohash + Cuộn xuống dưới + File + Hình ảnh + Hủy + Liên kết + Chọn media + Chọn file + Lưu hình ảnh hiện tại + Đóng + Hình ảnh %1$d trong %2$d + Quyền riêng tư được bảo vệ + Ghi tin nhắn thoại + Trò chuyện Mesh ngoại tuyến + Kênh Geohash trực tuyến + Mã hóa đầu cuối + + + Hình ảnh %1$d trong %2$d + Hình ảnh không có sẵn + Hình ảnh đã lưu vào \"Downloads\" + Không thể lưu hình ảnh + Hình ảnh đã lưu vào \"Downloads\" + Không thể lưu hình ảnh + Chọn file + [File không có sẵn] + không rõ + + + Chọn hành động cho tin nhắn hoặc người dùng này + Chọn hành động cho người dùng này + Sao chép tin nhắn + Sao chép tin nhắn này vào clipboard + Tát %1$s + Gửi một cái tát vui nhộn + Ôm %1$s + Gửi một cái ôm thân thiện + Chặn %1$s + Chặn tất cả tin nhắn từ người dùng này + + + #Kênh vị trí + Trò chuyện với những người gần bạn qua các kênh geohash. Chỉ geohash thô được chia sẻ, không phải dữ liệu GPS chính xác. Vui lòng không chụp màn hình hoặc chia sẻ chế độ xem này để bảo vệ quyền riêng tư. + Cấp quyền vị trí + Quyền vị trí bị từ chối. Hãy bật trong Cài đặt để sử dụng kênh vị trí. + Mở Cài đặt + \u2713 Đã cấp quyền vị trí + Đang kiểm tra quyền … + Đang tìm kênh gần đó … + Đã bookmark + Geohash + Geohash không hợp lệ + dịch chuyển + Tắt dịch vụ vị trí + Bật dịch vụ vị trí + mesh + Khối + Khu phố + Thành phố + Tỉnh + Khu vực + #bluetooth • %1$s + + + Công cụ debug + Công cụ nhà phát triển cho chẩn đoán và điều khiển + ghi log chi tiết + Ghi log peer join/leave, hướng kết nối, chuyển tiếp gói và relay + Vai trò Bluetooth + GATT Server + Kết nối: %1$d / %2$d + server tối đa + GATT Client + client tối đa + Kết nối: %1$d / %2$d + tối đa tổng + Packet Relay + từ lúc bắt đầu: %1$d + Bật/tắt vai trò và đóng tất cả kết nối khi tắt + Cài đặt sync + gói tối đa mỗi sync: %1$d + kích thước bộ lọc GCS tối đa: %1$d Byte (128–1024) + FPR mục tiêu: %1$.2f%% + thiết bị đã kết nối + ID thiết bị của chúng tôi: %1$s + không có + ngắt kết nối + thiết bị được quét gần đây + kết nối + Console debug + xóa + 10s cuối: %1$d • 1m: %2$d • 15m: %3$d + P dẫn xuất: %1$s • phần tử tối đa ước tính: %2$s + • trực tiếp + %1$s • RSSI: %2$s + làm server (chúng tôi host) + làm client (chúng tôi kết nối) + + + Yêu cầu dịch vụ vị trí + Quyền riêng tư trước tiên + bitchat KHÔNG theo dõi vị trí của bạn.\n\nDịch vụ vị trí cần thiết cho quét Bluetooth và tính năng geohash chat. + bitchat cần dịch vụ vị trí cho: + • Quét thiết bị Bluetooth\n• Khám phá người dùng gần đó trong mạng mesh\n• Tính năng geohash chat\n• Không theo dõi hoặc thu thập vị trí + Mở cài đặt vị trí + Kiểm tra lại + Dịch vụ vị trí không có sẵn + Dịch vụ vị trí không có sẵn trên thiết bị này. Điều này bất thường vì dịch vụ vị trí là tiêu chuẩn trên thiết bị Android.\n\nbitchat cần dịch vụ vị trí để quét Bluetooth hoạt động đúng (yêu cầu Android). Không có nó, ứng dụng không thể khám phá người dùng gần đó. + Đang kiểm tra dịch vụ vị trí … + Yêu cầu Bluetooth + bitchat cần Bluetooth cho: + • Khám phá người dùng gần đó\n• Tạo kết nối mạng mesh\n• Gửi và nhận tin nhắn\n• Hoạt động mà không cần Internet hoặc máy chủ + Bật Bluetooth + Bluetooth không được hỗ trợ + Thiết bị này không hỗ trợ Bluetooth Low Energy (BLE), cần thiết để bitchat hoạt động.\n\nbitchat cần BLE để tạo mạng mesh và liên lạc với thiết bị gần đó mà không cần Internet. + Đang kiểm tra trạng thái Bluetooth … + Đã phát hiện tối ưu hóa pin + Tối ưu hóa pin đã bật + bitchat phải chạy nền để duy trì kết nối mesh. Tối ưu hóa pin có thể làm gián đoạn các kết nối này. + Lợi ích của việc tắt + • gửi tin nhắn đáng tin cậy\n• duy trì kết nối mesh\n• ngăn ngừa mất kết nối + Tắt tối ưu hóa pin + Tối ưu hóa pin đã tắt + Tiếp tục + Đang khởi tạo mạng mesh + Đang thiết lập mạng Bluetooth mesh … + Điều này chỉ mất vài giây + Thiết lập chưa hoàn thành + Thử lại + Quyền riêng tư của bạn được bảo vệ + • không theo dõi hoặc thu thập dữ liệu\n• Bluetooth mesh chat hoàn toàn ngoại tuyến\n• Geohash chat sử dụng Internet + Quyền + Cấp quyền + bitchat KHÔNG theo dõi vị trí của bạn + MỌI NGƯỜI + không có ai xung quanh … + (bạn) + di chuyển và zoom để chọn geohash + chọn + Nhập tin nhắn … + nhắc đến + (~%1$s) + v%1$s + image/* + Hình ảnh + File + + + 📷 đã gửi hình ảnh + 🎤 đã gửi tin nhắn thoại + 📎 đã gửi file + + + Phát + Tạm dừng + Đang mining PoW + PoW đã bật + Proof of Work + Đang mining … + pow: %1$dbit + + + Cần thiết để khám phá người dùng bitchat qua Bluetooth + Cho phép bitchat kết nối với thiết bị gần đó + Android yêu cầu để khám phá người dùng bitchat gần đó qua Bluetooth + bitchat cần điều này để quét thiết bị gần đó + Nhận thông báo khi bạn nhận tin nhắn riêng + Cho phép bitchat gửi thông báo cho bạn + Tắt tối ưu hóa pin để đảm bảo bitchat chạy đáng tin cậy trong nền và duy trì kết nối mạng mesh + Cho phép bitchat chạy mà không bị giới hạn pin + + + Thiết bị gần đó + Vị trí chính xác + Microphone + Thông báo + Tối ưu hóa pin + Khác + + + Nhập mật khẩu kênh + Kênh %1$s được bảo vệ bằng mật khẩu. Nhập mật khẩu để tham gia. + Mật khẩu + Tham gia + Hủy + + + + và %d khác + và %d khác + + + + 1 người + %d người + + + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 00000000..2d670d71 --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 00000000..2a3aa81b --- /dev/null +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml new file mode 100644 index 00000000..596ad28b --- /dev/null +++ b/app/src/main/res/values-zh/strings.xml @@ -0,0 +1,366 @@ + + + bitchat + + + 需要蓝牙权限以在无网络时进行点对点聊天。 + 需要位置信息权限以通过蓝牙发现附近设备。 + 需要通知权限以提醒你有新消息。 + + + 昵称 + 输入消息… + 密码 + 加入频道 + 离开 + 发送 + 显示命令 + 返回 + 成员 + 频道 + 在线用户 + 无人连接 + 三击以清除所有数据 + 网络 + + + 检测到电池优化 + 电池优化已禁用 + 无需电池优化 + 正在检查电池优化 + 为何禁用电池优化? + bitchat 在后台运行以保持与附近设备的 mesh 连接。电池优化可能中断连接,导致消息延迟或丢失。\n\n禁用可确保可靠的点对点消息。 + 禁用电池优化 + 备注:稍后可在 设置 > 应用 > bitchat > 电池 中更改。 + 你的设备不需要电池优化设置。bitchat 将正常运行。 + 你的设备不需要电池优化设置。bitchat 将正常运行。 + bitchat 可在后台可靠运行 + • 可靠投递消息\n• 维持 mesh 连接\n• 后台转发\n• 避免断连 + 重新检查 + 暂时跳过 + 继续 + 重试 + 跳过 + + + 以及另外 %1$d 条 + 来自 %2$d 位的 %1$d 条消息 + 以及另外 %1$d 个会话 + 👥 附近的 bitchatter! + 附近 1 人 + 附近 %1$d 人 + 新消息 + 新的地点消息 + 在 %1$s 中被提及 + 在 %1$s 中被提及(另有 %2$d 条) + 在 %2$s 中有 %1$d 次提及 + %1$s 中有新动态 + %1$s 中的消息 + %1$s 加入了会话 + bitchat – %1$d 次提及 + bitchat – 地点聊天 + 来自 %2$d 个地点的 %1$d 条消息 + 在 Mesh 聊天中被提及 + 在 Mesh 聊天中有 %1$d 次提及 + 以及另外 %1$d 个地点 + 以及另外 %1$d 条 + + + 加入收藏 + 移出收藏 + 添加书签 + + + 返回 + 频道:%1$s + 离开 + 可通过 Nostr 联系 + 未读私信 + 切换书签 + 已传送 + Tor 状态 + 已连接节点 + Geohash 参与者 + 准备握手 + 握手中 + 端到端加密 + 握手失败 + + + 📎 收到文件 + 📄 %1$s + 📏 大小:%1$s + 🏷️ 类型:%1$s + 📂 打开 / 保存 + ❌ 关闭 + 选择图片 + + + 去中心化 mesh 消息,端到端加密 + 离线 Mesh 聊天 + 无需网络或服务器,通过 Bluetooth LE 直接通信。利用附近设备中继消息以扩展范围。 + 在线 Geohash 频道 + 使用基于 geohash 的频道与附近的人交流。通过公共互联网中继扩展 mesh。 + 端到端加密 + 私信加密;频道消息为公开。 + 外观 + 系统 + 浅色 + 深色 + 工作量证明 + pow 关 + pow 开 + 为 geohash 消息添加工作量证明以抑制垃圾信息。 + 难度:%1$d 位 (~%2$s) + 难度 %1$d 约需 ~%2$s 次哈希尝试 + 无需工作量证明 + 很低——最低防护 + 较低——基础防护 + 中等——良好防护 + 高——强防护 + 很高——可能延迟 + 极高——需要大量计算 + 网络 + tor 关 + tor 开 + 通过 Tor 路由互联网以提升隐私。 + Tor 状态:%1$s,引导 %2$d%% + 最近:%1$s + 紧急数据删除 + 提示:三击应用标题以删除所有数据,包括消息、密钥和设置。 + 调试设置 + Open Source • Privacy First • 去中心化 + 关闭 + 取消 + + + 警告 + 定位服务 + 隐私 + 错误 + 电池优化 + 好处 + 检查电池优化 + 不支持 + Bluetooth + 未读消息 + 打开地图 + 移除书签 + 传送 + 已选择 + 离开频道 + 可通过 Nostr 联系 + 收藏(离线) + 降低精度 + 提高精度 + 选择 geohash + 滚动到底部 + 文件 + 图片 + 取消 + 链接 + 选择媒体 + 录制语音 + 离线 Mesh 聊天 + 在线 Geohash 频道 + 端到端加密 + + + 图片 %1$d / %2$d + 图片不可用 + 图片已保存到“下载” + 图片保存失败 + 选择文件 + [文件不可用] + 未知 + + + 为此消息或用户选择操作 + 为此用户选择操作 + 复制消息 + 将此消息复制到剪贴板 + 扇 %1$s 一下 + 发送一个打趣的“扇巴掌” + 拥抱 %1$s + 发送一个友好的拥抱 + 屏蔽 %1$s + 屏蔽该用户的所有消息 + + + #地点频道 + 使用 geohash 频道与附近的人聊天。仅共享粗略的 geohash,从不共享精确 GPS。为保护隐私,请勿截图或分享此页面。 + 授予定位权限 + 定位权限被拒。请在设置中启用以使用地点频道。 + 打开设置 + \u2713 已授予定位权限 + 正在检查权限… + 正在查找附近频道… + 已收藏 + geohash + 无效的 geohash + 传送 + 禁用定位服务 + 启用定位服务 + #bluetooth • %1$s + mesh + 街区 + 社区 + 城市 + 省/州 + 地区 + + + 调试工具 + 详细日志 + Bluetooth 角色 + GATT 服务器 + 连接:%1$d / %2$d + 最大服务器 + GATT 客户端 + 最大客户端 + 连接:%1$d / %2$d + 最大总计 + 数据包中继 + 自启动以来:%1$d + 同步设置 + 每次同步的最大包数:%1$d + GCS 过滤器最大大小:%1$d 字节(128–1024) + 目标 FPR:%1$.2f%% + 已连接设备 + 我们的设备 ID:%1$s + + 断开 + 最近扫描结果 + 连接 + 调试控制台 + 清除 + 最近 10 秒:%1$d • 1 分钟:%2$d • 15 分钟:%3$d + 导出 P:%1$s • 估算最大元素:%2$s + • 直连 + %1$s • RSSI:%2$s + ? + 作为服务器(我们托管) + 作为客户端(我们连接) + + + 需要定位服务 + 隐私优先 + bitchat 不会跟踪你的位置。\n\n蓝牙扫描和 geohash 聊天功能需要定位服务。 + bitchat 需要定位服务用于: + • 蓝牙设备扫描\n• 在 mesh 网络发现附近用户\n• Geohash 聊天\n• 不跟踪或收集位置 + 打开定位设置 + 再次检查 + 定位服务不可用 + 此设备上定位服务不可用。这不常见,因为 Android 设备通常具备此功能。\n\n为使蓝牙扫描正常工作(Android 要求),需要定位服务。否则无法发现附近用户。 + 正在检查定位服务… + 需要 Bluetooth + bitchat 需要 Bluetooth 以: + • 发现附近用户\n• 建立 mesh 连接\n• 发送和接收消息\n• 在无网络和服务器时工作 + 启用 Bluetooth + 不支持 Bluetooth + 此设备不支持 Bluetooth Low Energy (BLE),而 bitchat 需要它。\n\nbitchat 需要 BLE 以建立 mesh 并在无网络时与附近设备通信。 + 正在检查 Bluetooth 状态… + 检测到电池优化 + 电池优化已启用 + bitchat 需要在后台运行以维持连接;电池优化可能会中断。 + 禁用的好处 + • 可靠投递\n• 维持连接\n• 避免中断 + 禁用优化 + 已禁用优化 + 继续 + 正在初始化 mesh 网络 + . + 正在设置 Bluetooth mesh… + 只需几秒钟 + ⚠️ + 设置未完成 + 重试 + 你的隐私已受保护 + • 不跟踪不收集\n• 蓝牙 mesh 聊天完全离线\n• geohash 聊天使用互联网 + 权限 + 授予权限 + bitchat 不会跟踪你的位置 + @ + bitchat/ + · ⧉ + 成员 + 附近无人… + (你) + 拖动/缩放以选择 geohash + 选择 + 输入消息… + @%1$s + 提及 + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + 图片 + 文件 + + + + + + ✓✓ + + + + + 📷 发送了图片 + 🎤 发送了语音消息 + 📎 发送了文件 + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + 播放 + 暂停 + + + 需要通过 Bluetooth 发现 bitchat 用户 + 允许 bitchat 连接附近设备 + Android 要求以通过 Bluetooth 发现附近用户 + bitchat 需要此权限以扫描附近设备 + 在收到私信时接收通知 + 允许 bitchat 向你发送通知 + 禁用电池优化以确保后台可靠运行并维持连接 + 允许 bitchat 在无电池限制下运行 + + + 附近设备 + 精确位置 + 麦克风 + 通知 + 电池优化 + 其他 + + + 输入频道密码 + 频道 %1$s 已受密码保护。请输入密码以加入。 + 密码 + 加入 + 取消 + + + + 以及另外 %d 条 + 以及另外 %d 条 + + + + 1 人 + %d 人 + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 783120f2..407ce983 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,5 +36,342 @@ Skip for Now Continue Retry - Skip + Skip + + + and %1$d more + %1$d messages from %2$d people + and %1$d more conversations + 👥 bitchatters nearby! + 1 person around + %1$d people around + New Messages + New Location Messages + Mentioned in %1$s + Mentioned in %1$s (+%2$d more) + %1$d mentions in %2$s + New activity in %1$s + Messages in %1$s + %1$s joined the conversation + bitchat - %1$d mentions + bitchat - location chats + %1$d messages from %2$d locations + Mentioned in Mesh Chat + %1$d mentions in Mesh Chat + and %1$d more locations + and %1$d more + + + Add to favorites + Remove from favorites + Add bookmark + + + back + channel: %1$s + leave + Nostr reachable + Unread private messages + Toggle bookmark + Teleported + Tor status + Connected peers + Geohash participants + Ready for handshake + Handshake in progress + End-to-end encrypted + Handshake failed + + + 📎 File Received + 📄 %1$s + 📏 Size: %1$s + 🏷️ Type: %1$s + 📂 Open / Save + ❌ Close + Pick image + Save current image + Close + Image saved to Downloads + Failed to save image + Image %1$d of %2$d + Pick file + + + decentralized mesh messaging with end-to-end encryption + Offline Mesh Chat + Communicate directly via Bluetooth LE without internet or servers. Messages relay through nearby devices to extend range. + Online Geohash Channels + Connect with people in your area using geohash-based channels. Extend the mesh using public internet relays. + End-to-End Encryption + Private messages are encrypted. Channel messages are public. + appearance + system + light + dark + proof of work + pow off + pow on + add proof of work to geohash messages for spam deterrence. + difficulty: %1$d bits (~%2$s) + difficulty %1$d requires ~%2$s hash attempts + no proof of work required + very low - minimal spam protection + low - basic spam protection + medium - good spam protection + high - strong spam protection + very high - may cause delays + extreme - significant computation required + network + tor off + tor on + route internet over tor for enhanced privacy. + tor Status: %1$s, bootstrap %2$d%% + Last: %1$s + Emergency Data Deletion + Tip: Triple-click the app title to emergency delete all stored data including messages, keys, and settings. + Debug Settings + Open Source • Privacy First • Decentralized + Close + Privacy Protected + cancel + + + Warning + Location Services + Privacy + Error + Battery Optimization + Benefits + Checking Battery Optimization + Battery Optimization Not Supported + Bluetooth + Unread message + Open map + Remove bookmark + Teleport + Selected + Leave channel + Reachable via Nostr + Offline favorite + Decrease precision + Increase precision + Select geohash + Scroll to bottom + File + Image + Cancel + Link + Record voice note + Pick media + Mining PoW + PoW Enabled + Proof of Work + mining... + pow: %1$dbit + Offline Mesh Chat + Online Geohash Channels + End-to-End Encryption + #bluetooth • %1$s + + Image %1$d of %2$d + Image unavailable + Image saved to Downloads + Failed to save image + Pick file + [file unavailable] + unknown + + + choose an action for this message or user + choose an action for this user + copy message + copy this message to clipboard + slap %1$s + send a playful slap message + hug %1$s + send a friendly hug message + block %1$s + block all messages from this user + + + #location channels + chat with people near you using geohash channels. only a coarse geohash is shared, never exact gps. do not screenshot or share this screen to protect your privacy. + grant location permission + location permission denied. enable in settings to use location channels. + + \u2713 location permission granted + checking permissions... + finding nearby channels… + bookmarked + geohash + invalid geohash + teleport + disable location services + enable location services + mesh + block + neighborhood + city + province + region + + + debug tools + developer utilities for diagnostics and control + verbose logging + logs peer joins/leaves, connection direction, packet routing and relays + bluetooth roles + gatt server + connections: %1$d / %2$d + max server + gatt client + max client + connections: %1$d / %2$d + max overall + packet relay + since start: %1$d + turn roles on/off and close all connections when disabled + sync settings + max packets per sync: %1$d + max GCS filter size: %1$d bytes (128–1024) + target FPR: %1$.2f%% + connected devices + our device id: %1$s + none + disconnect + recent scan results + connect + debug console + clear + last 10s: %1$d • 1m: %2$d • 15m: %3$d + derived P: %1$s • est. max elements: %2$s + • direct + %1$s • RSSI: %2$s + ? + as server (we host) + as client (we connect) + + + Location Services Required + Privacy First + bitchat does NOT track your location.\n\nLocation services are required for Bluetooth scanning and for the Geohash chat feature. + bitchat needs location services for: + • Bluetooth device scanning\n• Discovering nearby users on mesh network\n• Geohash chat feature\n• No tracking or location collection + Open Location Settings + Check Again + Location Services Unavailable + Location services are not available on this device. This is unusual as location services are standard on Android devices.\n\nbitchat needs location services for Bluetooth scanning to work properly (Android requirement). Without this, the app cannot discover nearby users. + Checking location services... + Bluetooth Required + bitchat needs Bluetooth to: + • Discover nearby users\n• Create mesh network connections\n• Send and receive messages\n• Work without internet or servers + Enable Bluetooth + Bluetooth Not Supported + This device doesn\'t support Bluetooth Low Energy (BLE), which is required for bitchat to function.\n\nbitchat needs BLE to create mesh networks and communicate with nearby devices without internet. + Checking Bluetooth status... + battery optimization detected + Battery Optimization Enabled + bitchat needs to run in the background to maintain mesh connections. battery optimization can interrupt these connections. + Benefits of Disabling + • reliable message delivery\n• maintains mesh connectivity\n• prevents connection drops + Disable Battery Optimization + battery optimization disabled + Continue + Initializing mesh network + . + Setting up Bluetooth mesh networking... + This should only take a few seconds + ⚠️ + Setup Not Complete + Try Again + Open Settings + Your Privacy is Protected + • no tracking or data collection\n• Bluetooth mesh chats are fully offline\n• Geohash chats use the internet + permissions + Grant Permissions + bitchat does NOT track your location + @ + bitchat/ + · ⧉ + PEOPLE + nobody around... + (you) + pan and zoom to select a geohash + select + type a message... + @%1$s + mention + %1$d / %2$d + (~%1$s) + @%1$s + v%1$s + # + _ + [%1$s] %2$d%% + + + image/* + Image + File + + + + + + ✓✓ + + + + + 📷 sent an image + 🎤 sent a voice message + 📎 sent a file + 📄 + 🗜️ + 📄 + 📊 + 📈 + 📎 + + + Play + Pause + + + Required to discover bitchat users via Bluetooth + Allow bitchat to connect to nearby devices + Required by Android to discover nearby bitchat users via Bluetooth + bitchat needs this to scan for nearby devices + Receive notifications when you receive private messages + Allow bitchat to send you notifications + Disable battery optimization to ensure bitchat runs reliably in the background and maintains mesh network connections + Allow bitchat to run without battery restrictions + + + Nearby Devices + Precise Location + Microphone + Notifications + Battery Optimization + Other + + + Enter Channel Password + Channel %1$s is password protected. Enter the password to join. + Password + Join + Cancel + + + + and %d more + and %d more + + + + 1 person + %d people + +