Progress
I've finished my 4 PRs (plus one extra) and ordered my t-shirt yesterday. Can't wait to wear it! 😍
My contribution: translations!
The idea of contributing code as such a newbie felt intimidating to me so I stayed in my comfort zone and decided to check if anyone wanted Finnish translations for their project. I began by looking for issues with the word 'translation' in them – and the hacktoberfest tag, of course.
OmniaWrite
The first project that got me interested was OmniaWrite, a text editor engineered for creative writing. It's built with svelte and the localisation files are JSON. Easy peasy!
{
"header": {
"write": {
"title": "Write"
},
(...)
The JSON is nicely organized and easy to follow while looking at the web interface.
There was a bit of a mistake with my very first PR because the Hacktoberfest introduction video failed to mention that you should refresh your fork from upstream before creating a PR. 😳 Luckily I didn't mess things up too badly and the maintainer resolved the conflicts on my behalf. Phew! After that faux pas, I carefully followed this instruction before creating any more PRs.
I haven't been able to test my translation yet because the stack is unfamiliar to me and I have no idea if I could test it, so I should probably look into that still...
Flexbox Froggy
The next one was such a fortunate find! I've been going through Wes Bos's What the Flexbox video tutorial so CSS Flexbox was somewhat familiar to me, and now I found a game where you solve puzzles using Flexbox! Flexbox Froggy is HTML+CSS+JS (my current faves ❤️) and the translations are grouped into three JavaScript files: docs, levels and messages.
var levels = [
{
name: 'justify-content 1',
instructions: {
'en': '<p>Welcome to Flexbox Froggy [...snipsnip...]',
(...)
Here I was a bit worried about what would happen if someone else was adding another language at the same time, but it all went well. I think no one else was working on the files when I was, and I didn't mess up in Git either.
Here a wonderful feature was the fact that my translations were viewable right away in my browser! Very easy to test and see that everything looked ok.
ScreenRuler
Then I came across ScreenRuler, a configurable screen measuring tool for Windows. Written in C# which I know zilch about. No worries! The localisation file format RESX, on the other hand, is very familiar to me so, Challenge Accepted.
The repo's issue description for adding translations is very useful because it explains the process well. There is also a tip about ResX Resource Manager to handle the translation work itself. The format of RESX is quite verbose and the tool helps to focus on the strings and not the format.
I installed the stand-alone version first and translated the strings. The tool seemed a bit unstable because sometimes it just lost some of my translations here and there, but eventually I got all strings translated.
Then I started wondering if I could test the translation because desktop applications can be tricky (space-wise etc.). Luckily I have a hubby who knows this stuff so I was able to set up Visual Studio with the project/solution, build the code and see the app localised. Looking good! The layout seemed to adapt to UI length dynamically, which was surprising.
Visual Studio was an inconsistently-working pain in the butt, too (like the ResX tool), because sometimes the build process was a success and sometimes it threw weird errors that disappeared after a clean or, I don't know, after me just scratching my head a bit. 🙄
Grid Garden
For my 4th PR I was a little lost. I searched for projects but a lot of them had loads of text to translate (e.g. 1000 English words is about half a workday for a professional Finnish translator) and some seemed abandoned. How lucky was I when Thomas Park of Flexbox Froggy tipped me to this other game, Grid Garden. A game where you learn the CSS Grid layout! I knew nothing about Grid but was about to look into it after the Flexbox tutorial. Two birds with one stone this was: a PR for Hacktoberfest and learned me some Grid. 💪
While doing my translations, I happened to notice something wonky about Vietnamese: the game has descriptions of each of the CSS properties and the possible values in Vietnamese were different from the original English. Therefore, I also created an issue for this repo and the original Vietnamese translator was able to fix the texts. Teamwork!
My extra PR
At some point while working on the ScreenRuler translation, I noticed that a recent change in the code caused a crash when the user tried to open the in-app help. I beckoned my hubby to help again and I sent a super simple fix as a PR. The maintainer thanked me for noticing the bug and gave some great pointers about my too simple solution. Here came hubby again and we worked together on an idea I'd had all along (to check whether the help file for a specific language exists at all). I got to learn about some great IntelliSense features in Visual Studio, and how familiar the C# syntax is.
Resources
I had hoped to be able to use a translation memory tool for these translation tasks but I was unable to get some working. I tried MateCat and OmegaT but the JSON from Flexbox Froggy/Grid Garden failed to be recognized in MateCat (although JSON is supported) and there was something else I couldn't be bothered with in OmegaT. (I'm most familiar with SDL Studio and I just wanted to get working on the translations asap.)
I did use the Microsoft Glossary which is a great resource for checking current translations in Microsoft products. For Finnish at least, you'll have to be careful with the suggestions, though, because there are some stupid and inconsistent ones. But at least it helps you find a translation when you sort of already know what you're looking for but just can't remember it right then. 😄
Reflections
As mentioned, this was my first Hacktoberfest. I'm going to be honest and say I originally signed up for the swag but I ended up having a lot of fun, especially with the CSS games. I hope someone finds my translations useful and I'm curious to see if someone contributes improvements.
I'm willing to contribute more translations to open source projects but I don't feel quite ready yet to contribute code. But I'll keep learning, and perhaps there are still issues with helpful tags like "good first issue" after Hacktoberfest ends.
Look forward to next year's Hacktoberfest! Perhaps then I'll be brave and learned enough to tackle some code issues.
Top comments (9)
Hi Minna, great text! I am a translator and would like to ask for your permission to translate this text into Portuguese, as I have many colleagues who would like to specialize in software localization, and therefore, know more about how to find open source projects to practice. And I think it would be a good way to help many of these projects, too. I would post a link to the original text and cite your name on the top of the translation, and let you know once I publish it.
Hi Sheila, thank you! If you think your translation of my little blog post would be useful, I have no objections. :)
Hi Minna, after a looong time, I am finally publishing the link to the translation:
telegra.ph/Minha-primeira-vez-na-H...
(at least it was before the next event hehe)
Hehey, looking nice! I said last year I may be brave enough to tackle coding stuff this year but it could be that I'll go the translation route again. We'll see! Luckily it's easy to find "first-timer" friendly issues (a lot of curating/labelling being done to help participants).
Well done Minna! I'm so proud of you! 🤩 I think that a great strategy to participate to any time constrained festival/campaign for the first time, is to focus on your strengths, and this is exactly what you did 💪🏻
And I have to agree, I too participated in Hacktoberfest mostly for the swag, but then when working on the PRs I got to thinking about other issues and how to fix them... Not for the swag, but because either I wanted to learn something new or fix something that was really annoying for the users 😊 So I think that the people running Hacktoberfest know that to some people, the swag will get them started, but then they continue for other reasons 😉
Hey Minna :-)
Thanks for contributing to OmniaWrite. Your translation just got released, so if you are interested in seeing your work in action, feel free to check out the WebApp here.
Greetings
Torsten Dittmann
Hi Torsten,
I will definitely check it out, thank you!
Great job Minna! 💪🏻
Congrats Minna! Very well done 🎉Now I need to check out also those Flexbox/Grid games, sounds like fun!