Skip to content

ymoslem/DesktopTranslator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DesktopTranslator DesktopTranslator

DesktopTranslator

Local cross-platform machine translation GUI, based on CTranslate2

DesktopTranslator

Table of contents

  1. Download DesktopTranslator
  2. Translation Models
  3. [Optional] Build Stand-alone Executable
  4. References

Download DesktopTranslator

DesktopTranslator DesktopTranslator

Translation Models

Currently, DesktopTranslator supports CTranslate2 models, and SentencePiece subwording models (you need both). If you have a model for OpenNMT-py, OpenNMT-tf, or FairSeq, you can convert it to the CTranslate2 format.

French-to-English Generic Model

If you would like to try out the app and you do not have a model, you can download my French-to-English generic model here.

  1. Unzip the fren.zip archive of the French-to-English generic model you just downloaded. It has two folders, ct2_model for the CTranslate2 model and sp_model for the SentencePiece subwording models of French (source) and English (target).
  2. In DesktopTranslator, click the CTranslate2 Model button, and select the ct2_model folder.
  3. Click the SentencePiece Model button, navigate to the sp_model folder, and select fr.model.
  4. The default Beam Size is 3. You can increase it to 5, which can be slower, but sometimes results in better translation quality.
  5. In the left input text-area, type some text in French or use the File menu > Open... to open a *.txt file.
  6. Click the Translate button.

M2M-100 Multilingual Model

Now, DesktopTranslator supports M2M-100 (Fan et al., 2020), a multilingual model that can translate between 100 languages.

DesktopTranslator

To use M2M-100 models in DesktopTranslator, please follow these steps:

  1. Download one of the M2M-100 models, converted to the CTranslate2 format:
    a. M2M-100 418M-parameter model; smaller and faster, but sometimes less accurate; or
    b. M2M-100 1.2B-parameter model; bigger and somehow slower, but sometimes more accurate.
  2. Extract the *.zip arhieve of the model you downloaded.
  3. In DesktopTranslator, click the CTranslate2 Model button, and select the m2m100_418m or m2m100_12b folder.
  4. Click the SentencePiece Model button, and from the same model folder, select sentencepiece.model.
  5. Important: From the M2M-100 dropdown list, select the target language to which you want to translate. This step is different between M2M-100 and some other models. M2M-100 models require a language code prefix. For other models that do not require this, keep the "None" option.
  6. The default Beam Size is 3. You can increase it to 5, which can be slower, but sometimes results in better translation quality.
  7. In the left input text-area, type some text in any language or your choice of use the File menu > Open... to open a *.txt file.
  8. Click the Translate button.

OPUS Models

OPUS models (Tatoeba-Challenge) can be used and they can be more efficient. As of now, only bilingual models are supported by DesktopTranslator. Note: You must convert an OPUS model to the CTranslate2 format first. Example command:

ct2-opus-mt-converter --model_dir opus_model_dir --output_dir ct2_model_dir --quantization int8

The source and target tokenization SentencePiece models can be found in the same archive of the downloaded model.

[Optional] Build Stand-alone Executable

Build Windows Installer

If you want to adjust the code and then build an installer yourself, you can follow these steps:

  1. Install PyInstaller:
pip3 install pyinstaller
  1. To use PyInstaller, specify the Python file name and the argument -w to hide the console window:
pyinstaller -y -w "translator.py"

If you would like to add an extra folder, e.g. "utils", the command will be:

pyinstaller -y -w --add-data="utils/*;utils/" "translator.py"
  1. Try the *.exe file under "dist\translator" to make sure it works. It might complain about the Pmw library. The solution is either remove the Balloon lines, or add this file to the same folder as the translate.py and run the aforementioned PyInstaller command again.
  2. Compress the contents of the “dist” directory created by PyInstaller into a *.zip archive. For example, you can find a folder called "translator"; give it the name you like, e.g. "DesktopTranslator", and add it to a *.zip archive.
  3. Download and install NSIS.
  4. Launch NSIS, click Installer based on a .ZIP file, and then click Open to locate the *.zip archive you have just created.
  5. If you want to make the files installed (extracted) to the “Program Files” of the target user, in the Default Folder enter $PROGRAMFILES
  6. If you want to add a shortcut to the internal *.exe file on the Desktop after installation, you can add something like this to the file “Modern.nsh” located at: "C:\Program Files\NSIS\Contrib\zip2exe". Depending on your OS, the path could be at “Program Files (x86)”. Note that the EXE file path should be consistent with the path you selected under NSIS’s “Default Folder” drop-down menu, the folder name, and the EXE file name.
Section "Desktop Shortcut" SectionX
    SetShellVarContext current
    CreateShortCut "$DESKTOP\DesktopTranslator.lnk" "$PROGRAMFILES\DesktopTranslator\translator.exe"
SectionEnd

If you get a permission error while trying to save the edited version of “Modern.nsh”, right-click your text editor (e.g. Notepad), and select "Run as administrator". Then, copy the contents of the file into a new file, and save it to the original location.
9. Finally, click the NSIS Generate button, which will create the *.exe installer that can be shipped to other Windows machines, without the need to install any extra requirements. 10. After installation, if you applied step #8, you should find an icon on the Desktop. To uninstall, you can simply remove the app folder from "Program Files". For more NSIS options, check this example.

Build macOS App

  1. Install py2app
pip3 install py2app==0.25
  1. Create a setup.py file in the same directory.
  2. Run this command in the Terminal. You can add the option -A to test the app first.
python3 setup.py py2app

References