diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang
index d1f8c108ce..1a5a3ca496 100644
--- a/apps/lang/english-us.lang
+++ b/apps/lang/english-us.lang
@@ -15800,16 +15800,16 @@
id: LANG_DEFAULT_BROWSER
- desc: in Settings
+ desc: deprecated
user: core
- *: "Default Browser"
+ *: ""
- *: "Default Browser"
+ *: ""
- *: "Default Browser"
+ *: ""
@@ -17054,3 +17054,45 @@
*: "Finished"
+
+ id: LANG_FILE_NOT_FOUND
+ desc: When file does not exist
+ user: core
+
+ *: "File not found"
+
+
+ *: "File not found"
+
+
+ *: "File not found"
+
+
+
+ id: LANG_SHOW_IN_FILES
+ desc: Reveal item in File Browser
+ user: core
+
+ *: "Show in Files"
+
+
+ *: "Show in Files"
+
+
+ *: "Show in Files"
+
+
+
+ id: LANG_CHANNEL_SWAP
+ desc: in sound_settings
+ user: core
+
+ *: "Swap Left & Right"
+
+
+ *: "Swap Left & Right"
+
+
+ *: "Swap Left & Right"
+
+
diff --git a/apps/lang/korean.lang b/apps/lang/korean.lang
index 99f91af6fa..b73c5a4280 100644
--- a/apps/lang/korean.lang
+++ b/apps/lang/korean.lang
@@ -15818,16 +15818,16 @@
id: LANG_DEFAULT_BROWSER
- desc: in Settings
+ desc: deprecated
user: core
- *: "Default Browser"
+ *: ""
- *: "기본 탐색기"
+ *: ""
- *: "기본 탐색기"
+ *: ""
@@ -17002,3 +17002,115 @@
*: "~U S B"
+
+ id: LANG_FILE_NOT_FOUND
+ desc: When file does not exist
+ user: core
+
+ *: "File not found"
+
+
+ *: "파일을 찾을 수 없음"
+
+
+ *: "파일을 찾을 수 없음"
+
+
+
+ id: LANG_SHOW_IN_FILES
+ desc: Reveal item in File Browser
+ user: core
+
+ *: "Show in Files"
+
+
+ *: "파일에서 표시"
+
+
+ *: "파일에서 표시"
+
+
+
+ id: LANG_CHANNEL_SWAP
+ desc: in sound_settings
+ user: core
+
+ *: "Swap Left & Right"
+
+
+ *: "왼쪽과 오른쪽 바꾸기"
+
+
+ *: "왼쪽과 오른쪽 바꾸기"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_SET
+ desc: countdown_timer plugin - header shown on the setup screen where the user enters the countdown duration
+ user: core
+
+ *: "SET TIMER"
+
+
+ *: "타이머 설정"
+
+
+ *: "타이머 설정"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_RUNNING
+ desc: countdown_timer plugin - status label shown while the countdown is active
+ user: core
+
+ *: "RUNNING"
+
+
+ *: "실행 중"
+
+
+ *: "실행 중"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_PAUSED
+ desc: countdown_timer plugin - status label shown while the countdown is paused
+ user: core
+
+ *: "PAUSED"
+
+
+ *: "일시 중지"
+
+
+ *: "일시 중지"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_OVERTIME
+ desc: countdown_timer plugin - status label shown when the countdown has passed zero and is counting up
+ user: core
+
+ *: "OVERTIME"
+
+
+ *: "초과 시간"
+
+
+ *: "초과 시간"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_FINISHED
+ desc: countdown_timer plugin - status label shown at the moment the countdown expires
+ user: core
+
+ *: "FINISHED"
+
+
+ *: "완료"
+
+
+ *: "완료"
+
+
diff --git a/apps/lang/polski.lang b/apps/lang/polski.lang
index 097211e7dd..726e5b8661 100644
--- a/apps/lang/polski.lang
+++ b/apps/lang/polski.lang
@@ -15810,16 +15810,16 @@
id: LANG_DEFAULT_BROWSER
- desc: in Settings
+ desc: deprecated
user: core
- *: "Default Browser"
+ *: ""
- *: "Przeglądarka domyślna"
+ *: ""
- *: "Przeglądarka domyślna"
+ *: ""
@@ -16994,3 +16994,115 @@
*: "u es be"
+
+ id: LANG_FILE_NOT_FOUND
+ desc: When file does not exist
+ user: core
+
+ *: "File not found"
+
+
+ *: "Plik nie został znaleziony"
+
+
+ *: "Plik nie został znaleziony"
+
+
+
+ id: LANG_SHOW_IN_FILES
+ desc: Reveal item in File Browser
+ user: core
+
+ *: "Show in Files"
+
+
+ *: "Pokaż w plikach"
+
+
+ *: "Pokaż w plikach"
+
+
+
+ id: LANG_CHANNEL_SWAP
+ desc: in sound_settings
+ user: core
+
+ *: "Swap Left & Right"
+
+
+ *: "Zamień lewy i prawy"
+
+
+ *: "Zamień lewy i prawy"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_SET
+ desc: countdown_timer plugin - header shown on the setup screen where the user enters the countdown duration
+ user: core
+
+ *: "SET TIMER"
+
+
+ *: "USTAW MINUTNIK"
+
+
+ *: "Ustaw minutnik"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_RUNNING
+ desc: countdown_timer plugin - status label shown while the countdown is active
+ user: core
+
+ *: "RUNNING"
+
+
+ *: "URUCHOMIONO"
+
+
+ *: "Uruchomiono"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_PAUSED
+ desc: countdown_timer plugin - status label shown while the countdown is paused
+ user: core
+
+ *: "PAUSED"
+
+
+ *: "WSTRZYMANO"
+
+
+ *: "Wstrzymano"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_OVERTIME
+ desc: countdown_timer plugin - status label shown when the countdown has passed zero and is counting up
+ user: core
+
+ *: "OVERTIME"
+
+
+ *: "PRZEDŁUŻONO"
+
+
+ *: "Przedłużno"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_FINISHED
+ desc: countdown_timer plugin - status label shown at the moment the countdown expires
+ user: core
+
+ *: "FINISHED"
+
+
+ *: "UKOŃCZONO"
+
+
+ *: "Ukończono"
+
+
diff --git a/apps/lang/slovak.lang b/apps/lang/slovak.lang
index 3c3aebca05..097a344887 100644
--- a/apps/lang/slovak.lang
+++ b/apps/lang/slovak.lang
@@ -15930,16 +15930,16 @@
id: LANG_DEFAULT_BROWSER
- desc: in Settings
+ desc: deprecated
user: core
- *: "Default Browser"
+ *: ""
- *: "Predvolený prehliadač"
+ *: ""
- *: "Predvolený prehliadač"
+ *: ""
@@ -16988,3 +16988,115 @@
*: "~U S B"
+
+ id: LANG_FILE_NOT_FOUND
+ desc: When file does not exist
+ user: core
+
+ *: "File not found"
+
+
+ *: "Súbor nebol nájdený"
+
+
+ *: "Súbor nebol nájdený"
+
+
+
+ id: LANG_SHOW_IN_FILES
+ desc: Reveal item in File Browser
+ user: core
+
+ *: "Show in Files"
+
+
+ *: "Ukázať v Súboroch"
+
+
+ *: "Ukázať v Súboroch"
+
+
+
+ id: LANG_CHANNEL_SWAP
+ desc: in sound_settings
+ user: core
+
+ *: "Swap Left & Right"
+
+
+ *: "Zameniť ľavý a pravý"
+
+
+ *: "Zameniť ľavý a pravý"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_SET
+ desc: countdown_timer plugin - header shown on the setup screen where the user enters the countdown duration
+ user: core
+
+ *: "SET TIMER"
+
+
+ *: "NASTAVIŤ ČASOVAČ"
+
+
+ *: "Nastaviť časovač"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_RUNNING
+ desc: countdown_timer plugin - status label shown while the countdown is active
+ user: core
+
+ *: "RUNNING"
+
+
+ *: "BEŽÍ"
+
+
+ *: "Beží"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_PAUSED
+ desc: countdown_timer plugin - status label shown while the countdown is paused
+ user: core
+
+ *: "PAUSED"
+
+
+ *: "POZASTAVENÝ"
+
+
+ *: "Pozastavený"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_OVERTIME
+ desc: countdown_timer plugin - status label shown when the countdown has passed zero and is counting up
+ user: core
+
+ *: "OVERTIME"
+
+
+ *: "NADČAS"
+
+
+ *: "Nadčas"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_FINISHED
+ desc: countdown_timer plugin - status label shown at the moment the countdown expires
+ user: core
+
+ *: "FINISHED"
+
+
+ *: "UKONČENÝ"
+
+
+ *: "Ukončený"
+
+
diff --git a/apps/lang/svenska.lang b/apps/lang/svenska.lang
index 0a7fa0fd6f..e6ccf91194 100644
--- a/apps/lang/svenska.lang
+++ b/apps/lang/svenska.lang
@@ -14789,7 +14789,7 @@
user: core
*: "Press LEFT to cancel."
- android,hifietma*,zenvision: "Press BACK to cancel."
+ android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."
@@ -14804,7 +14804,7 @@
*: "Tryck på VÄNSTER för att avbryta."
- android,hifietma*,zenvision: "Tryck på TILLBAKA för att avbryta."
+ android,hifietma*: "Tryck på TILLBAKA för att avbryta."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Tryck på POWER för att avbryta."
ihifi760,ihifi960: "Dubbelklicka på RETURN för att avbryta."
ihifi770,ihifi770c,ihifi800: "Tryck på HOME för att avbryta."
@@ -14819,7 +14819,7 @@
*: "Tryck på VÄNSTER för att avbryta."
- android,hifietma*,zenvision: "Tryck på TILLBAKA för att avbryta."
+ android,hifietma*: "Tryck på TILLBAKA för att avbryta."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Tryck på POWER för att avbryta."
ihifi760,ihifi960: "Dubbelklicka på RETURN för att avbryta."
ihifi770,ihifi770c,ihifi800: "Tryck på HOME för att avbryta."
@@ -15314,13 +15314,13 @@
id: LANG_VOICED_DATE_FORMAT
- desc: format string for how dates will be read back. Y == 4-digit year, A == month name, m == numeric month, d == numeric day. For example, "AdY" will read "January 21 2021"
+ desc: format string for how dates will be read back. Y == 4-digit year (grouped), y == 4-digit year (numeric), A == month name, m == numeric month, d == numeric day. For example, for 2021-01-05, "AdY" will be voiced as "January 5 twenty twenty-one" and "dmy" will be voiced as "5 1 two thousand twenty one
user: core
*: "dAY"
- *: "dAY"
+ *: "~dAY"
*: ""
@@ -15923,16 +15923,16 @@
id: LANG_DEFAULT_BROWSER
- desc: in Settings
+ desc: deprecated
user: core
- *: "Default Browser"
+ *: ""
- *: "Standardwebbläsare"
+ *: ""
- *: "Standardwebbläsare"
+ *: ""
@@ -16967,3 +16967,143 @@
*: "~U S B"
+
+ id: LANG_ANNOUNCE_STATUS
+ desc: announnnce_status plugin
+ user: core
+
+ *: "Announce Status"
+
+
+ *: "Meddela status"
+
+
+ *: "Meddela status"
+
+
+
+ id: LANG_KEEP_DIRECTORY
+ desc: file browser setting
+ user: core
+
+ *: "Always remember last folder"
+
+
+ *: "Kom alltid ihåg senaste mappen"
+
+
+ *: "Kom alltid ihåg senaste mappen"
+
+
+
+ id: LANG_FILE_NOT_FOUND
+ desc: When file does not exist
+ user: core
+
+ *: "File not found"
+
+
+ *: "Filen hittades inte"
+
+
+ *: "Filen hittades inte"
+
+
+
+ id: LANG_SHOW_IN_FILES
+ desc: Reveal item in File Browser
+ user: core
+
+ *: "Show in Files"
+
+
+ *: "Visa i Filer"
+
+
+ *: "Visa i Filer"
+
+
+
+ id: LANG_CHANNEL_SWAP
+ desc: in sound_settings
+ user: core
+
+ *: "Swap Left & Right"
+
+
+ *: "Byt vänster och höger"
+
+
+ *: "Byt vänster och höger"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_SET
+ desc: countdown_timer plugin - header shown on the setup screen where the user enters the countdown duration
+ user: core
+
+ *: "SET TIMER"
+
+
+ *: "Ställ in timer"
+
+
+ *: "Ställ in timer"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_RUNNING
+ desc: countdown_timer plugin - status label shown while the countdown is active
+ user: core
+
+ *: "RUNNING"
+
+
+ *: "Pågår"
+
+
+ *: "Pågår"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_PAUSED
+ desc: countdown_timer plugin - status label shown while the countdown is paused
+ user: core
+
+ *: "PAUSED"
+
+
+ *: "PAUSAD"
+
+
+ *: "Pausad"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_OVERTIME
+ desc: countdown_timer plugin - status label shown when the countdown has passed zero and is counting up
+ user: core
+
+ *: "OVERTIME"
+
+
+ *: "ÖVERTID"
+
+
+ *: "Övertid"
+
+
+
+ id: LANG_COUNTDOWN_TIMER_FINISHED
+ desc: countdown_timer plugin - status label shown at the moment the countdown expires
+ user: core
+
+ *: "FINISHED"
+
+
+ *: "SLUTFÖRD"
+
+
+ *: "Slutförd"
+
+
diff --git a/docs/CONTRIBUTING b/docs/CONTRIBUTING
index 03dfea01ee..6cc92e24f1 100644
--- a/docs/CONTRIBUTING
+++ b/docs/CONTRIBUTING
@@ -72,7 +72,7 @@ check out the latest version of the Rockbox sources.
See https://www.rockbox.org/wiki/UsingGit for details on how to setup your
environment and how to upload a change you have made for review.
-We'd prefer that you don't submit patches to the bug tracker any more,
+We strongly prefer that you don't submit patches to the bug tracker,
as it's much harder to read and discuss them there.
Credits
@@ -80,3 +80,20 @@ Credits
We believe in crediting all contributors by name. Before committing a patch to
Git, we ask that you give us your full real name (no pseudonyms or nicknames)
for adding to the credits list.
+
+Generative AI
+-------------
+We are highly unlikely to review or accept AI-generated or "vibe coded"
+code; our time is very limited, and we need to know that *you* understand
+exactly what the code is doing and why, so that we can review it
+effectively with you.
+
+Code is of no value to Rockbox if it is not maintainable, and it cannot
+be maintained if it is not understood. Quality is more important than
+quantity.
+
+If you really *must* submit AI-generated code, you will need to include
+prompt provenance including the model used, dates and full content of
+prompts, and the unedited LLM output. See the article "Track Prompt
+Provenance in Version Control" at https://medium.com/@psluaces/track-prompt-provenance-in-version-control-8746e2bad3c2)
+by Pablo Santos Luaces.