If a translation key is not valid, the program raises an exception regardless if there another valid translation key.
I Think that the program should be able to run if the user only has one key.
However, I don't think it is a good idea for the program to fail if a key is provided but isn't valid since the user clearly intends to use that translation service and can go on for a long time without noticing.
But if the key is an empty string it shows that the intent is to NOT use that translation service, and the program should work if there is a valid key.
Suggestion:
- Raise an exception if a key is provided, but is not valid.
- Ignore if the key is an empty string
- In "BestEfforTranslator" if there is no available translation, raise an exception