Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 46 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: release

# Three jobs rather than one so that "Re-run failed jobs" repairs a failed upload
# Several jobs rather than one so that "Re-run failed jobs" repairs a failed upload
# against the .ipa already built and signed. See the README.

on:
Expand Down Expand Up @@ -69,6 +69,14 @@ jobs:
version: ${{ steps.version.outputs.version }}
run: .github/scripts/changelog-section.py --version "$version"

# what the listing job uploads, so a missing translation fails here rather
# than once both apps are up
- name: check the store copy is written in every locale
if: ${{ steps.version.outputs.version != '' }}
env:
version: ${{ steps.version.outputs.version }}
run: scripts/store-listing.py --version "$version"

- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
Expand Down Expand Up @@ -207,6 +215,43 @@ jobs:
ASC_KEY_CONTENT: ${{ secrets.ASC_KEY_CONTENT }}
run: bundle exec fastlane ios ${{ matrix.lane }}

# its own job because the listing stays editable until the version is submitted,
# while a build cannot be uploaded twice. No macOS runner: this touches the
# listing, not the app
listing:
needs: upload
if: ${{ !inputs.dry_run }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- app: pro
lane: uploadListingPro
- app: lite
lane: uploadListingLite
steps:
- name: checkout
uses: actions/checkout@v7

- uses: ruby/setup-ruby@v1
with:
bundler-cache: true

- name: resolve version
id: version
env:
given: ${{ inputs.version }}
run: .github/scripts/resolve-version.py --input "$given" --dry-run "$dry_run"

- name: write ${{ matrix.app }}'s listing
env:
ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }}
ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}
ASC_KEY_CONTENT: ${{ secrets.ASC_KEY_CONTENT }}
ODR_VERSION: ${{ steps.version.outputs.version }}
run: bundle exec fastlane ios ${{ matrix.lane }}

record:
needs: upload
if: ${{ !inputs.dry_run }}
Expand Down
17 changes: 11 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ Developer-facing changes to OpenDocument Reader for iOS, in [Keep a
Changelog](https://keepachangelog.com/en/1.1.0/) format. Changes to the shared
OpenDocument core are listed under the release that shipped them. The shorter
"What's New" copy the store shows lives in
`fastlane/metadata/en-US/changelogs/`.
`fastlane/metadata/<locale>/changelogs/`, written from these entries by
`scripts/store-copy.py`.

Entries go under `Unreleased` in the pull request that makes the change. The
heading is cut when the release is **submitted**, in one pull request that also
Expand All @@ -31,16 +32,20 @@ once the version tag exists.
it. Saving has left the menu; discarding is still there and now leaves edit
mode.

### Known issues

- Tapping a document sets no cursor, so edit mode cannot be typed into. The
cause is in odrcore; `EditWorkflowTests` pins it until the fix ships.

### Fixed

- Flat XML documents (`.fodt`, `.fodp`, `.fods`, `.fodg`), `.otm`, `.xlt` and
`.xlm` can be picked in the document browser instead of being greyed out.
odrcore rendered them already; the app claimed no type that reached them.
- The app is translated again. Every language but English was showing English
for the onboarding buttons, the privacy screen and the banner, and Danish,
Catalan, Turkish and Czech showed it for most of the rest.
- The Chinese introduction named a different app.

### Known issues

- Tapping a document sets no cursor, so edit mode cannot be typed into. The
cause is in odrcore; `EditWorkflowTests` pins it until the fix ships.

## [1.40]

Expand Down
76 changes: 56 additions & 20 deletions OpenDocumentReader/ca.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -2,74 +2,110 @@
"toast_error_generic" = "Hi ha hagut un problema. No s'ha pogut obrir el fitxer.";

/* */
"ok" = "OK";
"ok" = "D'acord";

/* */
"alert_unsaved_changes" = "You have unsaved changes";
"alert_unsaved_changes" = "Tens canvis sense desar";

/* */
"alert_save_now" = "Save them now?";
"alert_save_now" = "Vols desar-los ara?";

/* */
"yes" = "Yes";
"yes" = "";

/* */
"no" = "No";

/* */
"menu_edit" = "Edit document";
"menu_edit" = "Edita el document";

/* */
"action_edit_save" = "Save";
"action_edit_save" = "Desa";

/* */
"menu_discard_changes" = "Discard changes";
"menu_discard_changes" = "Descarta els canvis";

/* */
"menu_fullscreen" = "Mode de pantalla completa";

/* */
"menu_cloud_print" = "Google Cloud Print";
"menu_cloud_print" = "Imprimeix el document";

/* */
"action_edit_help" = "Help!?";
"action_edit_help" = "Ajuda!?";

/* */
"cancel" = "Cancel";
"cancel" = "Cancel·la";

/* */
"toast_edit_status_saved" = "Document saved";
"toast_edit_status_saved" = "Document desat";

/* */
"toast_error_save_failed" = "File could not be saved. Please contact support@opendocument.app";
"toast_error_save_failed" = "No s'ha pogut desar el fitxer. Escriu a support@opendocument.app";

/* */
"toast_error_password_protected" = "El document està protegit per contrasenya";
"toast_error_password_protected" = "El document està protegit amb contrasenya";

/* */
"intro_title_open" = "Open and read your ODF file on the go!";
"intro_title_open" = "Llegeix els teus fitxers ODF allà on siguis!";

/* */
"intro_title_edit" = "Found a typo in your document? Now supports modification!";
"intro_title_edit" = "Has trobat una errada al document? Ara també el pots modificar!";

/* */
"intro_title_apps" = "Read your documents from within other apps";
"intro_title_apps" = "Llegeix els documents des d'altres apps";

/* */
"intro_description_open" = "OpenDocument Reader allows you to view documents that are stored in OpenDocument format (.odt, .ods, .odp and .odg). These files are usually created using LibreOffice or OpenOffice. This app allows to open such files on your mobile device too, so you can read them on the go.";
"intro_description_open" = "L'OpenDocument Reader et permet veure documents desats en format OpenDocument (.odt, .ods, .odp i .odg). Aquests fitxers se solen crear amb el LibreOffice o l'OpenOffice. Amb aquesta app també els pots obrir al mòbil i llegir-los allà on siguis.";

/* */
"intro_description_edit" = "OpenDocument Reader not only allows to read documents on your mobile device, but also supports modifying them too. Typos are fixed in a breeze, even on the train!";
"intro_description_edit" = "L'OpenDocument Reader no només et deixa llegir documents al mòbil: també et permet modificar-los. Corregir una errada és qüestió de segons, fins i tot al tren!";

/* */
"intro_description_apps" = "OpenDocument Reader supports a huge range of other apps to open documents from. A colleague sent a presentation via Gmail? Click the attachment and this app is going to open right away!";
"intro_description_apps" = "L'OpenDocument Reader es pot obrir des de moltes altres apps. Un company t'ha enviat una presentació per Gmail? Toca l'adjunt i l'app s'obrirà a l'instant!";

/* */
"back_to_documents" = "Back to documents";
"back_to_documents" = "Torna als documents";

/* */
"loading" = "S'està carregant";

/* */
"error" = "Error";

/* Onboarding buttons. Were hardcoded English in Constants.swift before. */
"intro_next" = "Següent";
"intro_skip" = "Omet";
"intro_start" = "Comença";

/* Entry point in the document browser that reopens the advertising consent choices */
"privacy" = "Privadesa";

/* Reopens the Google UMP consent form */
"privacy_ad_choices" = "Opcions de privadesa dels anuncis";

/* Leads to the iOS tracking permission for this app */
"privacy_tracking" = "Permís de seguiment";

/* Explains that ATT is asked once per install and lives in iOS Settings afterwards */
"privacy_tracking_message" = "L'iOS demana el permís de seguiment una sola vegada. El pots canviar quan vulguis a Configuració, a Privadesa i seguretat → Seguiment. Si el canvies allà, l'app es tancarà.";

/* Opens this app's page in the Settings app */
"privacy_open_settings" = "Obre la configuració";

/* House ad shown in the banner slot when no ad is available. "short" variants are used on narrow screens. */
"house_ad_support_short" = "Dona'ns suport";
"house_ad_support_headline" = "Fes costat a l'OpenDocument Reader";
"house_ad_support_subline" = "Passa a Pro: mai més anuncis";

"house_ad_adfree_short" = "Sense anuncis";
"house_ad_adfree_headline" = "Llegeix sense anuncis";
"house_ad_adfree_subline" = "ODR Pro: un únic pagament";

"house_ad_source_short" = "Codi obert";
"house_ad_source_headline" = "Codi obert i gratuït";
"house_ad_source_subline" = "El Pro ho paga i treu els anuncis";

/* Buttons on the house ad */
"house_ad_cta_go_pro" = "Passa a Pro";
"house_ad_cta_get_pro" = "Obtén Pro";
76 changes: 56 additions & 20 deletions OpenDocumentReader/cs.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
/* */
"toast_error_generic" = "Něco se pokazilo. Nelze otevřít soubor.";
"toast_error_generic" = "Něco se pokazilo. Soubor se nepodařilo otevřít.";

/* */
"ok" = "OK";

/* */
"alert_unsaved_changes" = "You have unsaved changes";
"alert_unsaved_changes" = "Máte neuložené změny";

/* */
"alert_save_now" = "Save them now?";
"alert_save_now" = "Uložit je nyní?";

/* */
"yes" = "Yes";
"yes" = "Ano";

/* */
"no" = "No";
"no" = "Ne";

/* */
"menu_edit" = "Upravit dokument";
Expand All @@ -23,53 +23,89 @@
"action_edit_save" = "Uložit";

/* */
"menu_discard_changes" = "Discard changes";
"menu_discard_changes" = "Zahodit změny";

/* */
"menu_fullscreen" = "Celá obrazovka";

/* */
"menu_cloud_print" = "Google Cloud Print";
"menu_cloud_print" = "Vytisknout dokument";

/* */
"action_edit_help" = "Help!?";
"action_edit_help" = "Nápověda!?";

/* */
"cancel" = "Cancel";
"cancel" = "Zrušit";

/* */
"toast_edit_status_saved" = "Document saved";
"toast_edit_status_saved" = "Dokument byl uložen";

/* */
"toast_error_save_failed" = "File could not be saved. Please contact support@opendocument.app";
"toast_error_save_failed" = "Soubor se nepodařilo uložit. Napište prosím na support@opendocument.app";

/* */
"toast_error_password_protected" = "Dokument je chráněn heslem";

/* */
"intro_title_open" = "Open and read your ODF file on the go!";
"intro_title_open" = "Otevřete si a přečtěte soubory ODF, ať jste kdekoli!";

/* */
"intro_title_edit" = "Found a typo in your document? Now supports modification!";
"intro_title_edit" = "Našli jste v dokumentu překlep? Teď ho můžete opravit!";

/* */
"intro_title_apps" = "Read your documents from within other apps";
"intro_title_apps" = "Čtěte dokumenty přímo z jiných aplikací";

/* */
"intro_description_open" = "OpenDocument Reader allows you to view documents that are stored in OpenDocument format (.odt, .ods, .odp and .odg). These files are usually created using LibreOffice or OpenOffice. This app allows to open such files on your mobile device too, so you can read them on the go.";
"intro_description_open" = "OpenDocument Reader umožňuje prohlížet dokumenty uložené ve formátu OpenDocument (.odt, .ods, .odp a .odg). Tyto soubory obvykle vznikají v LibreOffice nebo OpenOffice. S touto aplikací je otevřete i v mobilu, takže si je přečtete, ať jste kdekoli.";

/* */
"intro_description_edit" = "OpenDocument Reader not only allows to read documents on your mobile device, but also supports modifying them too. Typos are fixed in a breeze, even on the train!";
"intro_description_edit" = "OpenDocument Reader dokumenty v mobilu nejen zobrazí, ale umí je i upravovat. Překlep tak opravíte během chvilky, klidně i ve vlaku.";

/* */
"intro_description_apps" = "OpenDocument Reader supports a huge range of other apps to open documents from. A colleague sent a presentation via Gmail? Click the attachment and this app is going to open right away!";
"intro_description_apps" = "OpenDocument Reader umí otevřít dokumenty z celé řady dalších aplikací. Poslal vám kolega prezentaci přes Gmail? Klepněte na přílohu a aplikace se hned otevře.";

/* */
"back_to_documents" = "Back to documents";
"back_to_documents" = "Zpět na dokumenty";

/* */
"loading" = "Probíhá načítání";
"loading" = "Načítání";

/* */
"error" = "Error";
"error" = "Chyba";

/* Onboarding buttons. Were hardcoded English in Constants.swift before. */
"intro_next" = "Další";
"intro_skip" = "Přeskočit";
"intro_start" = "Začít";

/* Entry point in the document browser that reopens the advertising consent choices */
"privacy" = "Soukromí";

/* Reopens the Google UMP consent form */
"privacy_ad_choices" = "Nastavení soukromí u reklam";

/* Leads to the iOS tracking permission for this app */
"privacy_tracking" = "Povolení sledování";

/* Explains that ATT is asked once per install and lives in iOS Settings afterwards */
"privacy_tracking_message" = "iOS se na povolení sledování zeptá jen jednou. Kdykoli ho můžete změnit v Nastavení v části Soukromí a zabezpečení → Sledování. Po změně se aplikace ukončí.";

/* Opens this app's page in the Settings app */
"privacy_open_settings" = "Otevřít Nastavení";

/* House ad shown in the banner slot when no ad is available. "short" variants are used on narrow screens. */
"house_ad_support_short" = "Podpořte nás";
"house_ad_support_headline" = "Podpořte OpenDocument Reader";
"house_ad_support_subline" = "Pořiďte si Pro — bez reklam, navždy";

"house_ad_adfree_short" = "Čtěte bez reklam";
"house_ad_adfree_headline" = "Čtěte bez reklam";
"house_ad_adfree_subline" = "ODR Pro — jednorázový nákup";

"house_ad_source_short" = "Open source";
"house_ad_source_headline" = "Open source a zdarma";
"house_ad_source_subline" = "Platí to verze Pro — a ruší reklamy";

/* Buttons on the house ad */
"house_ad_cta_go_pro" = "Přejít na Pro";
"house_ad_cta_get_pro" = "Pořídit Pro";
Loading