Minor UI change: Add line break for "bits/px" Shannon's entropy text (#780)
What changed, and why it matters
This commit is a cosmetic user-interface change. It splits a single line of text showing camera-captured entropy statistics into two lines so it fits better on small screens. No security-sensitive code, calculations, or behavior was altered.
No security action needed; treat as a normal UI/translation maintenance commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change refactors the Shannon entropy display message in src/krux/pages/capture_entropy.py from one translated string with two format placeholders (‘%s bits (%s bits/px)’) into two consecutive translated strings (‘%s bits’ and ‘(%s bits/px)’), adding a line break between them. Corresponding translation files and their compiled Python arrays are updated to match the new keys, and the unit test expectation string is updated. The underlying entropy computation, threshold checks, and camera handling remain untouched.
Changed components
src/krux/pages/capture_entropy.pyi18n translation JSON filessrc/krux/translations/*.pytests/pages/test_capture_entropy.pyInspect captured patch +52 / −27
diff --git a/i18n/translations/de-DE.json b/i18n/translations/de-DE.json
index 20532c1..ad6c3ae 100644
--- a/i18n/translations/de-DE.json
+++ b/i18n/translations/de-DE.json
@@ -2,11 +2,12 @@
"% of the amount.": "% des Betrags.",
"%d of %d multisig": "%d von %d Multisig",
"%d to %d": "%d bis %d ",
- "%s bits (%s bits/px)": "%s Bits (%s Bits/px)",
+ "%s bits": "%s Bits",
"%s bytes": "%s Bytes",
"%s chars": "%s Zchn.",
"%s removed.": "%s wurde entfernt.",
"%s: loaded!": "%s: geladen!",
+ "(%s bits/px)": "(%s Bits/px)",
"(Experimental)": "(Experimental)",
"(watch-only)": "(nur zur Betrachtung)",
"12 words": "12 Wörter",
diff --git a/i18n/translations/es-MX.json b/i18n/translations/es-MX.json
index 92a5c8b..9c22e7b 100644
--- a/i18n/translations/es-MX.json
+++ b/i18n/translations/es-MX.json
@@ -2,11 +2,12 @@
"% of the amount.": "% del monto.",
"%d of %d multisig": "%d de %d multisig",
"%d to %d": "%d a %d",
- "%s bits (%s bits/px)": "%s bits (%s bits/px)",
+ "%s bits": "%s bits",
"%s bytes": "%s bytes",
"%s chars": "%s carac.",
"%s removed.": "%s eliminado.",
"%s: loaded!": "%s: ¡cargado!",
+ "(%s bits/px)": "(%s bits/px)",
"(Experimental)": "(Experimental)",
"(watch-only)": "(Solo para observación)",
"12 words": "12 palabras",
diff --git a/i18n/translations/fr-FR.json b/i18n/translations/fr-FR.json
index b76693c..84ee289 100644
--- a/i18n/translations/fr-FR.json
+++ b/i18n/translations/fr-FR.json
@@ -2,11 +2,12 @@
"% of the amount.": "% du montant.",
"%d of %d multisig": "%d de %d multisignature",
"%d to %d": "%d à %d",
- "%s bits (%s bits/px)": "%s bits (%s bits/px)",
+ "%s bits": "%s bits",
"%s bytes": "%s octets",
"%s chars": "%s car.",
"%s removed.": "%s supprimé.",
"%s: loaded!": "%s : chargé !",
+ "(%s bits/px)": "(%s bits/px)",
"(Experimental)": "(Expérimental)",
"(watch-only)": "(consultation)",
"12 words": "12 mots",
diff --git a/i18n/translations/ja-JP.json b/i18n/translations/ja-JP.json
index c668969..9986b56 100644
--- a/i18n/translations/ja-JP.json
+++ b/i18n/translations/ja-JP.json
@@ -2,11 +2,12 @@
"% of the amount.": "% の金額.",
"%d of %d multisig": "%d の%d マルチシグネチャ",
"%d to %d": "%d へ %d",
- "%s bits (%s bits/px)": "%sビット(%sビット/px)",
+ "%s bits": "%sビット",
"%s bytes": "%s バイト",
"%s chars": "%s 文字",
"%s removed.": "%s 削除されました.",
"%s: loaded!": "%s:読み込まれました!",
+ "(%s bits/px)": "(%sビット/px)",
"(Experimental)": "(実験的)",
"(watch-only)": "(閲覧専用)",
"12 words": "12の単語",
diff --git a/i18n/translations/ko-KR.json b/i18n/translations/ko-KR.json
index c5ae009..1339988 100644
--- a/i18n/translations/ko-KR.json
+++ b/i18n/translations/ko-KR.json
@@ -2,11 +2,12 @@
"% of the amount.": "수량: %",
"%d of %d multisig": "%d의 %d 멀티시그",
"%d to %d": "%d 부터 %d",
- "%s bits (%s bits/px)": "%s 비트 (%s 비트/픽셀)",
+ "%s bits": "%s 비트",
"%s bytes": "%s 바이트",
"%s chars": "%s 자",
"%s removed.": "%s 제거되었습니다.",
"%s: loaded!": "%s: 로드됨!",
+ "(%s bits/px)": "(%s 비트/픽셀)",
"(Experimental)": "(실험적 기능)",
"(watch-only)": "(잔액조회 전용)",
"12 words": "12단어",
diff --git a/i18n/translations/nl-NL.json b/i18n/translations/nl-NL.json
index 6796d8c..83c4518 100644
--- a/i18n/translations/nl-NL.json
+++ b/i18n/translations/nl-NL.json
@@ -2,11 +2,12 @@
"% of the amount.": "% van het bedrag.",
"%d of %d multisig": "%d van %d multisig",
"%d to %d": "%d tot %d",
- "%s bits (%s bits/px)": "%s bits (%s bits/px)",
+ "%s bits": "%s bits",
"%s bytes": "%s bytes",
"%s chars": "%s tek.",
"%s removed.": "%s verwijderd.",
"%s: loaded!": "%s: geladen!",
+ "(%s bits/px)": "(%s bits/px)",
"(Experimental)": "(Experimenteel)",
"(watch-only)": "(alleen inzien)",
"12 words": "12 woorden",
diff --git a/i18n/translations/pt-BR.json b/i18n/translations/pt-BR.json
index 60b9b16..c98b1cf 100644
--- a/i18n/translations/pt-BR.json
+++ b/i18n/translations/pt-BR.json
@@ -2,11 +2,12 @@
"% of the amount.": "% do total.",
"%d of %d multisig": "%d de %d multisig",
"%d to %d": "%d a %d",
- "%s bits (%s bits/px)": "%s bits (%s bits/px)",
+ "%s bits": "%s bits",
"%s bytes": "%s bytes",
"%s chars": "%s carac.",
"%s removed.": "%s excluído.",
"%s: loaded!": "%s: carregado!",
+ "(%s bits/px)": "(%s bits/px)",
"(Experimental)": "(Experimental)",
"(watch-only)": "(Somente visualização)",
"12 words": "12 palavras",
diff --git a/i18n/translations/ru-RU.json b/i18n/translations/ru-RU.json
index afc5ef5..7f4ef2f 100644
--- a/i18n/translations/ru-RU.json
+++ b/i18n/translations/ru-RU.json
@@ -2,11 +2,12 @@
"% of the amount.": "% от суммы.",
"%d of %d multisig": "%d из %d мультиподпись",
"%d to %d": "%d к %d",
- "%s bits (%s bits/px)": "%s бит (%s бит/px)",
+ "%s bits": "%s бит",
"%s bytes": "%s байт",
"%s chars": "%s симв.",
"%s removed.": "%s удален.",
"%s: loaded!": "%s: загружено!",
+ "(%s bits/px)": "(%s бит/пиксель)",
"(Experimental)": "(Эксперементальный)",
"(watch-only)": "(Только часы)",
"12 words": "12 слов",
diff --git a/i18n/translations/tr-TR.json b/i18n/translations/tr-TR.json
index 9e2ccf2..7360202 100644
--- a/i18n/translations/tr-TR.json
+++ b/i18n/translations/tr-TR.json
@@ -2,11 +2,12 @@
"% of the amount.": "tutarın %'si.",
"%d of %d multisig": "%d / %d çoklu imza",
"%d to %d": "%d to %d",
- "%s bits (%s bits/px)": "%s bit (%s bit/piksel)",
+ "%s bits": "%s bit",
"%s bytes": "%s bayt",
"%s chars": "%s kar.",
"%s removed.": "%s kaldırıldı.",
"%s: loaded!": "%s: yüklendi!",
+ "(%s bits/px)": "(%s bit/piksel)",
"(Experimental)": "(Deneysel)",
"(watch-only)": "(sadece izle)",
"12 words": "12 kelime",
diff --git a/i18n/translations/vi-VN.json b/i18n/translations/vi-VN.json
index 22a1e4d..35bb6f2 100644
--- a/i18n/translations/vi-VN.json
+++ b/i18n/translations/vi-VN.json
@@ -2,11 +2,12 @@
"% of the amount.": "% của số tiền.",
"%d of %d multisig": "%d của %d đa chữ kí",
"%d to %d": "%d đến %d",
- "%s bits (%s bits/px)": "%s bit (%s bit/px)",
+ "%s bits": "%s bit",
"%s bytes": "%s byte",
"%s chars": "%s ký tự",
"%s removed.": "%s Đã bỏ.",
"%s: loaded!": "%s: đã tải!",
+ "(%s bits/px)": "(%s bit/px)",
"(Experimental)": "(Thực nghiệm)",
"(watch-only)": "(chỉ xem)",
"12 words": "12 từ",
diff --git a/i18n/translations/zh-CN.json b/i18n/translations/zh-CN.json
index f7205d0..b803a2d 100644
--- a/i18n/translations/zh-CN.json
+++ b/i18n/translations/zh-CN.json
@@ -2,11 +2,12 @@
"% of the amount.": "% 的金额.",
"%d of %d multisig": "%d/%d 多签",
"%d to %d": "%d到%d",
- "%s bits (%s bits/px)": "%s位 (%s位/像素)",
+ "%s bits": "%s位",
"%s bytes": "%s 字节",
"%s chars": "%s 个字符",
"%s removed.": "已移除%s",
"%s: loaded!": "%s :已加载!",
+ "(%s bits/px)": "(%s位/像素)",
"(Experimental)": "(实验性)",
"(watch-only)": "(仅观察)",
"12 words": "12 单词",
diff --git a/src/krux/pages/capture_entropy.py b/src/krux/pages/capture_entropy.py
index 21e5324..3d51d29 100644
--- a/src/krux/pages/capture_entropy.py
+++ b/src/krux/pages/capture_entropy.py
@@ -187,9 +187,11 @@ class CameraEntropy(Page):
shannon_16b_total = shannon_16b * img_pixels
entropy_msg = t("Shannon's entropy:") + "\n"
- entropy_msg += (t("%s bits (%s bits/px)") + "\n\n") % (
- generate_thousands_separator(int(shannon_16b_total)),
- replace_decimal_separator("%.2g" % shannon_16b),
+ entropy_msg += (t("%s bits") + "\n") % generate_thousands_separator(
+ int(shannon_16b_total)
+ )
+ entropy_msg += (t("(%s bits/px)") + "\n\n") % replace_decimal_separator(
+ "%.2g" % shannon_16b
)
entropy_msg += "%s %s" % (t("Pixels deviation index:"), str(self.stdev_index))
self.ctx.display.clear()
diff --git a/src/krux/translations/__init__.py b/src/krux/translations/__init__.py
index 31c3f4a..fffc9af 100644
--- a/src/krux/translations/__init__.py
+++ b/src/krux/translations/__init__.py
@@ -36,11 +36,12 @@ ref_array = [
232475068,
1185266064,
1503087751,
- 2405586747,
+ 417909373,
2032388104,
3012047951,
1178563089,
1696437881,
+ 2792960854,
3348584292,
1099786887,
2739590230,
diff --git a/src/krux/translations/de.py b/src/krux/translations/de.py
index 4bf1c87..de8ed8f 100644
--- a/src/krux/translations/de.py
+++ b/src/krux/translations/de.py
@@ -24,11 +24,12 @@ translation_array = [
"% des Betrags.",
"%d von %d Multisig",
"%d bis %d ",
- "%s Bits (%s Bits/px)",
+ "%s Bits",
"%s Bytes",
"%s Zchn.",
"%s wurde entfernt.",
"%s: geladen!",
+ "(%s Bits/px)",
"(Experimental)",
"(nur zur Betrachtung)",
"12 Wörter",
diff --git a/src/krux/translations/es.py b/src/krux/translations/es.py
index 8ea9b1f..99c7e04 100644
--- a/src/krux/translations/es.py
+++ b/src/krux/translations/es.py
@@ -24,11 +24,12 @@ translation_array = [
"% del monto.",
"%d de %d multisig",
"%d a %d",
- "%s bits (%s bits/px)",
+ "%s bits",
"%s bytes",
"%s carac.",
"%s eliminado.",
"%s: ¡cargado!",
+ "(%s bits/px)",
"(Experimental)",
"(Solo para observación)",
"12 palabras",
diff --git a/src/krux/translations/fr.py b/src/krux/translations/fr.py
index 55ca8d2..171e09f 100644
--- a/src/krux/translations/fr.py
+++ b/src/krux/translations/fr.py
@@ -24,11 +24,12 @@ translation_array = [
"% du montant.",
"%d de %d multisignature",
"%d à %d",
- "%s bits (%s bits/px)",
+ "%s bits",
"%s octets",
"%s car.",
"%s supprimé.",
"%s\u2009: chargé\u2009!",
+ "(%s bits/px)",
"(Expérimental)",
"(consultation)",
"12 mots",
diff --git a/src/krux/translations/ja.py b/src/krux/translations/ja.py
index 7ae0c5e..f6e7904 100644
--- a/src/krux/translations/ja.py
+++ b/src/krux/translations/ja.py
@@ -24,11 +24,12 @@ translation_array = [
"% の金額.",
"%d の%d マルチシグネチャ",
"%d へ %d",
- "%sビット(%sビット/px)",
+ "%sビット",
"%s バイト",
"%s 文字",
"%s 削除されました.",
"%s:読み込まれました!",
+ "(%sビット/px)",
"(実験的)",
"(閲覧専用)",
"12の単語",
diff --git a/src/krux/translations/ko.py b/src/krux/translations/ko.py
index 323856d..b4f44d7 100644
--- a/src/krux/translations/ko.py
+++ b/src/krux/translations/ko.py
@@ -24,11 +24,12 @@ translation_array = [
"수량: %",
"%d의 %d 멀티시그",
"%d 부터 %d",
- "%s 비트 (%s 비트/픽셀)",
+ "%s 비트",
"%s 바이트",
"%s 자",
"%s 제거되었습니다.",
"%s: 로드됨!",
+ "(%s 비트/픽셀)",
"(실험적 기능)",
"(잔액조회 전용)",
"12단어",
diff --git a/src/krux/translations/nl.py b/src/krux/translations/nl.py
index 2a08967..2869e81 100644
--- a/src/krux/translations/nl.py
+++ b/src/krux/translations/nl.py
@@ -24,11 +24,12 @@ translation_array = [
"% van het bedrag.",
"%d van %d multisig",
"%d tot %d",
- "%s bits (%s bits/px)",
+ "%s bits",
"%s bytes",
"%s tek.",
"%s verwijderd.",
"%s: geladen!",
+ "(%s bits/px)",
"(Experimenteel)",
"(alleen inzien)",
"12 woorden",
diff --git a/src/krux/translations/pt.py b/src/krux/translations/pt.py
index 39e4802..ed6f183 100644
--- a/src/krux/translations/pt.py
+++ b/src/krux/translations/pt.py
@@ -24,11 +24,12 @@ translation_array = [
"% do total.",
"%d de %d multisig",
"%d a %d",
- "%s bits (%s bits/px)",
+ "%s bits",
"%s bytes",
"%s carac.",
"%s excluído.",
"%s: carregado!",
+ "(%s bits/px)",
"(Experimental)",
"(Somente visualização)",
"12 palavras",
diff --git a/src/krux/translations/ru.py b/src/krux/translations/ru.py
index a90aa47..5440ebb 100644
--- a/src/krux/translations/ru.py
+++ b/src/krux/translations/ru.py
@@ -24,11 +24,12 @@ translation_array = [
"% от суммы.",
"%d из %d мультиподпись",
"%d к %d",
- "%s бит (%s бит/px)",
+ "%s бит",
"%s байт",
"%s симв.",
"%s удален.",
"%s: загружено!",
+ "(%s бит/пиксель)",
"(Эксперементальный)",
"(Только часы)",
"12 слов",
diff --git a/src/krux/translations/tr.py b/src/krux/translations/tr.py
index fd63291..37b1876 100644
--- a/src/krux/translations/tr.py
+++ b/src/krux/translations/tr.py
@@ -24,11 +24,12 @@ translation_array = [
"tutarın %'si.",
"%d / %d çoklu imza",
"%d to %d",
- "%s bit (%s bit/piksel)",
+ "%s bit",
"%s bayt",
"%s kar.",
"%s kaldırıldı.",
"%s: yüklendi!",
+ "(%s bit/piksel)",
"(Deneysel)",
"(sadece izle)",
"12 kelime",
diff --git a/src/krux/translations/vi.py b/src/krux/translations/vi.py
index 893e663..11d7f42 100644
--- a/src/krux/translations/vi.py
+++ b/src/krux/translations/vi.py
@@ -24,11 +24,12 @@ translation_array = [
"% của số tiền.",
"%d của %d đa chữ kí",
"%d đến %d",
- "%s bit (%s bit/px)",
+ "%s bit",
"%s byte",
"%s ký tự",
"%s Đã bỏ.",
"%s: đã tải!",
+ "(%s bit/px)",
"(Thực nghiệm)",
"(chỉ xem)",
"12 từ",
diff --git a/src/krux/translations/zh.py b/src/krux/translations/zh.py
index b94f405..bf187d3 100644
--- a/src/krux/translations/zh.py
+++ b/src/krux/translations/zh.py
@@ -24,11 +24,12 @@ translation_array = [
"% 的金额.",
"%d/%d 多签",
"%d到%d",
- "%s位 (%s位/像素)",
+ "%s位",
"%s 字节",
"%s 个字符",
"已移除%s",
"%s :已加载!",
+ "(%s位/像素)",
"(实验性)",
"(仅观察)",
"12 单词",
diff --git a/tests/pages/test_capture_entropy.py b/tests/pages/test_capture_entropy.py
index 11503ff..2bc1a49 100644
--- a/tests/pages/test_capture_entropy.py
+++ b/tests/pages/test_capture_entropy.py
@@ -3,7 +3,7 @@ import hashlib
import random
ENTROPY_MESSAGE_STR = (
- f"Shannon's entropy:\n%s bits (%s bits/px)\n\nPixels deviation index: %s"
+ f"Shannon's entropy:\n%s bits\n(%s bits/px)\n\nPixels deviation index: %s"
)
ENTROPY_INSUFFICIENT_MESSAGE_STR = "Insufficient entropy!\n\n" + ENTROPY_MESSAGE_STR
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.