{"id":38668594,"url":"https://github.com/openculinary/internationalization","last_synced_at":"2026-01-17T09:52:30.962Z","repository":{"id":55393151,"uuid":"243609638","full_name":"openculinary/internationalization","owner":"openculinary","description":"Internationalization tools and content for RecipeRadar","archived":false,"fork":false,"pushed_at":"2025-02-28T20:04:17.000Z","size":126,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T23:01:47.527Z","etag":null,"topics":["i18n","i18next"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openculinary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-02-27T20:24:55.000Z","updated_at":"2025-02-28T20:04:19.000Z","dependencies_parsed_at":"2025-02-14T15:40:42.281Z","dependency_job_id":null,"html_url":"https://github.com/openculinary/internationalization","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/openculinary/internationalization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openculinary%2Finternationalization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openculinary%2Finternationalization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openculinary%2Finternationalization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openculinary%2Finternationalization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openculinary","download_url":"https://codeload.github.com/openculinary/internationalization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openculinary%2Finternationalization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: 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":["i18n","i18next"],"created_at":"2026-01-17T09:52:30.889Z","updated_at":"2026-01-17T09:52:30.947Z","avatar_url":"https://github.com/openculinary.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RecipeRadar Internationalization\n\nInternationalization tools and content for RecipeRadar.\n\n## How it works\n\nThe RecipeRadar [frontend](https://codeberg.org/openculinary/frontend) application contains placeholders where human-readable text strings should appear.  For example, the [`search:prompt-get-started`](https://codeberg.org/openculinary/internationalization/src/commit/7c9068f3ea5072a4e6f49efe7178a345b158b5a9/locales/templates/search.pot#L29-L30) label in the application will be filled by instructions to help users begin using the application.\n\nThis repository contains [gettext](https://www.gnu.org/software/gettext/) files that contain the list of placeholder labels (in `.pot` files), and the corresponding machine-or-human-translated strings to fill those slots (in `.po` files).\n\nWhen developers are working on a feature that requires updated translations, they run a [translation resource scan](https://codeberg.org/openculinary/frontend#internationalization) to regenerate the templates.\n\nDefault machine-translated strings for each placeholder in each language are provided by [apertium](https://www.apertium.org/), and human experts can provide improved translations.  Expert-provided translations are stored [arranged by language under the `corrections` directory](https://codeberg.org/openculinary/internationalization/src/branch/main/locales/corrections).\n\nA script is provided to combine all current human corrections with the latest machine-translated strings:\n\n```sh\n$ ./translation-routing.sh\n```\n\nFinally, a developer performs a build of the [`frontend`](https://codeberg.org/openculinary/frontend) application -- which includes a copy of this repository as a [git submodule](https://codeberg.org/openculinary/frontend/src/commit/85cafd48bf5d7bf840aff0a545c969a9eea6e554/.gitmodules) -- and the templates are bundled into the application by the [`webpack` configuration](https://codeberg.org/openculinary/frontend/src/commit/85cafd48bf5d7bf840aff0a545c969a9eea6e554/webpack.config.js#L21).\n\n## Workflow summary\n\n- A feature or change to the application requires internationalization\n- The translation resource scan collects updated placeholders\n- Machine translation generates 'default' per-language strings\n- Human corrections override specific placeholders\n- Updated templates and translations are committed to this repository\n- The application is rebuilt using the updated translations\n\nWhen the feature and translations are ready, pull request(s) are opened to offer the suggested changes for review and merge.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenculinary%2Finternationalization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenculinary%2Finternationalization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenculinary%2Finternationalization/lists"}