npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@spiralup/auto-translate

v2.0.2

Published

Translate text to different languages using Google or Microsoft translate, for example during JHipster code generation.

Downloads

97

Readme

Auto-translate

Translate texts to different languages using local dictionaries or the Google/Microsoft translation API. This package can be used during code generation (for example from JHipster) to create language translations. The Google/Microsoft translation API is used if the translation is not found in the local dictionary. After a term is translated with the Google/Microsoft API, the translation is saved to the local dictionary. Translations in the local dictionary can be manually edited.

The local dictionaries are defined on two levels: on the global and on the project level. The project level dictionary contains project specific translations, and the global dictionary contains translations used in all projects. Text translation is first searched in the project dictionary. If it is not found there, then the global dictionary is searched, and if the translation does not exist in the global dictionary then the cloud translation API is used. If the translation is found through the cloud API, the translated term is saved in both the project and the global dictionary.

The local dictionary contains translation data in the json format that can be managed through a text editor.

At the beginning of the translation process dictionaries are loaded from disk. To initiate the translator and load the dictionaries from disk the method Translator.initTranslator() should be called.

To translate a text from one language to another the function Translator.translateText('text to be translated', 'text to be translated', 'en', 'es') should be called. The first parameter in the function call is the key under which this translation is saved in dictionaries and the second parameter is the actual text to translate. Usually the first and the second parameters are the same, but there is some flexibility in this approach. During the translation session this function can be called multiple times.

After the translation session is finished, to persist the translations (including any new translations obtained through the APIs) on the disk, the method Translator.saveDictionary() should be called.

Installation

npm install auto-translate

Configuration

Before using auto-translate, you have to configure it.

Configuration is defined in the config file. The configuration is by default put in the user's home directory in the .auto-translate/.auto-translate-config.json file. If the configuration file does not exist, it will be created with the default values.

Config file .auto-translate-config.json with default values:

{
    "automaticTranslation": false,
    "translatorProvider": "google",
    "azureTranslateKey": "please-enter-the-key",
    "googleServiceAccountFile": "/path/to/service-account-key.json"
}

Config file options

  • automaticTranslation [true || false]: if automatic translation is true, then auto-translate will use cloud API for translation of text not found in dictionaries, otherwise the translation will use only local dictionaries for the translation. Default value is false.
  • translationProvider [azure || google]: define which translation provider will be used. Default value is google.
  • azureTranslateKey: API key from Azure
  • googleServiceAccountFile: Path to Google service account key JSON file

Config file .auto-translate-config.json configured to use Google API:

{
    "automaticTranslation": true,
    "translatorProvider": "google",
    "azureTranslateKey": "please-enter-the-key",
    "googleServiceAccountFile": "/home/user/.auto-translate/google-service-account.json"
}

The path to service account file is just an example.

Config file .auto-translate-config.json configured to use Azure API:

{
    "automaticTranslation": true,
    "translatorProvider": "azure",
    "azureTranslateKey":  "<azure-key>",
    "googleTranslateKey": "please-enter-the-key"             
}

The Azure key is just an example.

Usage

1. Configure translations

As described in the previous chapter, you must configure the translation first through config files.

2. Initialize translations

Before using the auto-translate package, you must initialize auto-translate with paths and file names.

Translator.initTranslator(
    {
        pathToGlobalConfig: USER_HOME_FOLDER,
        configFileName: AUTO_TRANSLATE_CONFIG_FILE,
        pathToGlobalDictionary: USER_HOME_FOLDER,
        globalDictFileName: GLOBAL_DICTIONARY_FILE,
        pathToProject: PROJECT_FOLDER,
        projectDictFileName: PROJECT_DICTIONARY_FILE
    }
); 
  • pathToGlobalConfig: (optional) path to the folder containing configuration file(s). If not defined, config folder will be created in the user home .auto-translate directory.
  • configFileName: (optional) name of the config file. If this parameter is not defined, the default name will be .auto-translate-config.json.
  • pathToGlobalDictionary: (optional) path to the directory with the global dictionary. If this path is not defined, global config path will also be used for the global dictionary.
  • globalDictFileName: (optional) name of the global dictionary file, the default name is .global-dictionary.json.
  • pathToProject: (optional) path to the project directory. If pathToProject is not defined, then the project dictionary will not be used.
  • projectDictFileName: (optional) name of the project dictionary file. Default name is .project-dictionary.json.

3. Translate text

To translate a text from one language to another use the translateText function.

let translationPromise = Translator.translateText('translation', 'translation','en','es');

translationPromise.then(translation => {
    console.log('Translation -> ' + translation);
}, reason => {
    console.log('Rejected -> ' + reason);
})

Function translateText is defined as translateText(key, textToTranslate, fromLang, toLang)

  • @param key - the key that will be used to search in local dictionaries. Usually this is equal to the text that needs to be translated, but could also be some form of expression.
  • @param textToTranslate - text that needs to be translated from one language to another
  • @param fromLang - language from which the text is translated
  • @param toLang - language to which the text is translated

The function returns a promise.

4. Save dictionaries

To save translations in local and project dictionaries, you should call the saveDictionary method.

Translator.saveDictionary();

Dependencies

This package depends on the following packages: mstranslator, google-translate, lodash, nconf, promise.