react and react-dom.
⚙️ Setup
1. Wrap your app in the provider
🛠️ Backend: Create a new chat
Before users can chat, create a new Quetzal chat on the backend:🔄 Frontend: Setting up the chat
Use theuseQuetzalChat hook in your component:
Initialize the chat on load
getChatMetadata under the hood and store the quetzalChatId and participants in context.
✉️ Fetching + Translating Messages
1. Fetch messages from your backend
2. Fetch existing translations
3. Request translations if missing
4. Construct final message objects
🌐 Updating Participant Locale
If a participant changes their language in your app:👁️ Managing Message Display State
The SDK tracks whether a message is showing the translated or original version:Set display state:
Get current state:
🧠 Full Integration Flow
| Step | Description |
|---|---|
| 1️⃣ | Backend calls /chat/new with participants and internal chat ID |
| 2️⃣ | Frontend calls setUpChat(externalChatId) |
| 3️⃣ | Call setCurrentParticipantId(participantId) |
| 4️⃣ | Fetch your app’s chat messages |
| 5️⃣ | Call fetchTranslationsByExternalIdAndStore(messageIds) |
| 6️⃣ | Use translateBatchMessagesAndStore() if needed |
| 7️⃣ | Use getTranslationForCurrentParticipant(msg.id) for each message |
| 8️⃣ | Use setTranslatedMessageDisplayState() to control toggle UI |
| 9️⃣ | On language change, call maybeUpdateChat() |
🧪 Example UI Toggle
🔌 Additional Resources
Hosted Demo: http://chatdemo.getquetzal.com/ Demo Project Repo: https://github.com/mubtAAhij/thumbtack-quetzal-demoStart translating conversations effortlessly with Quetzal.
