Translate strings used in VisualSearch

This translates Visual Search by sending only translated strings to it.

Then when a search is attempted, the inverse of each
translated string is sent to the server for querying.

If a string is missed and sent to VisualSearch in un-translated form,
then the inverse will also not be found and the original string
is used instead.  That should make the commit a bit
safer, since there are undoubtedly strings that were missed.
Only access dc.app.workspace if it's present

Searcher is used outside the workspace as well