mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 02:44:02 +00:00
i18n: fix review findings and polish ru/es strings
Fixes the 51 P0–P2 findings from the full review of the i18n branch and the issues found while checking every new string on screen in ru and es. - Translate errors and statuses that still reached ru/es in English: feed and tile errors, provider statuses, the ALPR chip, the traffic mode chip, voice plan step labels, fire feed values, receiver bands, scene save reasons and the Cesium attribution link. - Show preset city names in the UI language (src/ui/placeNames.js); data and everything sent to the model stay English. - Share layer names between the layer panel, HUD and voice card (src/ui/layerNames.js). - Keep long ru/es strings whole: voice card error lines, analyst titles, the voice tier status, the Nepal evidence button, the ALPR retry chip. English layout is unchanged. - Ask before a language switch drops unsaved work. - Catalog fixes: glossary terms (пуск, пресет), gender agreement and consistent "peticiones" in es, fewer calques in both languages. - Fix English text that was itself wrong (e.g. "Exit cockpit to fly to a weather", raw tool ids in voice plan steps). Catalogs: es/ru 2535 messages each, complete. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
8029747b7e
commit
00704ddc89
212 files changed
+9871
-909
No files matched your search
+22
-6
@@ -17,7 +17,7 @@ import {
|
||||
selectAuthorizedSdrDevice,
|
||||
} from './usbDevices.js';
|
||||
import { summarizeLocalAdsb } from '../sources/adsbRecords.js';
|
||||
import { t } from '../i18n/index.js';
|
||||
import { formatNumber, t } from '../i18n/index.js';
|
||||
|
||||
export { createRememberingWebUsb } from './usbDevices.js';
|
||||
|
||||
@@ -1170,7 +1170,7 @@ export class SdrController {
|
||||
? {}
|
||||
: {
|
||||
message: t('Tuned to {mhz} MHz FM', {
|
||||
mhz: (frequency / 1_000_000).toFixed(1),
|
||||
mhz: formatMhz(frequency),
|
||||
}),
|
||||
}),
|
||||
});
|
||||
@@ -1206,7 +1206,7 @@ export class SdrController {
|
||||
const token = ++this._seekToken;
|
||||
this._setState({
|
||||
seeking: true,
|
||||
seekMessage: `Seeking ${seekDirection > 0 ? 'up' : 'down'}…`,
|
||||
seekMessage: seekDirection > 0 ? t('Seeking up…') : t('Seeking down…'),
|
||||
});
|
||||
this._audioNode?.port.postMessage({ type: 'volume', value: 0 });
|
||||
try {
|
||||
@@ -1217,7 +1217,7 @@ export class SdrController {
|
||||
const sequence = this._spectrumSequence;
|
||||
await this.tuneFm(center, { quiet: true });
|
||||
this._setState({
|
||||
seekMessage: `Scanning ${(center / 1_000_000).toFixed(1)} MHz…`,
|
||||
seekMessage: t('Scanning {mhz} MHz…', { mhz: formatMhz(center) }),
|
||||
});
|
||||
if (
|
||||
!(await this._waitForSpectrum(sequence)) ||
|
||||
@@ -1235,9 +1235,12 @@ export class SdrController {
|
||||
await this.tuneFm(peak.frequency, { quiet: true });
|
||||
this._setState({
|
||||
seeking: false,
|
||||
seekMessage: `Found ${(peak.frequency / 1_000_000).toFixed(1)} MHz · ${peak.snr.toFixed(1)} dB`,
|
||||
seekMessage: t('Found {mhz} MHz · {snr} dB', {
|
||||
mhz: formatMhz(peak.frequency),
|
||||
snr: formatOneDecimal(peak.snr),
|
||||
}),
|
||||
message: t('FM signal found at {mhz} MHz', {
|
||||
mhz: (peak.frequency / 1_000_000).toFixed(1),
|
||||
mhz: formatMhz(peak.frequency),
|
||||
}),
|
||||
});
|
||||
return peak;
|
||||
@@ -1371,6 +1374,19 @@ export class SdrController {
|
||||
}
|
||||
}
|
||||
|
||||
/** One decimal in the UI language ("98.5" / "98,5"); status text only. */
|
||||
function formatOneDecimal(value) {
|
||||
return formatNumber(value, {
|
||||
minimumFractionDigits: 1,
|
||||
maximumFractionDigits: 1,
|
||||
useGrouping: false,
|
||||
});
|
||||
}
|
||||
|
||||
function formatMhz(hz) {
|
||||
return formatOneDecimal(hz / 1_000_000);
|
||||
}
|
||||
|
||||
function positiveModulo(value, divisor) {
|
||||
return ((value % divisor) + divisor) % divisor;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user