A change in the way an upload of a source file affects the translations for it was deployed earlier today.
When a maintainer of a project uploads an updated source file, Transifex will extract all entries from the file and save them in the database. At the same time, it will invalidate all translations for the entries that were changed or deleted completely.
Until now, Transifex would look only at the identifier of the entry, to determine, whether the entry had actually changed. For instance, in PO files this is the
msgid part of an entry. On the other hand, if the value (source string) of the entry had changed, Transifex would just update the source string, without any effect on the translations for that entry.
The reasoning for this behavior was that in most formats the source string is placed in and extracted from the source code; that is, the identifier for an entry is the source string itself. As a result, any changes in the source string would affect the identifiers, too.
However, there are certain formats that are used in a different way. In these cases, the source code only contains a key as a placeholder for the string instead of the string and the source string lives in a key-value like file. There are many formats that fall in this category, like Java .properties files, YML for Ruby On Rails and Joomla .ini files. The typical workflow in these cases is to never change the key in the source code, but update the source string in the source file instead (the value for that key).
For this reason, Transifex changes the way it works for this kind of formats to better suit this workflow. So, it invalidates the translations for an entry, when the source string changes, even if the identifier is still the same.
This change should not affect in any way the day-to-day operations for any project that does not want to benefit from this feature.
Update (2 Apr 2013): Happy April Fool’s day!
We’ve all been there. A long meeting where software engineers have to make an architecture decision. It’s been dragging on for hours; no one seems to agree on anything. The discussions become heated as engineers visualize the suggested solutions with drawings and code samples on a whiteboard.
This happened to us last November while brainstorming about an important new feature in Transifex. Everyone was on a different page and we couldn’t settle on an agreement for hours. By the time we left the office, it was nearly midnight.
How many times has this happened to you? You have the perfect idea in your head — it seems so simple to you. But when you explain it to others, they just can’t see the simplicity of the code you have in mind. They insist that it will be hard to maintain and won’t scale.
We decided to fix this problem.
During a hackfest in January, somewhere up in the Greek mountains, we decided to roll up our sleeves and solve this.
We built a natural language processing engine that translates English text to code.
Product Managers, rejoice: you no longer need to convince developers to agree with your feature request. Developers, throw a party: forget about working on those sales and marketing features you don’t like.
TurkeyCode (TC) is computer-aided natural-language programming. TC uses Transifex libraries to read English text and produce programming code. We started with English as a source language with a limited vocabulary and Python as the target language.
Here is an example on how text input is translated to the Python code.
TurkeyCode is a feature which reads text and translates it to code.
def __main__() class TurkeyCode(feature): def read(text): pass def translate(text): return code class text: pass
Whenever it reads text, TurkeyCode remembers the length of the text for future use.
To translate, TurkeyCode calls nltk to tokenize the text.
import nltk def __main__() class TurkeyCode(feature): length = 0 def read(text): self.length = len(text) def translate(text): code = nltk.tokenize(text) return code class text: pass
Under the hood, TurkeyCode uses the nltk library to classify the sentences and deconstruct them to tokens. It then uses PLY to map the tokenized text to a Python construct. Type text as you normally would and a Python implementation comes out.
Combined with our computer-aided tool for translating between programming languages we announced 12 months ago, you can export this Python implementation to other programming languages such as C, Perl, or PHP.
TurkeyCode is a brand new technology still in early development. Our roadmap for the next 6 months includes adding support for TC to our API so the prototype solution can be saved in your repository on GitHub, and supporting Spanish and Russian as source languages.
One limitation of the platform is that it requires a keyboard at the moment. Quite a few meetings in tech companies have a no-devices policy, so TurkeyCode is limited. We plan to add a speech-to-text system to the mix: you record every meeting and a daemon automatically converts what’s said into text, which is then turned into code. Within minutes, you have a prototype solution in Python.
Linus Torvalds said, “Talk is cheap, show me the code.” This is the future of coding. We’ve been using TurkeyCode internally for the past two months and it has already saved us dozens of hours of prototyping.
Next Tuesday, we will be launching the beta for select Transifex users. If you’re interested, please tweet this post using the button at the bottom of the page and we’ll add you to our list.
Today’s update brings a much-requested feature to the web editor, concordance search,that allows for a more fine-grained use of the Translation Memory of the project.
This new feature enables translators to search for a specific word or phrase in the project’s Translation Memory. The search results show all segments containing that word or phrase along with their translation, the translator, date of the translation, and the project the result comes from.
This way translators can search for how words or phrases have been translated in the past and re-use the same translation, ensuring a higher level of quality and consistency in the translations.
Moreover, the name of the project the result comes from and the translator and date of the translation help translators filter out translations that are no longer relevant.
On the other hand, the suggestions feature shows the translator the best translations for the whole segment.
To use the concordance search, you can either press the ‘
c’ key or click on the respective icon in the suggestions tab. A panel will appear, where you can enter the word or phrase to search for and the respective results.
You can find more details in our support center.
What do you do when the 2008 Financial Crisis hits your business and your growth drops from over 20% per year to a projected rate in the single digits?
For e2f, the world’s largest English to French translation agency and industry leaders in language production management, there wasn’t much of a choice. With approximately 30% of their revenue going toward production costs, it was simple: adapt to survive.
So e2f moved out of their comfort zone and adopted new technology. They replaced their aging in-house system developed in 2004 with a modern translation management automation system connected to Transifex through our API. Their new system is both advanced and distinct from what most agencies use.
Clients can visit e2f’s website, upload source files, and select what languages he or she wants the files translated to. Once the order is submitted, a project is automatically created in Transifex and e2f translators can start working. And if a client wants to see the progress of the translations, it’s constantly updated on the e2f website via the Transifex API. It’s a level of transparency rarely provided by agencies.
e2f’s new translation management system has significantly cut down on a number of manual processes and reduced turnaround times. It also allows them to take on more projects of all sizes.
And what about reducing their production costs? According to Michel Lopez, the founder and CEO of e2f, they expect their initial infrastructure costs to be lowered by over 15% minimum. That’s sweet music to our ears.
To learn more about this story, check out the new case study from e2f.
P.S. We love the folks at e2f. Please do get in touch with them if you’re looking for some quality translations, especially for French, German, Spanish, or Italian.
When the startup he co-founded closed its doors, Matthieu Vaxelaire ventured on to found Startup Pack. His non-profit partnered with 12 companies to give away $10,000 software bundles to a thousand startups. And TechCrunch and The Next Web covered the story.
Today, Matthieu rolled out Startup Pack for Developers. We’re stoked to tell you that Transifex is one of 15 companies offering their tools and services as part of the Pack!
When this opportunity arose, we were thrilled. We strongly believe in startups and this is a perfect opportunity to support our fellow startups. As they endeavor to solve challenging problems and better the world with innovative technology, we want to enable them to make their products available around the globe.
For the 250 startups that will receive a pack this time around, they’ll get 5 months access to Transifex’s Plus Plan – good for the translating up to 50,000 words.
Companies like Amazon, GitHub, New Relic, and Twilio have signed on as well and we’re proud and delighted to be in such good company. Applications for Startup Pack are only open for 10 days, so apply before you miss out!
Check out the TechCrunch article as well.
Transifex is a great way to manage your content and internationalization files. But a lot of people have asked us where they can find translators.
We like the team at Gengo and share a similar belief that with the help of technology, companies can go global more easily and in a less painful way. So we partnered with them and their worldwide network of 7,500+ translators.
Starting today, you’ll be able to order translations from within Transifex. Once you pick the language(s) you want to have your app translated to (there are 31 to choose from!), the content will be automatically sent to their translators. Before you know it, the completed translations will appear right inside your project in Transifex. To say the least, it’s a bit magical!
Transifex will continue to manage your content while Gengo’s translators speedily bring you high quality translations. What’s not to like?
If you’re interested, you can access the translation order form in your dashboard on Transifex and place your first order for projects you own.
We are thrilled to share that Nikos Vassiliou has joined the Transifex developer team. Nikos will be hacking away on our brand new super snazzy translation editor and other code-heavy parts of new Transifex services.
Nikos has been a startup founder and chief architect for more than 4 years now. He has written millions of lines of code for 3D engines and apps running on anything from huge clusters to mobile devices and web browsers.
In his spare time, he likes to get away from the fuss of the city on his motorcycle, play video games and hack some more code. He declares himself a science fiction addict, as he believes it can be the driving force behind the design of great new products.
Today we’re rolling out an update to our machine translation functionality. We are replacing the old and deprecated Bing AppIDs with Windows Azure Marketplace authentication tokens, which, since recently, is the recommended way to use Microsoft’s machine translation API.
This means that all projects currently using Bing Translator as a machine translation backend will have to get new credentials and update their settings.
To enable the service, all you need to do is the following:
People translating your project using the online editor will be now able to use the functionality exactly as before.
As many other Python-based projects, we use Sphinx to document the various components of Transifex.
During the last days, we wanted to decomission the server that hosted the documentation of our service since the rest of Transifex has already moved to a different cloud provider. We already preserve the history of the docs in Git, so, instead of moving the docs section to the new provider, we took a shot on Github pages and it soon became obvious that it’s really worth it.
For those that are unaware, Github allows for any project to host static HTML content by default. You simply have to create a new branch named gh-pages, and put all the content there.
It would be wonderful if we could combine that handy Github feature and Sphinx, wouldn’t it be? Let’s skip the “guess what” cliché and move forward to show you how to do it yourselves.
This is how our docs repository looks like:
. +-.git | ... +-gitignore +-docs +-theme | ... +-plaintext +-Makefile +-index.txt ...
We cloned the same repository a second time into a second directory named gh-pages, and checked out the gh-pages branch.
Now the directory structure looks like this:
. +-gh-pages | +-.git +-master +-.git | ... +-gitignore +-docs +-theme | ... +-plaintext +-Makefile +-index.txt ...
By editing master/docs/plaintext/Makefile, we set OUTDIR to ../../../gh-pages. That way, every time someone issues make html, it will populate the gh-pages directory with the correct html pages.
The last step is to create three text files under the gh-pages directory:
Now every time a change has to be made, we edit the proper files, issue
make html, commit and push the changes in both branches.
Not a lot of work, right?