Here's something else.

Search posts


Orinoco -

Here's something else.

One of the major features of a certain former popular juggling portal was of course it's multilingualness.

So in homage to Juggling Universe I proudly present the traduzione Italiana!1

At present the languages available for translation are: - German - Spanish - French - Italian - Dutch - Russian (3 plural forms, really?!)

Other languages will be made available on request.

At the bottom of each page you will find a 'translate this page' link that takes you to a form where you can enter translated text & access the audit history of previous changes so if someone makes a mistake they can access previous translations to correct it. Anyone with an account can contribute a translation.

I have purposefully not included any indications of translation 'progress'. The Edge is huge. Most of it doesn't need translating for the site to be usable. I have no desire to put pressure on anyone to put hours of unnecessary work in for some arbitrary notion of completeness. The only gamification I want to encourage involves dice, cards & meeple.

The tranlsation index shows all pages available for translation & also contains links to edit texts that are stored in a database rather than part of a page. These texts are the strings used in the spangly new records system, email templates & latest content templates that appear in the latest content feed on the homepage.

Some translatable texts will include variables, these will look $SomethingLikeThis in the original text (clicking the variable will insert the variable text at the cursor in the input field). The variable will be replaced with specific information when the page is rendered.

For example the following:

New post by $UserName

Will be converted to something like:

New post by Orinoco

Variables are case sensitive

Texts will also contain links. Available links will be described in blue underneath the input field. To specify what part of the text you want to be clickable surround it with the link's corresponding numerical tags. If you select text in the input field then click the desired link the system will automatically insert the tags for you.

For example the following:

New <1>post</1> by <2>$UserName</2>

Will be converted to something like:

New post by Orinoco

The whole thing is very complicated. Some of you have already noticed that I've been breaking lots of things recently, all of them were to do with this! I'm sure there will be more problems. I will fix them as soon as I can.

Boring nerdy stuff: I've written my own translation system that basically maintains multiple versions of the same dynamic site, one for each language. I've done this instead of using GNU gettext for several reasons:

  • Gettext only works on php files, it can't handle static text, javascript or html files unless you decrease performance by using php to write those files dynamically.
  • I'd have to rewrite all the php code to include the gettext functions. My system works independently of the files being translated & allows me to continue to write plain readable (to me at least!) code.
  • Using gettext the server has to load the php, load the language file & parse them together on each page request. In my system we only need to load & parse the php, the grunt work for getting the right text in the right place is done only once at the point you save a new translation. The non-English pages will always be as fast as the English pages.
  • Not specific to my translation system but using subdomains for language information means I can provide a multilingual site without needing to use cookies to store language preferences for logged out users or slowing down everything by including &Language=Klingon in every URL.


1 I've been working on this for 5 months just to get that punchline in.

The Void - - Parent

That must have been a lot of work. Well done, and thanks.
Now, can anyone translate "tranlsation" for me? :-P

7b_wizard - - Parent

Great! That is awesome, I like when it's international.

5balls - - Parent

Great! I suppose you decided consciously against it and know about it, but just in case you are not aware: There is also the possibility to do language negotiation without using subdomains, GET/POST variables or cookies:

I use this for our juggling club webpage (although I want to add a link to the other translations at the bottom of the page in case people have not set up their browser properly):

(Start page should appear in english for most people here, in case you have your browser set up to prefer german language webpages it will show it in german - typically this is set correctly in case your operating system is set up in german - you can play around changing browser settings and reloading the page)

Orinoco - - Parent

I was not aware of that Apache feature. Thank you for the tip. Reading through the documentation though I think I still prefer using separate sub domains. I prefer the transparency of showing the language right at the start of the url rather than picking a language from a setting hidden in the browser which I think a lot of people would not be aware of, especially if they using someone else's device.

Julien_H - - Parent

I've started to work on the french translation! Let me know if i'm breaking everything or actually doing useful work!

Orinoco - - Parent

That is wonderfully useful thank you!

Daniel Simu - - Parent

I've done 2 pages, I doubt any Dutch person will ever care, but it's fast and easy to do so I don't mind to translate a few more...
Now I've started at the top which is probably not the most effective, could you give a list of what you think are the 5 or 10 most important pages of the site?

Orinoco - - Parent

Thank you! & glad to hear it is easy to use.

I've always considered getting people to juggling festivals to be the most important thing so personally I think the most important pages to translate are:

libdb.php - a library that is used on every page, includes the primary navigation menu
libdir.php - a library that is used across all directory section pages (events, clubs, groups)

The order of popularity of all the sections on the Edge are pretty consistently:

forum - but given that pretty much all posts are currently in English (this does not have to be the case!1) I don't see there is much reward from translating this section.

1 I think this is the closest we've come to a multilingual thread but I'm not sure it really counts.

Daniel Simu - - Parent

The top menu on is now broken, probably happened after I changed the text..

Orinoco - - Parent

Now fixed, I just added the <1>numerical link tags</1> around the text that needed it.

Daniel Simu - - Parent

Right, I didn't read the instructions carefully enough to remember that I had to put those tags around. Maybe as a fix all, put the link automatically around all text if there is no link specified? Or put a one line reminder that the tags go around the links on every translation line?.. hmm....


Subscribe to this forum via RSS
1 article per branch
1 article per post

Forum stats