diff --git a/.github/workflows/build-devel.yml b/.github/workflows/build-devel.yml index 05d2a27b..0f75430c 100644 --- a/.github/workflows/build-devel.yml +++ b/.github/workflows/build-devel.yml @@ -1,4 +1,4 @@ -name: CI - devel branch on SFOS 3.3.0 (i486) +name: CI - devel branch on SDK for 3.3.0 (i486) env: RELEASE: 3.3.0.14 @@ -12,15 +12,16 @@ on: defaults: run: - # Note thas 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', + # Note that 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', # see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell shell: sh +# Do not use concurrency in order to enforce checking every commit of a Pull Request. # See, e.g.: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow -concurrency: - group: ci-${{ github.ref_name }} +#concurrency: + #group: ci-${{ github.ref_name }} # 'false' (default) allows for two concurrent runs, one executing and one freshly enqueued; 'true' for only one; no 'concurrency:' defined for multiple. - cancel-in-progress: false + #cancel-in-progress: false jobs: build: @@ -29,6 +30,7 @@ jobs: # Do not wait up to the default of 10 minutes for network timeouts in a workflow which runs ca. 3 minutes. SEGMENT_DOWNLOAD_TIMEOUT_MINS: 1 steps: + - name: Checkout uses: actions/checkout@v3 @@ -54,7 +56,7 @@ jobs: - name: Upload build result uses: actions/upload-artifact@v3 with: - name: RPM-build-results_devel-i486-sfos3.3.0+ + name: RPM-build-results_devel-i486-SFOS3.3.0+ path: RPMS/ # Just for fun, see https://feathericons.com/ and diff --git a/.github/workflows/build-sfos3.1.yml b/.github/workflows/build-sfos3.1.yml index e2e095ee..ffeac511 100644 --- a/.github/workflows/build-sfos3.1.yml +++ b/.github/workflows/build-sfos3.1.yml @@ -1,4 +1,4 @@ -name: CI - sfos3.1 branch on SFOS 3.1.0 (armv7hl,i486) +name: CI - sfos3.1 branch on SDK for 3.1.0 (armv7hl,i486) env: RELEASE: 3.1.0.12 @@ -14,10 +14,13 @@ on: pull_request: branches: - sfos3.1 + # Allows to run this workflow manually from the Actions tab. + #workflow_dispatch: + # Rather set a new release in the spec file and a new tag in the format N/X.Y.Z (e.g., release2_sfos3.1/0.6.3) to build a release version again. defaults: run: - # Note thas 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', + # Note that 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', # see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell shell: sh @@ -34,6 +37,7 @@ jobs: # Do not wait up to the default of 10 minutes for network timeouts in a workflow which runs ca. 5 minutes. SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2 steps: + - name: Checkout uses: actions/checkout@v3 @@ -64,7 +68,7 @@ jobs: - name: Upload build results uses: actions/upload-artifact@v3 with: - name: RPM-build-results_sfos3.1.0-3.2.1 + name: RPM-build-results_SFOS3.1.0-3.2.1 path: RPMS/ # Just for fun, see https://feathericons.com/ and diff --git a/.github/workflows/build-sfos3.3.yml b/.github/workflows/build-sfos3.3.yml index bbfca767..5faa3a67 100644 --- a/.github/workflows/build-sfos3.3.yml +++ b/.github/workflows/build-sfos3.3.yml @@ -1,4 +1,4 @@ -name: CI - sfos3.3 branch on SFOS 3.3.0 (armv7hl,i486) & SFOS 4.0.1 (aarch64) +name: CI - sfos3.3 branch on SDK for 3.3.0 (armv7hl,i486) & for 4.0.1 (aarch64) env: RELEASE: 3.3.0.14 @@ -14,10 +14,13 @@ on: pull_request: branches: - sfos3.3 + # Allows to run this workflow manually from the Actions tab. + #workflow_dispatch: + # Rather set a new release in the spec file and a new tag in the format N/X.Y.Z (e.g., release2_sfos3.3/0.6.3) to build a release version again. defaults: run: - # Note thas 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', + # Note that 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', # see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell shell: sh @@ -34,6 +37,7 @@ jobs: # Do not wait up to the default of 10 minutes for network timeouts in a workflow which runs ca. 10 minutes. SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2 steps: + - name: Checkout uses: actions/checkout@v3 @@ -70,7 +74,7 @@ jobs: - name: Upload build results uses: actions/upload-artifact@v3 with: - name: RPM-build-results_sfos3.3.0-4.1.0 + name: RPM-build-results_SFOS3.3.0-4.1.0 path: RPMS/ # Just for fun, see https://feathericons.com/ and diff --git a/.github/workflows/build-sfos4.2.yml b/.github/workflows/build-sfos4.2.yml index 7bef6fec..62c7537f 100644 --- a/.github/workflows/build-sfos4.2.yml +++ b/.github/workflows/build-sfos4.2.yml @@ -1,4 +1,4 @@ -name: CI - sfos4.2 branch on SFOS 4.2.0 (aarch64,armv7hl,i486) +name: CI - sfos4.2 branch on SDK for 4.2.0 (aarch64,armv7hl,i486) env: RELEASE: 4.2.0.21 @@ -14,10 +14,13 @@ on: pull_request: branches: - sfos4.2 + # Allows to run this workflow manually from the Actions tab. + #workflow_dispatch: + # Rather set a new release in the spec file and a new tag in the format N/X.Y.Z (e.g., release2_sfos4.2/0.6.3) to build a release version again. defaults: run: - # Note thas 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', + # Note that 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', # see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell shell: sh @@ -34,6 +37,7 @@ jobs: # Do not wait up to the default of 10 minutes for network timeouts in a workflow which runs ca. 10 minutes. SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2 steps: + - name: Checkout uses: actions/checkout@v3 @@ -70,7 +74,7 @@ jobs: - name: Upload build results uses: actions/upload-artifact@v3 with: - name: RPM-build-results_sfos4.2.0+ + name: RPM-build-results_SFOS4.2.0+ path: RPMS/ # Just for fun, see https://feathericons.com/ and diff --git a/.github/workflows/build-sfos4.2_latest.yml b/.github/workflows/build-sfos4.2_latest.yml index a757d14f..192a5ac4 100644 --- a/.github/workflows/build-sfos4.2_latest.yml +++ b/.github/workflows/build-sfos4.2_latest.yml @@ -1,8 +1,8 @@ -name: CI - sfos4.2 branch on latest SFOS (aarch64,armv7hl,i486) +name: CI - sfos4.2 branch on latest SDK (aarch64,armv7hl,i486) env: + # For the latest available docker image, see https://github.com/CODeRUS/docker-sailfishos-platform-sdk RELEASE: 4.5.0.16 - # See https://hub.docker.com/r/coderus/sailfishos-platform-sdk/tags on: push: @@ -15,10 +15,13 @@ on: pull_request: branches: - sfos4.2 + # Allows to run this workflow manually from the Actions tab. + #workflow_dispatch: + # Rather set a new release in the spec file and a new tag in the format N/X.Y.Z (e.g., release2_sfos4.2/0.6.3) to build a release version again. defaults: run: - # Note thas 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', + # Note that 'bash' provides -o pipefail, in contrast to the default (i.e., unspecified, which also uses bash) or 'sh', # see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell shell: sh @@ -35,6 +38,7 @@ jobs: # Do not wait up to the default of 10 minutes for network timeouts in a workflow which runs ca. 10 minutes. SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2 steps: + - name: Checkout uses: actions/checkout@v3 @@ -71,7 +75,7 @@ jobs: - name: Upload build results uses: actions/upload-artifact@v3 with: - name: RPM-build-results_sfos-latest + name: RPM-build-results_SFOS${{ env.RELEASE }}+ path: RPMS/ # Just for fun, see https://feathericons.com/ and diff --git a/LICENSE b/LICENSE index 8def5541..70a81ee0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,8 +1,9 @@ MIT License -Copyright (c) 2022-2023 olf (Olf0) +Copyright (c) 2022-2024 olf (Olf0) 2017-2022 Petr Tsymbarovich (mentaljam / osetr) 2019-2022 Björn Bidar (Thaodan) + 2024 citronalco 2020 Dmitry Gerasimov (dseight) 2019 Matti Viljanen (direc85) 2019 Miklós Márton (martonmiklos) diff --git a/README.md b/README.md index 231f10f1..430ca57d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ -# ![Storeman icon 86x86](https://github.com/storeman-developers/harbour-storeman/raw/master/icons/86x86/harbour-storeman.png)   **Storeman** +# ![Storeman icon 86x86](./icons/86x86/harbour-storeman.png?raw=true)   **Storeman** +**OpenRepos client application for SailfishOS** -OpenRepos client application for SailfishOS - -[![Release](https://img.shields.io/github/release/storeman-developers/harbour-storeman.svg)](https://github.com/storeman-developers/harbour-storeman/releases) +`Current`[![Current release](https://img.shields.io/github/release/storeman-developers/harbour-storeman.svg)](https://github.com/storeman-developers/harbour-storeman/releases) ## Feature set @@ -36,19 +35,25 @@ The [Storeman Installer](https://github.com/storeman-developers/harbour-storeman * If you experience issues when installing, removing or updating packages after a SailfishOS upgrade, try running `devel-su pkcon refresh` in a terminal app. * Starting with version 0.2.9, Storeman is built by the help of the SailfishOS-OBS and initially installed by the Storeman Installer (or manually). To update from Storeman < 0.2.9 (needs SailfishOS ≥ 3.1.0), one should reinstall Storeman via the Storeman Installer (which installs the current Storeman release, and since Storeman Installer 1.3.0 automatically removes a Storeman < 0.3.0 before that) or manually remove Storeman < 0.2.9 and install Storeman ≥ 0.3.0. After an initial installation of Storeman ≥ 0.3.0, further updates of Storeman will be performed within Storeman, as usual. -* Before software can be build for a SailfishOS release at the SailfishOS-OBS, Jolla must create a [corresponding "download on demand (DoD)" OBS-repository](https://build.merproject.org/project/subprojects/sailfishos). It may take a little time after a new SailfishOS release is published before the corresponding "DoD" repository is being made available, during which installing Storeman by the Storeman Installer or updating Storeman by itself on a device with the new SailfishOS release already installed does not work, because Storeman cannot be compiled for this new SailfishOS release at the Sailfish-OBS, yet; consequently this is always the case for "closed beta (cBeta)" releases of SailfishOS. In such a situation one has to manually download Storeman built for the last prior SailfishOS "general availability (GA)" release (e.g., from [its releases section at GitHub](https://github.com/storeman-developers/harbour-storeman/releases) or [the SailfishOS-OBS](https://build.merproject.org/project/show/home:olf:harbour-storeman)), then install or update Storeman via `pkcon install-local `, and hope that there is no change in the new SailfishOS release which breaks Storeman; if there is, please report that soon at [Storeman's issue tracker](https://github.com/storeman-developers/harbour-storeman/issues). +* Before software can be build for a SailfishOS release at the SailfishOS-OBS, Jolla must create a [corresponding "download on demand (DoD)" OBS-repository](https://build.merproject.org/project/subprojects/sailfishos). It may take a little time after a new SailfishOS release is published before the corresponding "DoD" repository is being made available, during which installing Storeman by the Storeman Installer or updating Storeman by itself on a device with the new SailfishOS release already installed does not work, because Storeman cannot be compiled for this new SailfishOS release at the Sailfish-OBS, yet; consequently this is always the case for "closed beta (cBeta)" releases of SailfishOS. In such a situation one has to manually download Storeman built for the last prior SailfishOS "general availability (GA)" release (e.g. from [its releases section at GitHub](https://github.com/storeman-developers/harbour-storeman/releases) or [the SailfishOS-OBS](https://build.merproject.org/project/show/home:olf:harbour-storeman)), then install or update Storeman via `pkcon install-local `, and hope that there is no change in the new SailfishOS release which breaks Storeman; if there is, please report that soon at [Storeman's issue tracker](https://github.com/storeman-developers/harbour-storeman/issues). * Disclaimer: Storeman and its installer may still have flaws, kill your kittens or break your SailfishOS installation! Although this is very unlikely after years of testing by many users, new flaws may be introduced in any release (as for any software). Mind that the license you implicitly accept by using Storeman or Storeman Installer excludes any liability. ## Translating Storeman (l10n / i18n) -If you want to translate Storeman to a language it does not support yet or enhance an existing translation, please [read the translations-README](https://github.com/storeman-developers/harbour-storeman/tree/master/translations#readme). +If you want to translate Storeman to a language it does not support yet or enhance an existing translation, please [read the translations-README](./translations#readme). ## Screenshots of Storeman -| | | | | -| --- | --- | --- | --- | -| ![RecentAppsPage](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-01.png) | ![AppPage](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-02.png) | ![CommentsPage](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-03.png) | ![Commenting](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-04.png) | -| ![RepositoriesPage](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-06.png) | ![InstalledAppsPage](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-07.png) | ![BookmarksPage](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-08.png) | ![RepositoryPage](https://github.com/storeman-developers/harbour-storeman/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-09.png) | +| | | | | +| :---: | :---: | :---: | :---: | +| | | | | +| ![RecentAppsPage](./.xdata/screenshots/screenshot-screenshot-storeman-01.png?raw=true) | ![AppPage](./.xdata/screenshots/screenshot-screenshot-storeman-02.png?raw=true) | ![CommentsPage](./.xdata/screenshots/screenshot-screenshot-storeman-03.png?raw=true) | ![Commenting](./.xdata/screenshots/screenshot-screenshot-storeman-04.png?raw=true) | +| Recently updated Apps |          App details           |      App's comments      |         Commenting         | +| | | | | +| | | | | +| ![RepositoriesPage](./.xdata/screenshots/screenshot-screenshot-storeman-06.png?raw=true) | ![InstalledAppsPage](./.xdata/screenshots/screenshot-screenshot-storeman-07.png?raw=true) | ![BookmarksPage](./.xdata/screenshots/screenshot-screenshot-storeman-08.png?raw=true) | ![RepositoryPage](./.xdata/screenshots/screenshot-screenshot-storeman-09.png?raw=true) | +| Manage repositories | Installed Apps | Bookmarked Apps | Repository details | +| | | | | ## Credits @@ -56,9 +61,10 @@ If you want to translate Storeman to a language it does not support yet or enhan - [olf (Olf0)](https://github.com/Olf0) - [Matti Viljanen (direc85)](https://github.com/direc85) - [Björn Bidar (Thaodan)](https://github.com/Thaodan) +- [citronalco](https://github.com/citronalco) - [Dmitry Gerasimov (dseight)](https://github.com/dseight) - [elros34](https://github.com/elros34) - [Christoph (inta)](https://github.com/inta) - [Miklós Márton (martonmiklos)](https://github.com/martonmiklos) - [OpenRepos service](https://openrepos.net/content/basil/about-openrepos) by [Basil Semuonov (custodian / thecust)](https://github.com/custodian) -- [Storeman icon](https://github.com/storeman-developers/harbour-storeman/raw/master/icons/harbour-storeman.svg) by [Laurent Chambon (Laurent_C)](https://mastodon.social/@Laurent_C) +- [Storeman icon](./icons/harbour-storeman.svg) by [Laurent Chambon (Laurent_C)](https://mastodon.social/@Laurent_C) diff --git a/qml/harbour-storeman.qml b/qml/harbour-storeman.qml index a37cbdbb..25e9c07d 100644 --- a/qml/harbour-storeman.qml +++ b/qml/harbour-storeman.qml @@ -364,7 +364,7 @@ ApplicationWindow updatesNotification.replacesId = replaceId updatesNotification.close() } else if (_showUpdatesNotification) { - // Don't show notification if the app was openned from notification + // Don't show notification if the app was opened from notification updatesNotification.replacesId = replaceId updatesNotification.publish() } diff --git a/qml/models/DevelopersModel.qml b/qml/models/DevelopersModel.qml index b4483daf..5b74c249 100644 --- a/qml/models/DevelopersModel.qml +++ b/qml/models/DevelopersModel.qml @@ -22,6 +22,10 @@ ListModel { name: "Björn Bidar (Thaodan)" link: "https://github.com/Thaodan" }, + ListElement { + name: "citronalco" + link: "https://github.com/citronalco" + }, ListElement { name: "Dmitry Gerasimov (dseight)" link: "https://github.com/dseight" diff --git a/qml/pages/LocalRpmsPage.qml b/qml/pages/LocalRpmsPage.qml index 09adb5cf..f9d940e7 100644 --- a/qml/pages/LocalRpmsPage.qml +++ b/qml/pages/LocalRpmsPage.qml @@ -1,25 +1,25 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 -import QtSparql 1.0 +import QtDocGallery 5.0 import harbour.orn 1.0 Page { // Duplicate count property because items are not really deleted from the model property int _count: 0 - readonly property bool _ready: page.status === PageStatus.Active && queryModel.status === SparqlListModel.Ready + readonly property bool _ready: page.status === PageStatus.Active && (queryModel.status === DocumentGalleryModel.Idle || queryModel.status === DocumentGalleryModel.Finished) on_ReadyChanged: _ready && (_count = queryModel.count) id: page allowedOrientations: defaultAllowedOrientations - SparqlListModel { + DocumentGalleryModel { id: queryModel - query: "SELECT strafter(nie:url(?r), 'file://') as ?filePath WHERE { ?r nie:mimeType 'application/x-rpm' }" - connection: SparqlConnection { - driver: "QTRACKER_DIRECT" - } + properties: ["fileName", "filePath"] + sortProperties: ["+fileName"] + rootType: DocumentGallery.File + filter: GalleryEqualsFilter { property: "mimeType"; value: "application/x-rpm" } } SilicaListView { diff --git a/rpm/harbour-storeman.changes b/rpm/harbour-storeman.changes index 32fc915f..f94bfc66 100644 --- a/rpm/harbour-storeman.changes +++ b/rpm/harbour-storeman.changes @@ -1,6 +1,8 @@ -* Mon Sep 18 2023 olf - 0.3.8 -- Rename branch sfos3.2 to sfos3.1 to reflect reality and avoid confusion (#454, #455) -- +* Tue Mar 19 2024 olf - 0.3.8 +- Rename branch `sfos3.2` to `sfos3.1` to reflect reality and avoid confusion (#454, #455) +- [Workflows] Add recent changes from Patchmanager (#457) +- [Local RPMs page] Replace `QtSparql` with `QtDocGallery` (#462) by @citronalco, closes issue #461 +- [Local RPMs page] Filter for `mimeType` instead of `fileName` to select RPM files (#463), enhances PR #462 * Mon Sep 11 2023 olf - 0.3.7 - [harbour-storeman.ts] PRs #428 & #429 missed to adapt the base .ts file (#442) diff --git a/rpm/harbour-storeman.spec b/rpm/harbour-storeman.spec index 3aa4f466..8ea2991a 100644 --- a/rpm/harbour-storeman.spec +++ b/rpm/harbour-storeman.spec @@ -78,7 +78,7 @@ Categories: DeveloperName: Storeman developers (mentaljam) Custom: Repo: %{url} -PackageIcon: %{url}/raw/master/icons/harbour-storeman.svg +PackageIcon: %{url}/raw/master/icons/%{name}.svg Screenshots: - %{url}/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-01.png - %{url}/raw/master/.xdata/screenshots/screenshot-screenshot-storeman-02.png @@ -122,9 +122,9 @@ then rm -f /var/cache/ssu/features.ini ssu_ur=yes fi -if ! echo "$ssu_lr" | grep -Fq harbour-storeman-obs +if ! echo "$ssu_lr" | grep -Fq %{name}-obs then - ssu ar harbour-storeman-obs 'https://repo.sailfishos.org/obs/home:/olf:/harbour-storeman/%%(release)_%%(arch)/' + ssu ar %{name}-obs 'https://repo.sailfishos.org/obs/home:/olf:/%{name}/%%(release)_%%(arch)/' ssu_ur=yes fi if [ $ssu_ur = yes ] @@ -146,7 +146,7 @@ exit 0 %postun if [ $1 = 0 ] # Removal then - ssu rr harbour-storeman-obs + ssu rr %{name}-obs rm -f /var/cache/ssu/features.ini ssu ur # Remove a %%{name}-installer log-file, if extant: diff --git a/translations/README.md b/translations/README.md index 991bb725..e55befef 100644 --- a/translations/README.md +++ b/translations/README.md @@ -2,7 +2,7 @@ You can help localising Storeman to your language using [Transifex](https://app.transifex.com/mentaljam/harbour-storeman) or [Qt Linguist](https://doc.qt.io/qt-5/qtlinguist-index.html). -Note that for Storeman principally translations designated with a country code only (e.g., `pt`) shall be created and maintained. Only if a complete and well maintained translation for the sole country code exists, a country specific variant with a locale will be accepted (e.g., `nl_BE`). +Note that for Storeman principally translations designated with a country code only (e.g. `pt`) shall be created and maintained. Only if a complete and well maintained translation for the sole country code exists, a country specific variant with a locale will be accepted (e.g. `nl_BE`). [Transifex](https://app.transifex.com/mentaljam/harbour-storeman) is the preferred way of submitting translations. Please do not send pull requests (PRs) with translations directly to GitHub, if you have a Transifex account. @@ -10,11 +10,11 @@ If you do not want to use Atlassian's Transifex, alternatives are [Qt Linguist]( ### Testing translations -Note that translations for Storeman are utilising *ID based* Qt `ts` files. Hence, to compile a translation file for testing, the `lrelease` command must be executed with the option `-idbased` to convert the translation files (`.ts` files) into Qt message files (`.qm` files) , either from [within Qt Linguist](https://doc.qt.io/qtcreator/creator-editor-external.html) or directly [at the command line](https://doc.qt.io/qt-5/linguist-manager.html): +Note that translations for Storeman are utilising *ID based* Qt `.ts` files. Hence, to compile a translation file for testing, the `lrelease` command must be executed with the option `-idbased` to convert the translation files (`.ts` files) into Qt message files (`.qm` files), either from [within Qt Linguist](https://doc.qt.io/qtcreator/creator-editor-external.html) or directly [at the command line](https://doc.qt.io/qt-5/linguist-manager.html): ``` lrelease -idbased harbour-storeman.ts ``` -If you want to test your translation before publishing, you should compile it and copy the resulting `qm` file(s) to (requires root privileges) +If you want to test your translation before publishing, you should compile it and copy the resulting `.qm` file(s) to (requires root privileges): ``` /usr/share/harbour-storeman/translations ``` @@ -25,7 +25,7 @@ export LANG=sv; harbour-storeman ### Updating the source `.ts` file with source strings from source code -Developers and release managers can use the `lupdate` process, either from [within Qt Linguist](https://doc.qt.io/qtcreator/creator-editor-external.html) or directly [at the command line](https://doc.qt.io/qt-5/linguist-manager.html) (mind to [include all files with translatable strings](https://github.com/storeman-developers/harbour-storeman/pull/431#issuecomment-1659024529), e.g., by `lupdate qml/ src/ *.desktop -ts translations/harbour-storeman.ts`), or tediously perform this manually, which hence is only suitable for small changes. +Developers and release managers can use the `lupdate` process, either from [within Qt Linguist](https://doc.qt.io/qtcreator/creator-editor-external.html) or directly [at the command line](https://doc.qt.io/qt-5/linguist-manager.html) (mind to [include all files with translatable strings](https://github.com/storeman-developers/harbour-storeman/pull/431#issuecomment-1659024529), e.g. by `lupdate qml/ src/ *.desktop -ts translations/harbour-storeman.ts`), or tediously perform this manually, which hence is only suitable for small changes. ---------------------------------------------