{"id":13484184,"url":"https://github.com/svenfuchs/rails-i18n","last_synced_at":"2025-09-09T20:42:15.568Z","repository":{"id":39096844,"uuid":"38867","full_name":"svenfuchs/rails-i18n","owner":"svenfuchs","description":"Repository for collecting Locale data for Ruby on Rails I18n as well as other interesting, Rails related I18n stuff","archived":false,"fork":false,"pushed_at":"2025-08-26T18:08:55.000Z","size":3158,"stargazers_count":4013,"open_issues_count":33,"forks_count":2745,"subscribers_count":83,"default_branch":"master","last_synced_at":"2025-09-06T01:36:29.776Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rails-i18n.org","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/svenfuchs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2008-07-31T13:07:53.000Z","updated_at":"2025-09-05T01:46:49.000Z","dependencies_parsed_at":"2022-07-12T17:42:04.661Z","dependency_job_id":"0fb9e9da-6e26-455a-9089-0763a34db18e","html_url":"https://github.com/svenfuchs/rails-i18n","commit_stats":{"total_commits":1740,"total_committers":613,"mean_commits":2.838499184339315,"dds":0.8758620689655172,"last_synced_commit":"35ad77d47f6856943c8675defbb8c26249635f8c"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/svenfuchs/rails-i18n","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenfuchs%2Frails-i18n","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenfuchs%2Frails-i18n/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenfuchs%2Frails-i18n/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenfuchs%2Frails-i18n/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/svenfuchs","download_url":"https://codeload.github.com/svenfuchs/rails-i18n/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenfuchs%2Frails-i18n/sbom","scorecard":{"id":748602,"data":{"date":"2025-08-11","repo":{"name":"github.com/svenfuchs/rails-i18n","commit":"e350a5b3ec1bc2cd331e08a5b998251c0b878749"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":9,"reason":"Found 12/13 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":5,"reason":"5 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: MIT-LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: MIT-LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/svenfuchs/rails-i18n/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/svenfuchs/rails-i18n/ci.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:2: pin your Docker image by updating ruby:3.2.2 to ruby:3.2.2@sha256:bc2b1b2c5cf0423b9ca12f2c2196c51efa80c8d3d4d0cf01858e67dc2c7136e4","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T19:36:40.607Z","repository_id":39096844,"created_at":"2025-08-22T19:36:40.607Z","updated_at":"2025-08-22T19:36:40.607Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273874160,"owners_count":25183368,"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","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-07-31T17:01:20.356Z","updated_at":"2025-09-09T20:42:15.553Z","avatar_url":"https://github.com/svenfuchs.png","language":"Ruby","funding_links":[],"categories":["Ruby","others","I18n","Uncategorized","Internationalization"],"sub_categories":["Uncategorized"],"readme":"Rails Locale Data Repository\n============================\n\n[![Gem Version](https://badge.fury.io/rb/rails-i18n.svg)](http://badge.fury.io/rb/rails-i18n)\n[![CI](https://github.com/svenfuchs/rails-i18n/actions/workflows/ci.yml/badge.svg)](https://github.com/svenfuchs/rails-i18n/actions/workflows/ci.yml)\n\nCentralization of locale data collection for Ruby on Rails.\n\n## Gem Installation\n\nInclude the gem to your Gemfile:\n\n``` ruby\ngem 'rails-i18n', github: 'svenfuchs/rails-i18n', branch: 'master' # For bleeding edge unreleased versions\ngem 'rails-i18n', '~\u003e 8.0.0' # For Rails \u003e= 8.0.0\ngem 'rails-i18n', '~\u003e 7.0.0' # For Rails \u003e= 7.0.0\ngem 'rails-i18n', '~\u003e 6.0' # For 6.x\ngem 'rails-i18n', '~\u003e 5.1' # For 5.0.x, 5.1.x and 5.2.x\ngem 'rails-i18n', '~\u003e 4.0' # For 4.0.x\ngem 'rails-i18n', '~\u003e 3.0' # For 3.x\ngem 'rails-i18n', github: 'svenfuchs/rails-i18n', branch: 'rails-5-x' # For 5.x\ngem 'rails-i18n', github: 'svenfuchs/rails-i18n', branch: 'rails-4-x' # For 4.x\ngem 'rails-i18n', github: 'svenfuchs/rails-i18n', branch: 'rails-3-x' # For 3.x\n```\n\nAlternatively, execute the following command:\n\n``` shell\ngem install rails-i18n -v '~\u003e 8.0.0' # For Rails \u003e= 8.0.0\ngem install rails-i18n -v '~\u003e 7.0.0' # For Rails \u003e= 7.0.0\ngem install rails-i18n -v '~\u003e 6.0' # For 6.x\ngem install rails-i18n -v '~\u003e 5.1' # For  For 5.0.x, 5.1.x and 5.2.x\ngem install rails-i18n -v '~\u003e 4.0' # For 4.0.x\ngem install rails-i18n -v '~\u003e 3.0' # For 3.x\n```\n\nNote that your Ruby on Rails version must be 3.0 or higher in order to install the `rails-i18n` gem. For rails 2.x, install it manually as described in the Manual Installation section below.\n\n## Configuration\n\n### Enabled modules\n\nBy default, all `rails-i18n` modules (locales, pluralization, transliteration, ordinals) are enabled.\n\nIf you would like to only enable specific modules, you can do so in your Rails configuration:\n\n```ruby\n# to enable only pluralization rules, but disable all other features\nconfig.rails_i18n.enabled_modules = [:pluralization]\n\n# to enable pluralization and ordinals\nconfig.rails_i18n.enabled_modules = [:pluralization, :ordinals]\n```\n\nThe possible module names:\n\n* `:locale`\n* `:ordinals`\n* `:pluralization`\n* `:transliteration`\n\nSetting `enabled_modules` will restrict the gem's loaded features to only the specific types.\n\n### Available locales\n\n`rails-i18n` gem initially loads all available locale files, pluralization and transliteration rules. This default behaviour can be changed. If you specify in `config/environments/*` the locales which have to be loaded via `I18n.available_locales` option:\n\n``` ruby\nconfig.i18n.available_locales = ['es-CO', :de]\n```\n\nor\n\n``` ruby\nconfig.i18n.available_locales = :nl\n```\n\n## Manual Installation\n\nDownload desired locale files found in [rails/locale](http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/) directory and move them into the `config/locales` directory of your Rails application.\n\nIf any translation doesn't suit well to the requirements of your application, edit them or add your own locale files.\n\nFor more information, visit [Rails Internationalization (I18n) API](http://guides.rubyonrails.org/i18n.html) on the _RailsGuides._\n\n## Usage on Rails 2.3\n\nLocale data whose structure is compatible with Rails 2.3 are available on the separate branch [rails-2-3](https://github.com/svenfuchs/rails-i18n/tree/rails-2-3).\n\n## Available Locales\n\n**Available locales:**\n\naf, ar, az, be, bg, bn, bs, ca, cs, cy, csb, da, de, de-AT, de-CH, de-DE, dsb, dz, el, el-CY, en, en-AU, en-CA, en-CY, en-GB, en-IE, en-IN, en-NZ, en-TT, en-US, en-ZA, eo, es, es-419, es-AR, es-CL, es-CO, es-CR, es-EC, es-ES, es-MX, es-NI, es-PA, es-PE, es-US, es-VE, et, eu, fa, fi, fr, fr-CA, fr-CH, fr-FR, fur, fy, gd, gl, gsw-CH, he, hi, hi-IN, hr, hsb, hu, id, is, it, it-CH, ja, ka, kk, km, kn, ko, lb, lo, lt, lv, mg, mk, ml, mn, mr-IN, ms, nb, ne, nl, nn, oc, or, pa, pap-AW, pap-CW, pl, pt, pt-BR, rm, ro, ru, sc, scr, sk, sl, sq, sr, st, sv, sv-FI, sv-SE, sw, ta, te, th, tl, tr, tt, ug, uk, ur, uz, vi, wo, zh-CN, zh-HK, zh-TW, zh-YUE\n\n**Complete locales:**\n\nen, en-US, es, es-419, es-AR, es-CL, es-CO, es-CR, es-EC, es-ES, es-MX, es-NI, es-PA, es-PE, es-US, es-VE, fr, fr-CA, fr-CH, fr-FR, gd, ja, pt, pt-BR, ru, sc\n\n**Locales with missing pluralization rules**\n\naf, csb, dsb, dz, fur, gsw-CH, lb, rm, scr, sq, sv-FI, te, tt, ug, uz\n\n**Removed pluralizations:**\n\nak, am, bh, bm, bo, br, by, cy, dz, ff, ga, gd, guw, gv, ig, ii, iu, jv, kab, kde, kea, ksh, kw, lag, ln, mo, mt, my, naq, nso, root, sah, se, ses, sg, sh, shi, sma, smi, smj, smn, sms, ti, to, tzm, wa, yo, zh\n\nThe above pluralization rules were removed because they did not have corresponding locale files.\n\n\nCurrently, most locales are incomplete. Typically they lack the following keys:\n\n- `activerecord.errors.messages.record_invalid`\n- `activerecord.errors.messages.restrict_dependent_destroy.has_one`\n- `activerecord.errors.messages.restrict_dependent_destroy.has_many`\n\nThe following keys should NOT be included:\n\n- `errors.messages.model_invalid`\n- `errors.messages.required`\n\nWe always welcome your contributions!\n\n## Currency Symbols\n\nSome locales have the symbol of the currency (e.g. `€`) under the key `number.currency.format.unit`,\nwhile others have the code (e.g. `CHF`). The value of the key depends on the widespread adoption of\nthe unicode currency symbols by fonts.\n\nFor example the Turkish Lira sign (`₺`) was recently added in Unicode 6.2 and while most popular\nfonts have a glyph, there are still many fonts that will not render the character correctly.\n\nIf you want to provide a different value, you can create a custom locale file under\n`config/locales/tr.yml` and override the respective key:\n\n``` yaml\ntr:\n  number:\n    currency:\n      format:\n        unit: TL\n```\n\n## How to Contribute\n\n### Quick Contribution\n\nIf you are familiar with GitHub operations, then follow the procedures described in the subsequent sections.\n\nIf not,\n\n* Save your locale data in a [Gist](http://gist.github.com).\n* Open an issue with reference to the Gist you created.\n\n### Fetching the `rails-i18n` Repository\n\n* Get a github account and Git program if you haven't. See [Help.Github](http://help.github.com/) for instructions.\n* Fork `svenfuchs/rails-i18n` repository and clone it into your PC.\n\n### Creating or Editing your Locale File\n\n* Have a look in `rails/locale/en.yml`, which should be used as the base of your translation.\n* Create or edit your locale file.\n  Please pay attention to save your files as UTF-8.\n\n### Testing your Locale File\n\nBefore committing and pushing your changes, test the integrity of your locale file.\n(You can also run the tests using Docker, see below)\n\n``` shell\nbundle exec rake spec\n```\n\nMake sure you have included all translations with:\n\n``` shell\nbundle exec rake i18n-spec:completeness rails/locale/en.yml rails/locale/YOUR_NEW_LOCALE.yml\n```\n\nMake sure it is normalized with:\n\n``` shell\nthor locales:normalize LOCALE # or \"thor locales:normalize_all\"\n```\n\nYou can list all complete and incomplete locales:\n\n``` shell\nthor locales:complete\nthor locales:incomplete\n```\n\nAlso, you can list all available locales:\n\n``` shell\nthor locales:list\n```\n\nYou can list all missing keys:\n\n``` shell\ni18n-tasks missing es\n```\n\n### Edit README.md\n\nAdd your locale name to the list in `README.md` if it isn't there.\n\n### Send pull request\n\nIf you are ready, push the repository into the Github and send us a pull request.\n\nWe will do the formality check and publish it as quick as we can.\n\n### Add an informative title to your pull request or issue\n\nIf your pull request or issue concerns a specific locale - please indicate the relevant locale\nin the issue or pull request title in order to facilitate triage.\n\n**Best:**\n\n*Danish: change da.errors.messages.required to \"skal udfyldes\"*\n\n**Good:**\n\n*Human precision in Swedish locale file is set to 1*\n\n*Update es-PE.yml, the currency unit is incorrect*\n\n**Bad:**\n\n*Changing some string about validation*\n\n### Docker\n\nBuild the image:\n\n```\ndocker build --tag=railsi18n .\n```\n\nRun the tests:\n\n```\ndocker run railsi18n\n```\n\nTo run the other commands described above:\n\n```\ndocker run railsi18n bundle exec rake i18n-spec:completeness rails/locale/en.yml rails/locale/YOUR_NEW_LOCALE.yml\n```\n\n## See also\n\n* [devise-i18n](https://github.com/devise-i18n/devise-i18n)\n* [will-paginate-i18n](https://github.com/tigrish/will-paginate-i18n)\n* [kaminari-i18n](https://github.com/tigrish/kaminari-i18n)\n* [i18n-country-translation](https://github.com/onomojo/i18n-country-translations) for translations of country names\n* [i18n-timezones](https://github.com/onomojo/i18n-timezones) for translations of Rails time zones\n* [i18n-spec](https://github.com/tigrish/i18n-spec) for RSpec matchers to test your locale files\n* [iso](https://github.com/tigrish/iso) for the list of valid language/region codes and their translations\n* [i18n-tasks](https://github.com/glebm/i18n-tasks)\n\n## License\n\n[MIT](https://github.com/svenfuchs/rails-i18n/blob/master/MIT-LICENSE.txt)\n\n## Contributors\n\nSee [https://github.com/svenfuchs/rails-i18n/contributors](https://github.com/svenfuchs/rails-i18n/contributors)\n\n## Special thanks\n\n[Tsutomu Kuroda](https://github.com/kuroda) for untiringly taking care of this repository, issues and pull requests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvenfuchs%2Frails-i18n","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsvenfuchs%2Frails-i18n","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvenfuchs%2Frails-i18n/lists"}