{"id":19703471,"url":"https://github.com/crowdin/android-studio-plugin","last_synced_at":"2025-04-06T10:10:59.989Z","repository":{"id":17414980,"uuid":"81931232","full_name":"crowdin/android-studio-plugin","owner":"crowdin","description":"Integrate your Android project with Crowdin","archived":false,"fork":false,"pushed_at":"2025-03-17T08:21:14.000Z","size":13043,"stargazers_count":62,"open_issues_count":1,"forks_count":29,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-30T09:09:17.077Z","etag":null,"topics":["android","android-studio-plugin","hacktoberfest","i18n","ide","intellij","intellij-plugin","internationalization","l10n","localization"],"latest_commit_sha":null,"homepage":"https://support.crowdin.com/android-studio/","language":"Java","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/crowdin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-02-14T09:58:07.000Z","updated_at":"2025-03-23T19:42:48.000Z","dependencies_parsed_at":"2023-10-03T12:49:27.195Z","dependency_job_id":"54b587e4-63a4-473f-b769-3406b2ee6fb4","html_url":"https://github.com/crowdin/android-studio-plugin","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fandroid-studio-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fandroid-studio-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fandroid-studio-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fandroid-studio-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crowdin","download_url":"https://codeload.github.com/crowdin/android-studio-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247464220,"owners_count":20942970,"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","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-studio-plugin","hacktoberfest","i18n","ide","intellij","intellij-plugin","internationalization","l10n","localization"],"created_at":"2024-11-11T21:17:58.455Z","updated_at":"2025-04-06T10:10:59.967Z","avatar_url":"https://github.com/crowdin.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://support.crowdin.com/assets/logos/symbol/png/crowdin-symbol-cWhite.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://support.crowdin.com/assets/logos/symbol/png/crowdin-symbol-cDark.png\"\u003e\n    \u003cimg width=\"150\" height=\"150\" src=\"https://support.crowdin.com/assets/logos/symbol/png/crowdin-symbol-cDark.png\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n# Crowdin Android Studio Plugin [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Fcrowdin%2Fandroid-studio-plugin\u0026text=Manage%20and%20synchronize%20your%20localization%20resources%20with%20Crowdin%20project%20instantly%20from%20IDE)\n\nIntegrate your Android Studio projects with Crowdin to streamline the localization process. The plugin allows you to instantly upload new source strings to your Crowdin project, autocomplete string keys, check translation progress and download translations from Crowdin.\n\nThe plugin is compatible with all the **JetBrains IDE's** such as PHPStorm, IntelliJ Idea and other :rocket:\n\n\u003cdiv align=\"center\"\u003e\n\n[![Tests](https://github.com/crowdin/android-studio-plugin/actions/workflows/basic.yml/badge.svg)](https://github.com/crowdin/android-studio-plugin/actions/workflows/basic.yml)\n[![codecov](https://codecov.io/gh/crowdin/android-studio-plugin/branch/master/graph/badge.svg)](https://codecov.io/gh/crowdin/android-studio-plugin)\n[![JetBrains IntelliJ plugins](https://img.shields.io/jetbrains/plugin/d/9463-crowdin?cacheSeconds=50000)](https://plugins.jetbrains.com/plugin/9463-crowdin)\n[![JetBrains IntelliJ Plugins](https://img.shields.io/jetbrains/plugin/r/stars/9463-crowdin?cacheSeconds=50000)](https://plugins.jetbrains.com/plugin/9463-crowdin)\n![GitHub contributors](https://img.shields.io/github/contributors/crowdin/android-studio-plugin?logo=github\u0026cacheSeconds=50000)\n[![GitHub](https://img.shields.io/github/license/crowdin/android-studio-plugin?cacheSeconds=50000)](https://github.com/crowdin/android-studio-plugin/blob/master/LICENSE)\n\n\u003c/div\u003e\n\n## Features\n\n### Upload source files to Crowdin\n\nUpload source files to Crowdin for translation using the _Upload_ tab of the plugin panel. It displays all the source files matching the specified pattern in the configuration file.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"resources/upload.gif\" data-canonical-src=\"resources/upload.gif\" width=\"600\" height=\"auto\" align=\"center\"/\u003e\u003c/p\u003e\n\nYou can also upload existing translations to Crowdin using the _Upload_ tab.\n\n### Download source and translation files from Crowdin\n\nDownload source and translation files from Crowdin using the _Download_ tab. It displays all the translation files matching the specified pattern in the configuration file. You can download translations for all target languages, specific target language as well as download source files edited in Crowdin.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"resources/download.gif\" data-canonical-src=\"resources/download.gif\" width=\"600\" height=\"auto\" align=\"center\"/\u003e\u003c/p\u003e\n\nYou can also upload and download sources and translations by right-clicking on the file in your project tree and selecting the appropriate option.\n\nIf you are using string-based projects, the list of bundles available for download is displayed in the _Download_ tab.\n\n### String keys autocompletion\n\nUse string keys in your code fetched from Crowdin and available in autocomplete suggestions. Whenever a user types something, the IDE autocompletion will suggest available string keys from Crowdin. The suggestion also includes the string text, so you can easily find the right key.\n\nThere is a possibility to configure file extensions, where the string keys autocompletion will appear. By default, autocompletion is turned on and available in all files.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"resources/autocomplete.gif\" data-canonical-src=\"resources/autocomplete.gif\" width=\"600\" height=\"auto\" align=\"center\"/\u003e\u003c/p\u003e\n\n### Track translation and proofreading progress\n\nTrack progress of translated and approved strings for each file and target language.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"resources/progress.gif\" data-canonical-src=\"resources/progress.gif\" width=\"600\" height=\"auto\" align=\"center\"/\u003e\u003c/p\u003e\n\n## Setup\n\n### Installation\n\nInstall plugin via [JetBrains Plugin repository](https://plugins.jetbrains.com/idea/plugin/9463-crowdin).\n\n### Obtain credentials\n\n- Create a new Personal Access Token in your Crowdin Account settings.\n- Get the Project ID in the _Tools_ \u003e _API_ section on your Crowdin project page.\n\n### Configuration\n\n#### Credentials\n\nTo start using this plugin, create a file with project credentials named *crowdin.yml* in the root directory of the project.\n\n```yml\nproject_id: your-project-id\napi_token: your-api-token\n```\n\nIf you are using Crowdin Enterprise, you also need to specify the `base_url`:\n\n```yml\nbase_url: https://{organization-name}.api.crowdin.com\n```\n\nYou can also load the credentials from environment variables:\n\n```yml\nproject_id_env: CROWDIN_PROJECT_ID\napi_token_env: CROWDIN_TOKEN\nbase_url_env: CROWDIN_BASE_URL\n```\n\nIf mixed, `project_id`, `api_token` and `base_url` are prioritized:\n\n```yml\nproject_id_env: CROWDIN_PROJECT_ID                     # Low priority\napi_token_env: CROWDIN_TOKEN                           # Low priority\nbase_url_env: CROWDIN_URL                              # Low priority\nproject_id: your-project-id                            # High priority\napi_token: your-api-token                              # High priority\nbase_url: https://{organization-name}.api.crowdin.com  # High priority\n```\n\n**Tip**: The above options can also be set specifically in the Crowdin plugin settings: `File \u003e Settings \u003e Tools \u003e Crowdin`.\n\n#### Source files and translations\n\nTo define source and translation patterns, use the `files' key. Example:\n\n```yml\npreserve_hierarchy: true\n\nfiles:\n  - source: \"app/src/main/res/values/strings.xml\"\n    translation: \"app/src/main/res/values-%android_code%/%original_file_name%\"\n  - source: \"ext/src/main/res/values/file.xml\"\n    translation: \"ext/src/main/res/values-%android_code%/%original_file_name%\"\n```\n\nUse `preserve_hierarchy` if your project contains multiple modules that you want to localize with the same source file names.\n\n\u003e [!WARNING]\n\u003e Both `source` and `translation` keys should be specified.\n\n\u003e [!NOTE]\n\u003e If `preserve_hierarchy` is set to `true`, the plugin will add the path to your translation pattern.\n\u003e\n\u003e ```yml\n\u003e preserve_hierarchy: true\n\u003e\n\u003e files:\n\u003e   - source: \"**/values/strings.xml\"\n\u003e     translation: \"/values-%two_letters_code%/%original_file_name%\" #CORRECT\n\u003e     # This will be converted to 'app/src/main/res/values-%two_letter_code%/%original_file_name%' export pattern for each file\n\u003e ```\n\n#### Additional properties\n\n##### Branch\n\nIf you are using the branching functionality in Crowdin, you can specify the branch name in the configuration file:\n\n```yml\nbranch: main\n```\n\nAlternatively, you can enable the [Use Git Branch](#use-git-branch) option in the plugin settings to use the local git branch name as the Crowdin branch name.\n\n\u003e [!WARNING]\n\u003e For **string-based** projects, the branch name must be specified either in the configuration file or in the plugin settings.\n\n##### File properties\n\nTo attach labels to the uploaded strings, use `labels`:\n\n```yml\nfiles:\n  - source: \"**/values/strings.xml\"\n    translation: \"/values-%two_letters_code%/%original_file_name%\"\n    labels:\n      - android\n      - help-menu\n```\n\nTo specify excluded target languages, use `excluded_target_languages`:\n\n```yml\nfiles:\n  - source: \"**/values/strings.xml\"\n    translation: \"/values-%two_letters_code%/%original_file_name%\"\n    excluded_target_languages:\n      - uk\n      - fr\n```\n\nFor String-based projects, use the `update_strings` option to update strings with the same identifiers and the `cleanup_mode` option to remove strings that are not present in the uploaded file:\n\n```yml\nfiles:\n  - source: \"**/values/strings.xml\"\n    translation: \"/values-%two_letters_code%/%original_file_name%\"\n    update_strings: true\n    cleanup_mode: true\n```\n\nIt's also possible to disable escaping special characters (`=`, `:`, `!` and `#`):\n\n```yml\nfiles:\n  - source: \"**/values/strings.xml\"\n    translation: \"/values-%two_letters_code%/%original_file_name%\"\n    escape_special_characters: 0\n```\n\n##### Translations upload options\n\nThe following properties can be used to configure the import options for uploaded translations:\n\n- `import_eq_suggestions` - Defines whether to add a translation if it's the same as the source string.\n- `auto_approve_imported` - Mark uploaded translations as approved.\n- `translate_hidden` - Allow translations upload to hidden source strings.\n\n```yml\n# Applies to the default behavior and all files\nimport_eq_suggestions: true\nauto_approve_imported: true\ntranslate_hidden: true\n```\n\n#### Placeholders\n\nSee the [Placeholders](https://support.crowdin.com/configuration-file/#placeholders) article to put appropriate variables.\n\n\u003e [!TIP]\n\u003e `%android_code%` placeholder means a format such as `'fr-rCA'` ([\u003cISO 639-1\u003e](http://www.loc.gov/standards/iso639-2/php/code_list.php) -r[\u003cISO 3166-1-alpha-2\u003e](https://www.iso.org/obp/ui/#iso:pub:PUB500001:en)). When applying format with only two-letter language code such as `'fr'`([\u003cISO 639-1\u003e](http://www.loc.gov/standards/iso639-2/php/code_list.php)) format, use `%two_letters_code%` placeholder.\n\n\u003e [!WARNING]\n\u003e Currently, the `%original_path%` placeholder is not supported.\n\n### Plugin settings\n\nPlugin settings are located in `File \u003e Settings \u003e Tools \u003e Crowdin`.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"resources/settings.png\" data-canonical-src=\"resources/settings.png\" width=\"600\" height=\"auto\" align=\"center\"/\u003e\u003c/p\u003e\n\n#### Credentials\n\nIn the settings menu, you can specify the Project ID, API Token and base URL. Same options can be defined in `crowdin.yml` configuration file.\nIf these settings are specified in both places, `crowdin.yml` and `Settings` menu, plugin will use values from the configuration file.\n\n#### Use Git Branch\n\nIf you are using the branching functionality in Crowdin, you can enable `Use Git Branch` in the plugin settings, so the plugin will use the local git branch name as the Crowdin branch name.\n\nYou can also set a specific branch name to work with by using the `branch` option in the `crowdin.yml` configuration file.\n\nIf you are not using branching, make sure the `Use Git Branch` option is disabled and `branch` is not defined in the `crowdin.yml` file.\n\n\u003e [!WARNING]\n\u003e For **string-based** projects, the branch name must be specified either in the configuration file or in the plugin settings.\n\n#### Automatic uploads\n\nBy default, the plugin will automatically upload source files to Crowdin on every change. To disable this, please uncheck the `Automatically upload on change` option.\n\n#### String keys autocompletion\n\nBy default, the string keys autocompletion feature is enabled for all files. You can configure file extensions where you want it to work. For example, to enable autocompletion only in json and xml files, the `File extensions` settings should be set to `json,xml`.\n\nTo disable autocompletion, uncheck the `Enable autocompletion` option.\n\n## Seeking Assistance\n\nIf you find any problems or would like to suggest a feature, please read the [How can I contribute](/CONTRIBUTING.md#how-can-i-contribute) section in our contributing guidelines.\n\nNeed help working with Crowdin Android Studio Plugin or have a question? Visit our [Community Forum](https://community.crowdin.com/).\n\n## Contributing\n\nIf you would like to contribute please read the [Contributing](/CONTRIBUTING.md) guidelines.\n\n## License\n\u003cpre\u003e\nThe Crowdin Android Studio Plugin is licensed under the MIT License. \nSee the LICENSE.md file distributed with this work for additional \ninformation regarding copyright ownership.\n\nExcept as contained in the LICENSE file, the name(s) of the above copyright\nholders shall not be used in advertising or otherwise to promote the sale,\nuse or other dealings in this Software without prior written authorization.\n\u003c/pre\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdin%2Fandroid-studio-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrowdin%2Fandroid-studio-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdin%2Fandroid-studio-plugin/lists"}