Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 3de34e53 authored by Arnau Mora's avatar Arnau Mora Committed by GitHub
Browse files

Migrate translation contributors credits to Weblate (#1918)



* Update loading method for Weblate

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Add fetch script

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Add test function

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Add credits from Transifex

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Add workflow for updating Weblate credits

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Improve styling

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Add line break at the end

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Filter Ricki in translation contributions

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Display Transifex translations

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Modify PRs, not the base branch

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Fix paddings

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Rename weblateTranslations flow and loadWeblateTranslations function

* Rename variables and functions from `translations` to `translators`

* - Move AboutActivity.Model class to AboutModel

* Rename translators files

* Minor renaming

* Refactor sorting logic into `sortTranslators` function

* Rename script to fetch Weblate translators

* - Remove `AboutActivityTest` class
- Move `loadTransifexTranslators` function to `AboutModel`
- Update `loadWeblateTranslators` function in `AboutModel`

* Update Weblate workflow

* - Combine Weblate and Transifex translators into a single list
- Update AboutActivity to use the combined list
- Add tests for the new functionality

* Merge Transifex and Weblate translators by username, don't show language, add Engage widget

* Extract TranslationsTab

* AboutModel: update tests

* Add thanks message for translation contributors

* Move translation credits to Weblate

- Update `OpenSourceLicenseInfoProvider` path
- Add new strings for translations credits
- Update `TranslationsTab` with new strings

* Add Accept-Language, update Context

* Update Weblate Translators Workflow

- Allow workflow to run on specific branch for testing
- Remove unnecessary fetch-depth comment

* Update Weblate Translators Workflow (2)

* Remove workflow

---------

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>
Co-authored-by: default avatarRicki Hirner <hirner@bitfire.at>
parent af084fb5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -160,6 +160,7 @@ dependencies {
    implementation(libs.compose.accompanist.permissions)
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.compose.material3)
    implementation(libs.androidx.compose.material3.adaptive)
    implementation(libs.androidx.compose.materialIconsExtended)
    debugImplementation(libs.androidx.compose.ui.tooling)
    implementation(libs.androidx.compose.ui.toolingPreview)
+69 −0
Original line number Diff line number Diff line
/*
 * Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
 */

package at.bitfire.davdroid.ui

import android.content.Context
import at.bitfire.davdroid.di.IoDispatcher
import at.bitfire.davdroid.ui.about.AboutModel
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import java.util.logging.Logger
import javax.inject.Inject

@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
@HiltAndroidTest
class AboutModelTest {

    @get:Rule
    val hiltRule = HiltAndroidRule(this)

    @Inject
    @ApplicationContext
    lateinit var context: Context

    @Inject
    @IoDispatcher
    lateinit var ioDispatcher: CoroutineDispatcher

    @Inject
    lateinit var logger: Logger

    // Model instance created once and reused across tests
    private lateinit var model: AboutModel

    @Before
    fun setup() {
        hiltRule.inject()

        // Create the model using injected dependencies
        model = AboutModel(context, ioDispatcher, logger)
    }

    @Test
    fun test_loadTransifexTranslators() = runTest {
        // Check that the function doesn't crash
        val translators = model.loadTransifexTranslators()

        // And that it's not empty
        assertTrue(translators.isNotEmpty())
    }

    @Test
    fun test_loadWeblateTranslators() = runTest {
        // Check that the function doesn't crash
        val translators = model.loadWeblateTranslators()

        // And that it's not empty
        assertTrue(translators.isNotEmpty())
    }

}
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@
        </activity>

        <activity
            android:name=".ui.AboutActivity"
            android:name=".ui.about.AboutActivity"
            android:label="@string/navigation_drawer_about"
            android:parentActivityName=".ui.AccountsActivity"/>

+1 −0
Original line number Diff line number Diff line
[{"Arabic":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Basque":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Bulgarian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Catalan":[{"email":"arnyminer.z@gmail.com","username":"arnyminerz","full_name":"Arnau Mora","change_count":4,"date_joined":"2018-10-10T11:03:34.342978+00:00"},{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Chinese (Simplified Han script)":[{"email":"prior-owl-upriver@duck.com","username":"hamburger2048","full_name":"大王叫我来巡山","change_count":40,"date_joined":"2022-12-25T07:09:01.302719+00:00"},{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Chinese (Traditional Han script)":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Croatian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Czech":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Danish":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Dutch":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"English":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"English (United Kingdom)":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Estonian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Finnish":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"French":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Galician":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Georgian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"German":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Greek":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Hungarian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Indonesian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Italian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Japanese":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Korean":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Norwegian Bokmål":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":1,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Persian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Polish":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Portuguese":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Portuguese (Brazil)":[{"email":"weblate@lucasmz.dev","username":"lucasmz","full_name":"LucasMZ","change_count":10,"date_joined":"2024-02-09T19:46:06.048487+00:00"},{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Romanian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Russian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Serbian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Silesian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Sinhala":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Slovak":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Slovenian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Spanish":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Swedish":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Turkish":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":1,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Ukrainian":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]},{"Vietnamese":[{"email":"hirner@bitfire.at","username":"rfc2822","full_name":"Ricki Hirner","change_count":3,"date_joined":"2020-01-03T14:09:19.307400+00:00"}]}]
 No newline at end of file
Loading