Skip to content

MAI Translator is a multi-ai-support desktop app, allows user to get translations from multiple resources and manage the translations histories locally.

License

Notifications You must be signed in to change notification settings

terrence-ou/MAI-Translator

Repository files navigation

MAI Translator - a multi-ai supported translator

A multi-ai-supported translator helps getting and managing translations with confidence.

A translator for users who pursuit translation quality

The MAI Translator helps to retrieve translation results from popular language model providers such as DeepL, Claude, and OpenAI. It allows users to compare different versions of translations and select the words, sentences, or paragraphs that best fit the context. Additionally, the MAI Translator enables users to store translation results locally, which can be retrieved at any time as needed. The app also supports text-to-speech readers with enriched voice selections that help get a better sense of the contents.

Features

  1. Fetching translation results from multiple LLM providers with rich model selections;
  2. Manage translation records locally with easy file drag-n-drop features;
  3. Light / Dark theme;
  4. Text-to-Speech-supported text reader with multiple voices enabled;

Get Started

You'll need API keys from OpenAI, DeepL, and Claude to ensure translations work properly. The app can still work when one or two keys are missing. However, the OpenAI API key is required for the Text-to-Speech functionalities if the text reader is important to you.

Tech Stack

Category Technology
Software Framework Electron
Frontend Library React
Build Tool Vite
State Management Redux Toolkit
UI and Styling shadcn, Tailwind
Testing Jest, Testing Library
Code Sign and Notarize Electron-forge

File Structure

├── .github/
│   └── workflows/                  # GitHub Actions for CI/CD
├── public/                         # Static assets (images, icons, HTML)
├── resources/                      # Additional resources for the app
├── src/                            # Main source code
│   ├── main/                       # Main process code
│   │   ├── assets/                 # Assets for the main process
│   │   ├── lib/                    # Libraries for main process logic
│   │   └── index.ts                # Entry point for the main process
│   ├── preload/                    # Preload scripts
│   │   ├── index.ts                # Preload script entry point
│   │   └── index.d.ts              # TypeScript declarations for preload
│   ├── renderer/                   # Renderer process code (front-end)
│   │   ├── src/                    # Source for renderer
│   │   │   ├── __tests__/          # Tests for renderer components
│   │   │   ├── assets/             # Assets for the renderer
│   │   │   ├── components/         # React components
│   │   │   ├── hooks/              # Custom React hooks
│   │   │   ├── store/              # Redux State management
│   │   │   └── utils/              # Utility functions
│   │   ├── App.tsx                 # Main application component
│   │   ├── env.d.ts                # TypeScript environment declarations
│   │   ├── main.tsx                # Main entry point for the renderer
│   │   └── index.html              # HTML template for the renderer
│   └── shared/                     # Shared code between main and renderer
├── .gitignore                      # Git ignore patterns
├── components.json                 # Component manifest/configuration
├── electron.vite.config.ts         # Vite configuration for Electron
├── forge.config.cjs                # Electron Forge configuration
├── jest.config.ts                  # Jest testing configuration
├── LICENSE                         # Project license
├── package.json                    # Project metadata and dependencies
├── package-lock.json               # Dependency lock file
├── postcss.config.js               # PostCSS configuration
├── README.md                       # Project documentation
├── tailwind.config.js              # Tailwind CSS configuration
├── tsconfig.json                   # TypeScript configuration (general)
├── tsconfig.node.json              # TypeScript configuration for Node.js
└── tsconfig.web.json               # TypeScript configuration for web