{"id":20037841,"url":"https://github.com/openedx/i18n-tools","last_synced_at":"2025-04-07T07:00:30.289Z","repository":{"id":17655196,"uuid":"20459773","full_name":"openedx/i18n-tools","owner":"openedx","description":"Tools to help with internationalization and localization of Open edX projects","archived":false,"fork":false,"pushed_at":"2025-03-21T05:29:04.000Z","size":397,"stargazers_count":26,"open_issues_count":20,"forks_count":31,"subscribers_count":117,"default_branch":"master","last_synced_at":"2025-03-21T18:03:11.926Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openedx.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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}},"created_at":"2014-06-03T21:09:08.000Z","updated_at":"2025-03-21T05:28:17.000Z","dependencies_parsed_at":"2024-06-18T18:13:29.260Z","dependency_job_id":"cb47ca84-dcc6-4304-a2e9-03b9138e4e3f","html_url":"https://github.com/openedx/i18n-tools","commit_stats":{"total_commits":154,"total_committers":41,"mean_commits":"3.7560975609756095","dds":0.7207792207792207,"last_synced_commit":"723a0fbc3158afe9d0c42f4d5ed2cc6315ce480c"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fi18n-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fi18n-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fi18n-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fi18n-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openedx","download_url":"https://codeload.github.com/openedx/i18n-tools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608150,"owners_count":20965952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-13T10:23:17.685Z","updated_at":"2025-04-07T07:00:30.269Z","avatar_url":"https://github.com/openedx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"edX i18n Tools |build-status| |coverage-status|\n###############################################\n\nInstalling\n==========\n\nEdX i18n tools are a set of commands useful for developers and translators to\nextract, compile and validate translations. The edX i18n tools can be installed\nrunning the following command inside the extracted directory.\n\n``python setup.py install``\n\nRunning\n=======\n\nFor Django projects, commands should be run from the root directory, and\nthe default configuration will be found at ``./conf/locale/config.yaml``.\nFor Django apps, commands should be run from the app's directory, and\nthe default configuration will be found at ``./locale/config.yaml``.\n\nYou can specify a different configuration file with the ``--config`` argument.\n\n\nGeneral Commands\n================\n\n* To extract source strings and populate ``.po`` translation files with them\n\n  * ``i18n_tool extract``\n\n* To generate test language(eo) translation files from source ``.po`` files\n\n  * ``i18n_tool dummy``\n\n* To compile ``.po`` translation files into ``.mo`` message files\n\n  * ``i18n_tool generate``\n\n* To find translation errors in ``.po`` files\n\n  * ``i18n_tool validate``\n\n* To determine if the source translation files(``.po``) are up-to-date\n\n  * ``i18n_tool changed``\n\n* To segment a ``.po`` file into smaller files based on the locations of the messages\n\n  * ``i18n_tool segment``\n\n\nTransifex Commands\n==================\n\nDevelopers or translators can use commands provided by edX i18n tools to upload\ntranslations to Transifex or download them. Before using these commands one\nshould have an account on `transifex.com \u003chttps://www.transifex.com/\u003e`_ to\ncreate a ``~/.transifexrc`` file.  Once the Transifex account has been set up,\ncreate a ``~/.transifexrc`` file having these contents::\n\n   [https://www.transifex.com]\n   hostname = https://www.transifex.com\n   password = YOURPASSWORD\n   token =\n   username = YOURUSERNAME(EMAIL)\n\n\nAlso make sure you have a Transifex configuration file ``.tx/config`` present\nunder the project directory.\n\n* To upload translations to Transifex\n\n  * ``i18n_tool transifex push``\n\n* To download translations from Transifex\n\n  * ``i18n_tool transifex pull``\n\nConfiguration\n=============\n\nDetails of the config.yaml file are in `edx-platform/conf/locale/config.yaml\n\u003chttps://github.com/openedx/edx-platform/blob/master/conf/locale/config.yaml\u003e`_\n\n\nChanges\n=======\nv0.5.0\n-------\n\n* Added Django22 support.\n\nv0.4.9\n-------\n\n* Updated validate to log problems found in translations.\n\nv0.4.8\n-------\n\n* Updated transifex to pull files from Transifex that are atleast 3% done\n  previous value was 10%.\n\nv0.4.7\n-------\n\n* Test that tag validation catches HTML added to translations.\n\n* When tag validation finds differences, output should be deterministic.\n\nv0.4.6\n-------\n\n* Ensure that we only pull files from Transifex that are 10% done.\n  Avoids a problem with our validation code choking on empty po files\n  and avoids translations that are just getting started.\n\n* Don't complain about obviously missing files when cleaning\n  the headers of just-pulled files, and make sure that we do\n  notice the files we did actually pull.\n\n* Ensure that Plural-Forms has a valid value when extracting.\n  python-gettext will choke otherwise.\n\n* When creating a dummy po file, don't garble source strings in\n  a way that relies on the Python dictionary order. This way the\n  result will always be the same no matter the machine.\n\nv0.4.5\n-------\n\n* Extract from .jsx files too.\n\nv0.4.4\n-------\n\n* Added check-all (check all po files) argument to validate command.\n\nv0.4.3\n-------\n\n* Specify Language header for generated dummy po files.\n\nv0.4.2\n-------\n\n* Specified utf-8 encoding for .yaml file.\n\nv0.4.1\n-------\n\n* Fixes bug preventing the use of --empty with The validate command.\n\nv0.4.0\n-------\n\n* The validate command returns a non-zero exit code when problems are detected with the translation files.\n\nv0.3.10\n-------\n\n* Add support for edx_lang_map in config.yaml to share translations across language codes.\n\nv0.3.9\n------\n\n* Fix Python 3 issues in validate.\n\nv0.3.8\n------\n\n* Added support for Django 1.11 and Python 3.6\n\nv0.3.7\n------\n\n* A few small fixes for Django projects.\n\nv0.3.6\n------\n\n* Major refactoring to enable use on Django apps as well as Django projects.\n\nv0.3.5\n------\n\n* Pinned a requirement to prevent failures when used with other applications.\n\nv0.3.4\n------\n\n* ``i18n_tool changed`` command added. This command determines if the source\n  translation files are up-to-date. If they are not it returns a non-zero exit\n  code.\n\nv0.3.2\n------\n\n* ``i18n_tool validate`` no longer complains about problems in both the\n  component .po files and the combined .po files.\n\nv0.3.1\n------\n\n* ``i18n_tool extract`` will preserve existing django.po and djangojs.po files\n  in the source directory.\n\nv0.3\n----\n\n* ``i18n_tool transifex push`` and ``i18n_tool transifex pull`` now can take\n  optional resource names on the command line.  If not provided, all resources\n  are pushed/pulled.\n\nv0.2.1\n------\n\n* ``i18n_tool validate`` no longer leaves an unneeded messages.mo file behind.\n\n\nDevelopment\n===========\n\nTo work on this code:\n\n#. Install Tox::\n\n   $ pip install tox\n\n#. Run tests::\n\n   $ tox\n\n   If you have failures because ``msgcat`` failed, you may need to install it,\n   and adjust your PATH to include it.  On a Mac, for example::\n\n   $ brew install gettext\n   $ PATH=/usr/local/Cellar/gettext/0.19.3/bin/:$PATH tox\n\n\n.. |build-status| image:: https://travis-ci.com/edx/i18n-tools.svg?branch=master\n   :target: https://travis-ci.com/edx/i18n-tools\n.. |coverage-status| image:: https://coveralls.io/repos/edx/i18n-tools/badge.png\n   :target: https://coveralls.io/r/edx/i18n-tools\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fi18n-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenedx%2Fi18n-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fi18n-tools/lists"}