English to French IT Translator Blog

I Don’t Offer Machine Translation Post-Editing Services, Here Is Why

Update: I believe this post was misunderstood by some as a pamphlet against MT and post-editing altogether. Here, I am only referring to projects meant for publication (=commercial purpose) and for which customers ask a discount for simply using MT. I have no issue with post-editing machine translation for training purposes, and I believe MT is a useful technology for individuals and translators alike. For more details, you may want to check my follow-up post here.

The increasing number of Machine Translation Post-Editing (MTPE) jobs posted online seems to be one of the big trends of the translation industry. These jobs essentially consist in fixing translation provided by an automated tool (Google Translate, Bing Translator, etc.) for a lower price than ordinary, 100% human translation.

The idea sounds good on paper, but faces a major issue:

MTPE takes more time and energy than human translation for poorer results

A translator will typically read the source text, think about the translation and write it out. MTPE adds a step before that: comparing the source to the MT output. It is tempting to think that because MT engines output a draft, translators save time when typing the translation. The truth is that, often rather than not, the output will require so much rework that it would be faster to type the translation out from the start. On occasions, the MT result will need only minor rework, but the time saved here is taken away by the comparison bit I mentioned earlier.

Even if the best of the cases, MT doesn’t save you time. And most of the time, it will require more efforts than a human translation.

On the top of that, the final quality also suffers, and that for two reasons:

– With MTPE, editors fix a text to make it “acceptable”, readable. Human translators try to produce texts that are fluent, natural in their native language. Something “good” rather than merely “comprehensible”.

– Because of the way MT engines work, the output can occasionally contain very serious mistranslations. Google Translate will very often omit words, especially negations, because it looks for similar sentence patterns in its translation memory rather than translating from scratch. Of course, the job of a MT post-editor includes spotting these mistakes, but it’s easy to let one slip away when you are correcting hundreds of them for hours.

MTPE doesn’t make sense for end clients either

– For a high quality translation, asking a professional translator is the best way. Turning MT output into a good text will end up costing more than what a good translator will charge

– If you need a text translated for information purposes only, MT does that very well already. Of course, there will be grammar mistakes and even occasional mistranslations, but in most cases you will be able to understand the general idea behind the document.

MTPE is a hybrid approach that mixes the disadvantages of both MT and human translation: you will end up paying a price very close to that of human translation, for a result barely better than what Google and Bing give you for free. Half-baked concepts rarely produce good results, and MTPE is no different. I never accept post-editing projects because they don’t benefit anybody down the process, from the translator to the end customer.

SDL Trados Studio 2014 Review

Here is my short review of SDL Trados 2014. It is aimed at translators who already have a good understanding of what CAT tools are and how they work. Going over each and every feature of SDL Trados Studio 2014 would take ages. I will try to go straight to the points of interest for freelance translators, in a hope that it will make your purchasing decision easier.

Notable changes over Studio 2011

-Faster: SDL Trados 2014 introduces performance improvements over its predecessor. File opening/saving is much faster, project creation takes a little less time, and since SP2, Multiterm doesn’t use Java anymore, which makes it more reactive.

-Ribbon, slightly more user friendly: The ribbon was the most noticeable change between Trados 2011 and 2014, and sparked lots of discussions online. It’s not a fundamental change, though, it simply gives access to some of the frequently used functions of Trados in a more visual way. If you are new to SDL software, it will probably make the learning curve a little smoother.

-Possibility to merge several files in a single working pane: Pretty cool feature for projects with a great number of small files. No need to open 200 tabs anymore. It saves time and makes things like Search & Replace much less tedious.

Strengths

– Complete: Trados Studio 2014 is still the most complete CAT tool when it comes to compatibility with file formats. It also offers an impressive number of customizable options to make it work ideally for you. In theory, you should be able to translate the vast majority of the files you’ll ever need to.

– OpenExchange Apps: I have to admit it’s the one thing that makes me stick to Trados for most projects not requiring any specific CAT tool. On the OpenExchange website, you will find tons of really useful plugins, often available for free. They make a lot of tasks easier, especially when it comes to TM management. Some of the dictionary/glossary tools can also give you a good productivity boost.

Shortcomings

– Buggy crashy laggy: Despite updates being made on a regular basis, SDL Trados Studio 2014 is still awfully buggy. It will crash rather often, most of the time without a clear/reproducible reason. There are also regularly problems with opening/saving files that Trados should be able to handle (and that other CAT tools handle very well). Saving issues are particularly annoying when you realize, after finishing a project, that you can’t output your translation in the original format…

For large files, Trados still seems to be overall slower than its competitors. For files over 10,000 words, switching between segments takes me so much time that I prefer to split the source file to save time.

– Complex, unintuitive: Trados Studio offers lots of options, which is great, but they are rather poorly organized. Some very simple actions will require browsing through several layers of sub-menus. Option labels are often confusing and you have to try them out to really understand what they do. Another problem is that a ridiculous number of shortcuts is set by default – mistype something and you will trigger functions that you didn’t even know about.

In general, every process seems to have more steps than it should. Even creating a simple project with a source file and TM takes you through a long series of screens

– Unresponsive and condescending support: Responsiveness of the support team seems pretty random. If you want a quick response, the fastest way seems to be shouting it out on social networks and/or translation forums. But then still, you are likely to get only partial help: either you get workarounds that take a ridiculous amount of time to execute (aren’t CAT tools supposed to save time?) or they put the blame on you/your client/some third party. To sum it up, I will quote the SDL support itself, which responded to a feature request this way: “Yes there is always hope, but this is pretty unlikely to be something coming from SDL.”

Conclusion

If you are new to CAT tools, I would recommend starting with a more simple tool, like Wordfast, which doesn’t have all of Trados features but is much more user-friendly and stable. Once you are experienced and that you start looking for advanced productivity tips, Trados Studio 2014 and Open Exchange Apps may provide a real boost. Even if you purchase Trados, I would recommend translators to keep a “lighter” and more reliable tool for when Trados decides it just doesn’t want to translate your file. Remember that you can always import/export your TMs and bilingual files between software.

Trados can save you big time once you understand how to use it and that it doesn’t crash or decide it doesn’t want to handle your files. With a better interface and less bugs, it would clearly be the best tool of the market. As such, it should be approached with care and patience for projects that seem suited to it.

By the way, it’s pretty expensive. The good news is that, most of time, group buys (Proz) and seasonal promotional offers are available (generally 20-30% off discounts). Even if none is available at the time you check promotions out, one will probably pop out soon enough, so make sure you wait to get it at a more reasonable price.

Outsourcing Accounting as a Translator: Don’t Wait Any Longer!

When independent translators‘ businesses start to take off, things tend to get busy really fast. You start getting more work than you can handle, or you have to sacrifice time spent on other important tasks, such as marketing, to satisfy the demand.

At this point, translators generally start thinking about the tasks they can outsource: proofreading, bookkeeping, marketing, and so on. In my case, accounting is the first thing I started outsourcing and I’ve never had any regret about it.

Some will say this costs money that could be better spent somewhere else. While accountants are definitely not free, they offer advantages that more than make up for their monthly fees:

Professional financial advice: I have studied a bit how finance, tax systems, etc. work in my country, yet I am amazed with all the small tricks my accountant knows. There are things I can deduct from my taxes that I would have never expected, and this alone covers a great part of the monthly costs.

Peace of mind and free time: I don’t think anyone wants financial services knocking at their door. Even if you do your best to keep everything on book and ordered, there is always the possibility that a small mistake turns into a legal nightmare. Accountants take that responsibility off your shoulders, and it really makes your work less stressful. Accounting is also quite time consuming, and financial statements, for some reason, always seem to be due when you are the most busy. All I need to do is to gather and send all my invoices, and the rest is done for me. It leaves me with enough time to focus on what powers my business: translation, marketing… and family time!

General business advice and connections: Accountants work with lots of people from lots of industries, so they can offer incredibly useful advice on a large number of topics – at least mine does! When you need something done for your business, they will also often know someone who will be able to help. Reciprocally, there is always a chance some of their clients need your services – interesting networking opportunity here.

I would recommend anyone starting in the industry to consider working with an accountant as soon as their business is getting serious. For me, it was an immense step towards becoming a professional translation services provider.

 

12 Tips to Reduce Software, App and Game Localization Costs

Even if the benefits of software, app and game localization are well known, the associated costs are often a turnoff for developers. Yet, by applying a number of rather simple tips and best practices, you can significantly reduce the price you’ll have to pay to see your product available in new languages.

There are of course limits to how much you can reduce the amount of work need for the localization process, but savings of 10-30% can reasonably be expected depending on the characteristics of your product’s localizable assets.

Having these tips in mind should put you on the right track for a cost-effective localization. If you want to go further and make the most out of your investment with excellent French translation and consulting services, feel free to contact me anytime – we can get started right now.

Write with localization in mind: When you write the texts for your software, app or game, it is important to keep in mind that all languages don’t use the same sentence structures and formats. When you use variable substitution, make sure your strings can be translated in any language without touching the code. For software error codes, try things like “Error: %s” rather than integrating such variables in sentences.

Also, try to avoid redundancies. For example, if you write “you got %d %s” (which would display as something like “you got 2 items”) in a video game, you would need to plan for both singular and plural variations of the object name, which means more translation work. But if you use a string like “you got: %s x %d”, a single translation will be enough.

Choose a simple file format for localized strings: The use of external files for localized strings is the Golden Rule of localization. But using separate files for translated texts is not always enough.

You also have to make sure these files are in a format that makes translation easy, or that can easily be converted in a translation-friendly format (Excel file for example). XML files and tab-separated text files usually work great.

Keep in mind that many translators charge an extra fee for complex file formats. It’s always a good idea to discuss with them and see if you can provide them with something easier to work with.

Avoid text in images: Rendered texts are very expensive to localize, in particular for languages that use completely different fonts. Whenever possible, try to use plain text and available fonts. There are plenty of nice ones out there, so no need to reinvent the wheel!

Use visuals instead of descriptions: Images and videos can however help you saving on localization costs. Instead of writing a long how-to document, try to create short videos and visuals that show what your software or game does, independently of the language. Such resources may even make your product easier to understand – we’re looking at user satisfaction benefits here.

Avoid repetitions as much as reasonably possible: Avoid having the exact same strings more than once in your string files, or remove them before sending them out for translation. Just make sure they are all used in the same context, as identical sentences can have different translations based on what they are used for.

Avoid verbosity: When you are reviewing your text before sending it out, try to use simple sentence structures and eliminate any wordy sentences. Most linguists charge per word, so you can save significant money here. Moreover, people tend to prefer short and straight-to-the-point texts, especially when they’re reading on a screen.

If your usual process is to only do a quick spell check on your documents, you may be surprised by the gains made possible here.

Does everything need to be localized? If costs are really an issue, consider writing simplified versions of your documentation, marketing materials, etc., before localization. Take out any information that is not absolutely necessary and look out for parts that are not relevant for the territories you are localizing for. Here again, the use of images and videos can be helpful.

Track changes: It is likely that you will need to update the text of your software to match its evolution at some point. Make sure you keep track of these edits to avoid paying twice for the same strings. It will also help you ensure everything is properly localized.

Send updates by batches: Many localization providers have some sort of minimum fee system. If your text updates are not urgent and that you’re planning to have more in the future, try to wait until the word amount reaches a reasonable number (ideally a few hundred at least).

Take out updates that don’t affect the translation (typos, cosmetic changes etc.): Small typo/grammatical fixes and minor style improvements generally don’t affect the translated strings. Translators are used to detect typos and they will generally try to write in a fluent style by themselves. Don’t pay twice for what is essentially the same thing, and don’t send these minor updates for localization. If you think your edits clear an ambiguity or correct a serious mistake, consult your language provider first.

Plan ahead (and avoid rush fees): A tight deadline is another thing that can lead to extra charges. You will often be able to negotiate better rates if you give your localization provider ample time to do their job. Try to finalize texts as early as possible during the development process.

Cheap provider doesn’t equal cheap localization: As you could see above, there are quite a few things you can do to save on localization costs for your software, game or application.

On the top of that, you may be tempted to go for the cheapest provider you can find out there. This is the most counterproductive thing to do. Bad translation quality comes with a myriad of direct and hidden costs: high QA and testing costs because of the large quantity of fixes needed – maybe even a complete retranslation if the quality is too poor-, missed sales due to poor credibility, endless support calls from clients who don’t understand the translated content, long-term negative impact on your brand… The list goes on and on.

Here is some sound advice: if you want to reduce localization costs, don’t be cheap. A good provider won’t cost you more than what they charge, and they will accompany you professionally every step of the way.

I will share more information on how to find good translation providers in a future article. For now, feel free to get in touch for more advice!

LocJam Post-Mortem: On Grandpa’s Localization and its Challenges

After missing last year’s edition, I took a shot at the LocJam 2. Contests of this kind are rare, and it was a fantastic chance to brush up my skills and measure them against other professionals of the game localization industry.

This year, game translators were offered a nice interactive story from the GameJam, Grandpa. A creepy atmosphere and a disturbing twist (although somewhat predictable?) gave us translators good material to test both our technical knowledge and literary talent.

The Process of Localizing Grandpa

Translators were in charge of the entire localization process for this game, up to final checks. The idea was to deliver a localized file that would be ready for commercialization.

Familiarization

Some games don’t necessarily need a lot of familiarization. But as Grandpa is an illustrated interactive story, it was absolutely vital to understand exactly what was going on and how things looked like in-game. With less than 20 minutes needed to complete the adventure, it was a small but crucial time investment.

First draft

Game over. Time to take a break and digest the story. Now let’s get down to the real business. The organizers recommended the use of a classic text editor, which I found to be a rather surprising choice. Instead, I used my personal computer-assisted translation tool, and anybody could have downloaded some of the free ones available out there. Considering the characteristics of the source file, it was a no-brainer for me, but I’ll justify my choice in detail.

Drafting a first version based on what I remembered from the game took me about half a day. A couple of sentence got me scratching my head to produce a fluent French text, but overall it all went smooth. The excitation of the competition seems to have had a positive effect on my creative power!

Proofreading and basic QA

Before plugging the translated text into the game, I gave it a round of proofreading and QA. I had a good read at my version, spell/grammar-checked it and used automated QA tools to detect potential critical mistakes. In a regular game translation project, I would have had a last look at my text to improve what can be (especially style), but I decided to do it while testing the localized game.

In-context QA

My plan was to go through the game just once slowly, checking out every possible situation and improving my translation while fixing any possible bugs. In the end, I gave it two good rounds and another half a day of intense testing. Source text inconsistencies and minor bugs added to my own small mistakes, and it just turned out to be too much for a single run.

I could have gone for 10 extra runs and kept changing things every single time, but would have it benefited the game? Probably not. One never feels ready to let the loved ones go, but sometimes you just have to (right Emi?). Holding my breath, I uploaded my translation, feeling both relieved and sad as a different kind of interactive story was ending.

Localizing Grandpa: A Trying Challenge

In just around 1,500 words, Grandpa offered a complete challenge for even for the most experienced game translators. You want to get started in the localization industry quickly? Localize this game and you will know 80% of what you need to understand in this industry.

Code and text tightly mixed: It’s unusual at all to see variables and other code bits in a source text. But in the case of Grandpa, it was sometimes really hard to tell what would happen to strings elements. Don’t translate tags: pretty common, I’ll take that. Now what do I do with [img[Poor Torn Hat|badhat 26]]? Knowledge of HTML helped me understand what was going on here, but I still proceeded very carefully (for the record, you needed to translate “Poor Torn Hat”, which is the tooltip that appears when you stop your mouse on the object’s image).

The dangers of copy and paste: The second part of translation was composed of game’s inventory repeated for each screen with the heavy presence of tags and HTML elements similar to the ones mentioned above. How many occurrences of this inventory? 48 times. I take my hat off to all the translators who went on with a text editor and copied and pasted this without a mistake 47 times. By the way, have you noticed that ONE of these occurrences was slightly different than the others? 🙂 My translation tool did, and it also took care of the copying and pasting tasks for me. It saved me a lot of time and helped me avoid painful mistakes.

Translators who didn’t take notice shouldn’t panic, though, that one slightly different occurrence actually works the same even if you copied one of the 47 other inventory placeholders, it will look the same to jurors. In other circumstances, it could have been a fatal mistake!

Stylistic choices: If you forget about the technical aspects of game localization, the project felt more like translating a book. Thus, style was maybe the most important element of the translation. Finding the right words and expressions to render the original tone gave me a few headaches.

Besides that, two things really bothered me: On occasions, I was never able to figure with a perfect certitude if certain actions were instructions from Grandpa or generic action buttons. “Look in oven” sounds very mechanical for example, but “Let’s go somewhere else” are definitely the words of a human living (well, not quite for this game…). My other interrogation was: “How old is Emi (the game’s main character) supposed to be?”. Sometimes she will sound very childish, but then on the next screen she would use a sewing machine with great dexterity. “supposed to be” is really important here, since the whole problem is made even more complicated by the fact that…

The game ends on a twist: While you play the game, you can tell that something is going to happen by the ending screen. Looking back at the game, there are elements I interpret as hints, but were they really? Was it the intention of the developers, or just a bit of a stretch from my imagination? How much should I give away in the French text? A lack of subtlety would spoil the game. But give too few hints, and the game loses some of its atmosphere. Here again, there were heart-breaking decisions to take.

Translation AND QA: For this contest, we were asked to wear two hats as we acted as both translators and testers. Have you ever let a typo slip despite proofreading your text three times? This is why we have independent testers in the first place: our brains generously fix mistakes in the things we write. Even the best of the best make the odd mistake.

Testing your own work requires an incredible level of concentration, and it was one of the toughest challenges of this project.

The game had its small bugs: We’re talking about really small stuff here, and you have to remember the context in which the game was developed. If I had to code for two days straight with no or so little sleep, I don’t think I could put out a functional Pong-clone. Still, as testers, it’s hard to close our eyes on the occasional bug. There a few really small inconsistencies in the punctuation, which is easy to fix when you translate.

The hard part came with transition screens, which all showed “Office” even if you were switching between two totally different places. One of these screens also had an image of the office in question. To get this one fixed, we had to look at the different screen IDs to figure out which string corresponded to which place. That was a hard one for those who already had trouble figuring out what was code and what wasn’t.

The layout was a bit messy at times as well, as line returns were occasionally used for conditional elements even if they were not display. Sometimes you would have as many as 5 line returns before the next text, which looked a bit weird. Or on occasions there would be 2 line returns before an image instead of 1. I doubt it will have any influence on the final results, but I fixed these small issues and made sure the layout was homogeneous throughout the game.

Conclusion

Localizing video games requires linguistic AND technical skills. Grandpa was very challenging from both points of view, and as such, it was a perfect game for the needs of the LocJam. It is also a very interesting projects for those who are new in the industry or interested in becoming a video game translator in the future. As a professional, it served as an excellent practice exercise. The contest is over, but you can still give it a try!

The Translation Job Generator v1.0!

Here is the job of your dreams! Apply now!

[generator]

Want more? Just refresh this page!

About the Translation Job Generator

Any freelance translator who has been in business for more than a couple months is probably familiar with job requests such as the one you will find below.

Unrealistic deadlines, ridiculous rate, scandalous payment terms, processes that make non-sense, scam attempts, pathetic negotiation tactics and odd demands… A few of random sentences here are copy/pasted from actual communications, while the other are only slightly exaggerated versions of real e-mails. I also got inspiration from posts shared on translators forums and groups.

What is the purpose of this generator? I’m not sure! But I enjoy running it every once in a while, and I would love to get input from fellow translators. The more the merrier!

Testimonials

The Translation Job Generator is making the world a better place. See what specialists say about it:

“Thanks to the training provided by this tool, I got my first translation project! Better still, I will receive the payment as soon as I reimburse the extra amount my client sent by mistake” Simon Key, freelance translator

“This generator is so efficient that our income doubled since we started using it” [email protected], Nigeria

“The Translation Job Generator created a new market: Clients outsourcing to agencies outsourcing to agencies outsourcing to agencies posing as translators outsourcing to leads made possible by the generator” TransBigword

“An excellent training tool for our project managers!” TravOdd

“With a little customization, the generator can be used in various industries. Our clients include shoe-making factories and circuses from all over the world” WhoopiNut, Recruitment agency

The LocJam 2 Started Today! Game Localization Report for Day 1

The LocJam 2 (a game localization contest) officially started today, a couple hours ahead of schedule. As announced earlier, I decided to take part this year, as I managed to save just enough space in my schedule for it.

This year, “Grandpa”, an interactive story of about 1,800 words created during the GameJam, was picked. The game itself is very pleasant to play and I would recommend anybody to have a look at it. You’ll have to wait until May if you want to play it in a language other than English, though 😉

For translators, it offers interesting challenges, especially when it comes to style and consistency. But more on this after the contest!

Today, I got familiarized with the game and prepared the first draft, first round of proofreading included. The hardest part comes now: double-checking all strings in context and, even harder, perfecting the style. While the source text doesn’t look difficult at the first sight, it actually requires a lot of creativity to render nicely in French. Choosing between synonyms or sentence structures can be really hard at times. For an interactive story, the quality of the style is of course critical, and this is where I will focus the most.

On the technical side, nothing really out of the ordinary. Some line escape characters, a few tags here and there, pretty much what you’d expect for a game localization project. For people joining the amateur category, it might be a bit of a challenge, though.

That’s it for today! I could start testing and refining my translation now, but I’d rather give it time. There’s still a week ahead to send submissions, and I want to be sure my brain can digest the game at its own pace.

PractiCount, A Word Count Tool For Translators Who Don’t Use CAT Tools

Many translators don’t use CAT tools for a variety of reasons, ranging from costs to the lack of relevance for certain specializations.

One of the useful functions such tools provide, however, is a word count tool. For those of you who don’t want to invest in an expensive CAT tool and yet be able to perform word counts over several documents in different formats, PractiCount is a solid solution. It’s been in the market for quite a few years, and is still a relevant solution nowadays.

It can count words, lines, characters, pages, repetitions and more. As a translator working from Japanese, the reliable character counting for Asian languages is a major advantage. It also works for a great variety of formats, including Microsoft Office files, PDFs, XML/HTML files and more. You can export reports in different formats to prepare quotes or other proposal documents.

Another interesting feature is that it can link these word counts to an automatic invoicing system. You can import lists of clients, link them to your project and have your invoices generated automatically.

A 15-day trial is available and allows you to try the tool and determine whether it fits your needs before purchasing it. If you’re looking for word count solutions, you should consider giving it a try.

For more information:

PractiCount and Invoice – Word and line count software for Word, Excel, PowerPoint, WordPerfect, HTML and PDF

Translators: 7 Ways to Boost your Productivity with AutoHotkey

Boost your productivity as a translator with AutoHotkey

Productivity is a hot topic in the translation industry. As many of us are paid per word, it is in our interest to produce translations faster, with no compromise on the final quality. While there is not much we can do to programmatically accelerate our creative thinking, repetitive tasks performed on a computer can easily be automated.

In this article, I will introduce AutoHotkey, a very handy software that lets you link hotkeys (keyboard shortcuts) to actions (opening an URL, inserting a text template…), and this in any software.

To do this, you will need to write scripts. It may sound scary if you have no programming experience, but I will try to make it as easy as possible by sharing a number of example AutoHotkey scripts, so that any translator can start writing their own scripts.

Click on any chapter below to access it directly.

Contents

Getting started

1. Download and install AutoHotkey

AutoHotkey (AHK) is a free, open-source automation software for Windows that allows users to automate repetitive tasks.

You can download it here: http://ahkscript.org/. It is very light and installs in a second (or so).

2. Create a script file

The idea of AHK is to link hotkeys to scripts that automatically execute certain tasks, such as opening a website.

First of all, we need a place to store our scripts. In a text editor (I recommend Notepad++), create a file and save it with the .ahk extension (for example, “myscripts.ahk”). You can simply create a blank file, then use File > Save as… and select “All files (*.*)” as File Type to be able to save .ahk files.

When you want to start AHK, just double-click your script file. Please note that after any change you make, you will need to double-click the file again to apply your edits.

When you want to add a script, just copy/paste the code I will share in your script file (anywhere before/after the other scripts is fine), and make the tweaks you need.

A quick script example

To be able to create hotkeys, it is important to understand how AHK scripts are built.

Here is a simple script example:

^+n::
Run Notepad
return

-The first line contains the hotkey (“^+n”, see explanation below), followed by “::” to indicate the function starts here

-The second line is the action triggered by the hotkey. Here, it opens Windows Notepad.

-The third line indicates the end of the script

The hotkey in our example is “^+n”, with one character per key. Here, the hotkey is Control(^) + Shift(+) + n.

You can try playing around with it: for example, replace ‘n’ with another letter or a digit. For non-alphanumerical keys, you can refer to this page: http://www.autohotkey.com/docs/Hotkeys.htm

As you can see, you can also use keys such as the Windows key ‘#‘ and Alt ‘!’.

For example, if you want to use Shift + Alt + p as a hotkey to run Notepad, you could use the following script:

+!p::
Run Notepad
return

Special character insertion

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

Adding special characters to a text can be tedious. The shortcuts are hard to remember and rather long to type.

Some CAT tools allow to insert some of them in just a click, but all the ones you need may not be there – if you are using a CAT tool at all.

In French for example, we are often asked to use « chevrons » instead of “straight quotation marks”. If you want to type the whole thing out manually, you would have to keep Alt pressed and then press 0171, 0160 twice (non-breakable spaces), 0187 and then get back between the quotes to finally be able to type your text. And it works only if your keyboard allows itt, which is not the case for most notepads I have worked with.

But AHK allows you to do that in a keystroke. See the example below:

^+q::

Send {ASC 0171}{ASC 0160}{ASC 0160}{ASC 0187}{left 2}

Return

If you press Ctrl + Shift + q, AHK will output an opening chevron, two non-breakable spaces and a closing chevron, then send the cursor back to between the quotes by simulating 2 keystrokes on the “Left” key.

More specifically, {ASC XXXX} allows you to output the ASCII character of your choice.

Explanation and customization

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

The “Send” function simulates a keystroke or a series of keystrokes. After “Send”, you can write any standard text you want to be output.

Alphanumerical characters can be written directly, without any special marking. For the other keys, you will find a list here: http://www.autohotkey.com/docs/commands/Send.htm

So if you want to output a tabulation, you can write “Send {Tab}” in your script.

If you want to repeat a keystroke, you can add a number, preceded by a space before the closing bracket, like in the example ({left 2} = 2 strokes on the “Left” key).

As you will see on the same page, {ASC XXXX} allows you to simulate a Alt + 0000-like series of keystrokes. You can see a list of such combinations on the following page: http://www.danshort.com/ASCIImap/

For example, if you want to output a copyright mark, you would write “Send {ASC 0169}”.

Once you get familiar with the two resources above, it becomes very easy to create your own sequences of complex characters.

Simulating clicks anywhere on the screen

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

AHK offers several functions to simulate clicks on different parts of the screen, which can be very useful if you need to automate certain tasks.

What we will need first is the coordinates of the location that is going to be clicked. There is an infinity of ways to do this, so I will just share my personal method:

– I use IrfanView, a very handy (and free!) software that allows you to do basic manipulations on images and easily switch between file formats. If you often need to convert image files or take screenshots for your clients, this software is extremely useful.

– Open the software for which you want to automate clicks, and take a screenshot by using your keyboard’s Print Screen key. It will be temporarily stored in the clipboard.

– Open IrfanView and paste the screenshot (Ctrl + V). Then click on the place where you want AHK to simulate a click, and hold the mouse button down.

The title bar should look like this:

The two numbers coming after “XY:” are the coordinates. In this example, x = 55 and y = 10. Write down the values you got.

Then use the following code

———————

^!c::
{
mousegetpos, start_x, start_y
mouseclick, left, 55, 10
mousemove, %start_x%, %start_y%, 0
}
return

———————

Of course you should replace 55 and 10 with your own values.

Opening/Switching between programs

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

AHK allows you to open programs or switch to any program easily.

By default, AHK offers distinct functions for opening/switching between programs, which can lead to errors, for example if you’re trying to switch to a program that is not opened.

To avoid this issue, we will create a function called RunOrActivate to handle all possible situations (opening a program, switching to an open program or starting and switching to a program).

You can just copy the code below in your script file and leave it unedited:

———————

RunOrActivate(Target, WinTitle = “”)
{
; Get the filename without a path
SplitPath, Target, TargetNameOnly

Process, Exist, %TargetNameOnly%
If ErrorLevel > 0
PID = %ErrorLevel%
Else
Run, %Target%, , , PID

; At least one app (Seapine TestTrack wouldn’t always become the active
; window after using Run), so we always force a window activate.
; Activate by title if given, otherwise use PID.
If WinTitle <>
{
SetTitleMatchMode, 2
WinWait, %WinTitle%, , 3
TrayTip, , Activating Window Title “%WinTitle%” (%TargetNameOnly%)
WinActivate, %WinTitle%
}
Else
{
WinWait, ahk_pid %PID%, , 3
TrayTip, , Activating PID %PID% (%TargetNameOnly%)
WinActivate, ahk_pid %PID%
}

SetTimer, RunOrActivateTrayTipOff, 1500
}

———————

Now, let’s create a script to use this function:

^!t::

RunOrActivate(“SDLTradosStudio.exe”)

return

Where you can of course replace “SDLTradosStudio.exe” with the process name of the software of your choice.

To find the process name, you can use Windows’ Task Manager: Go to Start – Run… (or press Windows key + R) and write “taskmgr” in the text box, then press OK.

Once the Task Manager is opened, go to the “Details” tab (if it doesn’t appear, you may have to click on a “More details” button first), and you will have the process names in the first column.

taskmgr

Opening an URL for online search (Google, online glossaries…)

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

Being able to open URLs in a single keystroke can be very convenient and a big time saver. For example, if you want to check the meaning of a word in your favorite online dictionary, chances are that we will be able to automate that with AHK.

To open a URL in your default browser, you can use the “run” function, for example:

run “http://SomeUrl.com”

Now, to make this a little more dynamic and useful, we can customize the URL with the text you are highlighting. For example, here is the code to perform a basic Google search with the term you are currently highlighting, whatever the software you are using.

^!g::
send ^c
clipwait
run “http://www.google.com/search?q=%clipboard%”
return

“send ^c” simulates a Copy command (Ctrl + C) to copy the highlighted text in the clipboard. “clipwait” is here to ensure AHK doesn’t try to open the URL before the text is copied in the clipboard.

In the “run” line, “%clipboard%” is the text currently contained in your clipboard.

Customizing URLs

If you want to automate search on some of your favorite sites, you will first need to perform a manual search, copy the URL of the search results and look for the string you searched. Then replace it with %clipboard% in the script file.

For example, if you search for the term “MyQuery” on a website like Linguee, the URL will look like this:

http://www.linguee.fr/francais-anglais/search?source=auto&query=MyQuery

So in your AHK script, you would write:

run “http://www.linguee.fr/francais-anglais/search?source=auto&query=%clipboard%”

Most online dictionaries and glossaries have similar URLs. Just give it a try!

Action sequences and pausing between actions

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

A great thing about AHK is that it allows you to execute several actions in a row. You can simply write one action per line, and AHK will trigger them in sequence.

Now, some actions may rely on the completion of others. For example, if you want to open a program and then launch the “Open file” dialog box, you will have to be sure the program is properly started before you send the next keystroke.

You can do this easily with the “sleep” function, which allows you to ask AHK to wait for a predetermined time in milliseconds before moving to the next action.

The script below runs or activates Notepad using the function we created in the lesson “Opening/Switching between programs”, waits for 3 seconds and then simulates the Ctrl + O keystroke to trigger the “Open a file” dialog box:

+!n::

RunOrActivate(“Notepad.exe”)
sleep, 3000
send ^o

return

This example is very simple, but you can potentially automate any sequence of actions on your computer. I like to use a keystroke to open all the programs I typically use on a working day, or all the websites I read on a daily basis.

Text template insertion (e-mails, frequent sentence patterns…)

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

As a translator, you probably send a lot of e-mails that are very similar in content, except for the recipient name, the fee/deadline you offer, etc. Writing such e-mails can be tedious and take a lot of time. Let’s use AHK to automate as much of the process as possible.

I already mentioned the “send” command a couple of times so far, to automate keystrokes. You can use it to output complete texts.

Another thing AHK allows you to do is to ask the user for a string input with the “InputBox” function. In the example below, we ask the user to type the recipient’s name and output a personalized e-mail template.

We will also see a new way to trigger scripts. Here, the template is sent out by typing “tmp1” on your keyboard and pressing Enter. You can customize this by replacing “tmp1” by any text you to trigger a script. Don’t forget to press Enter after typing out the string. And of course you can use more conventional hotkeys to do this.

:oc:tmp1::

InputBox, PMName, Please type the PM’s name, Name:
send Dear %PMName%,{enter}{enter}Thank you for contacting me about this project…

return

Here, we are using InputBox to show a dialog box titled “Please type the PM’s name” with a field labeled “Name:”. The value the user enters is stored into the variable “PMName” (feel free to use any variable name you like here). You can also show several such dialog boxes in a row if you need to get several values.

Then the “send” command outputs the template. %PMName% refers to the previous user input, surrounded with “%” so that AHK understands it has to insert a customized value here.

For the send command, you can type alphanumerical characters normally, but the other keys have a special coding, like {enter} in our example. You will find the complete list of these keys here: http://www.autohotkey.com/docs/commands/Send.htm

Swapping between uppercase/lowercase

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

I will share two useful functions: All uppercase and all lowercase. This can be very convenient when you have to type a whole text in capital letters: just write your text normally, and then apply the script to convert it in uppercase in a single keystroke.

You can use the scripts as they are, simply customizing the keystroke. What they do is converting the text currently highlighted. If you prefer to convert the text already in the clipboard instead, you can delete the first three lines of each script (from “Clipboard =” to “Clipwait”).

All uppercase

!+u::
Clipboard =
SendInput, ^c
ClipWait
StringReplace, OutputText, Clipboard, `r`n, `n, All
StringUpper, OutputText, OutputText
SendRaw % OutputText
Return

All lowercase

!+l::
Clipboard =
SendInput, ^c
ClipWait
StringReplace, OutputText, Clipboard, `r`n, `n, All
StringLower, OutputText, OutputText
SendRaw % OutputText
VarSetCapacity(OutputText, 0)
Return

NOTE: Some CAT tools have an awful lot of hotkeys, which may be triggered by this script. If possible, try to avoid using “Ctrl” in your hotkey here.

Deactivating the Insert key (or any key)

Note: if you are new to AHK, please read the Getting started section first. It will allow you to get a basic understanding of how scripts work and how you can customize your hotkeys.

I hate it when I press the “Insert” key by accident and start seeing text disappearing as I type.

The two following scripts respectively deactivate the use of the “Insert” key alone and replace it with the “Ctrl + Insert” keystroke

$Insert::return
^Insert::Send, {Insert}

You can make it work for about any key you want – not just do deactivate keys, but also change their function.

Closing Words and Resources

The AHK documentation and forums are great places to start if you want to go further. If the documentation looks scary to you, you may find the forums more welcoming. They contain tons of useful tutorials and example AutoHotkey scripts.

If there are specific scripts you would like to see added here, just let me know by e-mail!

Fix Number Localization in SDL Trados Studio 2014

Number localization is a common issue in SDL Trados Studio 2014 and previous versions. The problem is apparently that the software uses your system default locale’s number writing system for your translations.

First, try Studio’s options

Tweaking some of the settings in Trados can help solve this issue. Go to Options, Language Pairs, Your language pair, Translation memory and automated translation, Auto-substitution and finally(!) Measurements. There, you can choose one of the spacing options. If that’s all you need for number localization, this should do the trick.
image_article

If that doesn’t do the trick, consider plugins

The problem is if you want, for example, to use periods instead of commas. Here, a number of plugins available on the SDL OpenExchange site can help you by automating substitution of certain string patterns.

The SDL recommends the use of Regex Match AutoSuggest, and they even produced a small video to explain how it works.

The instructions provided on the link to Regex Match AutoSuggest are also pretty straightforward and easy to follow, so please feel free to have a look at them. With regular expressions, you can substitute much more than numbers. If it doesn’t look too frightening to you, you should give it a try and create you own rules to automate other repetitive tasks!