{"id":21842871,"url":"https://github.com/pandaplatform/gulp-l10n-pot","last_synced_at":"2026-05-18T08:02:42.472Z","repository":{"id":57258099,"uuid":"105276180","full_name":"PandaPlatform/gulp-l10n-pot","owner":"PandaPlatform","description":"Generate pot files from your html files using gulp tasks","archived":false,"fork":false,"pushed_at":"2020-05-29T05:44:00.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-20T13:22:19.865Z","etag":null,"topics":["gulp","l10n","localization","pot","translation"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/PandaPlatform.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}},"created_at":"2017-09-29T13:36:21.000Z","updated_at":"2020-05-29T05:44:02.000Z","dependencies_parsed_at":"2022-08-25T21:23:46.970Z","dependency_job_id":null,"html_url":"https://github.com/PandaPlatform/gulp-l10n-pot","commit_stats":null,"previous_names":["pandaplatform/pot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PandaPlatform/gulp-l10n-pot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandaPlatform%2Fgulp-l10n-pot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandaPlatform%2Fgulp-l10n-pot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandaPlatform%2Fgulp-l10n-pot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandaPlatform%2Fgulp-l10n-pot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PandaPlatform","download_url":"https://codeload.github.com/PandaPlatform/gulp-l10n-pot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandaPlatform%2Fgulp-l10n-pot/sbom","scorecard":{"id":107589,"data":{"date":"2025-08-11","repo":{"name":"github.com/PandaPlatform/gulp-l10n-pot","commit":"89c1399192056ad458874089560357a6c143f4c5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Code-Review","score":0,"reason":"Found 0/23 approved changesets -- score normalized to 0","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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE: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"}}]},"last_synced_at":"2025-08-15T11:23:21.696Z","repository_id":57258099,"created_at":"2025-08-15T11:23:21.696Z","updated_at":"2025-08-15T11:23:21.696Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33170442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"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":["gulp","l10n","localization","pot","translation"],"created_at":"2024-11-27T22:13:34.193Z","updated_at":"2026-05-18T08:02:42.454Z","avatar_url":"https://github.com/PandaPlatform.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gulp-l10n-pot\n\nGenerate pot files from your html files using gulp tasks\n\nThis package helps generating pot translation files by parsing your html files looking for specific attributes.\n\n## Installation\n\nUsing npm:\n\n```\n$ npm i -g npm\n$ npm i --save gulp-l10n-pot\n```\n\n## Logic\n\nThe logic of this package is to allow translations of html files with translation keys using html attributes.\n\nThis way, we can allow the creation of translations using translation keys if needed, by adding specific attributes with values.\n\n### Attributes\n\nThe `gulp-l10n-pot` module uses the following attributes for parsing html translations:\n* `data-translate`: Stores the translation key, if any\n* `data-translate-comment`: Stores the translation comment, if any\n* Element inner html: Stores the translation value/string\n\nIf no key is defined, the translation string will be used as a key.\n\nInput:\n```html\n\u003cdiv class=\"translation-test-container\"\u003e\n    \u003ch1 data-translate=\"translation-test-header\"\u003eThis is the translation test header.\u003c/div\u003e\n    \u003cp data-translate=\"translation-test-paragraph\"\u003eThis is the translation test paragraph.\u003c/div\u003e\n\u003c/div\u003e\n```\n\nOutput (.pot):\n```text\nmsgid \"\"\nmsgstr \"\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Generator: gulp-l10n-pot\\n\"\n\"Project-Id-Version: test file\\n\"\n\n#: file.html\nmsgid \"translation-test-header\"\nmsgstr \"\"\n\n#: file.html\nmsgid \"translation-test-paragraph\"\nmsgstr \"\"\n```\n\nOutput (.po):\n```text\nmsgid \"\"\nmsgstr \"\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Generator: gulp-l10n-pot\\n\"\n\"Project-Id-Version: test file\\n\"\n\"Language: en-us\\n\"\n\n#: file.html\nmsgid \"translation-test-header\"\nmsgstr \"This is the translation test header.\"\n\n#: file.html\nmsgid \"translation-test-paragraph\"\nmsgstr \"This is the translation test paragraph.\"\n```\n\n## Usage\n\nThis package can be used through gulp as follows:\n\n```javascript\n(function () {\n    'use strict';\n\n    // Initialize variables\n    var gulp = require('gulp');\n    var pot = require('gulp-l10n-pot');\n\n    // ==================== TRANSLATIONS ==================== //\n    gulp.task('translations-extract', function () {\n        // Generate template file\n        pot.htmlToPot({\n            package: 'test file',\n            src: '../resources/views/**/*.html',\n            destination: '../resources/translations/po/translations.pot'\n        });\n\n        // Generate default language translations\n        pot.htmlToPo({\n            package: 'test file',\n            src: '../resources/views/**/*.html',\n            destination: '../resources/translations/po/en-us.po',\n            language: 'en-us'\n        });\n    });\n});\n```\n\n## Translation Keys\n\nIf translation keys are used, all the occurrences of a translation key will be accumulated in one entry.\nThe translation value will be the first occurrence of the translation key in any file.\n\nYou should be careful to set the same translation for the same keys.\n\n## Auto-generate translation keys\n\nYou can choose to let the algorithm auto-generate the translation keys for you, in case you need to have keys but\nyou are struggling with name conventions.\n\nThe auto-generated translation key will include the file path, the tag name, the element id (if any) and the translation\ncontent (if no element id) to make sure you have unique and self-explanatory ids.\n\nTo auto-generate the keys, use the `auto_generate_keys` and `path_prefix` parameters as follows:\n\n```javascript\n(function () {\n    'use strict';\n\n    // Initialize variables\n    var gulp = require('gulp');\n    var pot = require('gulp-l10n-pot');\n\n    // ==================== TRANSLATIONS ==================== //\n    gulp.task('translations-extract', function () {\n        // Generate template file\n        pot.htmlToPot({\n            auto_generate_keys: true,\n            path_prefix: '/resources/views/',\n            package: 'test file',\n            src: '../resources/views/**/*.html',\n            destination: '../resources/translations/po/translations.pot'\n        });\n\n        // Generate default language translations\n        pot.htmlToPo({\n            auto_generate_keys: true,\n            path_prefix: '/resources/views/',\n            package: 'test file',\n            src: '../resources/views/**/*.html',\n            destination: '../resources/translations/po/en-us.po',\n            language: 'en-us'\n        });\n    });\n});\n```\n\n## Known issues\n\n* It does not extract the line of the file\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpandaplatform%2Fgulp-l10n-pot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpandaplatform%2Fgulp-l10n-pot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpandaplatform%2Fgulp-l10n-pot/lists"}