Compare commits

...

191 Commits

Author SHA1 Message Date
SeedSigner
708961a416
Merge pull request #90 from kdmukai/2026-05-29_es_update
Some checks failed
CI / test (push) Has been cancelled
[ES] Update to latest in Transifex as of 2026-05-29
2026-06-04 17:37:11 -05:00
SeedSigner
e7ff6b560d
Merge pull request #91 from kdmukai/2026-05-29_vi_update
Some checks failed
CI / test (push) Has been cancelled
[VI] Update to latest from Transifex 2026-05-29
2026-06-01 12:57:06 -05:00
SeedSigner
7913942dc7
Merge pull request #92 from kdmukai/2026-05-29_initial_no
[NO] Initial Norwegian; latest from Transifex 2026-05-29
2026-06-01 12:56:33 -05:00
kdmukai
1813230fcb
misc fixes: capitalization, typos, length; missing translations added 2026-06-01 09:40:50 -05:00
kdmukai
0693542537
Latest NO from Transifex 2026-05-29 2026-05-30 07:58:43 -05:00
kdmukai
2e8620c426
Update VI to latest from Transifex 2026-05-29 2026-05-30 07:56:07 -05:00
kdmukai
3aa3638d12
Update ES to latest in Transifex as of 2026-05-29 2026-05-29 13:54:01 -04:00
Nick Klockenga
9a76a81275
Merge pull request #88 from mister-1-wizard/ja_2026-04-22
Some checks failed
CI / test (push) Has been cancelled
ja shorten text strings to prevent overflow
2026-04-22 21:29:19 -04:00
Nick Klockenga
b12327a214
Merge pull request #46 from Anh-La/Vietnamese
Vietnamese translation 1st PR
2026-04-22 21:28:41 -04:00
Nick Klockenga
6051acc495
Merge branch 'dev' into Vietnamese 2026-04-22 21:25:47 -04:00
Nick Klockenga
8f3838e383
Merge pull request #89 from Chaitanya-Keyal/2026-03-16_th_update
[TH] Update Thai Translations
2026-04-22 21:22:43 -04:00
Nick Klockenga
7e802d8a87
Merge pull request #81 from jpph/fr_2026-03-11
[FR update]
2026-04-22 21:08:14 -04:00
kdmukai
8875f3e879
2026-03-16 TH update 2026-04-21 21:49:58 -04:00
mister--wizard
9cd9fb3d32
Add files via upload
shortening text strings at two screens to prevent overflow issue, and also slight revision to one other screen ("Action required") to use different verb better suited to action in question (remove SD card)
2026-04-21 23:50:16 +00:00
SeedSigner
ca5cf1b9a0
Merge pull request #87 from Dirkson643/nl_2026-04-19
Some checks failed
CI / test (push) Has been cancelled
[NL] Latest Dutch translations for SeedSigner including 8 new translations for v0.8.7
2026-04-21 08:28:01 -05:00
SeedSigner
bf20905ccc
Merge pull request #73 from kdmukai/2026-03-06_pl_update
[pl] Polish update
2026-04-21 08:26:57 -05:00
SeedSigner
e2e3a2298d
Merge pull request #79 from 1min-bitcoin/ko_2026-03-08-1
[KO] Update kor translations
2026-04-21 08:26:20 -05:00
SeedSigner
6b6b754c41
Merge pull request #43 from greedlove/th_2025-06-23
[TH] First Commit
2026-04-21 08:23:57 -05:00
SeedSigner
8549f2c2ea
Merge pull request #63 from kdmukai/initial_cs
[cs] Initial Czech translations
2026-04-21 08:21:27 -05:00
SeedSigner
f3e8e92096
Merge pull request #64 from kdmukai/2026-03-06_de_update
[de] Update German
2026-04-21 08:20:54 -05:00
SeedSigner
0818bda20e
Merge pull request #66 from kdmukai/2026-03-06_initial_el
[el] Initial Greek
2026-04-21 08:20:13 -05:00
SeedSigner
f2c8414cd6
Merge pull request #68 from kdmukai/2026-03-06_initial_id
[id] Initial Indonesian
2026-04-21 08:19:22 -05:00
SeedSigner
3251f9a30f
Merge pull request #69 from kdmukai/2026-03-06_it_update
[it] Italian update
2026-04-21 08:18:36 -05:00
SeedSigner
55abc7fbc9
Merge pull request #71 from kdmukai/2026-03-06_es_update
[es] Spanish update
2026-04-21 08:17:45 -05:00
SeedSigner
bf297d6bfb
Merge pull request #74 from kdmukai/2026-03-06_initial_pt_BR
[pt_BR] Initial Brazilian Portuguese
2026-04-21 08:17:03 -05:00
SeedSigner
7ee18625e6
Merge pull request #75 from kdmukai/2026-03-06_initial_ru
[ru] Initial Russian
2026-04-21 08:16:07 -05:00
SeedSigner
9d16de8e47
Merge pull request #76 from kdmukai/2026-03-06_initial_tr
[tr] Initial Turkish
2026-04-21 08:14:50 -05:00
SeedSigner
5fd98b2b3b
Merge pull request #77 from kdmukai/2026-03-06_zh_Hans_CN_update
[zh_Hans-CN] Chinese Simplified update
2026-04-21 08:13:43 -05:00
SeedSigner
74b0a329e8
Merge pull request #82 from polespinasa/ca_2026-03-10
ca: new strings translated
2026-04-21 08:05:02 -05:00
SeedSigner
d3e89766a5
Merge pull request #61 from qatkk/fa_2026-02-24
[FA] Initial translations for Farsi
2026-04-21 08:03:36 -05:00
Dirkson643
985747be9d
Merge branch 'dev' into nl_2026-04-19 2026-04-19 13:15:44 +02:00
Dirkson643
2083a7a519 Added latest new strings 2026-04-19 13:09:20 +02:00
qazaleh
1dff6e0730 PSBT view fixed 2026-04-16 08:43:10 +02:00
1분 비트코인 1min bitcoin
3616fb5c9c
minor change 3
SeedQR를 -> 시드QR을
2026-04-16 15:06:50 +09:00
kdmukai
a32d3fc148
2026-03-08 DE update 2026-04-15 19:59:29 -05:00
jpph
057b541977
Add files via upload 2026-04-15 22:17:48 +02:00
kdmukai
cdeb7008de
Named variable bugfix 2026-04-15 14:58:14 -05:00
kdmukai
593af36a3f
2026-03-09 pt_BR update 2026-04-15 14:51:34 -05:00
jpph
c3ceb30de8
Add files via upload 2026-04-15 19:11:46 +02:00
jpph
02f5e26176
Merge branch 'SeedSigner:dev' into fr_2026-03-11 2026-04-15 18:58:28 +02:00
kdmukai
1e416a4dec
Update to Transifex 2026-03-07 2026-04-15 09:59:40 -05:00
kdmukai
6c23108965
[zh_Hans-CN] Chinese Simplified update 2026-04-15 09:58:17 -05:00
Gazelle
225064752e
Merge branch 'SeedSigner:dev' into fa_2026-02-24 2026-03-29 09:37:55 +02:00
qazaleh
4206206c0b Translations and bug fixes
Squashing the commits
2026-03-22 11:21:14 +00:00
Nick Klockenga
7da06bd0ff
Merge pull request #62 from Chaitanya-Keyal/feat/update-hindi
Some checks failed
CI / test (push) Has been cancelled
[HI] Update Hindi translations
2026-03-12 14:52:57 -04:00
Pol Espinasa
4288f982b0
ca: new strings translated 2026-03-10 23:55:22 +01:00
1분 비트코인 1min bitcoin
b313ad5c75
minor change 2 2026-03-10 11:59:45 +09:00
1분 비트코인 1min bitcoin
9547f0fc12
minor change 2026-03-10 10:34:00 +09:00
1분 비트코인 1min bitcoin
6921630722
Delete wrong file 2026-03-10 10:09:29 +09:00
1분 비트코인 1min bitcoin
26e8570caf
Update messages.po 2026-03-10 10:09:04 +09:00
jpph
4d72df34d3
Add files via upload 2026-03-09 21:45:30 +01:00
1분 비트코인 1min bitcoin
64fc314980
[KO] Update kor translations
Updated kor translations with new strings
2026-03-08 16:39:57 +09:00
Nick Klockenga
f4372a8134
Merge pull request #65 from kdmukai/2026-03-06_mo_cleanup
Remove .mo files from the repo
2026-03-07 14:49:35 -05:00
kdmukai
8710e418cd
[tr] Initial Turkish 2026-03-06 14:52:49 -06:00
kdmukai
6084a57bb7
[ru] Initial Russian 2026-03-06 14:51:04 -06:00
kdmukai
7d61ae2aee
[pt_BR] Initial Brazilian Portuguese 2026-03-06 14:49:47 -06:00
kdmukai
9b68dfba1c
[pl] Polish update 2026-03-06 14:48:36 -06:00
kdmukai
ccd382b4e6
[es] Spanish update 2026-03-06 14:43:43 -06:00
kdmukai
e3f0627111
[it] Italian update 2026-03-06 14:33:12 -06:00
kdmukai
70431d99be
[id] Initial Indonesian 2026-03-06 14:32:04 -06:00
kdmukai
8054fc04a5
[el] Initial Greek 2026-03-06 14:27:55 -06:00
kdmukai
76c6f57dee
Remove .mo files from the repo 2026-03-06 14:23:33 -06:00
kdmukai
b147b595f3
[de] Update German 2026-03-06 14:18:44 -06:00
kdmukai
3efc554b89
[cs] Initial Czech translations 2026-03-06 14:16:16 -06:00
okaybro
5e52b505ca
feat(hi): update Hindi translations as of 2026-03-06 2026-03-06 15:52:22 +00:00
Nick Klockenga
6b911be2da
Merge pull request #48 from newtonick/add-py-tool-extract-characters
[Feature] Add extract characters script and move foreign fonts into translation repo
2026-03-04 22:00:19 -05:00
Nick Klockenga
0335db88de
Merge pull request #50 from adargentum/PL_2025_12_15_v2
Pl 2025 12 15 v2
2026-03-04 21:58:25 -05:00
greedlove
dd414b89eb
fix: shorten text to avoid bottom button overlap 2026-02-20 15:27:56 +07:00
Nick Klockenga
cbb699f6a5
Merge pull request #59 from kdmukai/2026-02_transifex_cli_readme_update
[Documentation] README update w/better `tx pull` commands
2026-02-19 21:27:39 -05:00
Nick Klockenga
79813f5a2f
Merge pull request #55 from Dirkson643/nl_2026-01-12
[NL] Latest Dutch translations for SeedSigner including 5 new translations
2026-02-18 22:06:45 -05:00
kdmukai
70c1873cb1
README update w/better tx pull commands 2026-02-18 13:33:05 -06:00
greedlove
8b084d58f5
fix: update new word translations 2026-02-18 23:45:12 +07:00
Dirkson643
687977994b Fixes for issues that kdmukai found 2026-02-18 11:37:51 +01:00
Nick Klockenga
ba422307f7
Merge pull request #54 from Chaitanya-Keyal/feat/hi
[HI] Add Hindi translations
2026-02-17 22:08:04 -05:00
Nick Klockenga
2308a0fc0e
Delete l10n/hi/LC_MESSAGES/messages.mo 2026-02-17 22:02:47 -05:00
Nick Klockenga
c25e30b4e3
Merge pull request #56 from 1min-bitcoin/ko_2026-01-13
[KO update] The Korean-translated version
2026-02-17 22:01:06 -05:00
Nick Klockenga
71250f071e
Merge pull request #57 from polespinasa/ca_2026-01-15
[CA] new string transalations + some updates
2026-02-16 14:39:08 -05:00
Nick Klockenga
b9321db488
Merge pull request #51 from kdmukai/transifex_cli_integration
Transifex CLI integration
2026-02-16 14:37:04 -05:00
Nick Klockenga
1afe546b73
Merge pull request #3 from kdmukai/pr_48
Various enhancements
2026-02-16 10:03:27 -05:00
kdmukai
7ba7453348
Various enhancements 2026-01-21 10:20:25 -06:00
Pol Espinasa
7a3c4e4ed1
CA transalations 2026-01-19 16:37:42 +01:00
1분 비트코인 1min bitcoin
55add6578c
Last Update Commit
This is the final commit to be included in version 0.8.7.
2026-01-18 23:29:39 +09:00
okaybro
a779c2292c
feat(hi): add Hindi translations as of 2026-01-17 2026-01-17 12:23:10 +00:00
1분 비트코인 1min bitcoin
2c4a2968fa
Fix after reviewing screenshot #2 2026-01-17 16:13:49 +09:00
1분 비트코인 1min bitcoin
d6371ca135
Fix after reviewing screenshot 2026-01-17 16:05:54 +09:00
1min-bitcoin
bbf5492124
Delete l10n/ko/LC_MESSAGES/.gitkeep 2026-01-13 15:18:02 +09:00
1min-bitcoin
006aa7d298
Add files via upload 2026-01-13 15:14:33 +09:00
1min-bitcoin
9b7db49302
Create .gitkeep 2026-01-13 15:13:38 +09:00
1min-bitcoin
1041014190
Delete l10n/ko/LC_MESSAGES 2026-01-13 15:08:06 +09:00
1min-bitcoin
8a7c563efb
Create LC_MESSAGES 2026-01-13 15:07:49 +09:00
1min-bitcoin
a7817f156f
Delete l10n/ko directory 2026-01-13 15:06:13 +09:00
1min-bitcoin
6a5a01219b
Create LC_MESSAGES 2026-01-13 15:05:44 +09:00
Dirkson643
c5e45a65f0 Last changes after visual review 2026-01-12 21:14:41 +01:00
Dirkson643
ff379aa8d6 Latest Dutch translations for SeedSigner including 5 new translations 2026-01-12 20:38:36 +01:00
adargentum
b0ab97d7b1
Add files via upload 2025-12-28 16:53:47 +01:00
kdmukai
bec3422644
README update 2025-12-22 13:29:30 -06:00
kdmukai
b7750bb4a9
README update 2025-12-22 13:20:52 -06:00
kdmukai
984a2d156f
update minimum-perc in config 2025-12-18 17:36:49 -06:00
kdmukai
620377da61
Add instructions to README 2025-12-18 17:19:58 -06:00
kdmukai
f403437ec0
Add Transifex CLI config file 2025-12-18 17:16:28 -06:00
adargentum
ee823c87a4
changes made; added punctation 2025-12-16 19:32:45 +01:00
adargentum
9fefac9069
Add files via upload 2025-12-15 17:40:29 +01:00
Nick Klockenga
7177490bff
add foreign language fonts to seedsigner-translations repo 2025-10-24 14:17:38 -04:00
Nick Klockenga
12d4c5df51
add extract_characters_from_babel_mo.py script 2025-10-23 22:21:31 -04:00
greedlove
c4eec19803
build: regenerate to include latest translations 2025-10-12 18:50:34 +07:00
Anh
0b810c1464 Replace Capital letters in buttons
Replace capital letters from message.po file downloaded from transifex with lower case in buttons.
Already informed admin
2025-10-06 01:29:53 +11:00
Anh
3fec2386b2 update the reviewed message 2025-09-25 17:39:05 +10:00
greedlove
7853d300c3
chore: remove files to start fresh 2025-09-23 13:52:55 +07:00
Anh
5e88830ae9 Revert README file to its original state 2025-08-16 05:10:12 +10:00
Anh
909dfde0fc 4th Vi commit
Shorten and expand for artistic view and meaning
2025-08-03 03:44:07 +10:00
Anh
77d8218b5a 3rd Vi commit
Shorten phrases to fit small screen
2025-08-03 03:28:27 +10:00
Anh
96890360ad 2nd Vi commit
Fix the job failed due to a KeyError: 'độ dài' in the test tests/screenshot_generator/generator.py::test_generate_all[vi]. This error indicates that the string 'độ dài' is missing from the relevant translation dictionary or data structure used in the test for the Vietnamese locale.
2025-08-03 02:46:22 +10:00
Anh
1d31ff4c9b 1st Vi translation commit
add Vietnamese Translation
update Readme file per @kdmukai
2025-08-03 02:14:07 +10:00
adargentum
284f10b39c
[PL] revisedv2 2025_07_30 2025-07-30 15:29:30 +02:00
adargentum
ad90db179e
Add files via upload
[PL] Revised 1 2025_07_30
2025-07-30 09:53:52 +02:00
adargentum
ee3499ddae
Merge pull request #1 from adargentum/pl_2025_07_24
Add files via upload
2025-07-24 09:42:58 +02:00
adargentum
e461aa422b
Add files via upload 2025-07-24 09:36:47 +02:00
adargentum
736b336f58
messages.po 2025-07-24 09:33:32 +02:00
adargentum
9310f8c455
Add files via upload 2025-07-23 21:09:26 +02:00
adargentum
063ef858b1
Add files via upload 2025-07-23 20:59:58 +02:00
adargentum
97c4cd6cf5
Create messages.po 2025-07-23 20:58:31 +02:00
adargentum
3f5939712a
Delete l10n/pl 2025-07-23 20:57:56 +02:00
adargentum
2ebd15ef8e
Create pl/LC_MESSAGES 2025-07-23 08:10:54 +02:00
adargentum
a7b6b4f314
Delete l10n/pl/messages.po 2025-07-23 08:09:37 +02:00
adargentum
735b23ae0a
Delete l10n/pl/LC_MESSAGES 2025-07-23 08:09:17 +02:00
adargentum
43bcd25b86
Add files via upload 2025-07-23 08:04:46 +02:00
adargentum
2e6f4aef53
Create LC_MESSAGES 2025-07-23 08:03:39 +02:00
greedlove
f0880a1423
Merge pull request #2 from greedlove/th_2025-06-23-1
Add files via upload (fix: sign psbt)
2025-06-23 13:55:42 +07:00
greedlove
50d681a9e0
Add files via upload 2025-06-23 13:53:14 +07:00
greedlove
1ba15e63f1
Add files via upload 2025-06-23 11:53:43 +07:00
Nick Klockenga
9f528ae075
Merge pull request #42 from newtonick/add-0.8.6-mo-compiled-files
Add compiled mo files for every language translated so far for 0.8.6 release
2025-06-21 21:29:48 -04:00
Nick Klockenga
9cc3406aef
add compiled mo files for every language 2025-06-21 21:24:39 -04:00
Nick Klockenga
9aa4a2141e
Merge pull request #41 from newtonick/cleanup-mo-files
Clean up of binary mo files from repo
2025-06-21 20:25:34 -04:00
Nick Klockenga
d00357c621
removing messages.mo binary files from this repo 2025-06-21 20:14:20 -04:00
Nick Klockenga
f4fe29f4a7
Merge pull request #23 from bitcoininvenice/dev
IT locale files
2025-06-21 20:11:55 -04:00
Nick Klockenga
4566badbfe
Merge pull request #40 from kornpow/mo-ignore
update .gitignore to ignore mo binary files
2025-06-21 20:10:59 -04:00
Nick Klockenga
845a735bc2
Merge pull request #30 from tangchang-b/zh_Hans_CN_2025-05-02
Add Simplified Chinese translation (zh_Hans_CN)
2025-06-21 20:03:14 -04:00
Ace
d50cd0c360
Merge pull request #31 from Dirkson643/nl_2025-05-02-1
[NL update] Final changes for 0.8.6-rc1
2025-06-20 22:03:37 -05:00
Ace
d22d9e60f5
Merge pull request #33 from jpph/fr_2025-05-02
Fr update - patch1
2025-06-20 22:02:00 -05:00
Ace
bd92bccd40
Merge pull request #36 from mister-1-wizard/ja_2025-05-11
Merging Japanese
2025-06-20 22:00:51 -05:00
Ace
b47b12f857
Merge pull request #29 from gobrrrme/de_2025-05-01
[DE] Translation for 0.8.5-rc2
2025-06-20 21:57:33 -05:00
Ace
26286c6ff5
Merge pull request #35 from polespinasa/ca_2025-05-06
[CA] Catalan Files Translated
2025-06-20 21:56:34 -05:00
Sam Korn
56ace6127a
update .gitignore to ignore mo binary files 2025-06-20 13:39:28 -06:00
Nick Klockenga
8fb35c22cf
Delete l10n/zh_Hans_CN/LC_MESSAGES/message.po
duplicate file with typo in name
2025-06-20 12:03:21 -04:00
Nick Klockenga
2e57d5e8fe
Delete l10n/zh_Hans/LC_MESSAGES/messages.mo
binary messages.mo is not needed
2025-06-20 11:57:24 -04:00
mister--wizard
17dbeee789
Add files via upload 2025-05-11 03:57:39 +00:00
jpph
d54b994c98
Merge pull request #2 from jdlcdl/fr_2025-05-02
fr corrections from May 6 2025
2025-05-07 14:08:13 +02:00
Jean Do
3976ab3ec1 fr corrections from May 6 2025 2025-05-07 07:45:03 -04:00
Pol Espinasa
f9d5e26bfd
Catalan files 2025-05-06 14:46:54 +02:00
Dirk Wegener
924d63089c shortened 2 strings and updated an xpub related statement (removed future) 2025-05-05 17:26:34 +02:00
Tang Chen
3a2d7615ff
Add files via upload 2025-05-04 01:39:32 +08:00
jpph
e2326764e0
Add files via upload 2025-05-03 02:19:23 +02:00
jpph
d77132d947
Merge branch 'SeedSigner:dev' into dev 2025-05-03 02:16:58 +02:00
Dirk Wegener
56415be656 Remove file foo 2025-05-02 20:52:21 +02:00
Dirkson643
7958c4f75e
Add files via upload 2025-05-02 20:49:23 +02:00
Dirkson643
b49dfdb0fd
nl_2025-05-02-1 2025-05-02 20:47:01 +02:00
Tang Chen
a5b750d69f
Add files via upload 2025-05-03 00:33:57 +08:00
Tang Chen
a034d83c23
Add files via upload 2025-05-02 15:54:43 +08:00
Tang Chen
bc28e27243
Create messages.po 2025-05-02 15:51:09 +08:00
Tang Chen
ce21b8fb17
Create messages.mo 2025-05-02 13:18:26 +08:00
Tang Chen
3af63cca93
Delete l10n/zh_Hans/LC_MESSAGES 2025-05-02 13:16:48 +08:00
Tang Chen
5b9806be4b
Create LC_MESSAGES 2025-05-02 13:13:50 +08:00
Go Brrr
84311aefa2
[DE] Translation for 0.8.5-rc2
LFG
2025-05-01 22:09:58 +02:00
Go Brrr
786bdc09de
Rename messages.po to messages.placeholder 2025-05-01 21:56:14 +02:00
Go Brrr
a64af2645f
Rename messages.placeholder to messages.po 2025-05-01 21:55:39 +02:00
Go Brrr
dc569a09a8
Rename messages.po to messages.placeholder 2025-05-01 21:43:16 +02:00
Go Brrr
b9ec6dbfa7
Create messages.po 2025-05-01 21:36:30 +02:00
Nick Klockenga
0e43c4fac7
Merge pull request #27 from kdmukai/diff_screenshots_merge_fix
[Bugfix] Screenshot diff Github Action fails for merge commits
2025-04-30 21:29:12 -04:00
jpph
7b5605e922
Delete l10n/fr/LC_MESSAGES/test.txt 2025-04-30 18:26:20 +02:00
jpph
2c66d4f022
Create test.txt 2025-04-30 18:25:05 +02:00
kdmukai
5f4cbc16e7 bugfix for merge commits vs PRs 2025-04-30 08:49:32 -05:00
Nick Klockenga
fbbf956c45
Merge pull request #25 from kdmukai/screenshot_diff_workflow_v2
[CI] (replacement PR) New Github Action to add screenshot diff report
2025-04-29 17:11:04 -04:00
kdmukai
3461b11596 transferring changes into a clean branch 2025-04-27 14:47:52 -05:00
devbtcp
957ef69d3a IT locale added
completed all words on transifex, downloaded .po file and .mo file generated with gettext
2025-04-13 22:43:19 +02:00
kdmukai
10ee02ae23 [ES update] Additional minor changes to fit live preview screens 2025-01-28 15:29:28 -06:00
kdmukai
feebe3b44c
Merge pull request #19 from SeedSigner/image_entropy_ux_change
Matches UX update to allow ANYCLICK in image entropy flow
2025-01-28 13:38:17 -06:00
kdmukai
cb874aa179 Matches UX update to allow ANYCLICK in image entropy flow 2025-01-28 13:37:28 -06:00
kdmukai
265f4e3871
Merge pull request #18 from SeedSigner/keyboard_space_del_icons
[ES updates] Latest ES translations + changes from kdmukai @ `5c6c99b`
2025-01-28 09:37:23 -06:00
kdmukai
a8b7270ba7 latest ES translations + changes from kdmukai @ 5c6c99b 2025-01-19 11:21:49 -06:00
kdmukai
281a3dab83
Merge pull request #15 from SeedSigner/pre-0.8.5_final
[ES] translations for final review
2025-01-15 14:43:25 -06:00
kdmukai
e45c24e0a8 ES translations for final review 2025-01-15 14:40:28 -06:00
kdmukai
112fc9e9d2
Merge pull request #14 from SeedSigner/pre_0.8.5-rc2_v2
Matching ES messages.mo for latest .po translations
2025-01-14 12:31:10 -06:00
kdmukai
0212580a18 Matching ES messages.mo for latest .po translations 2025-01-14 12:30:19 -06:00
kdmukai
0f6602af39
Merge pull request #13 from MaxApogee/es_2025-01-14
Spanish (es) translation for Seed Signer software
2025-01-14 11:47:53 -06:00
MaxApogee
05e7dddd38
Add files via upload 2025-01-14 18:18:52 +01:00
MaxApogee
bdeb1692c8
Add files via upload 2025-01-14 14:00:45 +01:00
kdmukai
2ef2f2811d
Merge pull request #1 from kdmukai/trim_for_0.8.5
Trim out not-yet-supported languages
2024-12-23 17:28:14 -06:00
kdmukai
597e03dafb
Merge pull request #2 from SeedSigner/pre_0.8.5-rc1_es_update
[ES update] pre v0.8.5-rc1
2024-12-23 17:26:00 -06:00
kdmukai
23e8ff42f5 [ES update] pre v0.8.5-rc1 2024-12-23 17:23:45 -06:00
kdmukai
999e51e700 Trim out not-yet-supported languages 2024-12-23 14:31:42 -06:00
kdmukai
3de3aefb96 Latest ES from Transifex; Ronny's 1st draft, light Keith capitalization, punctuation edits 2024-12-14 09:05:45 -06:00
45 changed files with 25019 additions and 4863 deletions

138
.github/diff_report/diff_screenshots.py vendored Normal file
View File

@ -0,0 +1,138 @@
"""
Utility to compare screenshots before and after a change and generate a report of the
differences.
Expected usage in a GitHub Actions workflow; compare `dev` with the `$INCOMING_CHANGES_REF` in the
associated PR or merge that triggered the CI run:
python src/seedsigner/resources/seedsigner-translations/.github/diff_report/diff_screenshots.py ./artifacts/dev ./artifacts/incoming ./artifacts/diff $INCOMING_CHANGES_REF
"""
import argparse
import glob
import hashlib
import os
import pathlib
import shutil
parser = argparse.ArgumentParser(prog=__name__)
parser.add_argument("before_dir", type=str, help="Directory containing screenshots before the incoming changes")
parser.add_argument("after_dir", type=str, help="Directory containing screenshots after the incoming changes")
parser.add_argument("output_dir", type=str, help="Directory to save the screenshots diff report")
parser.add_argument("incoming_changes_ref", type=str, help="Branch name or commit hash that contains the incoming changes")
args = parser.parse_args()
# `before_dir` includes the branch name we'll be merging into
baseline_branch = args.before_dir.split(os.path.sep)[-1]
incoming_changes_ref = args.incoming_changes_ref
def list_files_recursively(path: str) -> list[str]:
""" Return a list of paths to all png files in the directory tree """
return glob.glob(path + "/**/*.png", recursive=True)
def compute_file_hash(file_path: str) -> str:
""" Return the file hash using sha256 """
hash_func = hashlib.new('sha256')
with open(file_path, 'rb') as file:
while chunk := file.read(8192): # Read the file in chunks of 8192 bytes
hash_func.update(chunk)
return hash_func.hexdigest()
def get_pathname_fragment(path:str) -> str:
""" Extract the last 3 parts of the path:
en/tools_views/ToolsCalcFinalWordDoneView.png
These paths will be the same in the "before" and "after" directories.
"""
parts = path.split(os.path.sep)
if len(parts) < 3:
raise ValueError(f"Path should have at least 3 parts: {path}")
return os.path.sep.join(parts[-3:])
def get_locale_and_screenshot_name(path: str) -> tuple[str, str]:
""" Parse the path to extract the locale and the screenshot name.
Assumes we're working with a path like:
en/tools_views/ToolsCalcFinalWordDoneView.png
"""
parts = path.split(os.path.sep)
if len(parts) != 3:
raise ValueError(f"Path should have 3 parts: {path}")
return parts[0], parts[-1].split(".")[0]
# Recursively list and hash all png files in the "before" directory
before_screenshots = {}
paths_before = []
for file in list_files_recursively(args.before_dir):
screenshot_path = get_pathname_fragment(file)
before_screenshots[screenshot_path] = compute_file_hash(file)
paths_before.append(screenshot_path)
# Do the same for the "after" directory, but do the diff while we're here
only_in_after = []
diffs: list[str] = []
paths_after = []
for file in list_files_recursively(args.after_dir):
screenshot_path = get_pathname_fragment(file)
if screenshot_path not in before_screenshots:
only_in_after.append(screenshot_path)
elif before_screenshots[screenshot_path] != compute_file_hash(file):
diffs.append(screenshot_path)
paths_after.append(screenshot_path)
only_in_before = set(paths_before) - set(paths_after)
html_content = "<h1>Screenshots diff report</h1>"
html_content += f"""<p>Comparing {baseline_branch} to {incoming_changes_ref}</p>"""
output_dir_before = os.path.join(args.output_dir, "before")
output_dir_after = os.path.join(args.output_dir, "after")
os.makedirs(output_dir_before, exist_ok=True)
os.makedirs(output_dir_after, exist_ok=True)
for screenshot_path in only_in_before:
locale, screenshot_name = get_locale_and_screenshot_name(screenshot_path)
print(f"Screenshot only in before: {locale}: {screenshot_name}")
os.makedirs(os.path.join(output_dir_before, os.path.dirname(screenshot_path)), exist_ok=True)
shutil.copy(os.path.join(args.before_dir, screenshot_path), os.path.join(output_dir_before, screenshot_path))
html_content += f"<p>{locale}: REMOVED {screenshot_name}</br><img src='{os.path.join('before', screenshot_path)}'></p></br></br>"
for screenshot_path in only_in_after:
locale, screenshot_name = get_locale_and_screenshot_name(screenshot_path)
print(f"Screenshot only in after: {locale}: {screenshot_name}")
os.makedirs(os.path.join(output_dir_after, os.path.dirname(screenshot_path)), exist_ok=True)
shutil.copy(os.path.join(args.after_dir, screenshot_path), os.path.join(output_dir_after, screenshot_path))
html_content += f"<p>{locale}: ADDED {screenshot_name}</br><img src='{os.path.join('after', screenshot_path)}'></p></br></br>"
for screenshot_path in diffs:
locale, screenshot_name = get_locale_and_screenshot_name(screenshot_path)
print(f"Screenshot different: {locale}: {screenshot_name}")
# Copy both screenshots to the output dir
os.makedirs(os.path.join(output_dir_before, os.path.dirname(screenshot_path)), exist_ok=True)
os.makedirs(os.path.join(output_dir_after, os.path.dirname(screenshot_path)), exist_ok=True)
shutil.copy(os.path.join(args.before_dir, screenshot_path), os.path.join(output_dir_before, screenshot_path))
shutil.copy(os.path.join(args.after_dir, screenshot_path), os.path.join(output_dir_after, screenshot_path))
html_content += f"<p>{locale}: {screenshot_name}</br><img src='{os.path.join('before', screenshot_path)}'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src='{os.path.join('after', screenshot_path)}'></p></br></br>"
if not only_in_after and not only_in_before and not diffs:
print("No differences found")
html_content += "<h1>No differences found</h1>"
script_dir = pathlib.Path(__file__).parent.resolve()
html_output = ""
with open(os.path.join(script_dir, "index.html"), "r") as f:
html_output = f.read().replace("{{ content }}", html_content)
with open(os.path.join(args.output_dir, "index.html"), "w") as f:
f.write(html_output)
# Also copy the css file; source: https://github.com/picocss/pico
shutil.copy(os.path.join(script_dir, "pico.min.css"), os.path.join(args.output_dir, "pico.min.css"))

15
.github/diff_report/index.html vendored Normal file
View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="color-scheme" content="light dark" />
<title>SeedSigner screenshot diffs</title>
<link rel="stylesheet" href="pico.min.css" />
</head>
<body>
<main class="container">
{{ content }}
</main>
</body>
</html>

4
.github/diff_report/pico.min.css vendored Normal file

File diff suppressed because one or more lines are too long

91
.github/workflows/tests.yml vendored Normal file
View File

@ -0,0 +1,91 @@
name: CI
on:
push:
branches:
- dev
- main
pull_request:
concurrency:
# Concurrency group that uses the workflow name and PR number if available
# or commit SHA as a fallback. If a new build is triggered under that
# concurrency group while a previous build is running it will be canceled.
# Repeated pushes to a PR will cancel all previous builds, while multiple
# merges to main will not cancel.
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
env:
# head_ref: source branch name of a PR; null when action isn't a PR.
# sha: hash of a commit / merge.
INCOMING_CHANGES_REF: ${{ github.head_ref || github.sha }}
steps:
- name: Checkout main repo 'dev'
uses: actions/checkout@v4
with:
repository: 'SeedSigner/seedsigner'
ref: dev
submodules: true
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install dependencies
run: |
sudo apt-get install libzbar0
python -m pip install --upgrade pip
pip install -r requirements.txt -r tests/requirements.txt -r l10n/requirements-l10n.txt
pip install -e .
- name: Generate current 'dev' screenshots
run: |
mkdir -p artifacts/dev
python -m pytest tests/screenshot_generator/generator.py
sleep 10
mv ./seedsigner-screenshots/* ./artifacts/dev/
- name: Checkout updated translations (PR)
uses: actions/checkout@v4
if: ${{ github.event_name == 'pull_request' }}
with:
path: src/seedsigner/resources/seedsigner-translations
ref: ${{ github.event.pull_request.head.sha }}
- name: Checkout updated translations (Push)
uses: actions/checkout@v4
if: ${{ github.event_name == 'push' }}
with:
path: src/seedsigner/resources/seedsigner-translations
ref: ${{ github.sha }}
- name: Compile updated translations catalogs
run: |
python setup.py compile_catalog
cd src/seedsigner/resources/seedsigner-translations
git status
- name: Generate latest screenshots
run: |
rm -rf seedsigner-screenshots
mkdir -p artifacts/incoming
python -m pytest tests/screenshot_generator/generator.py
sleep 10
mv ./seedsigner-screenshots/* ./artifacts/incoming/
- name: Diff screenshots
run: |
mkdir -p artifacts/diff
python src/seedsigner/resources/seedsigner-translations/.github/diff_report/diff_screenshots.py ./artifacts/dev ./artifacts/incoming ./artifacts/diff $INCOMING_CHANGES_REF
- name: Clean up artifacts
run: |
rm -rf ./artifacts/incoming
rm -rf ./artifacts/dev
mv ./artifacts/diff/* ./artifacts
rmdir ./artifacts/diff
- name: Archive CI Artifacts
uses: actions/upload-artifact@v4
with:
name: ci-artifacts
path: artifacts/**
retention-days: 60
# Upload also when tests fail. The workflow result (red/green) will
# be not effected by this.
if: always()

4
.gitignore vendored
View File

@ -1 +1,5 @@
.DS_Store
# Only check in *.po files since *.mo
# files can be generated from from them
*.mo

12
.tx/config Normal file
View File

@ -0,0 +1,12 @@
[main]
host = https://app.transifex.com
[o:seedsigner:p:seedsigner:r:messagespot]
file_filter = l10n/<lang>/LC_MESSAGES/messages.po
source_file = ../../../../l10n/messages.pot
type = PO
minimum_perc = 15
resource_name = messages.pot
replace_edited_strings = false
keep_translations = false
lang_map = zh-Hans: zh_Hans_CN

View File

@ -1 +1,47 @@
# SeedSigner Translations
# SeedSigner Translations
## Transifex CLI
You can pull the latest translations directly from Transifex for all translated languages.
You'll need to create a Transifex user if you don't already have one. Your user will also
need some minimal role permissions within the SeedSigner Transifex project in order for
your user's API key to have access to the translations data.
* Install the [Transifex CLI](https://developers.transifex.com/docs/cli).
* [Create an API key](https://help.transifex.com/en/articles/6248858-generating-an-api-token)
for your Transifex user.
* From the `seedsigner/src/seedsigner/resources/seedsigner-translations` dir run:
```bash
# --force, -f Force the download of the translations files regardless of whether timestamps on the local computer are newer than those on the server (default: false)
# --all, -a Whether to download all files (default: false)
tx pull -f --all
```
* We use `-f` because as we manipulate the .po files through our PR process, they may
end up with newer timestamps even though the translation content has not changed.
That timestamp would then mislead the `tx pull` to disregard newer translations.
* Then from the SeedSigner project root, compile the catalogs to process the *.po files into
*.mo:
```bash
python setup.py compile_catalog
```
### Pulling translations for a specific language
Use the `--language, -l` flag with the `--force, -f` flag:
```bash
# Example: Spanish ("es")
tx pull -f -l es
# Or comma-separated list
tx pull -f -l pl,no
```
### Misc notes
The `.tx/config` is set to `minimum-perc = 15` (this means that the CLI will skip any
language whose translation completion falls below this minimum percentage).
You can manually override this by adding, for example, `--minimum-perc 25` to require at
least 25% translation completion.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,74 @@
"""
Extracts all unique characters that appear in the translated strings for the specified
locale.
This is a utility for build / dev purposes only.
"""
if __name__ == "__main__":
import argparse
import os
from babel.messages import mofile
# Define required input args and help text
parser = argparse.ArgumentParser(
description="Extracts all unique characters that appear in the translated strings for the specified locale."
)
parser.usage = "python3 extract_characters_from_babel_mo.py <locale>"
parser.add_argument("locale", help="Target locale (e.g. es, pt_BR, zh_Hans_CN)")
parser.add_argument("--debug", action="store_true", help="Enable debug output")
args = parser.parse_args()
debug = args.debug
basic_chars = set((chr(c) for c in range(0x20, 0x7E + 1))) # all basic ascii chars from SPACE to "~"
mo_fullfilename = os.path.join(os.pardir, "l10n", args.locale, "LC_MESSAGES", "messages.mo")
try:
with open(mo_fullfilename, "rb") as f:
catalog = mofile.read_mo(f)
except FileNotFoundError:
print(f"Could not find translations for locale \"{args.locale}\" ({mo_fullfilename})")
exit(1)
id_chars = set()
translations_chars = set()
for msg in catalog:
if msg.id:
if isinstance(msg.id, list):
# plural message
# get chars from all plural forms
for msgid in msg.id:
id_chars.update(msgid)
else:
# singular message
id_chars.update(msg.id)
if msg.string:
if isinstance(msg.string, list):
# plural message
# get chars from all plural forms
for msgstring in msg.string:
translations_chars.update(msgstring)
else:
# singular message
translations_chars.update(msg.string)
if debug:
# Print the difference between the chars in the ids vs the basic_chars
print("Chars in ids but not in basic_chars:", sorted(set("".join(id_chars)) - set(basic_chars)))
# And show the opposite
print("Chars in basic_chars but not in ids:", sorted(basic_chars - set("".join(id_chars))))
print("Chars in translations:", "".join(sorted(translations_chars)))
# get a unique list of chars from all translation messages and included_chars string
chars = sorted(translations_chars.union(basic_chars))
# convert set to string
chars_string = "".join(chars)
# remove newlines
chars_string = chars_string.replace("\n", "").replace("\r", "")
print(chars_string)

1
tools/requirements.txt Normal file
View File

@ -0,0 +1 @@
Babel