Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/translations/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 2368,
    "next": "https://weblate.framasoft.org/api/translations/?format=api&page=2",
    "previous": null,
    "results": [
        {
            "language": {
                "id": 106,
                "code": "fr",
                "name": "French",
                "plural": {
                    "id": 106,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "fra_fr",
                    "fra",
                    "fre"
                ],
                "direction": "ltr",
                "population": 278611506,
                "web_url": "https://weblate.framasoft.org/languages/fr/",
                "url": "https://weblate.framasoft.org/api/languages/fr/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/fr/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "fr",
            "id": 6,
            "filename": "priv/gettext/fr/LC_MESSAGES/default.po",
            "revision": "489962327298dff118116835d82208ef3c53e7e1",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/fr/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/fr/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/fr/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/fr/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 358,
            "translated_words": 4225,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-10T12:38:58.509533Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/fr/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/fr/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/fr/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/fr/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/fr/units/?format=api"
        },
        {
            "language": {
                "id": 43,
                "code": "br",
                "name": "Breton",
                "plural": {
                    "id": 43,
                    "source": 0,
                    "number": 5,
                    "formula": "(n % 10 == 1 && n % 100 != 11 && n % 100 != 71 && n % 100 != 91) ? 0 : ((n % 10 == 2 && n % 100 != 12 && n % 100 != 72 && n % 100 != 92) ? 1 : ((((n % 10 == 3 || n % 10 == 4) || n % 10 == 9) && (n % 100 < 10 || n % 100 > 19) && (n % 100 < 70 || n % 100 > 79) && (n % 100 < 90 || n % 100 > 99)) ? 2 : ((n != 0 && n % 1000000 == 0) ? 3 : 4)))",
                    "type": 10
                },
                "aliases": [
                    "bre"
                ],
                "direction": "ltr",
                "population": 563140,
                "web_url": "https://weblate.framasoft.org/languages/br/",
                "url": "https://weblate.framasoft.org/api/languages/br/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/br/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "br",
            "id": 13,
            "filename": "po/br.po",
            "revision": "5798acf235f247651a24b6e0925c7955f4aa4766",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/br/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/br/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/br/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/br/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 0,
            "have_comment": 4,
            "last_change": "2023-11-22T16:17:14.877059Z",
            "last_author": "Florent Grouin",
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/br/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/br/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/br/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/br/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/br/units/?format=api"
        },
        {
            "language": {
                "id": 49,
                "code": "ca",
                "name": "Catalan",
                "plural": {
                    "id": 49,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "ca_ps",
                    "ca_ca",
                    "cat"
                ],
                "direction": "ltr",
                "population": 8679138,
                "web_url": "https://weblate.framasoft.org/languages/ca/",
                "url": "https://weblate.framasoft.org/api/languages/ca/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/ca/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "ca",
            "id": 14,
            "filename": "po/ca.po",
            "revision": "f4784d0c1097090a2820a11c3924aa79f5eac72b",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/ca/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/ca/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/ca/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/ca/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 1,
            "failing_checks_words": 1,
            "failing_checks_percent": 0.2,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2023-06-20T15:22:26.904134Z",
            "last_author": "Joan Montané",
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/ca/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/ca/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/ca/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/ca/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/ca/units/?format=api"
        },
        {
            "language": {
                "id": 67,
                "code": "de",
                "name": "German",
                "plural": {
                    "id": 67,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "deu_de",
                    "deu",
                    "ger"
                ],
                "direction": "ltr",
                "population": 136350226,
                "web_url": "https://weblate.framasoft.org/languages/de/",
                "url": "https://weblate.framasoft.org/api/languages/de/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/de/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "de",
            "id": 15,
            "filename": "po/de.po",
            "revision": "6fb04166c50de3ce960e42d1b80d118e3039e95b",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/de/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/de/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/de/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/de/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 426,
            "total_words": 2240,
            "translated": 426,
            "translated_words": 2240,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 1,
            "failing_checks_words": 1,
            "failing_checks_percent": 0.2,
            "have_suggestion": 3,
            "have_comment": 0,
            "last_change": "2022-09-25T08:01:13.172064Z",
            "last_author": "Anonymous",
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/de/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/de/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/de/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/de/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/de/units/?format=api"
        },
        {
            "language": {
                "id": 76,
                "code": "en",
                "name": "English",
                "plural": {
                    "id": 76,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "en_en",
                    "base",
                    "source",
                    "enp",
                    "eng"
                ],
                "direction": "ltr",
                "population": 1636485517,
                "web_url": "https://weblate.framasoft.org/languages/en/",
                "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "en",
            "id": 16,
            "filename": "po/framadate.pot",
            "revision": "7d9e51393e80fb3dfa862184dadb53060ae67174",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/en/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/en/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/en/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/en/?format=api",
            "is_template": false,
            "is_source": true,
            "total": 426,
            "total_words": 2240,
            "translated": 426,
            "translated_words": 2240,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 29,
            "failing_checks_words": 131,
            "failing_checks_percent": 6.8,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": null,
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/en/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/en/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/en/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/en/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/en/units/?format=api"
        },
        {
            "language": {
                "id": 87,
                "code": "es",
                "name": "Spanish",
                "plural": {
                    "id": 87,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "es_la",
                    "esp",
                    "spa"
                ],
                "direction": "ltr",
                "population": 493528078,
                "web_url": "https://weblate.framasoft.org/languages/es/",
                "url": "https://weblate.framasoft.org/api/languages/es/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/es/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "es",
            "id": 17,
            "filename": "po/es.po",
            "revision": "46d438ddab9601c689ce2f7f85f5b0ef140bc8f0",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/es/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/es/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/es/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/es/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 1,
            "failing_checks_words": 5,
            "failing_checks_percent": 0.2,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2022-09-05T09:32:39.058573Z",
            "last_author": "Deleted User",
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/es/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/es/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/es/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/es/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/es/units/?format=api"
        },
        {
            "language": {
                "id": 106,
                "code": "fr",
                "name": "French",
                "plural": {
                    "id": 106,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "fra_fr",
                    "fra",
                    "fre"
                ],
                "direction": "ltr",
                "population": 278611506,
                "web_url": "https://weblate.framasoft.org/languages/fr/",
                "url": "https://weblate.framasoft.org/api/languages/fr/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/fr/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "fr",
            "id": 18,
            "filename": "po/fr.po",
            "revision": "3bec2d1608f62813c682f4afe763c6130862400e",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/fr/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/fr/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/fr/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/fr/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 1,
            "failing_checks_words": 1,
            "failing_checks_percent": 0.2,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2022-06-12T18:25:38.211586Z",
            "last_author": "J. Lavoie",
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/fr/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/fr/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/fr/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/fr/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/fr/units/?format=api"
        },
        {
            "language": {
                "id": 134,
                "code": "hu",
                "name": "Hungarian",
                "plural": {
                    "id": 134,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "hun"
                ],
                "direction": "ltr",
                "population": 12443429,
                "web_url": "https://weblate.framasoft.org/languages/hu/",
                "url": "https://weblate.framasoft.org/api/languages/hu/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/hu/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "hu",
            "id": 19,
            "filename": "po/hu.po",
            "revision": "80f64f1855c927f8312924917061bf0f4029f7e1",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/hu/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/hu/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/hu/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/hu/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 4,
            "failing_checks_words": 12,
            "failing_checks_percent": 0.9,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2020-03-27T22:08:41.167951Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/hu/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/hu/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/hu/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/hu/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/hu/units/?format=api"
        },
        {
            "language": {
                "id": 145,
                "code": "it",
                "name": "Italian",
                "plural": {
                    "id": 145,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "ita_it",
                    "ita"
                ],
                "direction": "ltr",
                "population": 70247059,
                "web_url": "https://weblate.framasoft.org/languages/it/",
                "url": "https://weblate.framasoft.org/api/languages/it/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/it/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "it",
            "id": 20,
            "filename": "po/it.po",
            "revision": "a46a4c130e9d2c2770316728993c26cdb6ba3984",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/it/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/it/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/it/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/it/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 4,
            "failing_checks_words": 4,
            "failing_checks_percent": 0.9,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2023-10-17T20:49:48.326334Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/it/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/it/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/it/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/it/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/it/units/?format=api"
        },
        {
            "language": {
                "id": 219,
                "code": "nl",
                "name": "Dutch",
                "plural": {
                    "id": 219,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "dut",
                    "nld"
                ],
                "direction": "ltr",
                "population": 31765645,
                "web_url": "https://weblate.framasoft.org/languages/nl/",
                "url": "https://weblate.framasoft.org/api/languages/nl/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/nl/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "nl",
            "id": 21,
            "filename": "po/nl.po",
            "revision": "b3675b157ca9f6a6fcdf0bf39f7802696075660a",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/nl/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/nl/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/nl/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/nl/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 5,
            "have_comment": 0,
            "last_change": "2023-11-08T09:08:14.547958Z",
            "last_author": "TranceLate",
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/nl/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/nl/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/nl/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/nl/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/nl/units/?format=api"
        },
        {
            "language": {
                "id": 229,
                "code": "oc",
                "name": "Occitan",
                "plural": {
                    "id": 229,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "oci"
                ],
                "direction": "ltr",
                "population": 2040397,
                "web_url": "https://weblate.framasoft.org/languages/oc/",
                "url": "https://weblate.framasoft.org/api/languages/oc/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/oc/statistics/?format=api"
            },
            "component": {
                "name": "Framadate",
                "slug": "framadate",
                "id": 7,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framadate",
                    "slug": "framadate",
                    "id": 4,
                    "web": "https://framagit.org/framasoft/framadate/framadate/",
                    "web_url": "https://weblate.framasoft.org/projects/framadate/",
                    "url": "https://weblate.framasoft.org/api/projects/framadate/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framadate/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framadate/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framadate/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framadate/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framadate/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framadate/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framadate/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/framadate/framadate.git",
                "git_export": "https://weblate.framasoft.org/git/framadate/framadate/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "po/*.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": true,
                "intermediate": "",
                "new_base": "po/framadate.pot",
                "file_format": "po",
                "license": "CECILL-B",
                "license_url": "https://spdx.org/licenses/CECILL-B.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/",
                "url": "https://weblate.framasoft.org/api/components/framadate/framadate/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framadate/framadate/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framadate/framadate/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framadate/framadate/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framadate/framadate/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framadate/framadate/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framadate/framadate/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/framadate/framadate.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "oc",
            "id": 22,
            "filename": "po/oc.po",
            "revision": "c5ce15eba7663e3cb667c73488db6384683f72fa",
            "web_url": "https://weblate.framasoft.org/projects/framadate/framadate/oc/",
            "share_url": "https://weblate.framasoft.org/engage/framadate/-/oc/",
            "translate_url": "https://weblate.framasoft.org/translate/framadate/framadate/oc/",
            "url": "https://weblate.framasoft.org/api/translations/framadate/framadate/oc/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 425,
            "total_words": 2236,
            "translated": 425,
            "translated_words": 2236,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 1,
            "failing_checks_words": 16,
            "failing_checks_percent": 0.2,
            "have_suggestion": 0,
            "have_comment": 1,
            "last_change": "2024-01-22T17:17:31.530275Z",
            "last_author": "P. Alibert",
            "repository_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/oc/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/oc/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/oc/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/oc/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framadate/framadate/oc/units/?format=api"
        },
        {
            "language": {
                "id": 84,
                "code": "en_US",
                "name": "English (United States)",
                "plural": {
                    "id": 84,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "us",
                    "enu"
                ],
                "direction": "ltr",
                "population": 319333440,
                "web_url": "https://weblate.framasoft.org/languages/en_US/",
                "url": "https://weblate.framasoft.org/api/languages/en_US/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/en_US/statistics/?format=api"
            },
            "component": {
                "name": "main",
                "slug": "main",
                "id": 8,
                "source_language": {
                    "id": 84,
                    "code": "en_US",
                    "name": "English (United States)",
                    "plural": {
                        "id": 84,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "us",
                        "enu"
                    ],
                    "direction": "ltr",
                    "population": 319333440,
                    "web_url": "https://weblate.framasoft.org/languages/en_US/",
                    "url": "https://weblate.framasoft.org/api/languages/en_US/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en_US/statistics/?format=api"
                },
                "project": {
                    "name": "joinpeertube",
                    "slug": "joinpeertube",
                    "id": 5,
                    "web": "https://joinpeertube.org",
                    "web_url": "https://weblate.framasoft.org/projects/joinpeertube/",
                    "url": "https://weblate.framasoft.org/api/projects/joinpeertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/joinpeertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/joinpeertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/joinpeertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/joinpeertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/joinpeertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/joinpeertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/joinpeertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "git@framagit.org:framasoft/peertube/joinpeertube.git",
                "git_export": "https://weblate.framasoft.org/git/joinpeertube/main/",
                "branch": "master",
                "push_branch": "",
                "filemask": "src/locale/*/app.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "src/locale/en_US/app.po",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/joinpeertube/main/",
                "url": "https://weblate.framasoft.org/api/components/joinpeertube/main/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/joinpeertube/main/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/joinpeertube/main/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/joinpeertube/main/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/joinpeertube/main/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/joinpeertube/main/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/joinpeertube/main/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://framagit.org/framasoft/peertube/joinpeertube/blob/{{branch}}/{{filename}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en_US)$).+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "en_US",
            "id": 23,
            "filename": "src/locale/en_US/LC_MESSAGES/app.po",
            "revision": "c23c7098d2c29a6f866ceb308b761e426ddbf904",
            "web_url": "https://weblate.framasoft.org/projects/joinpeertube/main/en_US/",
            "share_url": "https://weblate.framasoft.org/engage/joinpeertube/-/en_US/",
            "translate_url": "https://weblate.framasoft.org/translate/joinpeertube/main/en_US/",
            "url": "https://weblate.framasoft.org/api/translations/joinpeertube/main/en_US/?format=api",
            "is_template": false,
            "is_source": true,
            "total": 1433,
            "total_words": 24739,
            "translated": 1432,
            "translated_words": 24634,
            "translated_percent": 99.9,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 332,
            "failing_checks_words": 6191,
            "failing_checks_percent": 23.1,
            "have_suggestion": 1,
            "have_comment": 21,
            "last_change": "2024-03-18T10:31:44.293102Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/joinpeertube/main/en_US/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/joinpeertube/main/en_US/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/joinpeertube/main/en_US/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/joinpeertube/main/en_US/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/joinpeertube/main/en_US/units/?format=api"
        },
        {
            "language": {
                "id": 76,
                "code": "en",
                "name": "English",
                "plural": {
                    "id": 76,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "en_en",
                    "base",
                    "source",
                    "enp",
                    "eng"
                ],
                "direction": "ltr",
                "population": 1636485517,
                "web_url": "https://weblate.framasoft.org/languages/en/",
                "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "en",
            "id": 25,
            "filename": "priv/gettext/default.pot",
            "revision": "205f33eacded968f193c867aa78ad652e7783f29",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/en/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/en/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/en/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/en/?format=api",
            "is_template": false,
            "is_source": true,
            "total": 359,
            "total_words": 4300,
            "translated": 359,
            "translated_words": 4300,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 56,
            "failing_checks_words": 950,
            "failing_checks_percent": 15.5,
            "have_suggestion": 0,
            "have_comment": 1,
            "last_change": "2024-04-10T12:39:00.027889Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/en/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/en/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/en/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/en/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/en/units/?format=api"
        },
        {
            "language": {
                "id": 61,
                "code": "cs",
                "name": "Czech",
                "plural": {
                    "id": 61,
                    "source": 0,
                    "number": 3,
                    "formula": "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2",
                    "type": 22
                },
                "aliases": [
                    "cs_cs",
                    "cz",
                    "csy",
                    "ces",
                    "cze"
                ],
                "direction": "ltr",
                "population": 13045532,
                "web_url": "https://weblate.framasoft.org/languages/cs/",
                "url": "https://weblate.framasoft.org/api/languages/cs/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/cs/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "cs",
            "id": 26,
            "filename": "src/i18n/cs.json",
            "revision": "3ef8d3a46e436e1cd0cc8bce5e1bdd8c57bc7898,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/cs/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/cs/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/cs/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/cs/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1583,
            "translated_words": 8586,
            "translated_percent": 95.4,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 2,
            "failing_checks_words": 2,
            "failing_checks_percent": 0.1,
            "have_suggestion": 2,
            "have_comment": 0,
            "last_change": "2024-04-10T12:36:47.316507Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/cs/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/cs/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/cs/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/cs/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/cs/units/?format=api"
        },
        {
            "language": {
                "id": 67,
                "code": "de",
                "name": "German",
                "plural": {
                    "id": 67,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "deu_de",
                    "deu",
                    "ger"
                ],
                "direction": "ltr",
                "population": 136350226,
                "web_url": "https://weblate.framasoft.org/languages/de/",
                "url": "https://weblate.framasoft.org/api/languages/de/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/de/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "de",
            "id": 27,
            "filename": "src/i18n/de.json",
            "revision": "793f4d6e8cabab547a53b450b0cb7f1069b66638,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/de/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/de/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/de/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/de/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1499,
            "translated_words": 7718,
            "translated_percent": 90.4,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 47,
            "have_comment": 31,
            "last_change": "2024-04-10T12:36:53.147873Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/de/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/de/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/de/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/de/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/de/units/?format=api"
        },
        {
            "language": {
                "id": 87,
                "code": "es",
                "name": "Spanish",
                "plural": {
                    "id": 87,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "es_la",
                    "esp",
                    "spa"
                ],
                "direction": "ltr",
                "population": 493528078,
                "web_url": "https://weblate.framasoft.org/languages/es/",
                "url": "https://weblate.framasoft.org/api/languages/es/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/es/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "es",
            "id": 28,
            "filename": "src/i18n/es.json",
            "revision": "9646e62951212253b2d3cb00242b06e0aa1b3de5,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/es/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/es/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/es/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/es/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1438,
            "translated_words": 7451,
            "translated_percent": 86.7,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 2,
            "failing_checks_words": 6,
            "failing_checks_percent": 0.1,
            "have_suggestion": 33,
            "have_comment": 0,
            "last_change": "2024-04-17T11:14:48.946305Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/es/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/es/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/es/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/es/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/es/units/?format=api"
        },
        {
            "language": {
                "id": 145,
                "code": "it",
                "name": "Italian",
                "plural": {
                    "id": 145,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "ita_it",
                    "ita"
                ],
                "direction": "ltr",
                "population": 70247059,
                "web_url": "https://weblate.framasoft.org/languages/it/",
                "url": "https://weblate.framasoft.org/api/languages/it/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/it/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "it",
            "id": 29,
            "filename": "src/i18n/it.json",
            "revision": "35be877031512bb39ffeef14267b8155d30aac3e,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/it/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/it/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/it/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/it/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1448,
            "translated_words": 7511,
            "translated_percent": 87.3,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 5,
            "failing_checks_words": 29,
            "failing_checks_percent": 0.3,
            "have_suggestion": 44,
            "have_comment": 1,
            "last_change": "2024-04-10T12:37:42.792131Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/it/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/it/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/it/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/it/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/it/units/?format=api"
        },
        {
            "language": {
                "id": 147,
                "code": "ja",
                "name": "Japanese",
                "plural": {
                    "id": 147,
                    "source": 0,
                    "number": 1,
                    "formula": "0",
                    "type": 0
                },
                "aliases": [
                    "jp",
                    "jp_jpn",
                    "ja_ja",
                    "jpn_jp",
                    "jpn"
                ],
                "direction": "ltr",
                "population": 119729025,
                "web_url": "https://weblate.framasoft.org/languages/ja/",
                "url": "https://weblate.framasoft.org/api/languages/ja/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/ja/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "ja",
            "id": 30,
            "filename": "src/i18n/ja.json",
            "revision": "9c8f205ac0cf3986a8a464108db05d758c753ba6,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/ja/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/ja/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/ja/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ja/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 726,
            "translated_words": 2564,
            "translated_percent": 43.7,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 20,
            "failing_checks_words": 70,
            "failing_checks_percent": 1.2,
            "have_suggestion": 37,
            "have_comment": 0,
            "last_change": "2024-04-10T12:37:44.909118Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ja/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ja/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ja/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ja/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ja/units/?format=api"
        },
        {
            "language": {
                "id": 219,
                "code": "nl",
                "name": "Dutch",
                "plural": {
                    "id": 219,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "dut",
                    "nld"
                ],
                "direction": "ltr",
                "population": 31765645,
                "web_url": "https://weblate.framasoft.org/languages/nl/",
                "url": "https://weblate.framasoft.org/api/languages/nl/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/nl/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "nl",
            "id": 31,
            "filename": "src/i18n/nl.json",
            "revision": "2a41514203ddf3cf6bfe41e985b526d588b76f06,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/nl/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/nl/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/nl/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/nl/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1252,
            "translated_words": 6664,
            "translated_percent": 75.5,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 14,
            "failing_checks_words": 54,
            "failing_checks_percent": 0.8,
            "have_suggestion": 1,
            "have_comment": 1,
            "last_change": "2024-04-19T16:36:10.358840Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/nl/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/nl/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/nl/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/nl/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/nl/units/?format=api"
        },
        {
            "language": {
                "id": 229,
                "code": "oc",
                "name": "Occitan",
                "plural": {
                    "id": 229,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "oci"
                ],
                "direction": "ltr",
                "population": 2040397,
                "web_url": "https://weblate.framasoft.org/languages/oc/",
                "url": "https://weblate.framasoft.org/api/languages/oc/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/oc/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "oc",
            "id": 32,
            "filename": "src/i18n/oc.json",
            "revision": "56e2c7f792fd90ddea6ed362ccdc32ed2ebe3d44,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/oc/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/oc/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/oc/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/oc/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 905,
            "translated_words": 4741,
            "translated_percent": 54.5,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 9,
            "failing_checks_words": 17,
            "failing_checks_percent": 0.5,
            "have_suggestion": 40,
            "have_comment": 2,
            "last_change": "2024-04-10T12:38:11.453574Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/oc/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/oc/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/oc/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/oc/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/oc/units/?format=api"
        },
        {
            "language": {
                "id": 237,
                "code": "pl",
                "name": "Polish",
                "plural": {
                    "id": 237,
                    "source": 0,
                    "number": 3,
                    "formula": "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",
                    "type": 22
                },
                "aliases": [
                    "plk",
                    "pol"
                ],
                "direction": "ltr",
                "population": 41077398,
                "web_url": "https://weblate.framasoft.org/languages/pl/",
                "url": "https://weblate.framasoft.org/api/languages/pl/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/pl/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "pl",
            "id": 33,
            "filename": "src/i18n/pl.json",
            "revision": "d9af83748e68b32e5596f2b96acef09a7abba1cc,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/pl/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/pl/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/pl/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pl/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1612,
            "translated_words": 8792,
            "translated_percent": 97.2,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 1,
            "failing_checks_words": 3,
            "failing_checks_percent": 0.1,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-10T12:38:13.332236Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pl/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pl/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pl/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pl/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pl/units/?format=api"
        },
        {
            "language": {
                "id": 242,
                "code": "pt",
                "name": "Portuguese",
                "plural": {
                    "id": 242,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "por_pt",
                    "ptg",
                    "por"
                ],
                "direction": "ltr",
                "population": 237496883,
                "web_url": "https://weblate.framasoft.org/languages/pt/",
                "url": "https://weblate.framasoft.org/api/languages/pt/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/pt/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "pt",
            "id": 34,
            "filename": "src/i18n/pt.json",
            "revision": "9083bb1acb6e22e1b78b8515de8548281c30e2a4,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/pt/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/pt/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/pt/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pt/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 63,
            "translated_words": 306,
            "translated_percent": 3.7,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 38,
            "have_comment": 0,
            "last_change": "2024-04-10T12:38:15.189174Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pt/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pt/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pt/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pt/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/pt/units/?format=api"
        },
        {
            "language": {
                "id": 252,
                "code": "ru",
                "name": "Russian",
                "plural": {
                    "id": 252,
                    "source": 0,
                    "number": 3,
                    "formula": "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",
                    "type": 22
                },
                "aliases": [
                    "ru_r",
                    "ru_rr",
                    "rus"
                ],
                "direction": "ltr",
                "population": 195841151,
                "web_url": "https://weblate.framasoft.org/languages/ru/",
                "url": "https://weblate.framasoft.org/api/languages/ru/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/ru/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "ru",
            "id": 35,
            "filename": "src/i18n/ru.json",
            "revision": "4041b5aa039aa71517ecb4cb52c3a885f062a4ce,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/ru/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/ru/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/ru/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ru/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1194,
            "translated_words": 6303,
            "translated_percent": 72.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 7,
            "failing_checks_words": 15,
            "failing_checks_percent": 0.4,
            "have_suggestion": 10,
            "have_comment": 0,
            "last_change": "2024-04-10T12:38:18.772344Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ru/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ru/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ru/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ru/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/ru/units/?format=api"
        },
        {
            "language": {
                "id": 61,
                "code": "cs",
                "name": "Czech",
                "plural": {
                    "id": 61,
                    "source": 0,
                    "number": 3,
                    "formula": "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2",
                    "type": 22
                },
                "aliases": [
                    "cs_cs",
                    "cz",
                    "csy",
                    "ces",
                    "cze"
                ],
                "direction": "ltr",
                "population": 13045532,
                "web_url": "https://weblate.framasoft.org/languages/cs/",
                "url": "https://weblate.framasoft.org/api/languages/cs/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/cs/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "cs",
            "id": 36,
            "filename": "priv/gettext/cs/LC_MESSAGES/default.po",
            "revision": "ce02fdb3fd2337a4d5307fe1f8522362aaae40f6",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/cs/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/cs/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/cs/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/cs/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 348,
            "translated_words": 4105,
            "translated_percent": 97.2,
            "fuzzy": 5,
            "fuzzy_words": 85,
            "fuzzy_percent": 1.3,
            "failing_checks": 1,
            "failing_checks_words": 63,
            "failing_checks_percent": 0.2,
            "have_suggestion": 4,
            "have_comment": 0,
            "last_change": "2024-04-10T12:38:54.561757Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/cs/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/cs/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/cs/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/cs/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/cs/units/?format=api"
        },
        {
            "language": {
                "id": 67,
                "code": "de",
                "name": "German",
                "plural": {
                    "id": 67,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "deu_de",
                    "deu",
                    "ger"
                ],
                "direction": "ltr",
                "population": 136350226,
                "web_url": "https://weblate.framasoft.org/languages/de/",
                "url": "https://weblate.framasoft.org/api/languages/de/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/de/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "de",
            "id": 37,
            "filename": "priv/gettext/de/LC_MESSAGES/default.po",
            "revision": "2e632eba99631b56e09587211cb4ee9d82ea8ccb",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/de/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/de/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/de/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/de/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 348,
            "translated_words": 4105,
            "translated_percent": 97.2,
            "fuzzy": 5,
            "fuzzy_words": 85,
            "fuzzy_percent": 1.3,
            "failing_checks": 1,
            "failing_checks_words": 63,
            "failing_checks_percent": 0.2,
            "have_suggestion": 10,
            "have_comment": 2,
            "last_change": "2024-04-10T12:38:55.969264Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/de/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/de/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/de/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/de/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/de/units/?format=api"
        },
        {
            "language": {
                "id": 87,
                "code": "es",
                "name": "Spanish",
                "plural": {
                    "id": 87,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "es_la",
                    "esp",
                    "spa"
                ],
                "direction": "ltr",
                "population": 493528078,
                "web_url": "https://weblate.framasoft.org/languages/es/",
                "url": "https://weblate.framasoft.org/api/languages/es/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/es/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "es",
            "id": 38,
            "filename": "priv/gettext/es/LC_MESSAGES/default.po",
            "revision": "8aa5548f50d57c0e78b0cfc84faa759f590f87ef",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/es/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/es/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/es/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/es/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 358,
            "translated_words": 4225,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 3,
            "failing_checks_words": 29,
            "failing_checks_percent": 0.8,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-18T09:03:07.879677Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/es/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/es/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/es/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/es/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/es/units/?format=api"
        },
        {
            "language": {
                "id": 145,
                "code": "it",
                "name": "Italian",
                "plural": {
                    "id": 145,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "ita_it",
                    "ita"
                ],
                "direction": "ltr",
                "population": 70247059,
                "web_url": "https://weblate.framasoft.org/languages/it/",
                "url": "https://weblate.framasoft.org/api/languages/it/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/it/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "it",
            "id": 39,
            "filename": "priv/gettext/it/LC_MESSAGES/default.po",
            "revision": "46b62ae66ec32c3eeab58de6a68fdd2689fb7ba0",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/it/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/it/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/it/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/it/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4252,
            "translated": 350,
            "translated_words": 4149,
            "translated_percent": 97.7,
            "fuzzy": 3,
            "fuzzy_words": 68,
            "fuzzy_percent": 0.8,
            "failing_checks": 1,
            "failing_checks_words": 63,
            "failing_checks_percent": 0.2,
            "have_suggestion": 17,
            "have_comment": 2,
            "last_change": "2024-04-10T12:39:04.334166Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/it/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/it/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/it/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/it/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/it/units/?format=api"
        },
        {
            "language": {
                "id": 147,
                "code": "ja",
                "name": "Japanese",
                "plural": {
                    "id": 147,
                    "source": 0,
                    "number": 1,
                    "formula": "0",
                    "type": 0
                },
                "aliases": [
                    "jp",
                    "jp_jpn",
                    "ja_ja",
                    "jpn_jp",
                    "jpn"
                ],
                "direction": "ltr",
                "population": 119729025,
                "web_url": "https://weblate.framasoft.org/languages/ja/",
                "url": "https://weblate.framasoft.org/api/languages/ja/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/ja/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "ja",
            "id": 40,
            "filename": "priv/gettext/ja/LC_MESSAGES/default.po",
            "revision": "c5e0256bcffcade7363a1db26a126268b081fa1c",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/ja/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/ja/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/ja/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ja/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 99,
            "translated_words": 298,
            "translated_percent": 27.6,
            "fuzzy": 13,
            "fuzzy_words": 223,
            "fuzzy_percent": 3.6,
            "failing_checks": 6,
            "failing_checks_words": 107,
            "failing_checks_percent": 1.6,
            "have_suggestion": 12,
            "have_comment": 0,
            "last_change": "2024-04-10T12:39:04.712043Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ja/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ja/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ja/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ja/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ja/units/?format=api"
        },
        {
            "language": {
                "id": 219,
                "code": "nl",
                "name": "Dutch",
                "plural": {
                    "id": 219,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "dut",
                    "nld"
                ],
                "direction": "ltr",
                "population": 31765645,
                "web_url": "https://weblate.framasoft.org/languages/nl/",
                "url": "https://weblate.framasoft.org/api/languages/nl/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/nl/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "nl",
            "id": 41,
            "filename": "priv/gettext/nl/LC_MESSAGES/default.po",
            "revision": "73b08b60bd1fdcb18fab875f8f798cf30d78657d",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/nl/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/nl/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/nl/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/nl/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 116,
            "translated_words": 644,
            "translated_percent": 32.4,
            "fuzzy": 7,
            "fuzzy_words": 112,
            "fuzzy_percent": 1.9,
            "failing_checks": 2,
            "failing_checks_words": 72,
            "failing_checks_percent": 0.5,
            "have_suggestion": 9,
            "have_comment": 0,
            "last_change": "2024-04-10T12:39:07.385333Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/nl/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/nl/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/nl/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/nl/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/nl/units/?format=api"
        },
        {
            "language": {
                "id": 229,
                "code": "oc",
                "name": "Occitan",
                "plural": {
                    "id": 229,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "oci"
                ],
                "direction": "ltr",
                "population": 2040397,
                "web_url": "https://weblate.framasoft.org/languages/oc/",
                "url": "https://weblate.framasoft.org/api/languages/oc/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/oc/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "oc",
            "id": 42,
            "filename": "priv/gettext/oc/LC_MESSAGES/default.po",
            "revision": "410ebd30746c17b10b36f69d5a34e0aa21cccc1f",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/oc/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/oc/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/oc/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/oc/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 159,
            "translated_words": 1452,
            "translated_percent": 44.4,
            "fuzzy": 18,
            "fuzzy_words": 242,
            "fuzzy_percent": 5.0,
            "failing_checks": 16,
            "failing_checks_words": 137,
            "failing_checks_percent": 4.4,
            "have_suggestion": 24,
            "have_comment": 1,
            "last_change": "2024-04-10T12:39:08.421473Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/oc/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/oc/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/oc/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/oc/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/oc/units/?format=api"
        },
        {
            "language": {
                "id": 237,
                "code": "pl",
                "name": "Polish",
                "plural": {
                    "id": 237,
                    "source": 0,
                    "number": 3,
                    "formula": "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",
                    "type": 22
                },
                "aliases": [
                    "plk",
                    "pol"
                ],
                "direction": "ltr",
                "population": 41077398,
                "web_url": "https://weblate.framasoft.org/languages/pl/",
                "url": "https://weblate.framasoft.org/api/languages/pl/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/pl/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "pl",
            "id": 43,
            "filename": "priv/gettext/pl/LC_MESSAGES/default.po",
            "revision": "e44df87a69093c53df7eacf8ed46269c6c2915d0",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/pl/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/pl/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/pl/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pl/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4263,
            "translated": 352,
            "translated_words": 4165,
            "translated_percent": 98.3,
            "fuzzy": 1,
            "fuzzy_words": 63,
            "fuzzy_percent": 0.2,
            "failing_checks": 1,
            "failing_checks_words": 63,
            "failing_checks_percent": 0.2,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-10T12:39:08.741791Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pl/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pl/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pl/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pl/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pl/units/?format=api"
        },
        {
            "language": {
                "id": 242,
                "code": "pt",
                "name": "Portuguese",
                "plural": {
                    "id": 242,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "por_pt",
                    "ptg",
                    "por"
                ],
                "direction": "ltr",
                "population": 237496883,
                "web_url": "https://weblate.framasoft.org/languages/pt/",
                "url": "https://weblate.framasoft.org/api/languages/pt/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/pt/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "pt",
            "id": 44,
            "filename": "priv/gettext/pt/LC_MESSAGES/default.po",
            "revision": "e038ad6ecda9ece2172cd231ccff20e6db443bac",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/pt/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/pt/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/pt/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pt/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 0,
            "translated_words": 0,
            "translated_percent": 0.0,
            "fuzzy": 18,
            "fuzzy_words": 242,
            "fuzzy_percent": 5.0,
            "failing_checks": 3,
            "failing_checks_words": 88,
            "failing_checks_percent": 0.8,
            "have_suggestion": 230,
            "have_comment": 0,
            "last_change": "2024-04-10T12:39:09.143744Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pt/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pt/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pt/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pt/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/pt/units/?format=api"
        },
        {
            "language": {
                "id": 252,
                "code": "ru",
                "name": "Russian",
                "plural": {
                    "id": 252,
                    "source": 0,
                    "number": 3,
                    "formula": "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",
                    "type": 22
                },
                "aliases": [
                    "ru_r",
                    "ru_rr",
                    "rus"
                ],
                "direction": "ltr",
                "population": 195841151,
                "web_url": "https://weblate.framasoft.org/languages/ru/",
                "url": "https://weblate.framasoft.org/api/languages/ru/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/ru/statistics/?format=api"
            },
            "component": {
                "name": "Backend",
                "slug": "backend",
                "id": 4,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "",
                "branch": "main",
                "push_branch": "",
                "filemask": "priv/gettext/*/LC_MESSAGES/default.po",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "priv/gettext/default.pot",
                "file_format": "po",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/backend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/backend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/9/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api"
            },
            "language_code": "ru",
            "id": 45,
            "filename": "priv/gettext/ru/LC_MESSAGES/default.po",
            "revision": "648b028910ea289be1a8153a2742639840655ca6",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/backend/ru/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/ru/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/backend/ru/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ru/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 358,
            "total_words": 4225,
            "translated": 284,
            "translated_words": 3655,
            "translated_percent": 79.3,
            "fuzzy": 16,
            "fuzzy_words": 206,
            "fuzzy_percent": 4.4,
            "failing_checks": 4,
            "failing_checks_words": 80,
            "failing_checks_percent": 1.1,
            "have_suggestion": 12,
            "have_comment": 0,
            "last_change": "2024-04-10T12:39:10.599162Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ru/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ru/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ru/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ru/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/backend/ru/units/?format=api"
        },
        {
            "language": {
                "id": 291,
                "code": "sv",
                "name": "Swedish",
                "plural": {
                    "id": 291,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "swe_se",
                    "sve",
                    "swe"
                ],
                "direction": "ltr",
                "population": 12932871,
                "web_url": "https://weblate.framasoft.org/languages/sv/",
                "url": "https://weblate.framasoft.org/api/languages/sv/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/sv/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "sv",
            "id": 46,
            "filename": "src/i18n/sv.json",
            "revision": "c335eaea65d8f26397923b0edbca7db4c6ea7dee,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/sv/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/sv/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/sv/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/sv/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1623,
            "translated_words": 8911,
            "translated_percent": 97.8,
            "fuzzy": 16,
            "fuzzy_words": 92,
            "fuzzy_percent": 0.9,
            "failing_checks": 5,
            "failing_checks_words": 12,
            "failing_checks_percent": 0.3,
            "have_suggestion": 68,
            "have_comment": 1,
            "last_change": "2024-04-10T12:38:22.523422Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/sv/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/sv/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/sv/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/sv/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/sv/units/?format=api"
        },
        {
            "language": {
                "id": 351,
                "code": "fr_FR",
                "name": "French (France)",
                "plural": {
                    "id": 370,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [],
                "direction": "ltr",
                "population": 0,
                "web_url": "https://weblate.framasoft.org/languages/fr_FR/",
                "url": "https://weblate.framasoft.org/api/languages/fr_FR/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/fr_FR/statistics/?format=api"
            },
            "component": {
                "name": "Frontend",
                "slug": "frontend",
                "id": 3,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Mobilizon",
                    "slug": "mobilizon",
                    "id": 2,
                    "web": "https://joinmobilizon.org/",
                    "web_url": "https://weblate.framasoft.org/projects/mobilizon/",
                    "url": "https://weblate.framasoft.org/api/projects/mobilizon/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/mobilizon/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/mobilizon/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/mobilizon/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/mobilizon/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/mobilizon/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/mobilizon/labels/?format=api",
                    "translation_review": true,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "### Guidelines\r\n\r\n* When in doubt, use the suggestion feature instead of changing the translation directly\r\n* Post a comment to discuss about translations\r\n* Feel free to ask clarification and context on a string\r\n\r\n### Components\r\n\r\nMobilizon has several modules that need to be translated:\r\n\r\n* Frontend: mostly what you see in the web app in your browser\r\n* Activity: every group activity log, that can be sent in emails\r\n* Backend errors: errors returned by the backend (for instance if the event lacks a title)\r\n* Backend: the rest of emails, server-side default configuration, push notifications, …\r\n* Search index: the global search engine\r\n\r\nThe Android app and Android app metadata components are not maintained.\r\n\r\n### Formating\r\n\r\nFrontend (frontend + search index components) and backend (everything else) parts use different formats to hold translations so you may encounter different ways to format strings when translating:\r\n\r\n* Frontend uses the [Vue-I18N](https://vue-i18n.intlify.dev/) library\r\n  * Formatting is based on the ICU Message Format syntax, with placeholders like this: `{interpolation}`. **You must never translate what's between the brackets**.\r\n  * It handles pluralization manually by separating versions with pipes : https://vue-i18n.intlify.dev/guide/essentials/pluralization.html\r\n  * Pluralization rules are included for the majority of languages but some may need to be added manually ([example for Scottish Gaelic](https://framagit.org/framasoft/mobilizon/-/blob/main/js/src/i18n/pluralRules/gd.ts)).\r\n  * Special characters sometimes have to be escaped. For instance: `{'@'}{username}` would give, after interpolation : `@thomas`. See https://vue-i18n.intlify.dev/guide/essentials/syntax.html#special-characters\r\n\r\n* Backend uses the classic Gettext library and Weblate should support this format much better\r\n  * Placeholders look like this: `This is user %{username}`.",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "git@framagit.org:framasoft/mobilizon.git",
                "git_export": "https://weblate.framasoft.org/git/mobilizon/frontend/",
                "branch": "main",
                "push_branch": "",
                "filemask": "src/i18n/*.json",
                "screenshot_filemask": "",
                "template": "src/i18n/en_US.json",
                "edit_template": false,
                "intermediate": "",
                "new_base": "",
                "file_format": "json",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/",
                "url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/mobilizon/frontend/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "git@framagit.org:framasoft/mobilizon.git",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^(?!(en)|(langs)$).+$",
                "variant_regex": "",
                "addons": [
                    "https://weblate.framasoft.org/api/addons/10/?format=api",
                    "https://weblate.framasoft.org/api/addons/2/?format=api",
                    "https://weblate.framasoft.org/api/addons/11/?format=api"
                ],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "fr_FR",
            "id": 70,
            "filename": "src/i18n/fr_FR.json",
            "revision": "5ad78b06b445267476cba4d8cdb6152fec481394,066ac2382ebe53e0d2be98562accb149e4950f58",
            "web_url": "https://weblate.framasoft.org/projects/mobilizon/frontend/fr_FR/",
            "share_url": "https://weblate.framasoft.org/engage/mobilizon/-/fr_FR/",
            "translate_url": "https://weblate.framasoft.org/translate/mobilizon/frontend/fr_FR/",
            "url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/fr_FR/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 1658,
            "total_words": 9072,
            "translated": 1652,
            "translated_words": 9053,
            "translated_percent": 99.6,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 31,
            "failing_checks_words": 363,
            "failing_checks_percent": 1.8,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-15T05:20:08.116537Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/fr_FR/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/fr_FR/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/fr_FR/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/fr_FR/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/mobilizon/frontend/fr_FR/units/?format=api"
        },
        {
            "language": {
                "id": 84,
                "code": "en_US",
                "name": "English (United States)",
                "plural": {
                    "id": 84,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "us",
                    "enu"
                ],
                "direction": "ltr",
                "population": 319333440,
                "web_url": "https://weblate.framasoft.org/languages/en_US/",
                "url": "https://weblate.framasoft.org/api/languages/en_US/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/en_US/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "en-US",
            "id": 156,
            "filename": "client/src/locale/angular.en-US.xlf",
            "revision": "bc62f1a7b9ba6e5293758c59b8a243af68fbec8f",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/en_US/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/en_US/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/en_US/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_US/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 2367,
            "translated_words": 14771,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-24T12:57:43.569500Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_US/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_US/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_US/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_US/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_US/units/?format=api"
        },
        {
            "language": {
                "id": 351,
                "code": "fr_FR",
                "name": "French (France)",
                "plural": {
                    "id": 370,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [],
                "direction": "ltr",
                "population": 0,
                "web_url": "https://weblate.framasoft.org/languages/fr_FR/",
                "url": "https://weblate.framasoft.org/api/languages/fr_FR/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/fr_FR/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "fr-FR",
            "id": 157,
            "filename": "client/src/locale/angular.fr-FR.xlf",
            "revision": "dcf34ba7f80f38fbeaf8d809952bc6fa7e6a4a55",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/fr_FR/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/fr_FR/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/fr_FR/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/fr_FR/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 2224,
            "translated_words": 13656,
            "translated_percent": 93.9,
            "fuzzy": 143,
            "fuzzy_words": 1115,
            "fuzzy_percent": 6.0,
            "failing_checks": 90,
            "failing_checks_words": 979,
            "failing_checks_percent": 3.8,
            "have_suggestion": 10,
            "have_comment": 0,
            "last_change": "2024-04-25T08:55:14.608275Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/fr_FR/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/fr_FR/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/fr_FR/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/fr_FR/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/fr_FR/units/?format=api"
        },
        {
            "language": {
                "id": 76,
                "code": "en",
                "name": "English",
                "plural": {
                    "id": 76,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "en_en",
                    "base",
                    "source",
                    "enp",
                    "eng"
                ],
                "direction": "ltr",
                "population": 1636485517,
                "web_url": "https://weblate.framasoft.org/languages/en/",
                "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
            },
            "component": {
                "name": "Main",
                "slug": "main",
                "id": 28,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framasoft",
                    "slug": "framasoft",
                    "id": 12,
                    "web": "https://framasoft.org",
                    "web_url": "https://weblate.framasoft.org/projects/framasoft/",
                    "url": "https://weblate.framasoft.org/api/projects/framasoft/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framasoft/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framasoft/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framasoft/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framasoft/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framasoft/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framasoft/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framasoft/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/accueil.git",
                "git_export": "https://weblate.framasoft.org/git/framasoft/main/",
                "branch": "master",
                "push_branch": "",
                "filemask": "src/translations/*/main.yml",
                "screenshot_filemask": "",
                "template": "src/translations/en/main.yml",
                "edit_template": true,
                "intermediate": "",
                "new_base": "",
                "file_format": "yaml",
                "license": "CC-BY-SA-4.0",
                "license_url": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framasoft/main/",
                "url": "https://weblate.framasoft.org/api/components/framasoft/main/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framasoft/main/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framasoft/main/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framasoft/main/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framasoft/main/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framasoft/main/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framasoft/main/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "en",
            "id": 184,
            "filename": "src/translations/en/main.yml",
            "revision": "28fa136b83a82f7f1a7ed3a47c6db92c817072ff,28fa136b83a82f7f1a7ed3a47c6db92c817072ff",
            "web_url": "https://weblate.framasoft.org/projects/framasoft/main/en/",
            "share_url": "https://weblate.framasoft.org/engage/framasoft/-/en/",
            "translate_url": "https://weblate.framasoft.org/translate/framasoft/main/en/",
            "url": "https://weblate.framasoft.org/api/translations/framasoft/main/en/?format=api",
            "is_template": true,
            "is_source": true,
            "total": 23,
            "total_words": 95,
            "translated": 23,
            "translated_words": 95,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2023-06-12T07:30:42.330368Z",
            "last_author": "Framasoft",
            "repository_url": "https://weblate.framasoft.org/api/translations/framasoft/main/en/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framasoft/main/en/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framasoft/main/en/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framasoft/main/en/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framasoft/main/en/units/?format=api"
        },
        {
            "language": {
                "id": 106,
                "code": "fr",
                "name": "French",
                "plural": {
                    "id": 106,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "fra_fr",
                    "fra",
                    "fre"
                ],
                "direction": "ltr",
                "population": 278611506,
                "web_url": "https://weblate.framasoft.org/languages/fr/",
                "url": "https://weblate.framasoft.org/api/languages/fr/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/fr/statistics/?format=api"
            },
            "component": {
                "name": "Main",
                "slug": "main",
                "id": 28,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framasoft",
                    "slug": "framasoft",
                    "id": 12,
                    "web": "https://framasoft.org",
                    "web_url": "https://weblate.framasoft.org/projects/framasoft/",
                    "url": "https://weblate.framasoft.org/api/projects/framasoft/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framasoft/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framasoft/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framasoft/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framasoft/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framasoft/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framasoft/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framasoft/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/accueil.git",
                "git_export": "https://weblate.framasoft.org/git/framasoft/main/",
                "branch": "master",
                "push_branch": "",
                "filemask": "src/translations/*/main.yml",
                "screenshot_filemask": "",
                "template": "src/translations/en/main.yml",
                "edit_template": true,
                "intermediate": "",
                "new_base": "",
                "file_format": "yaml",
                "license": "CC-BY-SA-4.0",
                "license_url": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framasoft/main/",
                "url": "https://weblate.framasoft.org/api/components/framasoft/main/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framasoft/main/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framasoft/main/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framasoft/main/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framasoft/main/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framasoft/main/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framasoft/main/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "fr",
            "id": 185,
            "filename": "src/translations/fr/main.yml",
            "revision": "dd1804d46350566ed9e9e6ce194fb326285ddb17,28fa136b83a82f7f1a7ed3a47c6db92c817072ff",
            "web_url": "https://weblate.framasoft.org/projects/framasoft/main/fr/",
            "share_url": "https://weblate.framasoft.org/engage/framasoft/-/fr/",
            "translate_url": "https://weblate.framasoft.org/translate/framasoft/main/fr/",
            "url": "https://weblate.framasoft.org/api/translations/framasoft/main/fr/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 23,
            "total_words": 95,
            "translated": 23,
            "translated_words": 95,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 1,
            "failing_checks_words": 1,
            "failing_checks_percent": 4.3,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2023-06-21T16:56:37.867753Z",
            "last_author": "Yvan Pellegrini",
            "repository_url": "https://weblate.framasoft.org/api/translations/framasoft/main/fr/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framasoft/main/fr/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framasoft/main/fr/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framasoft/main/fr/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framasoft/main/fr/units/?format=api"
        },
        {
            "language": {
                "id": 145,
                "code": "it",
                "name": "Italian",
                "plural": {
                    "id": 145,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "ita_it",
                    "ita"
                ],
                "direction": "ltr",
                "population": 70247059,
                "web_url": "https://weblate.framasoft.org/languages/it/",
                "url": "https://weblate.framasoft.org/api/languages/it/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/it/statistics/?format=api"
            },
            "component": {
                "name": "Main",
                "slug": "main",
                "id": 28,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framasoft",
                    "slug": "framasoft",
                    "id": 12,
                    "web": "https://framasoft.org",
                    "web_url": "https://weblate.framasoft.org/projects/framasoft/",
                    "url": "https://weblate.framasoft.org/api/projects/framasoft/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framasoft/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framasoft/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framasoft/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framasoft/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framasoft/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framasoft/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framasoft/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "gitlab",
                "repo": "https://framagit.org/framasoft/accueil.git",
                "git_export": "https://weblate.framasoft.org/git/framasoft/main/",
                "branch": "master",
                "push_branch": "",
                "filemask": "src/translations/*/main.yml",
                "screenshot_filemask": "",
                "template": "src/translations/en/main.yml",
                "edit_template": true,
                "intermediate": "",
                "new_base": "",
                "file_format": "yaml",
                "license": "CC-BY-SA-4.0",
                "license_url": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framasoft/main/",
                "url": "https://weblate.framasoft.org/api/components/framasoft/main/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framasoft/main/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framasoft/main/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framasoft/main/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framasoft/main/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framasoft/main/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framasoft/main/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "it",
            "id": 186,
            "filename": "src/translations/it/main.yml",
            "revision": "bc156817d6767108224ff6ce9d04a0ec0dbadbee,28fa136b83a82f7f1a7ed3a47c6db92c817072ff",
            "web_url": "https://weblate.framasoft.org/projects/framasoft/main/it/",
            "share_url": "https://weblate.framasoft.org/engage/framasoft/-/it/",
            "translate_url": "https://weblate.framasoft.org/translate/framasoft/main/it/",
            "url": "https://weblate.framasoft.org/api/translations/framasoft/main/it/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 23,
            "total_words": 95,
            "translated": 23,
            "translated_words": 95,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 0,
            "failing_checks_words": 0,
            "failing_checks_percent": 0.0,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2023-10-15T08:42:54.227596Z",
            "last_author": "coronabond",
            "repository_url": "https://weblate.framasoft.org/api/translations/framasoft/main/it/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framasoft/main/it/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framasoft/main/it/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framasoft/main/it/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framasoft/main/it/units/?format=api"
        },
        {
            "language": {
                "id": 76,
                "code": "en",
                "name": "English",
                "plural": {
                    "id": 76,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "en_en",
                    "base",
                    "source",
                    "enp",
                    "eng"
                ],
                "direction": "ltr",
                "population": 1636485517,
                "web_url": "https://weblate.framasoft.org/languages/en/",
                "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
            },
            "component": {
                "name": "Home",
                "slug": "home",
                "id": 29,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framasoft",
                    "slug": "framasoft",
                    "id": 12,
                    "web": "https://framasoft.org",
                    "web_url": "https://weblate.framasoft.org/projects/framasoft/",
                    "url": "https://weblate.framasoft.org/api/projects/framasoft/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framasoft/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framasoft/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framasoft/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framasoft/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framasoft/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framasoft/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framasoft/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://framagit.org/framasoft/accueil.git",
                "git_export": "",
                "branch": "master",
                "push_branch": "",
                "filemask": "src/translations/*/home.yml",
                "screenshot_filemask": "",
                "template": "src/translations/en/home.yml",
                "edit_template": true,
                "intermediate": "",
                "new_base": "",
                "file_format": "yaml",
                "license": "CC-BY-SA-4.0",
                "license_url": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framasoft/home/",
                "url": "https://weblate.framasoft.org/api/components/framasoft/home/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framasoft/home/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framasoft/home/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framasoft/home/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framasoft/home/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framasoft/home/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framasoft/home/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/framasoft/main/?format=api"
            },
            "language_code": "en",
            "id": 187,
            "filename": "src/translations/en/home.yml",
            "revision": "a3f299b72f18df1a4e5da0fcf73fe1b3c72d14d4,a3f299b72f18df1a4e5da0fcf73fe1b3c72d14d4",
            "web_url": "https://weblate.framasoft.org/projects/framasoft/home/en/",
            "share_url": "https://weblate.framasoft.org/engage/framasoft/-/en/",
            "translate_url": "https://weblate.framasoft.org/translate/framasoft/home/en/",
            "url": "https://weblate.framasoft.org/api/translations/framasoft/home/en/?format=api",
            "is_template": true,
            "is_source": true,
            "total": 54,
            "total_words": 669,
            "translated": 54,
            "translated_words": 669,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 12,
            "failing_checks_words": 426,
            "failing_checks_percent": 22.2,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": null,
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/framasoft/home/en/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framasoft/home/en/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framasoft/home/en/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framasoft/home/en/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framasoft/home/en/units/?format=api"
        },
        {
            "language": {
                "id": 106,
                "code": "fr",
                "name": "French",
                "plural": {
                    "id": 106,
                    "source": 0,
                    "number": 2,
                    "formula": "n > 1",
                    "type": 1
                },
                "aliases": [
                    "fra_fr",
                    "fra",
                    "fre"
                ],
                "direction": "ltr",
                "population": 278611506,
                "web_url": "https://weblate.framasoft.org/languages/fr/",
                "url": "https://weblate.framasoft.org/api/languages/fr/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/fr/statistics/?format=api"
            },
            "component": {
                "name": "Home",
                "slug": "home",
                "id": 29,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framasoft",
                    "slug": "framasoft",
                    "id": 12,
                    "web": "https://framasoft.org",
                    "web_url": "https://weblate.framasoft.org/projects/framasoft/",
                    "url": "https://weblate.framasoft.org/api/projects/framasoft/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framasoft/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framasoft/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framasoft/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framasoft/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framasoft/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framasoft/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framasoft/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://framagit.org/framasoft/accueil.git",
                "git_export": "",
                "branch": "master",
                "push_branch": "",
                "filemask": "src/translations/*/home.yml",
                "screenshot_filemask": "",
                "template": "src/translations/en/home.yml",
                "edit_template": true,
                "intermediate": "",
                "new_base": "",
                "file_format": "yaml",
                "license": "CC-BY-SA-4.0",
                "license_url": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framasoft/home/",
                "url": "https://weblate.framasoft.org/api/components/framasoft/home/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framasoft/home/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framasoft/home/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framasoft/home/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framasoft/home/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framasoft/home/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framasoft/home/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/framasoft/main/?format=api"
            },
            "language_code": "fr",
            "id": 188,
            "filename": "src/translations/fr/home.yml",
            "revision": "be75de636b0657eacb408182ac83431aea240159,a3f299b72f18df1a4e5da0fcf73fe1b3c72d14d4",
            "web_url": "https://weblate.framasoft.org/projects/framasoft/home/fr/",
            "share_url": "https://weblate.framasoft.org/engage/framasoft/-/fr/",
            "translate_url": "https://weblate.framasoft.org/translate/framasoft/home/fr/",
            "url": "https://weblate.framasoft.org/api/translations/framasoft/home/fr/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 54,
            "total_words": 669,
            "translated": 54,
            "translated_words": 669,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 4,
            "failing_checks_words": 105,
            "failing_checks_percent": 7.4,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2023-03-09T10:57:02.375405Z",
            "last_author": "lost_geographer",
            "repository_url": "https://weblate.framasoft.org/api/translations/framasoft/home/fr/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framasoft/home/fr/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framasoft/home/fr/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framasoft/home/fr/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framasoft/home/fr/units/?format=api"
        },
        {
            "language": {
                "id": 145,
                "code": "it",
                "name": "Italian",
                "plural": {
                    "id": 145,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "ita_it",
                    "ita"
                ],
                "direction": "ltr",
                "population": 70247059,
                "web_url": "https://weblate.framasoft.org/languages/it/",
                "url": "https://weblate.framasoft.org/api/languages/it/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/it/statistics/?format=api"
            },
            "component": {
                "name": "Home",
                "slug": "home",
                "id": 29,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "Framasoft",
                    "slug": "framasoft",
                    "id": 12,
                    "web": "https://framasoft.org",
                    "web_url": "https://weblate.framasoft.org/projects/framasoft/",
                    "url": "https://weblate.framasoft.org/api/projects/framasoft/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/framasoft/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/framasoft/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/framasoft/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/framasoft/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/framasoft/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/framasoft/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/framasoft/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://framagit.org/framasoft/accueil.git",
                "git_export": "",
                "branch": "master",
                "push_branch": "",
                "filemask": "src/translations/*/home.yml",
                "screenshot_filemask": "",
                "template": "src/translations/en/home.yml",
                "edit_template": true,
                "intermediate": "",
                "new_base": "",
                "file_format": "yaml",
                "license": "CC-BY-SA-4.0",
                "license_url": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/framasoft/home/",
                "url": "https://weblate.framasoft.org/api/components/framasoft/home/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/framasoft/home/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/framasoft/home/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/framasoft/home/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/framasoft/home/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/framasoft/home/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/framasoft/home/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\n\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\n\n{% if component_linked_childs %}\nIt also includes following components:\n{% for linked in component_linked_childs %}\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n{% endfor %}\n{% endif %}\n\nCurrent translation status:\n\n![Weblate translation status]({{widget_url}})\n",
                "allow_translation_propagation": true,
                "manage_units": true,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": "https://weblate.framasoft.org/api/components/framasoft/main/?format=api"
            },
            "language_code": "it",
            "id": 189,
            "filename": "src/translations/it/home.yml",
            "revision": "137933cd8feb66bcc0316e1ad1c099f147f767eb,a3f299b72f18df1a4e5da0fcf73fe1b3c72d14d4",
            "web_url": "https://weblate.framasoft.org/projects/framasoft/home/it/",
            "share_url": "https://weblate.framasoft.org/engage/framasoft/-/it/",
            "translate_url": "https://weblate.framasoft.org/translate/framasoft/home/it/",
            "url": "https://weblate.framasoft.org/api/translations/framasoft/home/it/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 54,
            "total_words": 669,
            "translated": 54,
            "translated_words": 669,
            "translated_percent": 100.0,
            "fuzzy": 0,
            "fuzzy_words": 0,
            "fuzzy_percent": 0.0,
            "failing_checks": 4,
            "failing_checks_words": 10,
            "failing_checks_percent": 7.4,
            "have_suggestion": 0,
            "have_comment": 7,
            "last_change": "2023-01-24T23:02:00.991416Z",
            "last_author": "Paolo Mauri",
            "repository_url": "https://weblate.framasoft.org/api/translations/framasoft/home/it/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/framasoft/home/it/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/framasoft/home/it/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/framasoft/home/it/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/framasoft/home/it/units/?format=api"
        },
        {
            "language": {
                "id": 49,
                "code": "ca",
                "name": "Catalan",
                "plural": {
                    "id": 49,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "ca_ps",
                    "ca_ca",
                    "cat"
                ],
                "direction": "ltr",
                "population": 8679138,
                "web_url": "https://weblate.framasoft.org/languages/ca/",
                "url": "https://weblate.framasoft.org/api/languages/ca/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/ca/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "ca-ES",
            "id": 191,
            "filename": "client/src/locale/angular.ca-ES.xlf",
            "revision": "ab6774f22e3fb3e23a180e26931dff52c5213397",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/ca/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/ca/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/ca/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/ca/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 587,
            "translated_words": 2774,
            "translated_percent": 24.7,
            "fuzzy": 1780,
            "fuzzy_words": 11997,
            "fuzzy_percent": 75.2,
            "failing_checks": 1573,
            "failing_checks_words": 11760,
            "failing_checks_percent": 66.4,
            "have_suggestion": 11,
            "have_comment": 0,
            "last_change": "2024-04-24T12:57:33.927601Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/ca/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/ca/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/ca/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/ca/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/ca/units/?format=api"
        },
        {
            "language": {
                "id": 61,
                "code": "cs",
                "name": "Czech",
                "plural": {
                    "id": 61,
                    "source": 0,
                    "number": 3,
                    "formula": "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2",
                    "type": 22
                },
                "aliases": [
                    "cs_cs",
                    "cz",
                    "csy",
                    "ces",
                    "cze"
                ],
                "direction": "ltr",
                "population": 13045532,
                "web_url": "https://weblate.framasoft.org/languages/cs/",
                "url": "https://weblate.framasoft.org/api/languages/cs/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/cs/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "cs-CZ",
            "id": 192,
            "filename": "client/src/locale/angular.cs-CZ.xlf",
            "revision": "ed0c624e72ba5f4aa00762b5a5ed6cf94a47084e",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/cs/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/cs/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/cs/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/cs/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 2217,
            "translated_words": 13461,
            "translated_percent": 93.6,
            "fuzzy": 150,
            "fuzzy_words": 1310,
            "fuzzy_percent": 6.3,
            "failing_checks": 127,
            "failing_checks_words": 1244,
            "failing_checks_percent": 5.3,
            "have_suggestion": 2,
            "have_comment": 0,
            "last_change": "2024-04-24T12:57:35.101190Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/cs/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/cs/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/cs/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/cs/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/cs/units/?format=api"
        },
        {
            "language": {
                "id": 66,
                "code": "da",
                "name": "Danish",
                "plural": {
                    "id": 66,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "da_da",
                    "dk",
                    "dan"
                ],
                "direction": "ltr",
                "population": 7072056,
                "web_url": "https://weblate.framasoft.org/languages/da/",
                "url": "https://weblate.framasoft.org/api/languages/da/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/da/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "da-DK",
            "id": 193,
            "filename": "client/src/locale/angular.da-DK.xlf",
            "revision": "5d824d014b288e80fa8e8cd8039575242667eb63",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/da/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/da/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/da/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/da/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 102,
            "translated_words": 385,
            "translated_percent": 4.3,
            "fuzzy": 2265,
            "fuzzy_words": 14386,
            "fuzzy_percent": 95.6,
            "failing_checks": 1942,
            "failing_checks_words": 13742,
            "failing_checks_percent": 82.0,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-24T12:57:36.322599Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/da/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/da/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/da/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/da/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/da/units/?format=api"
        },
        {
            "language": {
                "id": 67,
                "code": "de",
                "name": "German",
                "plural": {
                    "id": 67,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "deu_de",
                    "deu",
                    "ger"
                ],
                "direction": "ltr",
                "population": 136350226,
                "web_url": "https://weblate.framasoft.org/languages/de/",
                "url": "https://weblate.framasoft.org/api/languages/de/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/de/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "de-DE",
            "id": 194,
            "filename": "client/src/locale/angular.de-DE.xlf",
            "revision": "f79aeaf4e7ca47d67907ea751d87a5c4e76fd07e",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/de/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/de/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/de/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/de/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 2319,
            "translated_words": 14135,
            "translated_percent": 97.9,
            "fuzzy": 43,
            "fuzzy_words": 585,
            "fuzzy_percent": 1.8,
            "failing_checks": 44,
            "failing_checks_words": 614,
            "failing_checks_percent": 1.8,
            "have_suggestion": 29,
            "have_comment": 1,
            "last_change": "2024-04-24T12:57:37.490418Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/de/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/de/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/de/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/de/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/de/units/?format=api"
        },
        {
            "language": {
                "id": 75,
                "code": "el",
                "name": "Greek",
                "plural": {
                    "id": 75,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "gr",
                    "ell",
                    "gre"
                ],
                "direction": "ltr",
                "population": 12292240,
                "web_url": "https://weblate.framasoft.org/languages/el/",
                "url": "https://weblate.framasoft.org/api/languages/el/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/el/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "el-GR",
            "id": 195,
            "filename": "client/src/locale/angular.el-GR.xlf",
            "revision": "301e5c01a6a92ed1b6bd544a841ed5e0209f6071",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/el/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/el/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/el/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/el/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 1002,
            "translated_words": 3588,
            "translated_percent": 42.3,
            "fuzzy": 1365,
            "fuzzy_words": 11183,
            "fuzzy_percent": 57.6,
            "failing_checks": 1287,
            "failing_checks_words": 11213,
            "failing_checks_percent": 54.3,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-24T12:57:38.852497Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/el/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/el/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/el/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/el/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/el/units/?format=api"
        },
        {
            "language": {
                "id": 79,
                "code": "en_GB",
                "name": "English (United Kingdom)",
                "plural": {
                    "id": 79,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "english_uk",
                    "eng_gb"
                ],
                "direction": "ltr",
                "population": 64445878,
                "web_url": "https://weblate.framasoft.org/languages/en_GB/",
                "url": "https://weblate.framasoft.org/api/languages/en_GB/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/en_GB/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "en-GB",
            "id": 196,
            "filename": "client/src/locale/angular.en-GB.xlf",
            "revision": "161dd21cde0d6d9bd26f026cafac179ae3e27e49",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/en_GB/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/en_GB/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/en_GB/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_GB/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 448,
            "translated_words": 1673,
            "translated_percent": 18.9,
            "fuzzy": 1919,
            "fuzzy_words": 13098,
            "fuzzy_percent": 81.0,
            "failing_checks": 103,
            "failing_checks_words": 965,
            "failing_checks_percent": 4.3,
            "have_suggestion": 0,
            "have_comment": 0,
            "last_change": "2024-04-24T12:57:40.137651Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_GB/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_GB/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_GB/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_GB/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/en_GB/units/?format=api"
        },
        {
            "language": {
                "id": 86,
                "code": "eo",
                "name": "Esperanto",
                "plural": {
                    "id": 86,
                    "source": 0,
                    "number": 2,
                    "formula": "n != 1",
                    "type": 1
                },
                "aliases": [
                    "epo"
                ],
                "direction": "ltr",
                "population": 301,
                "web_url": "https://weblate.framasoft.org/languages/eo/",
                "url": "https://weblate.framasoft.org/api/languages/eo/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/languages/eo/statistics/?format=api"
            },
            "component": {
                "name": "angular",
                "slug": "angular",
                "id": 19,
                "source_language": {
                    "id": 76,
                    "code": "en",
                    "name": "English",
                    "plural": {
                        "id": 76,
                        "source": 0,
                        "number": 2,
                        "formula": "n != 1",
                        "type": 1
                    },
                    "aliases": [
                        "en_en",
                        "base",
                        "source",
                        "enp",
                        "eng"
                    ],
                    "direction": "ltr",
                    "population": 1636485517,
                    "web_url": "https://weblate.framasoft.org/languages/en/",
                    "url": "https://weblate.framasoft.org/api/languages/en/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/languages/en/statistics/?format=api"
                },
                "project": {
                    "name": "PeerTube",
                    "slug": "peertube",
                    "id": 10,
                    "web": "https://github.com/Chocobozzz/PeerTube",
                    "web_url": "https://weblate.framasoft.org/projects/peertube/",
                    "url": "https://weblate.framasoft.org/api/projects/peertube/?format=api",
                    "components_list_url": "https://weblate.framasoft.org/api/projects/peertube/components/?format=api",
                    "repository_url": "https://weblate.framasoft.org/api/projects/peertube/repository/?format=api",
                    "statistics_url": "https://weblate.framasoft.org/api/projects/peertube/statistics/?format=api",
                    "categories_url": "https://weblate.framasoft.org/api/projects/peertube/categories/?format=api",
                    "changes_list_url": "https://weblate.framasoft.org/api/projects/peertube/changes/?format=api",
                    "languages_url": "https://weblate.framasoft.org/api/projects/peertube/languages/?format=api",
                    "labels_url": "https://weblate.framasoft.org/api/projects/peertube/labels/?format=api",
                    "translation_review": false,
                    "source_review": false,
                    "set_language_team": true,
                    "instructions": "",
                    "enable_hooks": true,
                    "language_aliases": ""
                },
                "vcs": "git",
                "repo": "https://github.com/Chocobozzz/PeerTube.git",
                "git_export": "https://weblate.framasoft.org/git/peertube/angular/",
                "branch": "develop",
                "push_branch": "",
                "filemask": "client/src/locale/angular.*.xlf",
                "screenshot_filemask": "",
                "template": "",
                "edit_template": false,
                "intermediate": "",
                "new_base": "client/src/locale/angular.xlf",
                "file_format": "xliff",
                "license": "AGPL-3.0-only",
                "license_url": "https://spdx.org/licenses/AGPL-3.0-only.html",
                "agreement": "",
                "web_url": "https://weblate.framasoft.org/projects/peertube/angular/",
                "url": "https://weblate.framasoft.org/api/components/peertube/angular/?format=api",
                "repository_url": "https://weblate.framasoft.org/api/components/peertube/angular/repository/?format=api",
                "translations_url": "https://weblate.framasoft.org/api/components/peertube/angular/translations/?format=api",
                "statistics_url": "https://weblate.framasoft.org/api/components/peertube/angular/statistics/?format=api",
                "lock_url": "https://weblate.framasoft.org/api/components/peertube/angular/lock/?format=api",
                "links_url": "https://weblate.framasoft.org/api/components/peertube/angular/links/?format=api",
                "changes_list_url": "https://weblate.framasoft.org/api/components/peertube/angular/changes/?format=api",
                "task_url": null,
                "new_lang": "add",
                "language_code_style": "",
                "push": "",
                "check_flags": "",
                "priority": 100,
                "enforced_checks": [],
                "restricted": false,
                "repoweb": "https://github.com/Chocobozzz/PeerTube/blob/{{branch}}/client/{{filename|parentdir}}#L{{line}}",
                "report_source_bugs": "",
                "merge_style": "rebase",
                "commit_message": "Translated using Weblate ({{ language_name }})\r\n\r\nCurrently translated at {{ stats.translated_percent }}% ({{ stats.translated }} of {{ stats.all }} strings)\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "add_message": "Added translation using Weblate ({{ language_name }})",
                "delete_message": "Deleted translation using Weblate ({{ language_name }})",
                "merge_message": "Merge branch '{{ component_remote_branch }}' into Weblate.",
                "addon_message": "Update translation files\r\n\r\nUpdated by \"{{ addon_name }}\" hook in Weblate.\r\n\r\nTranslation: {{ project_name }}/{{ component_name }}\r\nTranslate-URL: {{ url }}",
                "pull_message": "Translations update from {{ site_title }}\r\n\r\nTranslations update from [{{ site_title }}]({{ site_url }}) for [{{ project_name }}/{{ component_name }}]({{url}}).\r\n\r\n{% if component_linked_childs %}\r\nIt also includes following components:\r\n{% for linked in component_linked_childs %}\r\n* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\r\n{% endfor %}\r\n{% endif %}\r\n\r\nCurrent translation status:\r\n\r\n![Weblate translation status]({{widget_url}})",
                "allow_translation_propagation": true,
                "manage_units": false,
                "enable_suggestions": true,
                "suggestion_voting": false,
                "suggestion_autoaccept": 0,
                "push_on_commit": true,
                "commit_pending_age": 24,
                "auto_lock_error": true,
                "language_regex": "^[^.]+$",
                "variant_regex": "",
                "addons": [],
                "is_glossary": false,
                "glossary_color": "silver",
                "category": null,
                "linked_component": null
            },
            "language_code": "eo",
            "id": 197,
            "filename": "client/src/locale/angular.eo.xlf",
            "revision": "3aa71dccd398604841fe52a4a948247912635067",
            "web_url": "https://weblate.framasoft.org/projects/peertube/angular/eo/",
            "share_url": "https://weblate.framasoft.org/engage/peertube/-/eo/",
            "translate_url": "https://weblate.framasoft.org/translate/peertube/angular/eo/",
            "url": "https://weblate.framasoft.org/api/translations/peertube/angular/eo/?format=api",
            "is_template": false,
            "is_source": false,
            "total": 2367,
            "total_words": 14771,
            "translated": 1482,
            "translated_words": 7905,
            "translated_percent": 62.6,
            "fuzzy": 885,
            "fuzzy_words": 6866,
            "fuzzy_percent": 37.3,
            "failing_checks": 781,
            "failing_checks_words": 6839,
            "failing_checks_percent": 32.9,
            "have_suggestion": 2,
            "have_comment": 0,
            "last_change": "2024-04-24T12:57:44.823984Z",
            "last_author": null,
            "repository_url": "https://weblate.framasoft.org/api/translations/peertube/angular/eo/repository/?format=api",
            "file_url": "https://weblate.framasoft.org/api/translations/peertube/angular/eo/file/?format=api",
            "statistics_url": "https://weblate.framasoft.org/api/translations/peertube/angular/eo/statistics/?format=api",
            "changes_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/eo/changes/?format=api",
            "units_list_url": "https://weblate.framasoft.org/api/translations/peertube/angular/eo/units/?format=api"
        }
    ]
}