{"id":24511746,"url":"https://github.com/scribe-org/scribe-i18n","last_synced_at":"2026-03-06T11:01:22.255Z","repository":{"id":183802063,"uuid":"659613966","full_name":"scribe-org/Scribe-i18n","owner":"scribe-org","description":"Application text localization files for Scribe apps","archived":false,"fork":false,"pushed_at":"2026-03-05T01:14:17.000Z","size":957,"stargazers_count":3,"open_issues_count":8,"forks_count":18,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-05T07:13:22.292Z","etag":null,"topics":["app","education","hacktoberfest","i18n","internationalization","l10n","language","language-learning","learning","localization","open-source","weblate"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scribe-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-28T07:47:30.000Z","updated_at":"2026-03-05T01:14:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"f8e99194-ecb6-4e0a-8ba3-cd4eea7dc10d","html_url":"https://github.com/scribe-org/Scribe-i18n","commit_stats":null,"previous_names":["scribe-org/scribe-l10n","scribe-org/scribe-i18n"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scribe-org/Scribe-i18n","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribe-org%2FScribe-i18n","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribe-org%2FScribe-i18n/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribe-org%2FScribe-i18n/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribe-org%2FScribe-i18n/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scribe-org","download_url":"https://codeload.github.com/scribe-org/Scribe-i18n/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribe-org%2FScribe-i18n/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30173343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app","education","hacktoberfest","i18n","internationalization","l10n","language","language-learning","learning","localization","open-source","weblate"],"created_at":"2025-01-22T00:41:21.138Z","updated_at":"2026-03-06T11:01:22.248Z","avatar_url":"https://github.com/scribe-org.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/scribe-org/Scribe-i18n\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/scribe-org/Organization/main/logo/ScribeGitHubOrgBanner.png\" width=1024 alt=\"Scribe Logo\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n[![weblate](https://img.shields.io/badge/Weblate-144D3F.svg?logo=weblate\u0026logoColor=ffffff)](https://hosted.weblate.org/projects/scribe/scribe-i18n)\n[![issues](https://img.shields.io/github/issues/scribe-org/Scribe-i18n?label=%20\u0026logo=github)](https://github.com/scribe-org/Scribe-i18n/issues)\n[![license](https://img.shields.io/github/license/scribe-org/Scribe-i18n.svg?label=%20)](https://github.com/scribe-org/Scribe-i18n/blob/main/LICENSE.txt)\n[![coc](https://img.shields.io/badge/Contributor%20Covenant-ff69b4.svg)](https://github.com/scribe-org/Scribe-i18n/blob/main/.github/CODE_OF_CONDUCT.md)\n[![mastodon](https://img.shields.io/badge/Mastodon-6364FF.svg?logo=mastodon\u0026logoColor=ffffff)](https://wikis.world/@scribe)\n[![matrix](https://img.shields.io/badge/Matrix-000000.svg?logo=matrix\u0026logoColor=ffffff)](https://matrix.to/#/#scribe_community:matrix.org)\n\n### Application text localization files for Scribe apps\n\n**Scribe-i18n** is the home of the localization files that are included in each Scribe application. Scribe uses [Weblate](https://weblate.org/en/) for localization! Head over to [weblate.org/projects/scribe/scribe-i18n](https://hosted.weblate.org/projects/scribe/scribe-i18n) to localize the applications. Changes in this directory will be merged into other Scribe applications via this repo being a [Git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules).\n\n\u003e [!NOTE]\\\n\u003e The [contributing](#contributing) section has information for those interested.\n\nScribe apps are available on [iOS](https://github.com/scribe-org/Scribe-iOS), [Android](https://github.com/scribe-org/Scribe-Android) and [Desktop](https://github.com/scribe-org/Scribe-Desktop). For the data formatting processes see [Scribe-Data](https://github.com/scribe-org/Scribe-Data) and for our data API see [Scribe-Server](https://github.com/scribe-org/Scribe-Data).\n\nCheck out Scribe's [architecture diagrams](https://github.com/scribe-org/Organization/blob/main/ARCHITECTURE.md) for an overview of the organization including our applications, services and processes. It depicts the projects that [Scribe](https://github.com/scribe-org) is developing as well as the relationships between them and the external systems with which they interact.\n\n\u003ca id=\"contents\"\u003e\u003c/a\u003e\n\n### **Contents**\n\n- [Localization Coverage](#localization-coverage)\n- [Contributing](#contributing)\n  - [Issues](#issues)\n  - [Localizing via Weblate](#localizing-via-weblate)\n  - [Adding Source Strings](#adding-source-strings)\n  - [File Conversion](#file-conversion)\n  - [Pull Requests](#pull-requests)\n- [Adding to Projects](#adding-to-projects)\n- [Check Files](#check-files)\n- [Community](#community)\n\n\u003ca id=\"localization-coverage\"\u003e\u003c/a\u003e\n\n## Localization Coverage [`⇧`](#contents)\n\n\u003ca href=\"https://hosted.weblate.org/projects/scribe/scribe-i18n\"\u003e\n    \u003cimg src=\"https://hosted.weblate.org/widget/scribe/scribe-i18n/multi-auto.svg\" alt=\"Translation status\" /\u003e\n\u003c/a\u003e\n\n\u003ca id=\"contributing\"\u003e\u003c/a\u003e\n\n## Contributing [`⇧`](#contents)\n\nThank you for your interest in contributing to Scribe-i18n! We look forward to welcoming you to the community and working with you to build tools for language learners to communicate effectively :) The following are some suggested steps for people interested in joining our community.\n\nFollowing these guidelines helps to communicate that you respect the time of the developers managing and developing this open-source project. In return, and in accordance with this project's [code of conduct](https://github.com/scribe-org/Scribe-i18n/blob/main/.github/CODE_OF_CONDUCT.md), other contributors will reciprocate that respect in addressing your issue or assessing changes and features.\n\n\u003ca href=\"https://matrix.to/#/#scribe_community:matrix.org\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/scribe-org/Organization/main/resources/images/logos/MatrixLogoGrey.png\" height=\"50\" alt=\"Public Matrix Chat\" align=\"right\"\u003e\u003c/a\u003e\n\nIf you have questions or would like to communicate with the team, please [join us in our public Matrix chat rooms](https://matrix.to/#/#scribe_community:matrix.org). Scribe would suggest that you use the [Element](https://element.io/) client. We'd be happy to hear from you!\n\n\u003ca id=\"issues\"\u003e\u003c/a\u003e\n\n### Issues [`⇧`](#contents)\n\nThe [issue tracker for Scribe-i18n](https://github.com/scribe-org/Scribe-i18n/issues) is the preferred channel to let the team know if there are problems with localizations or to ask to work on new ones. Those interested in helping can check the [`-next release-`](https://github.com/scribe-org/Scribe-i18n/labels/-next%20release-) and [`-priority-`](https://github.com/scribe-org/Scribe-i18n/labels/-priority-) labels in the [issues](https://github.com/scribe-org/Scribe-i18n/issues) for those that are most important, as well as those marked [`good first issue`](https://github.com/scribe-org/Scribe-i18n/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) that are tailored for first-time contributors. Generally issues in this repository will be marked with the [`localization`](https://github.com/scribe-org/Scribe-i18n/issues?q=is%3Aopen+is%3Aissue+label%3Alocalization) label.\n\n\u003ca id=\"localizing-via-weblate\"\u003e\u003c/a\u003e\n\n### Localizing via Weblate [`⇧`](#contents)\n\n\u003ca href=\"https://hosted.weblate.org/projects/scribe/scribe-i18n\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/scribe-org/Organization/main/resources/images/logos/WeblateLogo.png\" width=\"125\" alt=\"Visit Weblate project\" align=\"right\"\u003e\u003c/a\u003e\n\n[Weblate](https://weblate.org/en/) localization is as easy as making an account and jumping into the Scribe-i18n project!\n\n1. First [register at Weblate](https://hosted.weblate.org/accounts/register/) (you can also authenticate with GitHub or other accounts)\n   - We suggest that you do link your GitHub account so you get credit for the localization commits!\n\n2. Navigate to the Scribe-i18n project at [weblate.org/projects/scribe/scribe-i18n](https://hosted.weblate.org/projects/scribe/scribe-i18n)\n\n3. Click on a language you want to start translating\n\n4. You can browse the available strings or start translating directly\n   - When translating a word, be sure to check the glossary context if you're not sure what the string's use is\n\n   - You can also make use of Automatic suggestions to see machine translations if you need help\n\n5. Hit `Save and continue` when you're ready to move to the next string\n\n6. Maintainers will open up pull requests from [Weblate](https://weblate.org/en/) to the Scribe-i18n repo to bring in the new strings\n   - Changes are also automatically sent every 24 hours\n\n7. Scribe-i18n directories that are [Git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) in other Scribe application repos are then synched. For each project using Scribe-i18n:\n   - Navigate to the root of the Scribe project's repo\n   - To load into the project the latest Scribe-i18n updates, run the following - where `\u003csubmodule-directory\u003e` is the directory within the repo structure with the Scribe-i18n submodule:\n\n     ```bash\n     git submodule add git@github.com:scribe-org/Scribe-i18n.git \u003csubmodule-directory\u003e\n     ```\n\n   - From the above command, two commits are then auto-generated. Any merge conflicts should be resolved by taking the file as is on Scribe-i18n. Finally, commit the changes to the given project to bring in the Scribe-i18n updates.\n\n8. If the Git submodule does need to be recreated, the submodule can be removed in projects via the following command:\n\n   ```bash\n   git rm -r \u003csubmodule-directory\u003e\n   rm -rf .git/modules/\u003csubmodule-directory\u003e\n   # Then remake the submodule via the process above.\n   ```\n\nThanks so much for your interest in supporting Scribe's localization!\n\n\u003ca id=\"adding-source-strings\"\u003e\u003c/a\u003e\n\n### Adding Source Strings [`⇧`](#contents)\n\nThe base language for all Scribe applications is US English. If you'd like to edit the [en-US.json](https://github.com/scribe-org/Scribe-i18n/blob/main/Scribe-i18n/en-US.json) file, please [fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) the repo, clone your fork, and configure the remotes:\n\n\u003e [!NOTE]\n\u003e\n\u003e \u003cdetails\u003e\u003csummary\u003eConsider using SSH\u003c/summary\u003e\n\u003e\n\u003e \u003cp\u003e\n\u003e\n\u003e Alternatively to using HTTPS as in the instructions below, consider SSH to interact with GitHub from the terminal. SSH allows you to connect without a user-pass authentication flow.\n\u003e\n\u003e To run git commands with SSH, remember then to substitute the HTTPS URL, `https://github.com/...`, with the SSH one, `git@github.com:...`.\n\u003e\n\u003e - e.g. Cloning now becomes `git clone git@github.com:\u003cyour-username\u003e/Scribe-i18n.git`\n\u003e\n\u003e GitHub also has their documentation on how to [Generate a new SSH key](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) 🔑\n\u003e\n\u003e \u003c/p\u003e\n\u003e \u003c/details\u003e\n\n```bash\n# Clone your fork of the repo into the current directory.\ngit clone https://github.com/\u003cyour-username\u003e/Scribe-i18n.git\n# Navigate to the newly cloned directory.\ncd Scribe-i18n\n# Assign the original repo to a remote called \"upstream\".\ngit remote add upstream https://github.com/scribe-org/Scribe-i18n.git\n```\n\n- Now, if you run `git remote -v` you should see two remote repositories named:\n  - `origin` (forked repository)\n  - `upstream` (Scribe-i18n repository)\n\nIf all looks good, then you're ready to start adding localizable key-string pairs via pull requests!\n\n\u003ca id=\"file-conversion\"\u003e\u003c/a\u003e\n\n### File Conversion [`⇧`](#contents)\n\nThe files in the [i18n/scripts](https://github.com/scribe-org/Scribe-i18n/tree/main/i18n/scripts) directory can be used to convert base localization JSON files into the filetypes that are needed for an application as well as the same in reverse. JSON files are automatically converted to their target files for Scribe applications after commits to the main branch, and their opposites can be used to update the JSON files when strings are first changed in the applications.\n\n\u003ca id=\"pull-requests\"\u003e\u003c/a\u003e\n\n### Pull Requests [`⇧`](#contents)\n\nGood pull requests are the foundation of our community making Scribe-i18n. They should remain focused in scope and avoid containing unrelated commits. Note that all contributions to this project will be made under [the specified license](https://github.com/scribe-org/Scribe-i18n/blob/main/LICENSE.txt).\n\nWhen making a contribution, adhering to the [GitHub flow](https://guides.github.com/introduction/flow/index.html) process is the best way to get your work merged:\n\n1. If you cloned a while ago, get the latest changes from upstream:\n\n   ```bash\n   git checkout \u003cdev-branch\u003e\n   git pull upstream \u003cdev-branch\u003e\n   ```\n\n2. Create a new topic branch (off the main project development branch) to contain your feature, change, or fix:\n\n   ```bash\n   git checkout -b \u003ctopic-branch-name\u003e\n   ```\n\n3. Commit your changes in logical chunks, and please try to adhere to [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).\n\n\u003e [!NOTE]\n\u003e The following are tools and methods to help you write good commit messages ✨\n\u003e\n\u003e - [commitlint](https://commitlint.io/) helps write [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)\n\u003e - Git's [interactive rebase](https://docs.github.com/en/github/getting-started-with-github/about-git-rebase) cleans up commits\n\n4. Locally merge (or rebase) the upstream development branch into your topic branch:\n\n   ```bash\n   git pull --rebase upstream \u003cdev-branch\u003e\n   ```\n\n5. Push your topic branch up to your fork:\n\n   ```bash\n   git push origin \u003ctopic-branch-name\u003e\n   ```\n\n6. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description.\n\nThank you in advance for your contributions!\n\n\u003ca id=\"adding-to-projects\"\u003e\u003c/a\u003e\n\n## Adding to Projects [`⇧`](#contents)\n\nTo use Scribe-i18n within another repository, run the following command from the root directory of the project to add Scribe-i18n as a submodule:\n\n```bash\ngit submodule add https://github.com/scribe-org/Scribe-i18n \u003csubmodule-directory\u003e\n```\n\nIn the command, the value for `\u003csubmodule-directory\u003e` is a directory within the repo structure of the project. Which directory to use will be dependent on the stack of the project and how i18n files will be consumed. Typically, this is the path for a directory named `Scribe-i18n` that will be created somewhere in the repo structure upon command execution. Refer to documentation of the tool that will consume the i18n files to determine what it should be.\n\nOther Git commands for Scribe-i18n include:\n\n```bash\n# To pull new Scribe-i18n changes in:\ncd \u003csubmodule-directory\u003e\ngit pull origin main\n\n# Get version of Scribe-i18n on main:\ncd \u003cproject-root\u003e\ngit submodule update --init --recursive\n```\n\n\u003ca id=\"check-files\"\u003e\u003c/a\u003e\n\n## Check Files [`⇧`](#contents)\n\nThe following sets up the [i18n-check](https://github.com/activist-org/i18n-check) based validation for your local copy of Scribe-i18n:\n\n- Create a virtual environment for i18n-check (Python `\u003e=3.12`), activate it and install dependencies:\n\n  \u003e [!NOTE]\n  \u003e First, install `uv` if you don't already have it by following the [official installation guide](https://docs.astral.sh/uv/getting-started/installation/).\n\n  ```bash\n  uv sync --all-extras  # create .venv and install all dependencies from uv.lock\n\n  # Unix or macOS:\n  source .venv/bin/activate\n\n  # Windows:\n  .venv\\Scripts\\activate.bat  # .venv\\Scripts\\activate.ps1 (PowerShell)\n  ```\n\n- You can now run [i18n-check](https://github.com/activist-org/i18n-check) checks to validate the localization files (see [.i18n-check.yaml](./.i18n-check.yaml) for the enabled checks):\n\n  ```bash\n  uv run i18n-check --all  # (-a)\n  uv run i18n-check --all --fix # (-a -f)\n  ```\n\n- And finally you can enable the [pre-commit](https://pre-commit.com/) hooks to ensure that each of your commits is properly checked\n\n  ```bash\n  pre-commit install\n  # uv run pre-commit run --all-files  # lint and fix common problems in the codebase\n  ```\n\n\u003e [!NOTE]\n\u003e Feel free to contact the team in the [i18n room on Matrix](https://matrix.to/#/#scribe-localization:matrix.org) if you're having problems getting your environment setup!\n\n\u003ca id=\"community\"\u003e\u003c/a\u003e\n\n## Community [`⇧`](#contents)\n\n### Joining In [`⇧`](#contents)\n\nAfter your first few pull requests organization members would be happy to discuss granting you further rights as a contributor, with a maintainer role then being possible after continued interest in the project. Scribe seeks to be an inclusive and supportive organization. We'd love to have you on the team!\n\n### Road Map [`⇧`](#contents)\n\nThe Scribe road map can be followed in the organization's [project board](https://github.com/orgs/scribe-org/projects/1) where we list the most important issues along with their priority, status and an indication of which sub projects they're included in (if applicable).\n\n\u003e [!NOTE]\\\n\u003e Consider joining our [bi-weekly developer syncs](https://etherpad.wikimedia.org/p/scribe-dev-sync)!\n\n## Powered By [`⇧`](#contents)\n\n### Contributors\n\nMany thanks to all the [Scribe-i18n contributors](https://github.com/scribe-org/Scribe-i18n/graphs/contributors)! 🚀\n\n\u003ca href=\"https://github.com/scribe-org/Scribe-i18n/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=scribe-org/Scribe-i18n\" /\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscribe-org%2Fscribe-i18n","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscribe-org%2Fscribe-i18n","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscribe-org%2Fscribe-i18n/lists"}