{"id":15529100,"url":"https://github.com/marcinorlowski/android-strings-check","last_synced_at":"2026-04-29T10:04:18.958Z","repository":{"id":101431195,"uuid":"89342447","full_name":"MarcinOrlowski/android-strings-check","owner":"MarcinOrlowski","description":"Tool to diff Android translation XML files","archived":false,"fork":false,"pushed_at":"2018-09-20T15:26:28.000Z","size":19,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-16T22:05:04.038Z","etag":null,"topics":["android","localization","php","xml"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/MarcinOrlowski.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":"2017-04-25T09:28:24.000Z","updated_at":"2021-12-03T20:55:35.000Z","dependencies_parsed_at":"2023-07-02T21:31:23.321Z","dependency_job_id":null,"html_url":"https://github.com/MarcinOrlowski/android-strings-check","commit_stats":{"total_commits":18,"total_committers":1,"mean_commits":18.0,"dds":0.0,"last_synced_commit":"e8fc621e978e306960bd2673beb587ab2bbe1166"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MarcinOrlowski/android-strings-check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinOrlowski%2Fandroid-strings-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinOrlowski%2Fandroid-strings-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinOrlowski%2Fandroid-strings-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinOrlowski%2Fandroid-strings-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarcinOrlowski","download_url":"https://codeload.github.com/MarcinOrlowski/android-strings-check/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinOrlowski%2Fandroid-strings-check/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32420356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"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":["android","localization","php","xml"],"created_at":"2024-10-02T11:16:21.285Z","updated_at":"2026-04-29T10:04:18.942Z","avatar_url":"https://github.com/MarcinOrlowski.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"What it is?\n===========\nIt's developer tool that serves as Simple Android localization resource files (`values/strings.xml`) cross checker.\n\nWhile working on some Android projects back in 2010 I started to face problems keeping all translations in sync.\nThe more languages were added to the project the bigger chanllenge it become to ensure no language stays behind.\n\nSince there were no built-in mechanism to helps me check out which translation lacks what strings, I crafted \nthis small PHP script to help me with the task.\n\nUsage\n=====\n\nScript takes two strings resource files and cross-checks them. First file is considered BASE (reference)\none, second is expected to be translation (LANG) of reference file. Once crosscheck is made report is \ngerating listing all the keys of strings present in BASE but missing in LANG file but alos listing orphaned\nkeys - present in LANG but not found in BASE.\n\nLets'ch check how LANG `values-pl/strings.xml` matches BASE `values/strings.xml` file:\n\n    ./strings-check.php values/strings.xml values-pl/strings.xml\n\nThe report will look like this:\n    \n    Missing in LANG (You need to translate these)\n    File: values-pl/strings.xml\n    ---------------------------------------------\n    show_full_header_action\n    hide_full_header_action\n    recreating_account\n    \n    Not present in BASE (you need to remove it from LANG)\n    File: values/strings.xml\n    -----------------------------------------------------\n    provider_note_yahoo\n    \n    Summary\n    ----------------\n    BASE file: 'values/strings.xml'\n    LANG file: 'values-pl/strings.xml'\n       3 missing strings.\n       1 orphaned strings.\n\nIf you need to deal with more translations, then you need to compare them one by one, yet this shall bash loop should do the trick\n(assuming you got all translations in single `strings.xml` file in each `values-*` folder):\n\n    for i in values-*/strings.xml ; do ./strings-check.php values/strings.xml ${i} ; done\n\nNotes\n=====\n\nI use Debian so PHP interpreter for me resides in `/usr/bin/php`. On your distro it may be `/usr/local/bin/php` or elsewhere (do `which php` to find out). Either update 1st line in the script or just type `php` while invoking:\n\n    php ./strings-check.php values/strings.xml values-pl/strings.xml\n\nRequirements\n============\n\n - PHP 5 (PHP 4 should work as well though)\n - DOM extension (should be enabled by default these days)\n\n\nContributing\n============\n\n Please report any issue spotted using [GitHub's project tracker](https://github.com/MarcinOrlowski/android-strings-check/issues).\n\n If you'd like to contribute to the this project, please [open new ticket](https://github.com/MarcinOrlowski/android-strings-check/issues)\n **before doing any work**. This will help us save your time in case I'd not be able to accept such changes. But if all is good and\n clear then follow common routine:\n\n  * fork the project\n  * create new branch\n  * do your changes\n  * send pull request\n\n\nLicense\n=======\n\n  * Written and copyrighted \u0026copy;2010-2018 by Marcin Orlowski \u003cmail (#) marcinorlowski (.) com\u003e\n  * licensed under the Apache 2.0 license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcinorlowski%2Fandroid-strings-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcinorlowski%2Fandroid-strings-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcinorlowski%2Fandroid-strings-check/lists"}