Handle two extreme cases to prevent crushing

- in case no translation without unknown words is obtained, try once
  again with unknown words permitted
- always use 2d arrays