app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit b0aafce32e9fc4c1c7fde79ef5e285580da467e5
parent 2724e4532abd1abb9b3be0fb641067dcd3b51a0f
Author: triesap <tyson@radroots.org>
Date:   Mon,  2 Feb 2026 15:48:25 +0000

app: localize setup eula content

- add eula headings, body copy, and list items
- translate eula action labels and setup strings
- update setup view to use eula i18n keys
- regenerate mf2-i18n build artifacts

Diffstat:
Mapp/i18n/build/i18n.catalog.json | 308+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapp/i18n/build/id_map.json | 28++++++++++++++++++++++++++++
Mapp/i18n/build/id_map_hash | 2+-
Mapp/i18n/build/manifest.json | 4++--
Mapp/i18n/build/packs/en.mf2pack | 0
Mapp/i18n/locales/en/messages.mf2 | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapp/src/app.rs | 56++++++++++++++++++++++++++++----------------------------
7 files changed, 424 insertions(+), 31 deletions(-)

diff --git a/app/i18n/build/i18n.catalog.json b/app/i18n/build/i18n.catalog.json @@ -5,6 +5,17 @@ "default_locale": "en", "messages": [ { + "key": "app.common.agree", + "id": 4244146572, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { "key": "app.common.back", "id": 2990764910, "args": [], @@ -27,6 +38,17 @@ } }, { + "key": "app.common.disagree", + "id": 1460316265, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { "key": "app.common.missing", "id": 3520194192, "args": [], @@ -621,6 +643,292 @@ } }, { + "key": "app.setup.eula.acceptance.body", + "id": 2382792662, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.acceptance.title", + "id": 3507789532, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.changes.body", + "id": 951360382, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.changes.title", + "id": 3581217580, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.consequences.body", + "id": 622716437, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.consequences.title", + "id": 2552980318, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.contact.body", + "id": 2214254760, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.contact.title", + "id": 3880966154, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.disclaimer.body", + "id": 2436514119, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.disclaimer.title", + "id": 4158835886, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.introduction.body", + "id": 1260183649, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.introduction.title", + "id": 4105467488, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_conduct.item.harass", + "id": 3851004027, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_conduct.item.impersonate", + "id": 469274623, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_conduct.item.intimidate", + "id": 1885763914, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_conduct.item.violence", + "id": 324691776, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_conduct.title", + "id": 2564751006, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.body", + "id": 1145716858, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.item.harass", + "id": 3479565655, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.item.hate_speech", + "id": 2878691915, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.item.illegal", + "id": 2187251819, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.item.impersonate", + "id": 2234909629, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.item.minors", + "id": 3085497859, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.item.pornographic", + "id": 929022219, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.prohibited_content.title", + "id": 1738432508, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { + "key": "app.setup.eula.title", + "id": 2514464102, + "args": [], + "features": { + "select": false, + "plural_cardinal": false, + "plural_ordinal": false, + "formatters": [] + } + }, + { "key": "app.setup.farmer.title", "id": 3967778278, "args": [], diff --git a/app/i18n/build/id_map.json b/app/i18n/build/id_map.json @@ -1,6 +1,8 @@ { + "app.common.agree": 4244146572, "app.common.back": 2990764910, "app.common.continue": 385087683, + "app.common.disagree": 1460316265, "app.common.missing": 3520194192, "app.common.no": 1027581146, "app.common.unknown": 1588621956, @@ -55,6 +57,32 @@ "app.nav.setup": 2066290074, "app.nav.ui": 2416341108, "app.not_found": 3182331848, + "app.setup.eula.acceptance.body": 2382792662, + "app.setup.eula.acceptance.title": 3507789532, + "app.setup.eula.changes.body": 951360382, + "app.setup.eula.changes.title": 3581217580, + "app.setup.eula.consequences.body": 622716437, + "app.setup.eula.consequences.title": 2552980318, + "app.setup.eula.contact.body": 2214254760, + "app.setup.eula.contact.title": 3880966154, + "app.setup.eula.disclaimer.body": 2436514119, + "app.setup.eula.disclaimer.title": 4158835886, + "app.setup.eula.introduction.body": 1260183649, + "app.setup.eula.introduction.title": 4105467488, + "app.setup.eula.prohibited_conduct.item.harass": 3851004027, + "app.setup.eula.prohibited_conduct.item.impersonate": 469274623, + "app.setup.eula.prohibited_conduct.item.intimidate": 1885763914, + "app.setup.eula.prohibited_conduct.item.violence": 324691776, + "app.setup.eula.prohibited_conduct.title": 2564751006, + "app.setup.eula.prohibited_content.body": 1145716858, + "app.setup.eula.prohibited_content.item.harass": 3479565655, + "app.setup.eula.prohibited_content.item.hate_speech": 2878691915, + "app.setup.eula.prohibited_content.item.illegal": 2187251819, + "app.setup.eula.prohibited_content.item.impersonate": 2234909629, + "app.setup.eula.prohibited_content.item.minors": 3085497859, + "app.setup.eula.prohibited_content.item.pornographic": 929022219, + "app.setup.eula.prohibited_content.title": 1738432508, + "app.setup.eula.title": 2514464102, "app.setup.farmer.title": 3967778278, "app.setup.intro.body": 3075641340, "app.setup.intro.kicker": 397915792, diff --git a/app/i18n/build/id_map_hash b/app/i18n/build/id_map_hash @@ -1 +1 @@ -sha256:bbf87cb3cd423c088f4002810c7cc87b8a2d251e6b76d4e71cdf02b5e4d84b08 +sha256:4026e886da6d0000d936662b86f6674c3afe1a103ed9277e57de9195166abf48 diff --git a/app/i18n/build/manifest.json b/app/i18n/build/manifest.json @@ -1 +1 @@ -{"schema":1,"release_id":"dev","generated_at":"2026-02-02T00:00:00Z","default_locale":"en","supported_locales":["en"],"id_map_hash":"sha256:bbf87cb3cd423c088f4002810c7cc87b8a2d251e6b76d4e71cdf02b5e4d84b08","mf2_packs":{"en":{"kind":"base","url":"packs/en.mf2pack","hash":"sha256:91a973fb93cd33c3122aefe92ebf98976e720a07eced81f074ad2b80e2516c22","size":4210,"content_encoding":"identity","pack_schema":0}}} -\ No newline at end of file +{"schema":1,"release_id":"dev","generated_at":"2026-02-02T00:00:00Z","default_locale":"en","supported_locales":["en"],"id_map_hash":"sha256:4026e886da6d0000d936662b86f6674c3afe1a103ed9277e57de9195166abf48","mf2_packs":{"en":{"kind":"base","url":"packs/en.mf2pack","hash":"sha256:2c500463fe1deac6b200df23c67892adaf68760182c370ff45d59f387758c36d","size":7347,"content_encoding":"identity","pack_schema":0}}} +\ No newline at end of file diff --git a/app/i18n/build/packs/en.mf2pack b/app/i18n/build/packs/en.mf2pack Binary files differ. diff --git a/app/i18n/locales/en/messages.mf2 b/app/i18n/locales/en/messages.mf2 @@ -11,6 +11,10 @@ app.common.no = No app.common.yes = Yes +app.common.agree = Agree + +app.common.disagree = Disagree + # nav app.nav.primary_aria = primary @@ -144,6 +148,59 @@ app.setup.profile.confirm_no_name = Your profile will be created without a name. app.setup.farmer.title = Setup for Farmer +# eula +app.setup.eula.title = End User License Agreement + +app.setup.eula.introduction.title = Introduction + +app.setup.eula.introduction.body = This End User License Agreement ("EULA") is a legal agreement between you and Radroots Inc. for the use of our mobile application Radroots. By installing, accessing, or using our application, you agree to be bound by the terms and conditions of this EULA. + +app.setup.eula.prohibited_content.title = Prohibited Content and Conduct + +app.setup.eula.prohibited_content.body = You agree not to use our application to create, upload, post, send, or store any content that: + +app.setup.eula.prohibited_content.item.illegal = Is illegal, infringing, or fraudulent + +app.setup.eula.prohibited_content.item.pornographic = Is pornographic, obscene, or offensive + +app.setup.eula.prohibited_content.item.hate_speech = Is discriminatory or promotes hate speech + +app.setup.eula.prohibited_content.item.minors = Is harmful to minors + +app.setup.eula.prohibited_content.item.harass = Is intended to harass or bully others + +app.setup.eula.prohibited_content.item.impersonate = Is intended to impersonate others + +app.setup.eula.prohibited_conduct.title = You also agree not to engage in any conduct that: + +app.setup.eula.prohibited_conduct.item.harass = Harasses or bullies others + +app.setup.eula.prohibited_conduct.item.impersonate = Impersonates others + +app.setup.eula.prohibited_conduct.item.intimidate = Is intended to intimidate or threaten others + +app.setup.eula.prohibited_conduct.item.violence = Is intended to promote or incite violence + +app.setup.eula.consequences.title = Consequences of Violation + +app.setup.eula.consequences.body = Any violation of this EULA, including the prohibited content and conduct outlined above, may result in the termination of your access to our application. + +app.setup.eula.disclaimer.title = Disclaimer of Warranties and Limitation of Liability + +app.setup.eula.disclaimer.body = Our application is provided "as is" and "as available" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. We do not guarantee that our application will be uninterrupted or error-free. In no event shall Radroots Inc. be liable for any damages whatsoever, including but not limited to direct, indirect, special, incidental, or consequential damages, arising out of or in connection with the use or inability to use our application. + +app.setup.eula.changes.title = Changes to EULA + +app.setup.eula.changes.body = We reserve the right to update or modify this EULA at any time and without prior notice. Your continued use of our application following any changes to this EULA will be deemed to be your acceptance of such changes. + +app.setup.eula.contact.title = Contact Information + +app.setup.eula.contact.body = If you have any questions about this EULA, please contact us at info@radroots.org. + +app.setup.eula.acceptance.title = Acceptance of Terms + +app.setup.eula.acceptance.body = By using our application, you signify your acceptance of this EULA. If you do not agree to this EULA, you may not use our application. + # errors error.app.init.idb = storage unavailable diff --git a/app/src/app.rs b/app/src/app.rs @@ -924,7 +924,7 @@ fn SetupPage() -> impl IntoView { class="flex flex-row w-full justify-center items-center" > <p class="font-sans font-[600] text-ly0-gl text-2xl text-center"> - "End User License Agreement" + {t!("app.setup.eula.title")} </p> </header> <div @@ -948,10 +948,10 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "Introduction" + {t!("app.setup.eula.introduction.title")} </h3> <p class="font-mono font-[400] text-ly0-gl text-sm leading-relaxed"> - "This End User License Agreement (\"EULA\") is a legal agreement between you and Radroots Inc. for the use of our mobile application Radroots. By installing, accessing, or using our application, you agree to be bound by the terms and conditions of this EULA." + {t!("app.setup.eula.introduction.body")} </p> </section> <section @@ -959,18 +959,18 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "Prohibited Content and Conduct" + {t!("app.setup.eula.prohibited_content.title")} </h3> <p class="font-mono font-[400] text-ly0-gl text-sm leading-relaxed"> - "You agree not to use our application to create, upload, post, send, or store any content that:" + {t!("app.setup.eula.prohibited_content.body")} </p> <ul class="flex flex-col gap-1 pl-5 list-disc text-sm text-ly0-gl leading-relaxed"> - <li>"Is illegal, infringing, or fraudulent"</li> - <li>"Is pornographic, obscene, or offensive"</li> - <li>"Is discriminatory or promotes hate speech"</li> - <li>"Is harmful to minors"</li> - <li>"Is intended to harass or bully others"</li> - <li>"Is intended to impersonate others"</li> + <li>{t!("app.setup.eula.prohibited_content.item.illegal")}</li> + <li>{t!("app.setup.eula.prohibited_content.item.pornographic")}</li> + <li>{t!("app.setup.eula.prohibited_content.item.hate_speech")}</li> + <li>{t!("app.setup.eula.prohibited_content.item.minors")}</li> + <li>{t!("app.setup.eula.prohibited_content.item.harass")}</li> + <li>{t!("app.setup.eula.prohibited_content.item.impersonate")}</li> </ul> </section> <section @@ -978,13 +978,13 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "You also agree not to engage in any conduct that:" + {t!("app.setup.eula.prohibited_conduct.title")} </h3> <ul class="flex flex-col gap-1 pl-5 list-disc text-sm text-ly0-gl leading-relaxed"> - <li>"Harasses or bullies others"</li> - <li>"Impersonates others"</li> - <li>"Is intended to intimidate or threaten others"</li> - <li>"Is intended to promote or incite violence"</li> + <li>{t!("app.setup.eula.prohibited_conduct.item.harass")}</li> + <li>{t!("app.setup.eula.prohibited_conduct.item.impersonate")}</li> + <li>{t!("app.setup.eula.prohibited_conduct.item.intimidate")}</li> + <li>{t!("app.setup.eula.prohibited_conduct.item.violence")}</li> </ul> </section> <section @@ -992,10 +992,10 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "Consequences of Violation" + {t!("app.setup.eula.consequences.title")} </h3> <p class="font-mono font-[400] text-ly0-gl text-sm leading-relaxed"> - "Any violation of this EULA, including the prohibited content and conduct outlined above, may result in the termination of your access to our application." + {t!("app.setup.eula.consequences.body")} </p> </section> <section @@ -1003,10 +1003,10 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "Disclaimer of Warranties and Limitation of Liability" + {t!("app.setup.eula.disclaimer.title")} </h3> <p class="font-mono font-[400] text-ly0-gl text-sm leading-relaxed"> - "Our application is provided \"as is\" and \"as available\" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. We do not guarantee that our application will be uninterrupted or error-free. In no event shall Radroots Inc. be liable for any damages whatsoever, including but not limited to direct, indirect, special, incidental, or consequential damages, arising out of or in connection with the use or inability to use our application." + {t!("app.setup.eula.disclaimer.body")} </p> </section> <section @@ -1014,10 +1014,10 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "Changes to EULA" + {t!("app.setup.eula.changes.title")} </h3> <p class="font-mono font-[400] text-ly0-gl text-sm leading-relaxed"> - "We reserve the right to update or modify this EULA at any time and without prior notice. Your continued use of our application following any changes to this EULA will be deemed to be your acceptance of such changes." + {t!("app.setup.eula.changes.body")} </p> </section> <section @@ -1025,10 +1025,10 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "Contact Information" + {t!("app.setup.eula.contact.title")} </h3> <p class="font-mono font-[400] text-ly0-gl text-sm leading-relaxed"> - "If you have any questions about this EULA, please contact us at info@radroots.org." + {t!("app.setup.eula.contact.body")} </p> </section> <section @@ -1036,10 +1036,10 @@ fn SetupPage() -> impl IntoView { class="flex flex-col gap-2" > <h3 class="font-sans font-[600] text-ly0-gl text-base"> - "Acceptance of Terms" + {t!("app.setup.eula.acceptance.title")} </h3> <p class="font-mono font-[400] text-ly0-gl text-sm leading-relaxed"> - "By using our application, you signify your acceptance of this EULA. If you do not agree to this EULA, you may not use our application." + {t!("app.setup.eula.acceptance.body")} </p> </section> </div> @@ -1066,7 +1066,7 @@ fn SetupPage() -> impl IntoView { "-" </span> <span class="font-mono font-[400] text-sm text-ly0-gl group-active:text-ly0-gl/80 el-re"> - "Disagree" + {t!("app.common.disagree")} </span> <span class="font-mono font-[400] text-sm text-ly0-gl group-active:text-ly0-gl/80 el-re"> "-" @@ -1093,7 +1093,7 @@ fn SetupPage() -> impl IntoView { "-" </span> <span class="font-mono font-[400] text-sm text-ly0-gl-hl group-active:text-ly0-gl-hl/80 el-re"> - "Agree" + {t!("app.common.agree")} </span> <span class="font-mono font-[400] text-sm text-ly0-gl-hl group-active:text-ly0-gl-hl/80 el-re"> "-"