Need a tool? Don’t you find it? Build it yourself! What you can do yourself: designing, scripting, testing...




Greater than 7 minutes, my friend!

Most translators are not developers — Don’t feel bad about this: most developers can’t translate either. So why a blog about writing tools for a translator audience? Some of the things we do frequently, are such a waste of time. Many of us got allergic to this, and want to get rid of it. So that is why the computer was invented and why I wrote this blog.

When you dream of a tool to get rid of boring routines, to remember the stuff you forget to do, or to execute what you hate to do, you’ll probably Google for it. Before you know it, you’re spending a lot of time reading to figure out what the found tools do and don’t do, what they cost, what OS they are running on, … And then you  download them, and test them. A piece of advice I want to share: if you don’t know the developer, or if you’re not downloading the tool from the developer’s website, don’t run it on your own PC. Use a machine of your kids 😉 or better: run it on a Virtual Machine or run it in a sandbox. As most popular tool-sites, and even platforms sharing source code, have been infected by malware, you better be safe than sorry.

In my experience, when you create your own tool, you may save a lot of money, but more importantly: you may learn a lot about the problem you’re trying to solve. 

Testing an existing tool

When you create a virtual machine, the image of this VM is stored into a file. If you’re not happy with the tool you test, just delete the image and start all over. You don’t have to create a new VM every time — that would be too much work — just work on a copy of the image. Never delete the original VM image. There are many VM tools. I can recommend the VMware Workstation Player, formerly VMware Player. In the past I created the VM images myself, but since half a year, Microsoft made it really easy for us: they have a page where we can just download the VM images. Super easy.

By the way: I’m also using a VM to run translation and automation tools that don’t work on Windows but on Linux. Long time ago I used to create a dual boot system, but today my PC is so powerful that I don’t even notice anymore I’m working on a VM. Distributions like Ubuntu and Mint are super easy to install on a VM. Dual boot is more trouble, especially when you’re working on Mac or when your BIOS is of the (U)EFI type. An overview of linux tools for translators is here.

There’s another tool I often use for testing: a sandbox. This tool creates a safe zone in the memory of your PC to run in. Malware and viruses are trapped in the sandbox, and when they try to destroy/infect your machine, they can’t.  Sandboxie is a tool that you need to learn to work with, and it does not remove the necessity to have a more traditional anti-malware software installed on your machine, but if you test a lot of tools, it is definitely a must-have and more: a must-use!

Creating a new tool

So you cannot find an existing tool, not even one that comes pretty close. What can you do? First of all, put your dream on paper. Share it with colleagues and see if others agree with your solution. Sharing a dream is important for many reasons: you may bump into a colleague who knows an out-of-box solution. Or (s)he may give you a great idea. Or make you change your mind so you don’t waste time on it any longer.

But if everybody validates your idea, putting it on paper has another advantage: you’re using YOUR brain, and you don’t depend on the brains of a developer. There are several things any translator or project manager can do:

  • Create a mock-up. I’m using moqups for this, simply one of the best tools on the planet. Draw the layout of what you need, for all the screens. Link them or browse through them and try to get a feeling on how smooth it will work, your tool. Just by doing this, it will give you new and good ideas. Others can see what you created, comment on it, pushing you to change your mind… Developers have a fancy word for this: iterative development. Well, iterative development starts at design time.
  • Create a database supporting your application. Don’t make it complicated: the best non-developer database designs I have seen were made with a spreadsheet. One tab per table. If you like to hold the hand of the developer, you can also use the dbmodelexcel tool, but in my experience, if you really need this tool, you’re not talking about a small tool. If you’re not afraid of a bit of SQL, playing around with Tables, Indexes, Triggers, Views… is a great way to get a clear view on what you really want. The SQLite Expert Lite version (free as well!) is the best tool by far to do this.
  • If you’re in for a bit of adventure, and if you’re dream tool would run on a web server, you can also create a semi-functional mock-up using LayoutIt! This tool helps you to build a bootstrap based web page, but you can easily use it to impress friends & family when you link several html pages.
  • If you want to know if others would be keen on using your tool, you can always create an indiegogo campaign to create some traction. If that is successful, you may have found a tool worth commercializing. 

Outsource the code writing

When you know what needs to be build, you’re ready to contact a developer. Or better: contact a couple of them. Just play it fair: a freelance developer is only paid when writing code, not when doing pre-sales or quotes, so be well-prepared and don’t waste his/her time.

Whoever you select, make sure (s)he has some experience with translation tools. If the developer asks you how to spell XLIFF, or when (s)he believes TMX is a Tiled Map format for games, select someone else. You should not work with someone who does not know YOUR world. Your role is to be explicit in what you need, not to guide or train the developer.

When you receive your tool, test it. Test it a lot. Also ask others to test it. Run it on different versions of Windows and make sure it runs on the newest version of Windows as well, and that it works with the newest version of your CAT. As we’re in the language business: test it also on a version of Windows in another language. From Windows 8 on it is really easy to change the language of your Windows after it has been installed. Don’t forget to change the language and country settings. Small changes (like how the decimal separator is written, or the default spell checker) can make your tool fail. 

If you don’t have time to do all this testing, make sure the developer knows the scope of the machines your tool should run on.

Last but not least: ask the developer how long he’ll help you out in case you would bump into a bug. I’m giving my customers half a year of time for this because I know how hard it is, for instance, to test tools on all the variants of XLIFF we have. Or how many variants and language variants of Windows are around, or how many web browsers… Or how many users 😉

The power of batch scripting

I wasted hours, trying to find a good backup tool that really fits my needs, and although there are plenty of good backup tools, I did not find what I need.

Scripting is often not that hard for linguists: all you need is to understand how the scripting language works. That boils down to vocabulary and grammar. Vocabulary is understanding how to use commands, grammar how to make them work together.

A basic scripting language that is low hanging fruit, really, is the windows batch scripting language. It already dates from the age of the good old DOS. You run batch scripts from the command line, but you can just execute them straight from within Windows explorer as well. I use them for 101 tasks. To support this blog, I wrote a step-by-step example on my website of a script that I run every day: making a backup copy of my most important files (projects) to an external hard drive. At the end, I also explain how to make this script run automatically once a day at 6 PM.

Another scripting language that others are using a lot, is AutoIt. I think I should mention it as it is very popular. It has been around for years and it has a big and active community of users. One of the reasons it is so popular, is that you can create your own GUI, so your script does not look like a script but like a real Windows tool. It also allows you to interact with other tools installed on your system; this is quite hard to do with a simple Windows batch script. 

I’m using scripting to run regex, to create databases, to convert files (like TMX to CSV or vice versa). All you need for this is finding the right command line tool, understanding how you can run it, and then you put it in a batch, using variables, loops and subroutines. Tons of useful (and less useful) command line tools can be found here.

So…

When you’re a day without a job, just give scripting a try. You’ll be surprised of what you can achieve and what you will learn. When your own script no longer satisfies you, you’ll be able to explain much better what you need if you put a developer at work. And, nobody appreciates the work of a craftsman as much as he who tried the DIY approach first. Any craftsman will also appreciate your appreciation. 

Image from startwoodworking.com, just browsing this site is one of my guilty pleasures.

Gert Van Assche

About Gert Van Assche

At Datamundi we're paying a fair price to linguists and translators evaluating (label/score/tag) human translations and machine translations for large scale NLP research projects.

9 thoughts on “Need a tool? Don’t you find it? Build it yourself! What you can do yourself: designing, scripting, testing...

  1. Hi Gert, useful and smart post as usual from you, but tooooo difficult for me to turn into something real… I’ll pass it on to the nerdy ones. There are a lot out there, lucky you 😉 I know I can count on you if necessary… Have a nice evening folk!

    Report comment
    1. Silvia, the first step is to envision what you really need. If you need something and you can explain exactly what you need, maybe with the help of a sketch on a napkin, you’re already one of us geeky translators: you’re a Requirements Analyst. 🙂

      Report comment
  2. Oh boy, Gert!
    Here I am, doing a little regex and a lot of AutoHotKey, thinking I’m doing really great – and then you post this… 🙂
    Thank you for your tips and for showing us – tech-savvy or not – what can be done.

    Report comment
    1. Silvia, Patrick, don’t get impressed. All I’m saying is that development starts with a dream or identifying a need. When you express that correctly, half of the brain-work is already done. Scripting is something really within reach of many translators because code is language after all. For heavy developments it may be better to call a real developer. Although I write a lot of code myself, if things get too complicated, I’m calling for help of experienced developers as well. I never consider the time I spent on a development that turned out to be too complex for me, as wasted. It always helps me to negotiate better conditions with the developer I’m sending the dev-job to. Just like Marco said.

      Report comment
  3. Wonderful post, Gert! As always! 😉
    I have an idea for a tool, but with The Open Mic it’s not easy to pursue this idea at the moment. It is inspired by Basecamp and aimed at improving communication between translators, agencies and end-clients. It’s more of a web-application rather than a desktop version and aimed at creating an easy to use environment for project management and communication between translators, editors, QA, PMs and end clients. Ideally it should streamline communication between teams and clients. I feel like this is something that is currently missing from the market. What do you think?

    Report comment
    1. Dmitry, thanks. About a Basecamp look alike tool for the translation industry… I don’t know. This has nothing to do with Basecamp; it is as useful as Asana, Jira… The problem I see is that the LSPs functioning as man-in-the-middle often don’t allow any direct communication between translators and their customers. The tool would be OK for all internal communication, that is true. But then again, there are several (commercial) tools that already do this. They all offer the same basic functionality, but they also have their own approach. A lot of those tools also use APIs to communicate with CMS systems of customers (for job retrieval and delivery). Yet I find those tools only useful for very big projects and customers that want to work like this. Often LSPs where the project management is done in a more manual way — surprise, surprise — are very skilled in splitting huge projects in smaller jobs, and they bring a lot of value this way to both their customers and the translators (who don’t always see that part of the work). If I were to develop a workflow/communication tool, Basecamp would be a good place to start with, but I fear the need to adjust the tool to the requirements of every LSP using it, would be too big. My 2 cents…

      Report comment
      1. Hey Gert,
        Good points! I was thinking more of a communication issue because indeed there are some great tools for project management already. For the past 5 years I worked with plenty of agencies and I’ve noticed that it’s really hard to get them to answer your queries in a timely manner. You have to send an email. They send it to the client. The client replies. They send the client’s reply back to you. All of that via email most of the time and we all know how chaotic some inboxes might be. PMs in busy agencies probably receive hundreds of emails every day, making communication even more challenging.

        The best solution I’ve seen so far among my clients is Google Docs or custom developed software where translators can post queries and end clients can reply, provide screenshots, links, etc. leaving PMs out of it.

        I think this is a great approach, but I don’t understand why only a few of agency clients use it. Are they afraid of translators having an affair with end client and running away together?

        I think translation agencies could benefit from having some sort of communication tool that would allow translators be in direct contact with end clients instead of back and forth communication via email. If the agencies are afraid of translators stealing clients, there could be some options to hide the name of a freelancer who asks questions. So instead of Dmitry it would be Russian Translator, for example.

        I think this kind of software could be a win for all 3 parties involved (translators – agencies – end clients). At the end of the day, I think that communication is one of the most important things for successful collaboration.

        Report comment
      2. Of course I might be suffering from a tunnel vision syndrome where I project my personal experience onto my perception of the industry. Maybe there are no communication problems at all for the rest of 99% of freelancers and agencies. I don’t know. That’s why I’d love to hear your opinion. Do we have communication problem or am I imagining things? 🙂

        Report comment
        1. Dmitry, I think your observation is right. Nothing wrong with your eyes or ears. I just think most LSPs don’t buy in yet to that open communication. And valuable time is indeed often lost for no good reason. Having worked with a lot of LSPs I can also say that often the problem is not at their end: their customers outsource to an agency and they expect them to handle the questions from translators. Some customers don’t even want to answer questions. No tool will change their behaviour.
          Maybe this is something that will change in the future. I don’t know….

          Report comment

Leave a Reply

The Open Mic

Where translators share their stories and where clients find professional translators.

Find Translators OR Register as a translator