@translate takes three positional parameters: input language code, output language code, and the string to be translated. If one or all of the language codes are omitted, wm-bot will respond with "Invalid number of parameters":
[12:41:55] <AntiComposite> @translate Bonjour [12:41:56] <+wm-bot> Invalid number of parameters [12:51:29] <AntiComposite> @translate Bonjour monsieur [12:51:30] <+wm-bot> Invalid number of parameters
If there are three space-seperated words in the command the bot decides that's good enough. Yandex, understandably not knowing what language code "Bonjour" is, responds with a 400 (Bad request) and wm-bot raises an exception.
[12:44:18] <AntiComposite> @translate Bonjour je m'appelle [12:44:18] <+wm-bot> DEBUG Exception in module Translate: The remote server returned an error: (400) Bad Request. st: at System.Net.HttpWebRequest.CheckFinalStatus (System.Net.WebAsyncResult result) [0x00000] in <filename unknown>:0 at System.Net.HttpWebRequest.SetResponseData (System.Net.WebConnectionData data) [0x00000] in <filename unknown>:0
The problem is that wm-bot raises these exceptions in #wm-bot, so the person running the command likely won't see it. If Yandex supports automatic language guesses, wm-bot should try to use that. wm-bot should also not accept more than two or three-character language codes. In any case, a useful error message should be sent to the original channel, not #wm-bot.