mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Extracted hardcoded UI strings to resources (en/zh) (#247)
This commit is contained in:
1 parent
9cac33dae7
commit
796056a582
7 files changed
+73
-18
No files matched your search
@@ -252,7 +252,7 @@ private fun TrackingBanner(state: RadioTrackingState, onClick: () -> Unit) {
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(
|
||||
text = "Tracking: ${state.currentPass?.name ?: ""}",
|
||||
text = stringResource(R.string.tracking_format, state.currentPass?.name ?: ""),
|
||||
fontSize = 13.sp,
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = MaterialTheme.colorScheme.onPrimaryContainer,
|
||||
|
||||
@@ -83,6 +83,24 @@
|
||||
<string name="radar_doppler_rx_hint">输入下行频率 (MHz)</string>
|
||||
<string name="radar_doppler_offset_hint">偏移 (kHz)</string>
|
||||
|
||||
<!-- Radar screen (CAT control / SSTV) -->
|
||||
<string name="radar_connect">连接</string>
|
||||
<string name="radar_disconnect">断开连接</string>
|
||||
<string name="radar_off">关</string>
|
||||
<string name="radar_stop">停止</string>
|
||||
<string name="radar_track">跟踪</string>
|
||||
<string name="radar_tx_base">TX 基频:</string>
|
||||
|
||||
<!-- SSTV screen -->
|
||||
<string name="sstv_grant_permission">授予权限</string>
|
||||
<string name="sstv_listening">正在监听…</string>
|
||||
<string name="sstv_mic_permission">需要麦克风权限</string>
|
||||
<string name="sstv_mode_format">模式:%s</string>
|
||||
<string name="sstv_mode_title">SSTV 模式</string>
|
||||
<string name="sstv_no_signal">无信号</string>
|
||||
<string name="sstv_no_transceiver">未选择收发器</string>
|
||||
<string name="sstv_rx_format">RX:%s Hz</string>
|
||||
|
||||
<!-- Map screen -->
|
||||
<string name="map_prev">上一个</string>
|
||||
<string name="map_next">下一个</string>
|
||||
@@ -103,6 +121,12 @@
|
||||
<string name="prefs_donate_title">支持</string>
|
||||
<string name="prefs_privacy_title">隐私政策</string>
|
||||
|
||||
<string name="settings_paired_devices">已配对的蓝牙设备:</string>
|
||||
<string name="settings_split_mode">分频模式(仅 IC-705)</string>
|
||||
<string name="prefs_lat_prefix">纬度:%s°</string>
|
||||
<string name="prefs_lon_prefix">经度:%s°</string>
|
||||
<string name="prefs_qth_prefix">QTH:%s</string>
|
||||
|
||||
<string name="prefs_updated_title">更新:%s</string>
|
||||
<string name="prefs_updated_time">yyyy MMM d - HH:mm:ss</string>
|
||||
|
||||
@@ -195,4 +219,7 @@
|
||||
\n• Libre Space Foundation (SatNOGS)</string>
|
||||
<string name="prefs_outro_license">该应用程序不提供任何保修.</string>
|
||||
|
||||
<!-- Main screen -->
|
||||
<string name="tracking_format">跟踪:%s</string>
|
||||
|
||||
</resources>
|
||||
@@ -113,6 +113,24 @@
|
||||
<string name="radar_doppler_rx_hint">Enter RX freq (MHz)</string>
|
||||
<string name="radar_doppler_offset_hint">Offset (kHz)</string>
|
||||
|
||||
<!-- Radar screen (CAT control / SSTV) -->
|
||||
<string name="radar_connect">Connect</string>
|
||||
<string name="radar_disconnect">Disconnect</string>
|
||||
<string name="radar_off">Off</string>
|
||||
<string name="radar_stop">Stop</string>
|
||||
<string name="radar_track">Track</string>
|
||||
<string name="radar_tx_base">TX Base: </string>
|
||||
|
||||
<!-- SSTV screen -->
|
||||
<string name="sstv_grant_permission">Grant permission</string>
|
||||
<string name="sstv_listening">Listening…</string>
|
||||
<string name="sstv_mic_permission">Microphone access needed</string>
|
||||
<string name="sstv_mode_format">Mode: %s</string>
|
||||
<string name="sstv_mode_title">SSTV Mode</string>
|
||||
<string name="sstv_no_signal">No signal</string>
|
||||
<string name="sstv_no_transceiver">No transceiver selected</string>
|
||||
<string name="sstv_rx_format">RX: %s Hz</string>
|
||||
|
||||
<!-- Map screen -->
|
||||
<string name="map_prev">Prev</string>
|
||||
<string name="map_next">Next</string>
|
||||
@@ -145,6 +163,12 @@
|
||||
<string name="prefs_privacy_title">Privacy Policy</string>
|
||||
<string name="prefs_privacy_url" translatable="false">https://sites.google.com/view/look4sat-privacy-policy/home</string>
|
||||
|
||||
<string name="settings_paired_devices">Paired Bluetooth Devices:</string>
|
||||
<string name="settings_split_mode">Split mode (IC-705 only)</string>
|
||||
<string name="prefs_lat_prefix">Lat: %s°</string>
|
||||
<string name="prefs_lon_prefix">Lon: %s°</string>
|
||||
<string name="prefs_qth_prefix">Qth: %s</string>
|
||||
|
||||
<string name="prefs_updated_title">Updated: %s</string>
|
||||
<string name="prefs_updated_time">d MMM yyyy - HH:mm:ss</string>
|
||||
|
||||
@@ -239,4 +263,7 @@
|
||||
</string>
|
||||
<string name="prefs_outro_license">The app comes with no warranty</string>
|
||||
|
||||
<!-- Main screen -->
|
||||
<string name="tracking_format">Tracking: %s</string>
|
||||
|
||||
</resources>
|
||||
@@ -49,6 +49,7 @@ import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.asImageBitmap
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
@@ -78,12 +79,12 @@ internal fun SstvPage(
|
||||
) {
|
||||
Text(text = "🎙️", fontSize = 48.sp)
|
||||
Text(
|
||||
text = "Microphone access needed",
|
||||
text = stringResource(R.string.sstv_mic_permission),
|
||||
fontSize = 16.sp,
|
||||
color = MaterialTheme.colorScheme.onSurface
|
||||
)
|
||||
Button(onClick = requestMicPermission) {
|
||||
Text("Grant permission")
|
||||
Text(stringResource(R.string.sstv_grant_permission))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -97,7 +98,7 @@ internal fun SstvPage(
|
||||
val allModes = remember(sstv.supportedModes) { listOf("Auto") + sstv.supportedModes }
|
||||
val dismiss = { showModeDialog.value = false }
|
||||
ConfirmDialog(
|
||||
title = "SSTV Mode",
|
||||
title = stringResource(R.string.sstv_mode_title),
|
||||
onAccept = dismiss,
|
||||
onCancel = dismiss
|
||||
) {
|
||||
@@ -167,7 +168,7 @@ internal fun SstvPage(
|
||||
)
|
||||
} else {
|
||||
Text(
|
||||
text = if (sstv.status == SstvStatus.Recording) "Listening…" else "No signal",
|
||||
text = if (sstv.status == SstvStatus.Recording) stringResource(R.string.sstv_listening) else stringResource(R.string.sstv_no_signal),
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
fontSize = 16.sp,
|
||||
modifier = Modifier.align(Alignment.Center)
|
||||
@@ -196,7 +197,7 @@ internal fun SstvPage(
|
||||
) {
|
||||
// Doppler-corrected downlink frequency hint
|
||||
OutlinedText(
|
||||
text = dopplerFrequency?.let { "RX: $it Hz" } ?: "No transceiver selected",
|
||||
text = dopplerFrequency?.let { stringResource(R.string.sstv_rx_format, it) } ?: stringResource(R.string.sstv_no_transceiver),
|
||||
fontSize = 18.sp,
|
||||
fontWeight = FontWeight.Bold,
|
||||
fillColor = MaterialTheme.colorScheme.primary,
|
||||
@@ -227,7 +228,7 @@ internal fun SstvPage(
|
||||
) {
|
||||
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||
Text(
|
||||
text = "Mode: ${sstv.selectedMode}",
|
||||
text = stringResource(R.string.sstv_mode_format, sstv.selectedMode),
|
||||
fontSize = 14.sp,
|
||||
maxLines = 1,
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
|
||||
@@ -403,7 +403,7 @@ private fun ExpandedRadioControl(
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text(
|
||||
text = "TX Base: ",
|
||||
text = stringResource(R.string.radar_tx_base),
|
||||
fontSize = 14.sp,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -460,7 +460,7 @@ private fun ExpandedRadioControl(
|
||||
onClick = { onAction(RadarAction.SetCtcssTone(null)) },
|
||||
label = {
|
||||
Text(
|
||||
text = "Off",
|
||||
text = stringResource(R.string.radar_off),
|
||||
fontSize = 12.sp,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
@@ -492,19 +492,19 @@ private fun ExpandedRadioControl(
|
||||
if (!radioControl.txPanel.isConnected && !radioControl.rxPanel.isConnected) {
|
||||
CardButton(
|
||||
onClick = { onAction(RadarAction.ConnectRadios) },
|
||||
text = "Connect",
|
||||
text = stringResource(R.string.radar_connect),
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
} else {
|
||||
CardButton(
|
||||
onClick = { onAction(RadarAction.DisconnectRadios) },
|
||||
text = "Disconnect",
|
||||
text = stringResource(R.string.radar_disconnect),
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
}
|
||||
CardButton(
|
||||
onClick = { onAction(RadarAction.ToggleTracking) },
|
||||
text = if (radioControl.isTracking) "Stop" else "Track",
|
||||
text = if (radioControl.isTracking) stringResource(R.string.radar_stop) else stringResource(R.string.radar_track),
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
}
|
||||
@@ -726,7 +726,7 @@ private fun DopplerFrequencyCalculator(
|
||||
decorationBox = { innerTextField ->
|
||||
if (offsetKHz.isEmpty()) {
|
||||
Text(
|
||||
text = "Offset (kHz)",
|
||||
text = stringResource(R.string.radar_doppler_offset_hint),
|
||||
fontSize = 16.sp,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
|
||||
+2
-2
@@ -980,7 +980,7 @@ fun RadioControlDialog(
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text(
|
||||
text = "Split mode (IC-705 only)",
|
||||
text = stringResource(R.string.settings_split_mode),
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = splitModeLabelColor
|
||||
)
|
||||
@@ -1020,7 +1020,7 @@ fun RadioControlDialog(
|
||||
|
||||
if (selectingFor.value.isNotBlank()) {
|
||||
Text(
|
||||
text = "Paired Bluetooth Devices:",
|
||||
text = stringResource(R.string.settings_paired_devices),
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
|
||||
+3
-3
@@ -342,9 +342,9 @@ private fun LocationCard(
|
||||
Text(text = formatUpdateTime(updateTime = settings.stationPos.timestamp))
|
||||
Spacer(modifier = Modifier.height(2.dp))
|
||||
Row(horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()) {
|
||||
Text(text = "Lat: ${settings.stationPos.latitude}°")
|
||||
Text(text = "Lon: ${settings.stationPos.longitude}°")
|
||||
Text(text = "Qth: ${settings.stationPos.qthLocator}")
|
||||
Text(text = stringResource(R.string.prefs_lat_prefix, settings.stationPos.latitude))
|
||||
Text(text = stringResource(R.string.prefs_lon_prefix, settings.stationPos.longitude))
|
||||
Text(text = stringResource(R.string.prefs_qth_prefix, settings.stationPos.qthLocator))
|
||||
}
|
||||
Spacer(modifier = Modifier.height(1.dp))
|
||||
Row(horizontalArrangement = Arrangement.SpaceEvenly) {
|
||||
|
||||
Reference in new issue
Block a user