             failed(kind, error)
         )(kind)
       )
+
+    if numberOfUsedApis == 0
+      @emitter.emit("Failed", {
+        kind: {
+          name: "Translator Plus Dictionary"
+          type: "General"
+        },
+        error: {
+          message: "There are no APIs that translates from #{from.name} to #{to.name}."
+        }
+      })
+
     @emitter.emit("Finished")
 
   onStarted: (callback) -> @emitter.on("Started", callback)

      )
    for dictionary in @dictionaries
      if not dictionary.canBeUsed(from, to) then continue
      kind = {
        name: dictionary.name()
        type: "Dictionary"

    @emitter?.dispose()

  translate: (text, from, to, succeeded, failed) ->
    numberOfUsedApis = 0

    # TODO Deal with only **one** translation at the same time.
    @emitter.emit("Started")
    for translator in @translators
      if not translator.canBeUsed(from, to) then continue

      numberOfUsedApis += 1
      kind = {
        name: translator.name()
        type: "Translator"
