Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translate #28

Closed
wants to merge 63 commits into from
Closed

Translate #28

wants to merge 63 commits into from

Conversation

duong2417
Copy link
Contributor

Ý tưởng:

  • Không dịch tin nhắn của chính mình (tiết kiệm request)
  • 2 loại dịch:
  • Dịch toàn bộ tin nhắn: Dịch theo phân trang, kéo tới đâu thì dịch tin nhắn tới đó.
  • Dịch từng tin nhắn: đè vào tin nhắn sẽ hiện popup
  • Ngôn ngữ app: dùng localeName, người dùng muốn đổi thì vào Cài đặt của điện thoại
  • Không dùng Cloud Functions: do không biết dùng và vì e nghĩ nó dịch ngay khi có tin nhắn mới thêm vào Firestore ngay cả khi người dùng chưa chọn dịch. Phương pháp e dùng thay thế: dịch ở local flutter app:
    __ Get translation từ Firestore về theo đường dẫn "translations/{messageId}" (như trong ảnh), thêm collection "translations" để tách biệt với collection "public" (để khi tải tin nhắn về nó không bị tải luôn translations).
    __ Kiểm tra mã ngôn ngữ đã có trên Firestore thì không cần Gemini dịch, mà lấy từ Firestore luôn.r
    __ Gom những ngôn ngữ chưa có trên Firestore lại, rồi đẩy cho Gemini dịch, yêu cầu nó trả về phản hồi với key là MÃ ngôn ngữ.
    __ Cuối cùng đẩy lên Firestore theo đường dẫn lúc nãy để BỔ SUNG ngôn ngữ & dịch cho translation của message đó.
    385391420-ca650946-4b70-4211-83fc-03eb67f24d0c

Có 2 loại Settings:
1. Settings dịch:

  • Nhập ngôn ngữ thay vì chọn chúng từ danh sách có sẵn: có thể nhập ngôn ngữ hoặc mã ngôn ngữ (vietnamese, vietnam, vi...), khi config Gemini thì bảo nó chuyển đổi sang MÃ ngôn ngữ trong phản hồi trả về (để khi dịch thì check translation trên - - - Firestore đã có mã ngôn ngữ đó chưa)
  • Trong màn nhập ngôn ngữ, có những hint gợi ý (cũng là những ngôn ngữ đã từng chọn (history))
    2. Settings app (mới demo chưa thực thi):
  • Tùy chọn "Tắt dịch toàn bộ tin nhắn"
  • Tùy chọn "Tự động dịch tin nhắn mỗi lần vào app":
  • Sử dụng ngôn ngữ mặc định (locale)
  • Sử dụng ngôn ngữ yêu thích
  • Tùy chọn "Dịch nhanh bằng cách bấm vào tin nhấn 1 lần duy nhất": đối với dịch từng tin nhắn.
  • Có thể chứa tùy chọn ngôn ngữ yêu thích (như anh Đệ đã làm)
  • Có thể chứa tùy chọn ngôn ngữ app (như anh Phi đã làm)

Hạn chế:

  • chưa có backend (em sẽ update dần), mọi thứ đang xử lý ở frontend.
  • Một số chỗ còn dùng FutureBuilder thay vì BlocBuilder theo kiến trúc của dự án.

Video Demo:
https://github.com/user-attachments/assets/02917bb1-56b1-483f-af3f-c41022c25135

suesitran and others added 30 commits June 9, 2024 12:43
* upgrade to MVVM

* Part 5: clean code

* Add Unit test for GenAIWorker

* Part 3 - Widget tests

* Remove genai worker test

* Update main UI test

* Add singleton implementation

* Unit test for GenAI Bloc

* Fix GetIt singleton
* upgrade to MVVM

* Part 5: clean code

* Add Unit test for GenAIWorker

* Part 3 - Widget tests

* Remove genai worker test

* Update main UI test

* Add singleton implementation

* Unit test for GenAI Bloc

* Fix GetIt singleton
* Change App identifier

* Setup Firebase project

* Add Firebase setting into gitignore

* Add firebase_core

* Restructure to prepare for ATC app

* fix lint

* Package migration
* Change App identifier

* Setup Firebase project

* Add Firebase setting into gitignore

* Add firebase_core

* Restructure to prepare for ATC app

* fix lint

* Package migration
* add localisation

* add missing gitignore

* Add vietnamese

* Add locale support to BuildContext

* Update test

* Test locale, and format code
* add localisation

* add missing gitignore

* Add vietnamese

* Add locale support to BuildContext

* Update test

* Test locale, and format code
* Setup Firebase CLI

* Draft - public chat UI and functionality

* Draft - Add cloud function

* Draft - Add temporary navigation to go to public chat screen after login success

* read message from data, and send to Gemini to translate

* Add generation config

* Write translated result to firestore

* Fix infinite translation, and avoid translation if message not available

* fix crash issue when message first created

* add translation message to UI

* Build and deploy flutter web app, and fix UI

* scroll to end when app launch

* Save user detail into firestore

* Convert to use bloc

* Save user photo URL and display it

* format code

* Fix test

* Change to use rich text
* Setup Firebase CLI

* Draft - public chat UI and functionality

* Draft - Add cloud function

* Draft - Add temporary navigation to go to public chat screen after login success

* read message from data, and send to Gemini to translate

* Add generation config

* Write translated result to firestore

* Fix infinite translation, and avoid translation if message not available

* fix crash issue when message first created

* add translation message to UI

* Build and deploy flutter web app, and fix UI

* scroll to end when app launch

* Save user detail into firestore

* Convert to use bloc

* Save user photo URL and display it

* format code

* Fix test

* Change to use rich text
* Setup Firebase CLI

* Draft - public chat UI and functionality

* Draft - Add cloud function

* Draft - Add temporary navigation to go to public chat screen after login success

* read message from data, and send to Gemini to translate

* Add generation config

* Write translated result to firestore

* Fix infinite translation, and avoid translation if message not available

* fix crash issue when message first created

* add translation message to UI

* Build and deploy flutter web app, and fix UI

* scroll to end when app launch

* Save user detail into firestore

* Convert to use bloc

* Save user photo URL and display it

* format code

* Fix test

* Change to use rich text
* Create GitHub Action to validate PR

* Change flow name

* Update job name

* Remove intl_utils

* Add firebase_options.dart to validate build

* Add codeowner

* Fix bash syntax

* Read secret from env

* fix multi line bash syntax

* Ignore lib/firebase_options.dart in analyze

* check content of lib folder

* check content of lib/firebase_options.dart

* update env param name

* remove checking firebase option content

* exclude firebase_options.dart from dart format

* ignore unused_local_variable for web google sign in button

* ignore invalid_use_of_protected_member

* change to import flutter_bloc

* use const for UserDetailState

* update bash command to exclude only lib/firebase_options.dart from dart format

* add google-services.json for android

* add ios GoogleService-Info.plist

* update dart format command

* update flutter version for ios build

* Add firebase option and google service for iOS build
* Create GitHub Action to validate PR

* Change flow name

* Update job name

* Remove intl_utils

* Add firebase_options.dart to validate build

* Add codeowner

* Fix bash syntax

* Read secret from env

* fix multi line bash syntax

* Ignore lib/firebase_options.dart in analyze

* check content of lib folder

* check content of lib/firebase_options.dart

* update env param name

* remove checking firebase option content

* exclude firebase_options.dart from dart format

* ignore unused_local_variable for web google sign in button

* ignore invalid_use_of_protected_member

* change to import flutter_bloc

* use const for UserDetailState

* update bash command to exclude only lib/firebase_options.dart from dart format

* add google-services.json for android

* add ios GoogleService-Info.plist

* update dart format command

* update flutter version for ios build

* Add firebase option and google service for iOS build
* Create GitHub Action to validate PR

* Change flow name

* Update job name

* Remove intl_utils

* Add firebase_options.dart to validate build

* Add codeowner

* Fix bash syntax

* Read secret from env

* fix multi line bash syntax

* Ignore lib/firebase_options.dart in analyze

* check content of lib folder

* check content of lib/firebase_options.dart

* update env param name

* remove checking firebase option content

* exclude firebase_options.dart from dart format

* ignore unused_local_variable for web google sign in button

* ignore invalid_use_of_protected_member

* change to import flutter_bloc

* use const for UserDetailState

* update bash command to exclude only lib/firebase_options.dart from dart format

* add google-services.json for android

* add ios GoogleService-Info.plist

* update dart format command

* update flutter version for ios build

* Add firebase option and google service for iOS build
duong2417 and others added 27 commits September 29, 2024 21:09
* refresh photo avatar

* remove unused import
* refresh photo avatar

* remove unused import
* refresh photo avatar

* remove unused import
* first draft of merge and deploy script

* Change to use pull_request trigger

* Add firebase.json

* Change to use self-hosted

* do not need to install Firebase CLI
* first draft of merge and deploy script

* Change to use pull_request trigger

* Add firebase.json

* Change to use self-hosted

* do not need to install Firebase CLI
* first draft of merge and deploy script

* Change to use pull_request trigger

* Add firebase.json

* Change to use self-hosted

* do not need to install Firebase CLI
@duong2417 duong2417 requested a review from suesitran as a code owner November 13, 2024 15:13
@duong2417 duong2417 closed this Nov 14, 2024
@duong2417 duong2417 deleted the translate branch November 14, 2024 05:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants