{"id":31572253,"url":"https://github.com/lyh990517/android-notion-string-plugin","last_synced_at":"2025-10-05T13:50:44.350Z","repository":{"id":312041498,"uuid":"1031626962","full_name":"lyh990517/android-notion-string-plugin","owner":"lyh990517","description":"🌍 Gradle plugin that generates Android string resources from Notion database with 35+ languages support","archived":false,"fork":false,"pushed_at":"2025-09-15T02:46:58.000Z","size":183,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-15T04:29:48.018Z","etag":null,"topics":["android","automation","gradle","gradle-plugin","kotlin","localization","multi-language","notion","notion-api","notion-database","string-resources"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/lyh990517.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-04T05:09:54.000Z","updated_at":"2025-09-15T02:47:01.000Z","dependencies_parsed_at":"2025-08-28T12:55:45.786Z","dependency_job_id":"2a2a840c-4ed8-4562-a39b-1472821d0225","html_url":"https://github.com/lyh990517/android-notion-string-plugin","commit_stats":null,"previous_names":["lyh990517/notion-string-automation","lyh990517/android-notion-string-plugin"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/lyh990517/android-notion-string-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyh990517%2Fandroid-notion-string-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyh990517%2Fandroid-notion-string-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyh990517%2Fandroid-notion-string-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyh990517%2Fandroid-notion-string-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lyh990517","download_url":"https://codeload.github.com/lyh990517/android-notion-string-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyh990517%2Fandroid-notion-string-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278464272,"owners_count":25991177,"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-10-05T02:00:06.059Z","response_time":54,"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":["android","automation","gradle","gradle-plugin","kotlin","localization","multi-language","notion","notion-api","notion-database","string-resources"],"created_at":"2025-10-05T13:50:39.164Z","updated_at":"2025-10-05T13:50:44.344Z","avatar_url":"https://github.com/lyh990517.png","language":"Kotlin","readme":"# 🌍 Notion Stringboard Plugin\n\nA powerful Gradle plugin that automatically generates Android string resources from your Notion database with advanced filtering and multi-language support.\n\n## ✨ Features\n\n- 🌐 **Multi-language support**: Generate string resources for 35+ languages\n- 🔄 **Automated sync**: Fetch translations directly from Notion database\n- 📱 **Android optimized**: Generates proper Android XML string resources\n- 🏗️ **Build integration**: Seamlessly integrates with your Gradle build process\n- 🎯 **Advanced filtering**: Use complex queries to filter your Notion data\n- 📊 **Sorting options**: Sort by properties, timestamps, and custom criteria\n\n## 🚀 Quick Setup\n\n### 1️⃣ Apply the plugin\n\nIn your `build.gradle.kts` (Module level):\n\n```kotlin\nplugins {\n    id(\"io.github.lyh990517.notion-stringboard\") version \"1.0.10\"\n}\n```\n\n### 2️⃣ Configure the plugin\n\n```kotlin\nstringboard {\n    // Required: Your Notion credentials\n    notionApiKey = \"your_notion_integration_token\"\n    dataSourceId = \"your_notion_datasource_id\"\n\n    // Required: Output directory for generated resources\n    outputDir = \"${project.rootDir}/app/src/main/res\"\n\n    // Required: Column name in Notion that contains Android string resource IDs (e.g., \"resource_id_1\", \"project_a_home_1\")\n    idPropertyName = \"Resource ID\"\n\n    // Required: Define your supported languages\n    languages = listOf(\n        Language.English(\"String: BASE\"),\n        Language.Korean(\"String: KOR\"), \n        Language.Japanese(\"String: JPN\")\n    )\n\n    // Optional: Advanced filtering and sorting (if not specified, all data from the database will be fetched)\n    queryBuilder = NotionQueryBuilder()\n        .filter {\n            richText { \"String: BASE\" contains \"hello\" } and\n            select { \"Status\" equals \"Published\" }\n        }\n        .sort {\n            property { \"Resource ID\" by Direction.ASCENDING }\n        }\n}\n```\n\n### 3️⃣ Set up Your Notion Database\n\nCreate a Notion database with these columns:\n\u003e 📋 **Reference**: [Sample database template](https://wealthy-client-873.notion.site/25b8bc2ec9148051ac4beb6b9aaf914a?v=25b8bc2ec91480a299ff000c8da4da11\u0026source=copy_link)\n\n| Column Name  | Type      | Purpose                      |\n|--------------|-----------|------------------------------|\n| Resource ID  | Title     | Android string resource name |\n| String: BASE | Rich Text | English/default text         |\n| String: KOR  | Rich Text | Korean translation           |\n| String: JPN  | Rich Text | Japanese translation         |\n| Status       | Select    | Publication status           |\n\n**Example data:**\n| Resource ID | String: BASE | String: KOR | String: JPN | Status |\n|-------------|--------------|-------------|-------------|---------|\n| hello_world | Hello World! | 안녕하세요! | こんにちは！ | Published |\n| welcome_msg | Welcome | 환영합니다 | ようこそ | Published |\n\n\u003cdetails\u003e\n\u003csummary\u003e📸 \u003cb\u003eDatabase Screenshot\u003c/b\u003e\u003c/summary\u003e\n\n\u003cimg width=\"1463\" height=\"342\" alt=\"스크린샷 2025-09-05 오후 1 28 43\" src=\"https://github.com/user-attachments/assets/db3e09f9-7b34-407f-b626-50b01c011fc6\" /\u003e\n\n\u003c/details\u003e\n\n---\n\n## ⚙️ Advanced Configuration\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🌐 Extended Language Support\u003c/b\u003e\u003c/summary\u003e\n\nThe plugin supports **35+ languages**. Add any combination:\n\n```kotlin\nlanguages = listOf(\n    // Asian Languages\n    Language.Korean(\"String: KOR\"),\n    Language.Japanese(\"String: JPN\"), \n    Language.ChiSimplified(\"String: CHS\"),\n    Language.ChiTraditional(\"String: CHT\"),\n    Language.Thai(\"String: THA\"),\n    Language.Vietnamese(\"String: VIE\"),\n    \n    // European Languages  \n    Language.English(\"String: BASE\"),\n    Language.Spanish(\"String: SPA\"),\n    Language.French(\"String: FRA\"),\n    Language.German(\"String: DEU\"),\n    Language.Italian(\"String: ITA\"),\n    Language.Portuguese(\"String: POR\"),\n    Language.Dutch(\"String: NLD\"),\n    Language.Russian(\"String: RUS\"),\n    \n    // And many more...\n)\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🎯 Advanced Filtering \u0026 Sorting\u003c/b\u003e\u003c/summary\u003e\n\nUse the powerful query builder to filter your data:\n\n```kotlin\nqueryBuilder = NotionQueryBuilder()\n    .filter {\n        // Text filters\n        richText { \"String: BASE\" contains \"welcome\" } and\n        richText { \"String: KOR\".isNotEmpty } and\n        \n        // Select/Multi-select filters  \n        select { \"Status\" equals \"Published\" } and\n        multiSelect { \"Tags\" contains \"Mobile\" } and\n        \n        // Boolean filters\n        checkBox { \"Deprecated\" equals false } or\n        \n        // Combine with OR\n        (select { \"Priority\" equals \"High\" } or \n         select { \"Priority\" equals \"Medium\" })\n    }\n    .sort {\n        // Sort by properties\n        property { \"Resource ID\" by Direction.ASCENDING }\n        property { \"Priority\" by Direction.DESCENDING }\n        \n        // Sort by timestamps\n        timestamp { Timestamp.CREATED_TIME by Direction.DESCENDING }\n        timestamp { Timestamp.LAST_EDITED_TIME by Direction.ASCENDING }\n    }\n```\n\n\u003c/details\u003e\n\n---\n\n## 🔑 Getting Notion Credentials\n\n### Create Integration \u0026 Get Credentials\n\n1. Go to [🔗 Notion Integrations](https://www.notion.so/my-integrations)\n2. Click **\"New integration\"**, name it and select your workspace\n3. Copy the **\"Internal Integration Token\"**\n4. Open your Notion database and copy the datasource ID:\n\n\u003cdetails\u003e\n\u003csummary\u003e📸 \u003cb\u003eSee screenshot\u003c/b\u003e\u003c/summary\u003e\n\n\u003cimg width=\"305\" height=\"759\" alt=\"스크린샷 2025-09-05 오전 11 58 46\" src=\"https://github.com/user-attachments/assets/3310350c-b93c-4172-92cd-4f6ca66738e1\" /\u003e\n\n\u003c/details\u003e\n\n### Secure Storage\n\nAdd to your `local.properties`:\n\n```properties\nNOTION_API_KEY=your_integration_token_here\nDATA_SOURCE_ID=your_database_id_here\n```\n\nThen use in `build.gradle.kts`:\n\n```kotlin\nval localProperties = Properties().apply {\n    load(rootProject.file(\"local.properties\").inputStream())\n}\n\nstringboard {\n    notionApiKey = localProperties.getProperty(\"NOTION_API_KEY\")\n    dataSourceId = localProperties.getProperty(\"DATA_SOURCE_ID\")\n    // ... other config\n}\n```\n\n---\n\n## 🎯 Usage\n\n### Generate String Resources\n\n```bash\n./gradlew fetchStringboard\n```\n\n**This generates:**\n\n- 🇺🇸 `values/strings.xml` (English)\n- 🇰🇷 `values-ko/strings.xml` (Korean)\n- 🇯🇵 `values-ja/strings.xml` (Japanese)\n- 🌍 And all other configured languages...\n\n---\n\n## 🌐 Supported Languages\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eView all 35+ supported languages\u003c/b\u003e\u003c/summary\u003e\n\n| Region          | Languages                                                                                                                                                                                                                                                                                                    |\n|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **🌏 Asian**    | Korean (ko), Japanese (ja), Chinese Simplified (zh-rCN), Chinese Traditional (zh-rTW), Thai (th), Vietnamese (vi), Hindi (hi), Indonesian (id), Malay (ms), Filipino (fil)                                                                                                                                   |\n| **🌍 European** | English (default), Spanish (es), French (fr), German (de), Italian (it), Portuguese (pt), Dutch (nl), Russian (ru), Polish (pl), Czech (cs), Hungarian (hu), Romanian (ro), Croatian (hr), Serbian (sr), Bulgarian (bg), Greek (el), Swedish (sv), Norwegian (no), Danish (da), Finnish (fi), Ukrainian (uk) |\n| **🌎 Others**   | Arabic (ar), Hebrew (iw), Turkish (tr), Persian (fa), Swahili (sw), Bengali (bn), Tamil (ta), Telugu (te), Gujarati (gu), Marathi (mr), Punjabi (pa), Urdu (ur)                                                                                                                                              |\n\n\u003c/details\u003e\n\n---\n\n## 📋 Requirements\n\n- ✅ Android Gradle Plugin 7.0+\n- ✅ Gradle 7.0+\n- ✅ Java/Kotlin 17+\n- ✅ Active Notion workspace and database\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit issues and pull requests.\n\n---\n\n## 📄 License\n\nThis project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## ℹ️ Information\n\n- **Notion API version**: `2025-09-03`\n\n## 🔗 Links\n\n- 🔌 [**Gradle Plugin Portal**](https://plugins.gradle.org/plugin/io.github.lyh990517.notion-stringboard)\n- 📚 [**Notion API Documentation**](https://developers.notion.com/)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ for Android developers who love automation**\n\n⭐ **Star this repo if it helped you!** ⭐\n\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyh990517%2Fandroid-notion-string-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flyh990517%2Fandroid-notion-string-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyh990517%2Fandroid-notion-string-plugin/lists"}