{"id":23163501,"url":"https://github.com/alexanderkrutov/reseda","last_synced_at":"2026-04-15T16:32:04.379Z","repository":{"id":90440682,"uuid":"106427258","full_name":"AlexanderKrutov/Reseda","owner":"AlexanderKrutov","description":"Reseda is a tool for handy management of Android localization resources.","archived":false,"fork":false,"pushed_at":"2017-12-22T14:48:19.000Z","size":32,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-07T10:03:45.254Z","etag":null,"topics":["android","android-res-translation","android-resource-translation","android-tool","localization","localization-tool","resources","translation"],"latest_commit_sha":null,"homepage":"","language":"C#","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/AlexanderKrutov.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-10-10T14:19:59.000Z","updated_at":"2021-01-07T02:40:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"344e9092-d09c-4375-ab54-cd31644e2b0b","html_url":"https://github.com/AlexanderKrutov/Reseda","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AlexanderKrutov/Reseda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderKrutov%2FReseda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderKrutov%2FReseda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderKrutov%2FReseda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderKrutov%2FReseda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexanderKrutov","download_url":"https://codeload.github.com/AlexanderKrutov/Reseda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderKrutov%2FReseda/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31849727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"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":["android","android-res-translation","android-resource-translation","android-tool","localization","localization-tool","resources","translation"],"created_at":"2024-12-18T00:18:24.374Z","updated_at":"2026-04-15T16:32:04.365Z","avatar_url":"https://github.com/AlexanderKrutov.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reseda\n\n## What is it?\n\nReseda (abbreviation from **Res**ource **ed**itor for **A**ndroid) is tool for handy management of Android localization resources.\nThe main idea of the tool is to convert original resource sets (*strings.xml* and *arrays.xml*) to a single CSV file which can be imported to any spreadsheet application for convenient side-by side translation.\nLater, the translated CSV can be exported from spreadsheet editor and converted back to Android resource files. \n\n## What Reseda is not\n* Reseda is not a translation tool\n* Reseda is not a spreadsheet editor\n\n## General Usage\n  \n1. Convert Android localization resources to CSV file:\n\n  ```bat\n  Reseda -in-res \"\u003cPathToMyApp\u003e\\app\\src\\main\\res\" -out-csv \"localization.csv\"\n  ```\n\n2. Import the CSV file to any spreadsheet editor application, translate resource items in columns side-by-side.\n\n3. Export the sheet to CSV file.\n\n4. Convert translated CSV back to resources:\n\n  ```bat\n  Reseda -in-csv \"translated.csv\" -out-res \"\u003cPathToMyApp\u003e\\app\\src\\main\\res\"\n  ```\n\n## Command Line Reference\n\n| Parameter               | Description |\n|-------------------------|-------------|\n| `-in-csv \u003cfilepath\u003e`    | path to input CSV file with localization resources. |\n| `-out-res \u003cdirpath\u003e`    | path to output folder where the generated XML resource files will be placed. |\n| `-in-res \u003cdirpath\u003e`      | path to input folder with XML resource files that will be converted to CSV. |\n| `-out-csv \u003cfilepath\u003e`   | path to output CSV file with localization resources. |\n| `-locales \u003clocales\u003e`    | list of comma-separated locales. Use it to filter unused localizations.\u003cbr\u003e*Example:*\u003cbr\u003e`-locales \"ru, en, uk\"`\u003cbr\u003emeans use default (always ON), Russian, English and Ukrainian locales. |\n| `-separator \u003cchar\u003e`     | CSV separator symbol. Usually `\",\"` or `\";\"`.\u003cbr\u003eDefault is `\",\"`. |\n| `-indent \u003cstring\u003e`      | XML tree indent string. Only white-space chars allowed.\u003cbr\u003eDefault is `\"  \"` (2 spaces). |\n| `-dontexit`             | flag indicating that application will not exit until any key will be pressed. |\n| `-keep-empty-rows`      | keep empty rows on converting resources from XML to CSV and vise versa. |\n| `-force-untranslated`   | force untranslated strings, i.e. if the flag is ON, missing translations to be replaced with values from default locale. |\n| `-h` or `-help`         | prints the help. |\n\n## Samples\nTODO\n\n## CSV File Format\nReseda uses CSV ([Comma Separated Values](https://en.wikipedia.org/wiki/Comma-separated_values)) file format for interchanging between Android localization resources and spreadsheet editors.\nThe file should match special agreements or rules in order to be correctly processed by Reseda tool.\n\n### File Header\nFirst line of the CSV file is a special header that contains information about columns.\nHeader columns are following:\n\n| Column # | Title        | Description |\n|----------|--------------|-------------|\n| 1        | `META`       | Meta column. Has special markers to instruct Reseda how the resource item should be processed. See below. |\n| 2        | `NAME`       | Resource item name. It can be name of Android string resource item name, Android array resource name or comment text. |\n| 3        |              | Value of resource item for default localization. |\n| 4        | `\u003clocale_1\u003e` | Value of resource item for localization `\u003clocale_1\u003e`. | \n| ...      | ...          | ... |\n| N        | `\u003clocale_N\u003e` | Value of resource item for localization `\u003clocale_N\u003e`. `N` is a number of application localizations. For example if an app has default localization (English) and additional localizations `ru`, `de`, `N` is 2. |\n| N+1      | `DOCS`      | Optional documentation column, content of `documentation` attribute of Android resource item.\n\nLines 2 contain values of resource items that can be processed by Reseda.\n\n### Meta Column\nContains information how the resource item should be processed.\nThere are several markers that the column can contain:\n\n| Marker | Meaning |\n|--------|---------|\n| `-`    | The row should be excluded from the resource items list while processing CSV file. Use it for temporarily excluding strings or for internal CSV comments that should not get into output resource files. |\n| `#`    | The comment that should get into output resource file. |\n| `f`    | The *un**F**ormatted* marker. Attribute `formatted=\"false\"` will be added to such resource items. |\n| `t`    | The *un**T**ranslatable* marker. Resource items marked with this meta symbol should be present in default localization resource set, but will not get into other localizations. Attribute `translatable=\"false\"` will be added to such resource items. |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexanderkrutov%2Freseda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexanderkrutov%2Freseda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexanderkrutov%2Freseda/lists"}