{"id":24044644,"url":"https://github.com/dev-cetera/df_config","last_synced_at":"2026-04-24T12:03:55.074Z","repository":{"id":251479460,"uuid":"837543548","full_name":"dev-cetera/df_config","owner":"dev-cetera","description":"A package that provides methods to load configuration data and access it at runtime.","archived":false,"fork":false,"pushed_at":"2025-07-12T23:12:51.000Z","size":169,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-08T06:03:22.216Z","etag":null,"topics":["cache","dart","json","library","localization","package","parser","utils"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/df_config","language":"Dart","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/dev-cetera.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["robmllze","dev-cetera"],"patreon":"RobertMollentze"}},"created_at":"2024-08-03T09:39:03.000Z","updated_at":"2025-10-01T02:59:55.000Z","dependencies_parsed_at":"2024-08-03T10:47:46.725Z","dependency_job_id":"9424512a-3296-4cb8-875d-fcf8f131585a","html_url":"https://github.com/dev-cetera/df_config","commit_stats":null,"previous_names":["robmllze/df_config","devcetra/df_config","dev-cetera/df_config"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dev-cetera/df_config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-cetera%2Fdf_config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-cetera%2Fdf_config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-cetera%2Fdf_config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-cetera%2Fdf_config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dev-cetera","download_url":"https://codeload.github.com/dev-cetera/df_config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-cetera%2Fdf_config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32222483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T10:26:35.452Z","status":"ssl_error","status_checked_at":"2026-04-24T10:25:27.643Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["cache","dart","json","library","localization","package","parser","utils"],"created_at":"2025-01-08T23:32:36.073Z","updated_at":"2026-04-24T12:03:55.027Z","avatar_url":"https://github.com/dev-cetera.png","language":"Dart","funding_links":["https://github.com/sponsors/robmllze","https://github.com/sponsors/dev-cetera","https://patreon.com/RobertMollentze","https://www.buymeacoffee.com/dev_cetera","https://www.patreon.com/c/RobertMollentze"],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://www.buymeacoffee.com/dev_cetera\" target=\"_blank\"\u003e\u003cimg align=\"right\" src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" height=\"48\"\u003e\u003c/a\u003e\n\u003ca href=\"https://discord.gg/gEQ8y2nfyX\" target=\"_blank\"\u003e\u003cimg align=\"right\" src=\"https://raw.githubusercontent.com/dev-cetera/.github/refs/heads/main/assets/icons/discord_icon/discord_icon.svg\" height=\"48\"\u003e\u003c/a\u003e\n\nDart \u0026 Flutter Packages by dev-cetera.com \u0026 contributors.\n\n[![sponsor](https://img.shields.io/badge/sponsor-grey?logo=github-sponsors)](https://github.com/sponsors/dev-cetera)\n[![patreon](https://img.shields.io/badge/patreon-grey?logo=patreon)](https://www.patreon.com/c/RobertMollentze)\n[![pub](https://img.shields.io/pub/v/df_config.svg)](https://pub.dev/packages/df_config)\n[![tag](https://img.shields.io/badge/tag-v0.7.5-purple?logo=github)](https://github.com/dev-cetera/df_config/tree/v0.7.5)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/dev-cetera/df_config/main/LICENSE)\n\n---\n\n[![banner](https://github.com/dev-cetera/df_safer_dart/blob/v0.7.5/doc/assets/banner.png?raw=true)](https://github.com/dev-cetera)\n\n\u003c!-- BEGIN _README_CONTENT --\u003e\n\n## Summary\n\nThis package is designed to streamline loading and managing configuration data at runtime. It includes a powerful translation manager for handling multiple languages with ease, making localization straightforward. You can dynamically replace placeholders with runtime arguments and manage translations in formats like YAML, JSON, and more.\n\n## Example\n\n```dart\nimport 'package:df_config/df_config.dart';\nimport 'package:df_config/df_translate.dart';\n\n// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n\n// NOTE TO FLUTTER DEVELOPERS:\n// To use this in Flutter, you need to refresh the widget tree after\n// changing the language. You can do this by wrapping your MaterialApp in a\n// ValueListenable and using a ValueNotifier, or any other method that\n// rebuilds the widget tree when the language changes.\n\n// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n\nvoid main() async {\n  // Create a reader that reads a YAML files.\n  final reader = TranslationFileReader(\n    // Specify the directory paths where the translation files are located,\n    // e.g. assets/translations/en-us.yaml.\n    translationsDirPath: ['assets', 'translations'],\n    // You can also choose ConfigFileType.JSON, ConfigFileType.JSONC or\n    // ConfigFileType.CSV.\n    fileType: ConfigFileType.YAML,\n    fileReader: (filePath) async {\n      print(filePath);\n      // Read the file here and return its contents.\n      final contents = fileData[filePath] ?? '';\n      return contents;\n    },\n  );\n\n  // German.\n  await reader.read('de-de');\n  print('Example App||app.title'.tr()); // prints \"BEISPIEL!!\"\n\n  // Spanish.\n  await reader.read('es-es');\n  print('Example App||app.title'.tr()); // prints \"EJEMPLO!!\"\n\n  // English.\n  await reader.read('en-us');\n  print('Example App||app.title'.tr()); // prints \"ENGLISH X EXAMPLE!!! additional\"\n\n  // Undefined, defaults to \"Example App\".\n  await reader.read('qwerty');\n  print(\n    'Example {App;;app}||app.title'.tr(args: {'app': 'Application'}),\n  );\n\n  // You can also pass custom arguments to the translation.\n  await reader.read('en-us');\n  print(\n    'This is the \u003c\u003c\u003cExample||app.title\u003e\u003e\u003e'.tr(\n      args: {\n        // Replace {additional} in the translation with 'of the app!'.\n        'additional': 'of the app!',\n      },\n    ),\n  ); // prints \"This is the ENGLISH X EXAMPLE!!! of the app!\"\n}\n\n// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n\nfinal fileData = {\n  'assets/translations/de-de.yaml': YAML_FILE_DATA_DE_DE,\n  'assets/translations/es-es.yaml': YAML_FILE_DATA_ES_ES,\n  'assets/translations/en-us.yaml': YAML_FILE_DATA_EN_US,\n};\n\nconst YAML_FILE_DATA_ES_ES = '''\napp:\n  title: EJEMPLO!!!\n''';\n\nconst YAML_FILE_DATA_DE_DE = '''\napp:\n  title: BEISPIEL!!!\n''';\n\nconst YAML_FILE_DATA_EN_US = '''\nexample: X\napp:\n  example: EXAMPLE\n  # You can reference other translations within this file, and use placeholders\n  # to insert values during runtime.\n  title: ENGLISH \u003c\u003c\u003cexample\u003e\u003e\u003e \u003c\u003c\u003capp.example\u003e\u003e\u003e!!! {additional}\n''';\n```\n\n\u003c!-- END _README_CONTENT --\u003e\n\n---\n\n☝️ Please refer to the [API reference](https://pub.dev/documentation/df_config/) for more information.\n\n---\n\n## 💬 Contributing and Discussions\n\nThis is an open-source project, and we warmly welcome contributions from everyone, regardless of experience level. Whether you're a seasoned developer or just starting out, contributing to this project is a fantastic way to learn, share your knowledge, and make a meaningful impact on the community.\n\n### ☝️ Ways you can contribute\n\n- **Buy me a coffee:** If you'd like to support the project financially, consider [buying me a coffee](https://www.buymeacoffee.com/dev_cetera). Your support helps cover the costs of development and keeps the project growing.\n- **Find us on Discord:** Feel free to ask questions and engage with the community here: https://discord.gg/gEQ8y2nfyX.\n- **Share your ideas:** Every perspective matters, and your ideas can spark innovation.\n- **Help others:** Engage with other users by offering advice, solutions, or troubleshooting assistance.\n- **Report bugs:** Help us identify and fix issues to make the project more robust.\n- **Suggest improvements or new features:** Your ideas can help shape the future of the project.\n- **Help clarify documentation:** Good documentation is key to accessibility. You can make it easier for others to get started by improving or expanding our documentation.\n- **Write articles:** Share your knowledge by writing tutorials, guides, or blog posts about your experiences with the project. It's a great way to contribute and help others learn.\n\nNo matter how you choose to contribute, your involvement is greatly appreciated and valued!\n\n### ☕ We drink a lot of coffee...\n\nIf you're enjoying this package and find it valuable, consider showing your appreciation with a small donation. Every bit helps in supporting future development. You can donate here: https://www.buymeacoffee.com/dev_cetera\n\n\u003ca href=\"https://www.buymeacoffee.com/dev_cetera\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" height=\"40\"\u003e\u003c/a\u003e\n\n## 🧑‍⚖️ License\n\nThis project is released under the [MIT License](https://raw.githubusercontent.com/dev-cetera/df_config/main/LICENSE). See [LICENSE](https://raw.githubusercontent.com/dev-cetera/df_config/main/LICENSE) for more information.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-cetera%2Fdf_config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-cetera%2Fdf_config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-cetera%2Fdf_config/lists"}