rophy / gp-js-client

JavaScript/Node.js client for Globalization Pipeline

Home Page:https://developer.ibm.com/open/ibm-bluemix-globalization-pipeline-service/node-js-sdk/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Globalization Pipeline Client for JavaScript

This is the JavaScript SDK for the Globalization Pipeline Bluemix service. The Globalization Pipeline service makes it easy for you to provide your global customers with Bluemix applications translated into the languages in which they work. This SDK currently supports Node.js.

npm version Build Status Coverage Status Coverity Status

News

Sample

For a working Bluemix application sample, see gp-nodejs-sample.

Quickstart

  • You should familiarize yourself with the service itself. A good place to begin is by reading the Quick Start Guide and the official Getting Started with IBM Globalization documentation. The documentation explains how to find the service on Bluemix, create a new service instance, create a new bundle, and access the translated messages.

  • Next, add g11n-pipeline to your project, as well as cfenv and optional.

    npm install --save g11n-pipeline cfenv optional

  • Load the client object as follows (using cfenv ).

var optional = require('optional');
var appEnv = require('cfenv').getAppEnv();
var gpClient = require('g11n-pipeline').getClient(
  optional('./local-credentials.json')   // if it exists, use local-credentials.json
    || {appEnv: appEnv}                  // otherwise, the appEnv
);
  • For local testing, create a local-credentials.json file with the credentials as given in the bound service:

    {
      "credentials": {
        "url": "https://…",
        "userId": "…",
        "password": "……",
        "instanceId": "………"
      }
    }
    

Using

To fetch the strings for a bundle named "hello", first create a bundle accessor:

    var mybundle = gpClient.bundle('hello');

Then, call the getStrings function with a callback:

    mybundle.getStrings({ languageId: 'es'}, function (err, result) {
        if (err) {
            // handle err..
            console.error(err);
        } else {
            var myStrings = result.resourceStrings;
            console.dir(myStrings);
        }
    });

This code snippet will output the translated strings such as the following:

    {
        hello:   '¡Hola!',
        goodbye: '¡Adiós!',}

Translation Requests

To create a Translation request:

    gpClient.tr({
      name: 'My first TR',
      domains: [ 'HEALTHC' ],

      emails: ['my_real_email@me.example.com'],
      partner: 'IBM',
      targetLanguagesByBundle: {
          bundle1: [ 'es', 'fr', 'de' ], // review bundle1’s Spanish, etc… 
          bundle2: [ 'zh-Hans' ]   // review bundle2’s Simplified Chinese…
      },
      notes: [ 'This is a mobile health advice application.' ],
      status: 'SUBMITTED' // request to submit it right away.
    })
    .create((err, tr) => {
        if(err) { … handle err  }

        console.log('TR submitted with ID:', tr.id);
        console.log('Estimated completion:', 
            tr.estimatedCompletion.toLocaleString());
    });

To then check on the status of that request:

    gpClient.tr('333cfaecabdedbd8fa16a24b626848d6')
    .getInfo((err, tr) => {
        if(err) { … handle err  }

        console.log('Current status:', tr.status);
    });

Async

Note that all calls that take a callback are asynchronous. For example, the following code:

var bundle = client.bundle('someBundle');
bundle.create({}, function(){});
bundle.uploadStrings({}, function(){});

…will fail, because the bundle someBundle hasn’t been created by the time the uploadStrings call is made. Instead, make the uploadStrings call within a callback:

var bundle = client.bundle('someBundle');
bundle.create({}, function(){
    
    bundle.uploadStrings({}, function(){});
});

Testing

See TESTING.md

API convention

APIs take a callback and use this general pattern:

    gpClient.function( { /*opts*/ } ,  function callback(err, ...))
  • opts: an object containing input parameters, if needed.
  • err: if truthy, indicates an error has occured.
  • ...: other parameters (optional)

Sometimes the opts object is optional. If this is the case, the API doc will indicate it with this notation: [opts] For example, bundle.getInfo(cb) and bundle.getInfo({}, cb) are equivalent.

These APIs may be promisified easily using a library such as Q's nfcall:

    return Q.ninvoke(bundle, "delete", {});
    return Q.ninvoke(gpClient, "getBundleList", {});

Also, note that there are aliases from the swagger doc function names to the convenience name. For example, bundle.uploadResourceStrings can be used in place of bundle.uploadStrings.

All language identifiers are IETF BCP47 codes.

API reference

Classes

Client
Bundle
User
ResourceEntry

ResourceEntry Creating this object does not modify any data.

TranslationRequest

Members

serviceRegex

a Regex for matching the service. Usage: var credentials = require('cfEnv') .getAppEnv().getServiceCreds(gp.serviceRegex); (except that it needs to match by label)

exampleCredentials

Example credentials such as for documentation.

Functions

getClient(params)Client

Construct a g11n-pipeline client. params.credentials is required unless params.appEnv is supplied.

Typedefs

basicCallback : function

Basic Callback used throughout the SDK

ExternalService : Object

info about external services available

WordCountsInfo : object

Client

Kind: global class

new Client()

Client object for Globalization Pipeline

client.version

Version number of the REST service used. Currently ‘V2’.

Kind: instance property of Client

client.ping

Verify that there is access to the server. An error result will be returned if there is a problem. On success, the data returned can be ignored. (Note: this is a synonym for getServiceInfo())

Kind: instance property of Client

Param Type Description
args object (ignored)
cb basicCallback

client.supportedTranslations([opts], cb)

This function returns a map from source language(s) to target language(s). Example: { en: ['de', 'ja']} meaning English translates to German and Japanese.

Kind: instance method of Client

Param Type Default Description
[opts] object {} ignored
cb supportedTranslationsCallback (err, map-of-languages)

client.getServiceInfo([opts], cb)

Get global information about this service, not specific to one service instance.

Kind: instance method of Client

Param Type Default Description
[opts] object {} ignored argument
cb serviceInfoCallback

client.getServiceInstanceInfo([opts], cb)

Get information about our specific service instance.

Kind: instance method of Client

Param Type Default Description
[opts] object {} options
[opts.serviceInstance] string request a specific service instance’s info
cb serviceInstanceInfoCallback

client.createUser(args, cb)

Create a user

Kind: instance method of Client

Param Type Description
args object
args.type string User type (ADMINISTRATOR, TRANSLATOR, or READER)
args.displayName string Optional display name for the user. This can be any string and is displayed in the service dashboard.
args.comment string Optional comment
args.bundles Array set of accessible bundle ids. Use ['*'] for “all bundles”
args.metadata Object.<string, string> optional key/value pairs for user metadata
args.externalId string optional external user ID for your application’s use
cb getUserCallback passed a new User object

client.bundle(opts) ⇒ Bundle

Create a bundle access object. This doesn’t create the bundle itself, just a handle object. Call create() on the bundle to create it.

Kind: instance method of Client

Param Type Description
opts Object String (id) or map {id: bundleId, serviceInstance: serviceInstanceId}

client.user(id) ⇒ User

Create a user access object. This doesn’t create the user itself, nor query the server, but is just a handle object. Use createUser() to create a user.

Kind: instance method of Client

Param Type Description
id Object String (id) or map {id: bundleId, serviceInstance: serviceInstanceId}

client.users([opts], cb)

List users. Callback is called with an array of user access objects.

Kind: instance method of Client

Param Type Default Description
[opts] Object {} options
cb listUsersCallback callback

client.bundles([opts], cb)

List bundles. Callback is called with an map of bundle access objects.

Kind: instance method of Client

Param Type Default Description
[opts] Object {} options
cb listBundlesCallback given a map of Bundle objects

client.tr(opts) ⇒ TranslationRequest

Create a Translation Request access object. This doesn’t create the TR itself, just a handle object. Call create() on the translation request to create it.

Kind: instance method of Client

Param Type Description
opts string | Object.<string, Object> Can be a string (id) or map with values (for a new TR). See TranslationRequest.

client.trs([opts], cb)

List Translation Requests. Callback is called with an map of TR access objects.

Kind: instance method of Client

Param Type Default Description
[opts] Object {} optional map of options
cb getTranslationRequestsCallback callback yielding a map of Translation Requests

Client~supportedTranslationsCallback : function

Callback returned by supportedTranslations()

Kind: inner typedef of Client

Param Type Description
err object error, or null
languages Object.<string, Array.<string>> map from source language to array of target languages Example: { en: ['de', 'ja']} meaning English translates to German and Japanese.

Client~serviceInfoCallback : function

Callback used by getServiceInfo()

Kind: inner typedef of Client

Param Type Description
err object error, or null
info Object detailed information about the service
info.supportedTranslation Object.<string, Array.<string>> map from source language to array of target languages Example: { en: ['de', 'ja']} meaning English translates to German and Japanese.
info.supportedHumanTranslation Object.<string, Array.<string>> map from source language to array of target languages supported for human translation. Example: { en: ['de', 'ja']} meaning English translates to German and Japanese.
info.externalServices Array.<ExternalService> info about external services available

Client~serviceInstanceInfoCallback : function

Callback returned by getServiceInstanceInfo()

Kind: inner typedef of Client

Param Type Description
err object error, or null
instanceInfo object Additional information about the service instance
instanceInfo.updatedBy string information about how our service instance was updated
instanceInfo.updatedAt date when the instance was last updated
instanceInfo.region string the Bluemix region name
instanceInfo.cfServiceInstanceId string the CloudFoundry service instance ID
instanceInfo.serviceId string this is equivalent to the service instance ID
instanceInfo.orgId string this is the Bluemix organization ID
instanceInfo.spaceId string this is the Bluemix space ID
instanceInfo.planId string this is the Bluemix plan ID
instanceInfo.htServiceEnabled boolean true if the Human Translation service is enabled
instanceInfo.usage object usage information
instanceInfo.usage.size number the size of resource data used by the Globalization Pipeline instance in bytes
instanceInfo.disabled boolean true if this service has been set as disabled by Bluemix

Client~listUsersCallback : function

Called by users()

Kind: inner typedef of Client
See: User

Param Type Description
err object error, or null
users Object.<string, User> map from user ID to User object

Client~listBundlesCallback : function

Bundle list callback

Kind: inner typedef of Client

Param Type Description
err object error, or null
bundles Object.<string, Bundle> map from bundle ID to Bundle object

Bundle

Kind: global class
Properties

Name Type Description
updatedBy string userid that updated this bundle
updatedAt Date date when the bundle was last updated
sourceLanguage string bcp47 id of the source language
targetLanguages Array.<string> array of target langauge bcp47 ids
readOnly boolean true if this bundle can only be read
metadata Object.<string, string> array of user-editable metadata

new Bundle(gp, props)

Note: this constructor is not usually called directly, use Client.bundle(id)

Param Type Description
gp Client parent g11n-pipeline client object
props Object properties to inherit

bundle.getInfoFields

List of fields usable with Bundle.getInfo()

Kind: instance property of Bundle

bundle.delete([opts], cb)

Delete this bundle.

Kind: instance method of Bundle

Param Type Default Description
[opts] Object {} options
cb basicCallback

bundle.create(body, cb)

Create this bundle with the specified params. Note that on failure, such as an illegal language being specified, the bundle is not created.

Kind: instance method of Bundle

Param Type Description
body Object
body.sourceLanguage string bcp47 id of source language such as 'en'
body.targetLanguages Array optional array of target languages
body.metadata Object optional metadata for the bundle
body.partner string optional ID of partner assigned to translate this bundle
body.notes Array.<string> optional note to translators
cb basicCallback

bundle.getInfo([opts], cb)

Get bundle info. Returns a new Bundle object with additional fields populated.

Kind: instance method of Bundle

Param Type Default Description
[opts] Object {} Options object
opts.fields String Comma separated list of fields
opts.translationStatusMetricsByLanguage Boolean Optional field (false by default)
opts.reviewStatusMetricsByLanguage Boolean Optional field (false by default)
opts.partnerStatusMetricsByLanguage Boolean Optional field (false by default)
cb getInfoCallback callback (err, Bundle )

bundle.languages() ⇒ Array.<String>

Return all of the languages (source and target) for this bundle. The source language will be the first element. Will return undefined if this bundle was not returned by getInfo().

Kind: instance method of Bundle

bundle.getStrings(opts, cb)

Fetch one language's strings

Kind: instance method of Bundle

Param Type Default Description
opts Object options
opts.languageId String language to fetch
[opts.fallback] boolean false Whether if source language value is used if translated value is not available
[opts.fields] string Optional fields separated by comma
cb basicCallback callback (err, { resourceStrings: { strings … } })

bundle.entry(opts)

Create an entry object. Doesn't fetch data,

Kind: instance method of Bundle
See: ResourceEntry~getInfo

Param Type Description
opts Object options
opts.languageId String language
opts.resourceKey String resource key

bundle.entries(opts, cb)

List entries. Callback is called with a map of resourceKey to ResourceEntry objects.

Kind: instance method of Bundle

Param Type Description
opts Object options
opts.languageId String language to fetch
cb listEntriesCallback Callback with (err, map of resourceKey:ResourceEntry )

bundle.uploadStrings(opts, cb)

Upload resource strings, replacing all current contents for the language

Kind: instance method of Bundle

Param Type Description
opts Object options
opts.languageId String language to update
opts.strings Object.<string, string> strings to update
cb basicCallback

bundle.update(opts, cb)

Kind: instance method of Bundle

Param Type Description
opts Object options
opts.targetLanguages array optional: list of target languages to update
opts.readOnly boolean optional: set this bundle to be readonly or not
opts.metadata object optional: metadata to update
opts.partner string optional: partner id to update
opts.notes Array.<string> optional notes to translator
cb basicCallback callback

bundle.updateStrings(opts, cb)

Update some strings in a language.

Kind: instance method of Bundle

Param Type Description
opts Object options
opts.strings Object.<string, string> strings to update.
opts.languageId String language to update
opts.resync Boolean optional: If true, resynchronize strings in the target language and resubmit previously-failing translation operations
cb basicCallback

Bundle~getInfoCallback : function

Callback returned by Bundle~getInfo().

Kind: inner typedef of Bundle

Param Type Description
err object error, or null
bundle Bundle bundle object with additional data
bundle.updatedBy string userid that updated this bundle
bundle.updatedAt Date date when the bundle was last updated
bundle.sourceLanguage string bcp47 id of the source language
bundle.targetLanguages Array.<string> array of target langauge bcp47 ids
bundle.readOnly boolean true if this bundle can only be read
bundle.metadata Object.<string, string> array of user-editable metadata
bundle.translationStatusMetricsByLanguage Object additional metrics information
bundle.reviewStatusMetricsByLanguage Object additional metrics information

Bundle~listEntriesCallback : function

Called by entries()

Kind: inner typedef of Bundle

Param Type Description
err object error, or null
entries Object.<string, ResourceEntry> map from resource key to ResourceEntry object. The .value field will be filled in with the string value.

User

Kind: global class
Properties

Name Type Description
id String the userid
updatedBy String gives information about which user updated this user last
updatedAt Date the date when the item was updated
type String ADMINISTRATOR, TRANSLATOR, or READER
displayName String optional human friendly name
metadata Object.<string, string> optional user-defined data
serviceManaged Boolean if true, the GP service is managing this user
password String user password
comment String optional user comment
externalId String optional User ID used by another system associated with this user
bundles Array.<string> list of bundles managed by this user

new User(gp, props)

Note: this constructor is not usually called directly, use Client.user(id)

Param Type Description
gp Client parent Client object
props Object properties to inherit

user.update(opts, cb)

Update this user. All fields of opts are optional. For strings, falsy = no change, empty string '' = deletion.

Kind: instance method of User

Param Type Description
opts object options
opts.displayName string User's display name - falsy = no change, empty string '' = deletion.
opts.comment string optional comment - falsy = no change, empty string '' = deletion.
opts.bundles Array.<string> Accessible bundle IDs.
opts.metadata object.<string, string> User defined user metadata containg key/value pairs. Data will be merged in. Pass in {} to erase all metadata.
opts.externalId string User ID used by another system associated with this user - falsy = no change, empty string '' = deletion.
cb basicCallback callback with success or failure

user.delete([opts], cb)

Delete this user. Note that the service managed user (the initial users created by the service) may not be deleted.

Kind: instance method of User

Param Type Default Description
[opts] Object {} options
cb basicCallback callback with success or failure

user.getInfo(opts, cb)

Fetch user info. The callback is given a new User instance, with all properties filled in.

Kind: instance method of User

Param Type Description
opts Object optional, ignored
cb getUserCallback called with updated info

User~getUserCallback : function

Callback called by ClientcreateUser() and UsergetInfo()

Kind: inner typedef of User

Param Type Description
err object error, or null
user User On success, the new or updated User object.

ResourceEntry

ResourceEntry Creating this object does not modify any data.

Kind: global class
See: Bundle~entries
Properties

Name Type Description
resourceKey String key for the resource
updatedBy string the user which last updated this entry
updatedAt Date when this entry was updated
value string the translated value of this entry
sourceValue string the source value of this entry
reviewed boolean indicator of whether this entry has been reviewed
translationStatus string status of this translation: source_language, translated, in_progress, or failed
entry.metadata Object.<string, string> user metadata for this entry
partnerStatus string status of partner integration
sequenceNumber number relative sequence of this entry
notes Array.<string> optional notes to translator

new ResourceEntry(bundle, props)

Note: this constructor is not usually called directly, use Bundle.entry(...)

Param Type Description
bundle Bundle parent Bundle object
props Object properties to inherit

resourceEntry.getInfo([opts], cb)

Load this entry's information. Callback is given another ResourceEntry but one with all current data filled in.

Kind: instance method of ResourceEntry

Param Type Default Description
[opts] Object {} options
cb getInfoCallback callback (err, ResourceEntry)

resourceEntry.update()

Update this resource entry's fields.

Kind: instance method of ResourceEntry

Param Type Description
opts.value string string value to update
opts.reviewed boolean optional boolean indicating if value was reviewed
opts.metadata object optional metadata to update
opts.notes Array.<string> optional notes to translator
opts.partnerStatus string translation status maintained by partner
opts.sequenceNumber string sequence number of the entry (only for the source language)

ResourceEntry~getInfoCallback : function

Callback called by ResourceEntry~getInfo()

Kind: inner typedef of ResourceEntry

Param Type Description
err object error, or null
entry ResourceEntry On success, the new or updated ResourceEntry object.

TranslationRequest

Kind: global class
Properties

Name Type Default Description
id string Translation Request ID
serviceInstance string the Service Instance that this Translation Request belongs to
partner string the three letter Partner ID to be used. Use 'IBM' for the Professional Plan
name string descriptive title for this translation request
targetLanguagesByBundle Object.<String, Array.<String>> map from Bundle ID to array of target languages
emails Array.<String> array of email addresses for the requester
domains Array.<TranslationDomain> A list of applicable translation domains.
status TranslationRequestStatus Status of this TR.
wordCountsByBundle Object.<String, WordCountsInfo> map of bundle IDs to word count data
updatedBy string last updated user ID
updatedAt Date date when the TR was updated
createdAt Date date when the TR was first submitted
estimatedCompletion Date date when the TR is expected to be complete
startedAt Date date when the TR was accepted for processing
translatedAt Date date when the TR had completed translation review
mergedAt Date date when the TR was merged back into the target bundles
notes Array.<String> [] optional array of notes to the translators
metadata Object.<string, string> array of user-defined metadata

new TranslationRequest(gp, props)

This class represents a request for professional editing of machine-translated content. Note: this constructor is not usually called directly, use Client.tr(id) or Client.tr({fields…})

Param Type Description
gp Client parent g11n-pipeline client object
props Object properties to inherit

translationRequest.getInfo([opts], cb)

Fetch the full record for this translation request. Example: client.tr('1dec633b').getInfo((err, tr) => { console.log(tr.status); });

Kind: instance method of TranslationRequest

Param Type Default Description
[opts] Object {} Options object - if present, overrides values in this
cb getTranslationRequestCallback

translationRequest.delete([opts], cb)

Delete this translation request.

Kind: instance method of TranslationRequest

Param Type Default Description
[opts] Object {} Options object - if present, overrides values in this
cb BasicCallBack

translationRequest.create([opts], cb)

Create a translation request with the specified options. The callback returns a new TranslationRequest object with the id and other fields populated. Example: client.tr({ status: 'SUBMITTED', … }).create((err, tr) => { console.log(tr.id); });

Kind: instance method of TranslationRequest

Param Type Default Description
[opts] Object {} Options object - if present, overrides values in this
cb getTranslationRequestCallback

translationRequest.update(opts, cb)

Update a translation request with the specified values. If any property of opts is missing, that value will not be updated.

Kind: instance method of TranslationRequest

Param Type Description
opts Object Options object - contains fields to update
[opts.partner] String optional: update partner.
[opts.name] String optional: update name
[opts.targetLanguagesByBundle] Object.<String, Array.<String>> optional: update target bundle/language list
[opts.emails] Array.<String> optional: update email list
[opts.domains] Array.<TranslationDomain> optional: update domain list
[opts.status] TranslationRequestStatus optional: update TR status. May only change from DRAFT to SUBMITTED here.
[opts.metadata] Object.<String, String> optional: update metadata
cb basicCallback callback with update status

TranslationRequest~getTranslationRequestsCallback : function

Callback returned by trs()

Kind: inner typedef of TranslationRequest

Param Type Description
err Object error, or null
trs Object.<string, TranslationRequest> map from translation request ID to TranslationRequest Example: { 1dec633b: {…}} if there was just one TR, id 1dec633b

TranslationRequest~getTranslationRequestCallback : function

Callback returned by getInfo and create

Kind: inner typedef of TranslationRequest

Param Type Description
err Object error, or null
tr TranslationRequest the returned TranslationRequest

serviceRegex

a Regex for matching the service. Usage: var credentials = require('cfEnv') .getAppEnv().getServiceCreds(gp.serviceRegex); (except that it needs to match by label)

Kind: global variable
Properties

Name
serviceRegex

exampleCredentials

Example credentials such as for documentation.

Kind: global variable
Properties

Name
exampleCredentials

TranslationRequestStatus : enum

Possible status values for Translation Requests

Kind: global enum
Properties

Name Type Description
DRAFT string The translation request has not been submitted for processing. It may modified or cancelled.
SUBMITTED string The translation request has been submitted for processing, but has not been accepted by the partner yet.
STARTED string Work has started on the translation request.
TRANSLATED string All work has been completed on the translation request. It has not been merged into the target resource data yet.
MERGED string The translation results have been merged into the original resource bundles.

TranslationDomain : enum

Possible translation domains. These provide hints as to the type of translation expected.

Kind: global enum
Properties

Name Type Default
AEROMIL string "Aerospace and the military-industrial complex"
CNSTRCT string "Construction"
GDSSVCS string "Goods and service"
EDUCATN string "Education"
FINSVCS string "Financial Services"
GOVPUBL string "Government and public sector"
HEALTHC string "Healthcare and social services"
INDSTMF string "Industrial manufacturing"
TELECOM string "Telecommunication"
DMEDENT string "Digital media and entertainment"
INFTECH string "Information technology"
TRVLTRS string "Travel and transportation"
INSURNC string "Insurance"
ENGYUTL string "Energy and utilities"
AGRICLT string "Agriculture"

getClient(params) ⇒ Client

Construct a g11n-pipeline client. params.credentials is required unless params.appEnv is supplied.

Kind: global function

Param Type Description
params Object configuration params
params.appEnv Object pass the result of cfEnv.getAppEnv(). Ignored if params.credentials is supplied.
params.credentials Object.<string, string> Bound credentials as from the CF service broker (overrides appEnv)
params.credentials.url string service URL. (should end in '/translate')
params.credentials.userId string service API key.
params.credentials.password string service API key.
params.credentials.instanceId string instance ID

basicCallback : function

Basic Callback used throughout the SDK

Kind: global typedef

Param Type Description
err Object error, or null
data Object Returned data

ExternalService : Object

info about external services available

Kind: global typedef
Properties

Name Type Description
type string The type of the service, such as MT for Machine Translation
name string The name of the service
id string The id of the service
supportedTranslation Object.<string, Array.<string>> map from source language to array of target languages Example: { en: ['de', 'ja']} meaning English translates to German and Japanese.

WordCountsInfo : object

Kind: global typedef
Properties

Name Type Description
sourceLanguage string bcp47 id of the source language, such as 'en'
counts object.<string, number> map from target language to word count

docs autogenerated via jsdoc2md

Community

Contributing

See CONTRIBUTING.md.

License

Apache 2.0. See LICENSE.txt

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

JavaScript/Node.js client for Globalization Pipeline

https://developer.ibm.com/open/ibm-bluemix-globalization-pipeline-service/node-js-sdk/

License:Apache License 2.0


Languages

Language:JavaScript 100.0%