diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 29853e678d..23385cf406 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -1840,11 +1840,11 @@ Zugriff auf die Barrierefreiheit ist erforderlich, um die Überlagerung zu zeich
Erweiterter Maßstab
Vergrößern Sie die Insel gleichmäßig auf allen Seiten
Schriftart
- Zeilenansicht
+ Linienansicht
Kurz Aktualisierungen auf der gesamten Insel anzeigen, dann zur Kompaktansicht zurückkehren
Komplikation innerhalb der App ausblenden
Bei externer Aktivität ausblenden
- Statusleistenelemente dynamisch ausblenden
+ Alle ausblenden, wenn erweitert
Kompakte Benachrichtigungen
Neue Benachrichtigungen als Zeilenvorschau anzeigen
Fortschrittsbenachrichtigungen beibehalten
@@ -1918,4 +1918,77 @@ Eingeschränkt – Niedrigste Priorität (Android 12+); etwa einmal täglich geb
Leichte Tönung
Online-Hilfemedien
Stärkee
+ Sekundäre Blase
+ Visuell ausgewogene, kompakte Insel
+ Im Vollbildmodus behalten
+ Statusleistensymbole dynamisch ausblenden
+ Akkustil
+ Nur bei niedrigem Akkustand anzeigen
+ Symbol nur unter folgenden Bedingungen
+ Prozentanzeige
+ % nur unter folgenden Bedingungen
+ Leerlauffarbe
+ Sekunden anzeigen
+ Nur im Launcher anzeigen
+ Ausblenden, solange eine App geöffnet ist
+ Benachrichtigungen anzeigen
+ Apps filtern
+ Nur Benachrichtigungen von ausgewählten Apps anzeigen
+ Stumme Benachrichtigungen überspringen
+ Benachrichtigungen ohne Ton ignorieren
+ Nicht stören beachten
+ Benachrichtigungen ausblenden, die durch Nicht stören stummgeschaltet werden
+ Downloads und andere laufende Fortschritte anzeigen
+ Warteschlange innerhalb der Insel
+ Warteschlange innerhalb der Insel anzeigen
+ Überlappen
+ Stapeln
+ Schwanzstil
+ OTP-Codes erkennen
+ Sensible Benachrichtigungen lesen
+ Erteilen Sie die Berechtigung mit Shizuku oder als Root oder führen Sie den Befehl über ADB aus.
+ Zum Kopieren tippen
+ Benachrichtigung nach dem Kopieren ausblenden
+ Codes aus jeder App anzeigen
+ Codes anzeigen für
+ Linienansicht nach dem Erweitern
+ Im ausgeschalteten Zustand fährt die Insel direkt wieder in die kompakte Position zurück
+ Vor einer Kurve erweitern
+ Neue Anweisung
+ Aus
+ Bildschirmaufzeichnung anzeigen
+ App-Filter
+ \"Gefällt mir\" Button anzeigen
+ \"Vorherige Titel\" Button anzeigen
+ Wiedergabefortsetzung beibehalten
+ Zeit anzeigen
+ Priorität beim Schließen
+ Ganztägige Ereignisse anzeigen
+ WLAN-Signal anzeigen
+ Mobilfunksignal anzeigen
+ Netzwerkaktivität anzeigen
+ Anzeige bei schwachem Signal
+ Alarme anzeigen innerhalb
+ Zeit ausblenden
+ Widgets stapeln und zwischen ihnen wechseln
+ Widget-Stapel
+ Platziere mehrere Widgets aus beliebigen Apps an einer Stelle auf deinem Startbildschirm.
+
+Der Stapel wechselt zeitgesteuert zum nächsten Widget. Alternativ kannst du mit den Pfeilen darunter wechseln. Widgets, die eine scrollbare Liste anzeigen, wie z. B. ein Kalender, können nicht in einem Stapel angezeigt werden.
+ Lautstärkestufen
+ Ändern Sie die Medienlautstärke schneller mit jedem Tastendruck
+ App-Lautstärke
+ Stellen Sie für jede App eine separate Lautstärke ein
+ Lautstärkestufen aktivieren
+ Schritte pro Tastendruck
+ Legt fest, um wie viele Schritte sich die Medienlautstärke bei jedem Drücken einer Lautstärketaste ändert. Das Gedrückthalten einer Taste erhöht die Lautstärke, bis Sie sie loslassen. Anrufe, Klingeltöne, Alarme und Kamera-Apps behalten ihr normales Lautstärkeverhalten bei.
+
+Wenn die Tastenbelegung eine Aktion für langes Drücken einer Lautstärketaste hat, wird beim Gedrückthalten dieser Taste die Aktion ausgeführt, anstatt die Lautstärke zu ändern. Ein kurzer Druck ändert die Lautstärke weiterhin um die von Ihnen festgelegte Schrittgröße. Während das Lautstärkefeld angezeigt wird, pausiert die Tastenbelegung standardmäßig, sodass das Gedrückthalten der Taste die Lautstärke ändert. Deaktivieren Sie in der Tastenbelegung die Option „Deaktiviert, während der Lautstärkedialog geöffnet ist“, wenn die Aktion immer Vorrang haben soll.
+ App-Lautstärke aktivieren
+ Kontrol-UI-Überlagerung
+ App hinzufügen
+ Lautstärke einstellen, bevor die App startet
+ Verringert die Audioausgabe einer App, ohne die Medienlautstärke für alle anderen Apps zu ändern. Wählen Sie für jede App eine Stufe aus. Diese wird jedes Mal angewendet, wenn die App Ton abspielt, auch im Hintergrund.
+
+Die Stufen können nur von der normalen Lautstärke abwärts, niemals darüber hinausgehen. Einige Spiele und Audio-Apps mit niedriger Latenz ignorieren die Stufe möglicherweise. Shizuku muss ausgeführt werden, damit neue Stufen angewendet werden. Starten Sie es daher nach einem Neustart erneut
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 538a85933f..556daf89cb 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -1573,7 +1573,7 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s
Permitir bajar el límite del brillo de pantalla cuando el modo ahorro este activado.
Factor del Ajustador de Brillo
Deshabilitar Animaciones
- Apagar anjmacjones de ventanas y de sistema.
+ Apagar animaciones de ventanas y de sistema.
Desactivar Pantalla Siempre Encendida
Apagar Pantalla Siempre Encendida / Ambiente.
Forzar tema oscuro cuando el modo ahorro este activado.
@@ -1826,4 +1826,48 @@ Requiere permiso de administrador del dispositivo si se utiliza el bloqueo.Brilla brevemente detrás de la isla el color de la app
Colores dinamicos
Deshabilirar si el panel de volumen esta abierto
+ Expandir antes de una curva
+ Línea compacta después expandir
+ Burbuja secundaria
+ Isla compacta visualmente equilibrada
+ Mantenlo en pantalla completa
+ Ocultar dinámicamente (isla compacta) los iconos de la barra de estado
+ Escalones de volumen
+ Cambia el volumen del medio más rápido con cada pulsación de tecla
+ Volumen por app
+ Establece un volumen separado para cada app
+ Añadir app
+ Pon un volumen antes de que empiece la app a reproducirse
+ Superposición de la interfaz de control
+ Activar el volumen por app
+ Habilitar escalones de volumen
+ Escalones por pulsación
+ Pila de widgets
+ Apila widgets y cambia entre ellos
+ Lanzador de actividades
+ Abre o fija cualquier pantalla de la aplicación
+ Atajos de pantalla de bloqueo
+ Ejecuta tus propias acciones desde la pantalla de bloqueo
+ Barra de gestos, gestos y ajustes en la barra de navegación
+ Activar atajos de pantalla de bloqueo
+ Notificación de baterías
+ Mostrar porcentaje
+ Separar canales de batería
+ Separar canales LR (Izquierda-derecha)
+ Poner todas las aplicaciones en el grupo de espera de aplicaciones cuando estén activas.
+ Desactivar el lanzamiento rapido
+ Reduce el aumento de CPU durante el inicio de la app para ahorrar energía.
+ Entra en modo de suspensión Doze más rápido cuando la pantalla se apaga.
+ Activar Doze rápido
+ Desactivar sensores opcionales
+ Desactivar los sensores opcionales que consumen mucha energía, como el sensor de proximidad, el giroscopio, etc.
+ Posponer la copia de seguridad completa
+ Posponer las copias de seguridad completas del sistema hasta que se desactive el modo de ahorro de batería.
+ Posponer las copias de seguridad de tipo clave-valor.
+ Posponer copia de seguridad de tipo clave-valor
+ Restringir la detección de palabras de activación del asistente (por ejemplo, «Ok Google»).
+ Modo de cambio de sonido
+ Iluminación facial
+ Aumentar el brillo en condiciones de poca luz.
+ Umbral de luz ambiental
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 15649dc517..c58f55652e 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -1718,4 +1718,5 @@ Les effets de la LED HiLight peuvent être aussi utilisés comme une action dans
Allumez une LED supplémentaire à chaque huitième de seconde de téléchargement ou de mise à jour en direct, et faites-la clignoter à la fin
Séquentiel
Affiche la progression des téléchargements et les mises à jour en direct sur les LED Hilight, allumant une LED supplémentaire à chaque huitième de progression et faisant clignoter les huit LED une fois le téléchargement terminé. Nécessite Shizuku.
+ Garder en plein écran
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 7f5af4f1de..ed045d3995 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -117,4 +117,19 @@ Anda dapat menyesuaikan gaya animasi, warna, dan perilakunya. Fitur ini berfungs
Skala animasi jendela
Ikon aplikasi
Sesuaikan ikon peluncur layar beranda.
+ Efek notifikasi
+ Putar efek masing-masing aplikasi saat notifikasi tiba.
+ Tampilkan kemajuan pengunduhan dan pembaruan langsung pada LED.
+ Hanya ketika layar mati
+ Jangan memicu di mode DND
+ Ubah volume media lebih cepat dengan setiap penekanan tombol.
+ Aktifkan volume steps
+ langkah per tekanan
+ Volume aplikasi
+ Atur volume terpisah untuk setiap aplikasi.
+ Aktifkan volume aplikasi
+ Kontrol UI overlay
+ Tambah aplikasi
+ Atur volume sebelum aplikasi mulai memutar musik.
+ Sedang memutar · %1$s
\ No newline at end of file
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 23fd4dac8e..0cdefbff59 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -1894,4 +1894,11 @@
Islandが非表示の状態でもジェスチャーができるようにします
ダイナミックアイランド
意識ゲート画面を表示するアプリを選択
+ 画面分割ジェスチャー
+ 画面下部から2本の指で上にスワイプして、現在のアプリを分割または分割解除します
+ 戻るジェスチャー
+ エッジの幅とアプリごとの戻るジェスチャー
+ ジェスチャーバー、ナビゲーションジェスチャー、ナビゲーションバーの調整
+ ロック画面ショートカット
+ ロック画面から独自のアクションを実行します
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 216f2b1b38..b74852eac1 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -1582,4 +1582,6 @@ Aby ustawienie zadziałało, może być konieczne wielokrotne zastosowanie.Ilość
Mocniejsze
Ukryta obsługa debuggowania
+ Dźwięki aplikacji
+ Ustaw osobną głośność dla każdej aplikacji
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index f389ea1067..d1e88c964f 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -1691,4 +1691,71 @@
Iluminação automática ao despertar
Desbloqueio por gatilho
Tonalidade clara
+ Espaçamento superior da paisagem
+ Conecte com o entalhe quando inativo
+ Tempo limite expandido
+ Duração antes de retornar ao estado de comprimido colapsado (0 para infinito)
+ Mostrar fica de alinhamento
+ Escala espandida
+ tamanho da fonte (letras)
+ raio de canto expandido
+ Acolchoamento expandido
+ Acolchoamento superior expandido
+ Contorno da borda
+ Desenha um contorno fino ao redor da ilha.
+ Exibir sombra de pulso na notificação
+ Brilha brevemente atrás da ilha na cor do aplicativo.
+ Expanda a ilha uniformemente em todos os lados.
+ Espiada na linha
+ Mostrar quando
+ Desbloqueado
+ Sempre
+ Ocultar complicação dentro do aplicativo
+ Ocultar quando a barra de status estiver expandida
+ Manter em tela cheia
+ Desativar interações em tela cheia
+ Ocultar avisos do sistema
+ Ocultar atualizações ao vivo dinamicamente
+ Ocultar todos os itens para ilha compacta
+ Ocultar dinamicamente os ícones da barra de status
+ Ocultar tudo quando expandido
+ Dispensar atividades externas
+ Mostrar todos os eventos do dia
+ Prioridade ao fechar
+ Mostrar os próximos eventos em
+ Ocultar enquanto o aplicativo estiver aberto
+ Mostrador de relógio
+ customize seu mostrador de relógio (estranho)
+ Personalizar widgets de complicações
+ compilações
+ Instalar eSIM
+ Mesmo em regiões sem suporte
+ bicolor
+ Horas em branco, minutos em cor de destaque
+ Apenas o esboço
+ Exibir apenas os contornos da fonte em vez do texto preenchido.
+ esconder bateria
+ Ocultar rastros de arco e indicadores da bateria
+ esconder ícones do dispositivo
+ Ocultar ícones de relógio e telefone na parte inferior
+ mostrar compilações
+ Exibir widgets laterais esquerdo e direito
+ mostrar no AOD
+ manter compilações visíveis mesmo no AOD
+ esboço das compilações
+ mostrar uma borda circular ao redor dos itens
+ compilação esquerda
+ compilação direita
+ Mostrar brilho
+ Gradiente dinâmico de destaque superior para eventos e viagens.
+ escolha o que mostrar
+ alerta de bateria baixa
+ Exibir alerta quando a bateria do relógio ou do telefone estiver abaixo de 20%.
+ Já chegamos? (Previsão de chegada da viagem)
+ mostrar tempo restante/distância para a destinação
+ Mostrar as próximas reuniões de hoje
+ próximo alarme
+ Exibir o horário do alarme quando não houver eventos.
+ capturas de tela
+ Limpar capturas de tela compartilhadas e antigas
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 6095b140d9..5d89947790 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -68,8 +68,8 @@
Информация о музыке на AOD
Всегда видно
Оставляйте информацию всегда видимой, пока воспроизводится музыка на AOD
- Respect new notifications
- Briefly disable for new notifications
+ Привилегировать уведомления
+ Выключать для показа новых сообщений
Случайные фигуры
Использовать различные фигуры Material 3 для обложки альбома
Album art
@@ -1822,15 +1822,15 @@
Скорость разрядки
Температуры
Режим зарядки
- Подсветка лица
- Поднимает яркость когда света мало
+ Ночная подсветка
+ Повышает яркость в плохом освещении
Порог срабатывания
Сейчас: %1$s
Автоматически подсветить при включении
Светлый оттенок
Реакция на разблокировку
Скрыыать live updates Динамично
- Запуск Activity
+ Запуск активностей
Откройте или закрепите любой экран приложения
Движение назад
Удалять отправленные скриншоты
@@ -1844,12 +1844,12 @@
Покажите предстоящие сегодняшние встречи
Мы здесь (Travel ETA)
Показать оставшееся время / расстояние до пункта назначения
- Ярлыки экрана блокировки
- Запустите свои собственные действия с экрана блокировки
+ Быстрые действия на экране блокировки
+ Запускайте собственные действия с экрана блокировки
Бар жестов, навигационные жесты и настройки панели навигации
Подсветите задние светодиоды для уведомлений и живого прогресса
Уведомлять о новых уведомлениях
- Скрыть поддержку отладки
+ Скрытая поддержка отладки
Средний ток
Лаунчер по умолчанию
Включите или выключите кольцо камеры Duo.
@@ -1857,4 +1857,11 @@
Приложения в этой метке будут заблокированы от автоматического замораживания
Тег цветовая кодировка
Показать цвета тегов в сетке приложения
+ Инвертировать направления
+ Всегда доступные жесты
+ Оставлять пространство для жестов даже когда остров спрятан
+ Вместимость
+ Здоровье батареи
+ Стопка виджетов
+ Складывайте виджеты в стопку и переключайтесь между ними
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 72f5d49d44..d71fe3ae8a 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -1837,4 +1837,14 @@ Seviyeler yalnızca normal ses seviyesinin altına inebilir, asla üstüne çık
Düğme yeniden eşleme bir ses seviyesi tuşu için uzun basma eylemi varsa, o tuşa basılı tutmak ses seviyesini değiştirmek yerine eylemi çalıştırır ve kısa basma yine de ses seviyesini adım boyutu kadar değiştirir. Ses paneli açıkken, Düğme yeniden eşleme varsayılan olarak duraklatılır, bu nedenle tuşa basılı tutmak ses seviyesini değiştirir. Eylemin her zaman öncelikli olmasını istiyorsanız, Düğme yeniden eşlemede \"Ses iletişim kutusu açıkken devre dışı bırak\" seçeneğini kapatın.
Ses iletişim kutusu açıkken devre dışı bırak
+ Ekran Görüntüleri
+ Paylaşılan ve eski ekran görüntülerini temizleyin.
+ Olan bitenler hakkında kısa bir bilgi edinin.
+ Parçayı değiştir
+ Her zaman kullanılabilir hareketler
+ Adanın Yeri
+ Görseller
+ Hizalama ipucunu göster
+ Orta
+ İnternet Hızı
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index f40ec053d3..42525b6d9c 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -1944,4 +1944,20 @@ Cần có quyền truy cập trợ năng để hiển thị lớp phủ và cầ
Hình ảnh
Khoảng thời gian
Hành vi
+ Hỗ trợ gỡ lỗi ẩn
+ Các cử chỉ luôn khả dụng
+ Giữ cho vùng thao tác cử chỉ vẫn khả dụng ngay cả khi island đang ẩn đi
+ Giữ ở chế độ ngang
+ Cân bằng trực quan island thu gọn
+ Bong bóng phụ
+ Giữ ở chế độ toàn màn hình
+ Ẩn Live Updates tự động
+ Ẩn tất cả mục cho island thu gọn
+ Ẩn động các biểu tượng thanh trạng thái
+ Số lượng tối đa để xem
+ Kích hoạt đèn thông báo
+ Lớp phủ
+ Tìm kiếm Essential
+ Khoảng cách phía trên ở chế độ ngang
+ Liên kết với tai thỏ khi không hoạt động
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 3e59431837..c8402e24a8 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -1667,4 +1667,64 @@
以覆盖层的形式
息屏的壁纸
Duo(镜头交互环)
+ 简报
+ 获取当前正在发生事情的简报
+ 播放时点赞
+ 短暂显示
+ 短暂在灵动岛显示更新,然后恢复紧凑状态
+ 次级气泡(消息环)
+ 视觉上居中对齐
+ 在什么时候显示
+ 解锁时
+ 打开应用时隐藏
+ 全屏时保持显示
+ 隐藏系统的通知(横幅通知)
+ 动态隐藏实时更新
+ 隐藏紧凑型灵动岛的所有项目
+ 展开时隐藏所有内容
+ 动态隐藏状态栏图标
+ 点击外部区域时关闭
+ 启用状态快照
+ 显示状态快照
+ 自动检测摄像头位置
+ 自动对齐至前置摄像头旁
+ 单击
+ 当媒体播放时停止
+ 右滑
+ 正在播放时切换下一首
+ 自动调整亮度
+ 粗体文本
+ 加粗文字以提高易读性
+ 使用 Material You 色彩
+ 媒体卡片取色
+ 播放时提取封面色彩,作为卡片背景
+ 在快捷设置中隐藏
+ 在锁屏中隐藏
+ 设备锁屏时隐藏此组件
+ 使用媒体播放卡片
+ 显示播放信息
+ 将音符替换为应用图标
+ 音量级数
+ 每次按键时更快地调节媒体音量
+ 应用独立音量控制
+ 为每个应用单独设置音量
+ 开启音量级数
+ 每次按压音量的调节级数
+ 启用单独APP音量控制
+ 添加应用
+ 为每个应用设置初始音量
+ 小部件叠放
+ 将多个小部件叠放在一起,并在它们之间滑动切换
+ 人脸补光
+ 在较暗时自动调高亮度
+ 预览
+ 自动
+ 摄像头宽度
+ 保持显示
+ 显示时长
+ 通过使用叠加层
+ 安装 eSIM
+ 即使在不支持的地区/国家
+ 高光
+ 活动启动器
diff --git a/scripts/merge_translation_prs.sh b/scripts/merge_translation_prs.sh
index 37b8b25512..0612a31544 100755
--- a/scripts/merge_translation_prs.sh
+++ b/scripts/merge_translation_prs.sh
@@ -56,4 +56,9 @@ while read -r num branch; do
done <<< "$prs"
git checkout -q "$start_branch"
+if ! python3 scripts/validate_strings.py >/dev/null 2>&1; then
+ python3 scripts/validate_strings.py --fix >/dev/null 2>&1
+ echo "develop has translation issues after merging; fixed locally in the working tree, review and commit"
+ git status --short
+fi
echo; echo "Merged: ${merged[*]:-none}"; echo "Failed: ${failed[*]:-none}"
diff --git a/scripts/validate_strings.py b/scripts/validate_strings.py
index 6a5d1ff102..79a48ec057 100755
--- a/scripts/validate_strings.py
+++ b/scripts/validate_strings.py
@@ -9,6 +9,7 @@
4. Unescaped Percentage Signs (%)
5. Format Specifier Mismatches (compared against values/strings.xml)
6. Invalid Escape Sequences
+7. Extra Translations (keys missing from values/strings.xml, fails lint ExtraTranslation)
Usage:
python3 scripts/validate_strings.py # Validate all strings.xml files
@@ -177,6 +178,7 @@ def validate_file(file_path, base_strings, auto_fix=False):
)
new_lines = list(lines)
+ lines_to_drop = set()
for idx, line in enumerate(lines, start=1):
for match in string_tag_pattern.finditer(line):
@@ -201,6 +203,13 @@ def validate_file(file_path, base_strings, auto_fix=False):
item_issues = check_string_value(key, val, is_formatted)
+ if base_strings and os.path.basename(os.path.dirname(file_path)) != "values" and key not in base_strings:
+ item_issues.append({
+ 'type': 'EXTRA_TRANSLATION',
+ 'msg': f"'{key}' is not defined in values/strings.xml (lint ExtraTranslation).",
+ 'fixable': True
+ })
+
# Format Specifier Comparison against base strings
if key in base_strings:
base_specs = base_strings[key]['specifiers']
@@ -244,6 +253,9 @@ def validate_file(file_path, base_strings, auto_fix=False):
temp = temp.replace('VALID_SPEC_', '')
fixed_val = temp.replace('DOUBLE_PERCENT_MARKER', '%%')
fixed_this_item = True
+ elif issue['type'] == 'EXTRA_TRANSLATION':
+ lines_to_drop.add(idx - 1)
+ file_modified = True
elif issue['type'] == 'MALFORMED_FORMAT_SPECIFIER':
fixed_val = fixed_val.replace('ф', 'f')
fixed_this_item = True
@@ -259,7 +271,7 @@ def validate_file(file_path, base_strings, auto_fix=False):
if auto_fix and file_modified:
with open(file_path, 'w', encoding='utf-8') as f:
- f.writelines(new_lines)
+ f.writelines(l for i, l in enumerate(new_lines) if i not in lines_to_drop)
return issues_found, file_modified