{"id":13992239,"url":"https://github.com/CodingDoug/universal-translator","last_synced_at":"2025-07-22T15:31:31.336Z","repository":{"id":36350640,"uuid":"151770102","full_name":"CodingDoug/universal-translator","owner":"CodingDoug","description":"Demo app using Firebase and Google Cloud products to implement a \"universal translator\"","archived":false,"fork":false,"pushed_at":"2023-01-09T17:09:11.000Z","size":641,"stargazers_count":39,"open_issues_count":11,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-29T12:38:39.135Z","etag":null,"topics":["android","cloud-functions","cloud-storage","cloud-translation-api","firebase","firestore","google-cloud"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","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/CodingDoug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-05T19:45:18.000Z","updated_at":"2024-01-26T14:24:36.000Z","dependencies_parsed_at":"2023-01-17T00:42:53.760Z","dependency_job_id":null,"html_url":"https://github.com/CodingDoug/universal-translator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CodingDoug/universal-translator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingDoug%2Funiversal-translator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingDoug%2Funiversal-translator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingDoug%2Funiversal-translator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingDoug%2Funiversal-translator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodingDoug","download_url":"https://codeload.github.com/CodingDoug/universal-translator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingDoug%2Funiversal-translator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266520703,"owners_count":23942321,"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-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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","cloud-functions","cloud-storage","cloud-translation-api","firebase","firestore","google-cloud"],"created_at":"2024-08-09T14:01:53.697Z","updated_at":"2025-07-22T15:31:30.407Z","avatar_url":"https://github.com/CodingDoug.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"# BabelFire - a universal translator\n\nThis is a Firebase and Google Cloud powered app used for demo purposes.  It implements a \"universal translator\", where an Android client app records some speech, uploads it to Google Cloud, and receives translations in a variety of languages.  A client web app also receives the translates and speaks them out loud using the browser's speech synthesis API.\n\nThis is a rewrite of [Jen Tong's similar project](https://github.com/mimming/zero-to-app-universal-translator).\n\n## What's here\n\nAt the top level, you'll find:\n\n- `android` - Android app that receives speech and uploads it to Google Cloud for processing\n- `backend` - TypeScript for Cloud Functions on the backend\n- `web` - and the JS / HTML translation viewer\n\n## Setup\n\nThis setup assumes you are already familiar with how Firebase and Google Cloud projects work.\n\n### Project setup\n\n1. Create a Firebase project in the [Firebase console](https://console.firebase.google.com/)\n1. Go to the Authentication product tab and enable Google authentication.\n1. Go to the Database product tab and enable Cloud Firestore.\n1. Go to the Storage product tab and enable Cloud Storage.\n1. Enable Blaze plan billing on the project (required for the Google Cloud APIs used here)\n1. In the [Cloud console](https://console.cloud.google.com/) for the same project, enable both the Cloud Translation API and the Cloud Speech-to-Text API.\n1. Install the [Firebase CLI](https://firebase.google.com/docs/cli/)\n1. Clone this repo.\n\n### Backend project setup\n\n1. `cd backend`\n1. `firebase use --add`, then select the newly created project, and give it the alias \"default\"\n1. `cd functions; npm install` to set up the Cloud Functions node project.\n1. `firebase deploy` to deploy Cloud Functions code, Firestore security rules, and Cloud Storage security rules\n1. Optional - if you want to run the scripts in `functions/dev`, download a service account and place it in `service-account-credentials.json` in the `functions` folder.\n\n### Web app setup\n\n1. `cd web`\n1. `firebase use --add`, then select the newly created project, and give it the alias \"default\"\n1. `firebase deploy` to deploy the web app to Firebase Hosting\n1. Note the given URL for the web site\n\n### Android app setup\n\n1. `cd android`\n1. Add the app to your project in the Firebase console, and be sure to provide the SHA-1 of your debug signing key\n1. Download the `google-services.json` file for your project from the Firebase console, move it to the `app` folder\n1. `./gradlew assembleDebug`\n1. Install the APK on your emulator or device\n\n## Use the demo app\n\n1. Open the web app using the URL given after it was deployed (*.firebaseapp.com)\n1. Select the language in which you want to hear a translation\n1. Launch the Android app\n1. Select the language you want to translate from the dropdown\n1. Push the record button, speak in that language, then push the button again\n1. Wait for the translations to appear in both the Android app and the web app.  The web app will also speak it out loud in the selected language\n\n## Firebase and Google Cloud products used\n\n- [Cloud Firestore](https://firebase.google.com/docs/firestore/)\n- [Firebase Storage](https://firebase.google.com/docs/storage/)\n- [Cloud Functions for Firebase](https://firebase.google.com/docs/functions/)\n- [Firebase Hosting](https://firebase.google.com/docs/hosting/)\n- [Cloud Speech-to-Text API](https://cloud.google.com/speech-to-text/)\n- [Cloud Translation API](https://cloud.google.com/translate/)\n\n## Contributing\n\nPlease read and follow the steps in the [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## License\n\nThe code in this project is licensed under the Apache License 2.0.\n\n```text\nCopyright 2018 Google LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n## Disclaimer\n\nThis is not an officially supported Google product.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCodingDoug%2Funiversal-translator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCodingDoug%2Funiversal-translator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCodingDoug%2Funiversal-translator/lists"}