Chaos in a Can

Calling All Translators!

Tab Vault now supports localization as of version 2.1. Unfortunately, the only other language I know is German, and I'm far from fluent in it. That's where you come in! If you'd like to translate Tab Vault into another language, here's what you need to do:

  1. Download this build of Tab Vault.
  2. Extract it somewhere so you can work on it.
  3. In the locales folder, make a copy of the "en" folder and rename it to the correct abbreviation for your locale. See here for more information and here for the full list of locale tags.
  4. Drag "config.xml" from the root directory of the extension onto Opera to install Tab Vault in developer mode. (Make sure you create the locale directory first or you may have to restart Opera to get it to recognize the new locale)
  5. Translate the files in the locales folder. Make sure the translations work. Make sure my localization code works too, as I've apparently been pretty inconsistent in making everything localizable.
  6. Send me the translated files (not all the files, just the ones you translated).

The files you need to translate are:
  • help.html - The help page. This is a lot to translate, so I don't blame you if you skip this one.
  • locale-help.css - Two more things you need to translate for the help page.
  • locale-misc.js - A few strings string to translate, and a couple settings for getting things to look right. If the text at the top of the popup doesn't fit, you can increase the minimum popup width. If the little triangles under "Tabs" and "Trash" don't line up under the center of the text, you can adjust those left and right too.
  • locale-options.js - Translations for the options page, upgrade page, and the header and footer of the help page.
  • locale-dropdown.js - Translations for the popup. (formerly locale-popup.js)
  • locales/locales.js - This makes your translation show up in the options page. This doesn't go inside your locale folder but one level above it. (I will update this myself, so you don't need to send me this file)

In the JavaScript files, just translate the quoted strings. In the help file, comments mark the start and end of where you should translate. Press ~ (tilde) at the options page to get links to the upgrade page and the help page with the first-time message.

Though I recently made it possible to switch languages without a reload, Opera will not reload some translation files until you reload the extension. You can reload the extension by pressing Ctrl+Shift+E to open the extension manager, then clicking the "Reload" button under Tab Vault.

In locales.js, simply add a new LocaleDef item to the locales array. This makes you language appear in the options page. It should look like this:
new LocaleDef('language code', 'Name of language', 'Localized name of "default" language'),

If you do translate the help file, change "LocalizedHelp" in your locale-misc.js to "true".

All strings in the JavaScript files will be inserted as HTML, so you can use HTML entities and tags if necessary.

If translations are missing, messages will show up in the error console (Ctrl+O) when you visit the page that uses them. Missing strings will appear in red as "loc:StringName" so you can find them within the translation files. Ask in the comments if you have any questions or run into any problems. Thanks!

October 16, 2011: Updated the translation package to 2.4.
Later, October 16, 2011: Fixed a couple bugs and changed how duplicate removal works. The updated package is up now.
December 11, 2011: Updated the package again. This update adds searching with Ctrl+F and one more string, Search, in locale-popup.js. This is the placeholder text for when the search box is unfocused.
January 13, 2011: Updated the translation package to 2.4.1. The list of languages in the options page is now generated by locales/locales.js. Now you just need to update locales.js to get your language to appear in the options page.
April 6, 2012: Updated the translation package to 2.5 alpha. I renamed locale-popup.js to locale-dropdown.js because of problems with some people's content blockers. Missing strings will now show up as the name of the string you should translate. There are a lot of backend changes in this version to prepare for Opera 12.00, so please tell me if you find any bugs.
May 2, 2012: Updated the package again. The help file should be mostly working now.
June 18, 2012: Version 2.5 is ready to be submitted. There is one more string to translate.
June 28, 2012: So it turns out 2.5 wasn't ready to be submitted. It should be now. There is another string to translate.

Changes in 2.5
locale-options.js
  • + FeatherweightIcon (line 44)
  • + MiddleClickOpenCurrent (line 52)
  • changed Language (line 56. The extension no longer needs to be restarted to change languages.)
  • + ConfirmResetSettings (line 81. I don't know how I missed these until now.)
  • + ConfirmResetTabs (line 82)
  • + ConfirmResetAll (line 83)
  • changed HelpLink (line 96)

locale-dropdown.js
  • + CxSaveGroup (line 48. This appears in the "Save Tab" context menu, but only if the current tab is part of a group.)

I think I fixed all the help pages for the various translations, but I might have broken something.

Changes in 2.5 b2
locale-options.js
  • + OpenNextToActive (line 24)


Translation Status:
Dutch (by Nino van den Bosch) - Needs new strings for 2.4, 2.5a, 2.5b
French by David - Needs CxSaveGroup and OpenNextToActive strings
German (by FreebirthOne and philflip and Otto Wasserfeldt) - Needs OpenNextToActive string
Greek (by Andreas Patman) - Needs new strings for 2.4, 2.5a, 2.5b
Georgian (by Beqa Arabuli) - Needs new strings for 2.5a, 2.5b
Italian (by Dark Revenger) - Needs new strings for 2.4, 2.5a, 2.5b
Polish (by Saskatchewan) - Needs OpenNextToActive string
Portuguese (by Ilidio) - Needs new strings for 2.4, 2.5a, 2.5b
Russian (by Dmitry Kochev) - Needs new strings for 2.5a, 2.5b
Serbian (by shobra) - Needs Search string, strings for 2.5a, 2.5b
Spanish (by Juan) - Needs new strings for 2.3, 2.4, 2.5a, 2.5b
Turkish (by metude) - Needs new strings for 2.4, 2.5a, 2.5b


Tab Vault 2... Finally!One Step Closer To World Domination!

Comments

metude Thursday, April 7, 2011 9:28:51 AM

up
I'm on it.

Joel Spadinspadija Thursday, April 7, 2011 1:46:53 PM

Awesome!

Edit: I just added an option to disable UI animation, so there's another string to translate for locale-options.js. Just add this line:
DisableAnimation: 'Disable UI Animation',

metude Thursday, April 7, 2011 8:54:48 PM

Originally posted by spadija:

DisableAnimation: 'Disable UI Animation',


up

metude Friday, April 8, 2011 12:35:27 PM

I changed encoding to UTF-8.
ANSI was mading trouble with ğ, ü, İ, ç, ö etc.

and last 40 line for Turkish version...

metude Friday, April 8, 2011 1:12:45 PM

Translation is done.
Now I'm testing it but there's some a problem.

1. http://prntscr.com/1pwik
Width should increase.

2.
GroupTotop:

should write like this.
GroupToTop:


I fixed this in my translation.

Here is translated files for Turkish (Türkçe).
http://files.myopera.com/metude/deleteable/tr-tabvault-2.1.zip

Joel Spadinspadija Friday, April 8, 2011 2:50:39 PM

Changing the encoding is fine. Netbeans doesn't output UTF-8 by default, but Opera will read it just fine.

There's a setting in locale-misc.js to increase the minimum width of the popup. I guess I didn't make it clear, but the popup won't resize itself automatically.

Thanks for catching my capitalization mistake, and thank you for the translation! smile Once I'm done with classes for today, I'll package it up and submit it.

metude Friday, April 8, 2011 9:10:59 PM

Originally posted by spadija:

Changing the encoding is fine. Netbeans doesn't output UTF-8 by default, but Opera will read it just fine.


http://ditoinfo.wordpress.com/2007/02/26/netbeans-and-utf8-encoding-2/

Originally posted by spadija:

There's a setting in locale-misc.js to increase the minimum width of the popup. I guess I didn't make it clear, but the popup won't resize itself automatically.


I know it. But increased by default will be more good.

Juanjrezola Saturday, April 9, 2011 5:55:39 AM

Spanish Version, everything but the help file: http://files.myopera.com/jrezola/files/TabVault.zip

Joel Spadinspadija Saturday, April 9, 2011 6:43:04 PM

Thank you Juan! I'm uploading a new version with both translations right now. I also changed the positioning of the "Drop to open in current tab" overlay so it won't get hidden underneath the popup.

@metude: Thanks for the tip with UTF-8. The default width is small, because that's the width the popup needs to be for English.

metude Saturday, April 9, 2011 6:53:27 PM

up

@Joel Can i ask a off-topic question? Is netbeans useufull for html-css works?

Ilidioilidiomartins Saturday, April 9, 2011 9:24:41 PM

Here is a Portuguese translation:
http://clientes.netvisao.pt/ijosemar/TabVault/TabVault-pt.zip
(pt - everything but the help file too)

Joel Spadinspadija Sunday, April 10, 2011 12:24:35 AM

Wow! The translations are coming in one after the other! Thank you, Ilidio.

@metude: It's not perfect, but I think it's good for html and css. 7.0 beta doesn't fully understand some HTML5 things, but it's pretty helpful otherwise.

Ilidioilidiomartins Sunday, April 10, 2011 12:32:34 PM

I had to change from GroupTotop to GroupToTop too
http://files.myopera.com/spadija/extensions/TabVault.oex

Originally posted by metude:

2.

GroupTotop:


should write like this.
GroupToTop:


FreebirthOne Monday, April 11, 2011 12:35:02 AM

Ladies and Gentlemen and Trees an Multiforms ... ahem *cough*

I think I've watched to many Doctor Who 2005 episodes in to little time; sorry for that smile

Back to topic:
1. I translated the extension into German (my mother tongue) including the help and all (excluding the pictures; I didn't know how to get this one into the locales). I kinda played a bit with the original text, hopefully the changes aren't to bad. For me it works smile

2. I added a bit more localization, to name it:
* Message when dragging a tab over the Trash link
* message when tab is not saveable
* message when tab cannot be opened in current page

To get to know how just read the changes.txt in the root directory of the archive.

3. Bug fixed: in the file "options.css" the item "collapsible.resize" missed a leading period

4. Possible Bug found: THe "DropToOpen" message does not appear any more, even after a complete wipe of the extension. Happened to work in the beginning, and I've got no idea what I did to change that.

The archive is available from http://files.myopera.com/FreebirthOne/files/tabvault_freebirth_one.zip

Joel Spadinspadija Monday, April 11, 2011 3:59:09 AM

Thanks for catching the strings I missed! I'll have to ask metude, Juan and Ilidio to translate those now.

I think the help images are going to have to stay untranslated for now. It seems that only things in the root folder (and maybe the includes folder too) of a locale will override the default files. I think they are generic enough to be understandable even if you can't read them though.

The "DropToOpen" message not appearing is due to an Opera bug. More specifically, if the page contains an iframe, when the background process tries to tell the page to display the message, Opera actually notifies the iframe instead of the main page. There are workarounds, but they're slow and involve notifying every page instead of just the focused one. Instead of trying to deal with that, I'm just going to wait for Opera to finish the work they're doing on the tabs and windows API.

Saskatchewan Monday, April 11, 2011 10:48:57 AM

Polish translation: http://files.myopera.com/Saskatchewan/widget/TabVault2.1.3.zip (I will translate the help file later this week).

One question from me: where can I see "<Unused>" in the UI? Because I don't know how to translate it.

Things I noticed:
- TrashOnOpen option doesn't work for me;
- while importing the session, "Importing..." is displayed in English;
- "Finish Editing Group Name", IMO, should be as simple as: "Save", "OK", or similar;
- UpgradeFail1: 'Whoops! Something wen\'t wrong. (or you have a really slow computer)', - should be "Something went wrong (or you have a really slow computer).';
- UpgradeMessage: (...) '(look at your tabs. It should be open next to this one) If the upgrade fails, '- small "l" in "look" and missed dot after "this one".

FreebirthOne Monday, April 11, 2011 11:18:05 AM

@Joel:
Ah, thanks for the explaination about DropToOpen. I was getting nuts about this. So lets sit and wait.

@Saskatchewan:
Stab in the dark: 'unused' is, well, unused? wink To be serious, I wondered myself at first, too. Until looking for this string and not finding it in any of the other files. After that it came to me: either left for future use, or left from using in the past.

FreebirthOne Monday, April 11, 2011 8:49:24 PM

Originally posted by Saskatchewan:

- while importing the session, "Importing..." is displayed in English;


Ah yes, I found that one, too. Fixed it in my Version of the extension. Now theres a new entry in locale-options.js reading 'ImportWorking'. Change this to your liking. As before, changes are entioned in changes.txt.

THe Fixed extension is available from http://files.myopera.com/FreebirthOne/files/tabvault_fb1_version_0.2.zip

metude, Juan, Ilidio and Saskatchewan: there will be aanother entry to translate smile

Joel Spadinspadija Tuesday, April 12, 2011 8:19:14 PM

<Unused> is the description for a setting that's hidden until I can make it work—namely making tabs two lines tall and showing their URLs underneath their titles.

Thanks for catching another thing I missed. I should probably go over everything once more. There are going to be even more things to translate soon, since I want to add middle-click to open, context menus, and a way to make buttons or keyboard shortcuts to control Tab Vault.

Joel Spadinspadija Thursday, April 14, 2011 6:39:05 AM

Random aside: looks like the bug causing the "DropToOpen" message to not appear is fixed in 11.10.

Saskatchewan Thursday, April 14, 2011 11:36:54 AM

Updated Polish translation with translated help file - same place as before.

Joel Spadinspadija Friday, April 15, 2011 5:00:46 AM

I'm pretty close to releasing the next version. The link up top now points to the updated extension. It has new features, thus it needs new translations. Thanks!

@FreebirthOne The ImportWorking translation was there all along, I just forgot to attach it to anything. doh

Saskatchewan Friday, April 15, 2011 6:04:13 AM

One thing for tab count:
TabCount: '– 0 tabs|– 1 tab|– %s tabs'
In Polish (and some other languages) we've got more plural forms of nouns
TabCount: '– 0 kart|– 1 karta|- 2,3,4 karty|– %s kart'
It's even more complicated as we have 5...21 (25...31, etc.) kart, 22,23,24 (32,33,34, etc.) karty smile. Any possibility to implement it? I think you should consult other translators before thinking about the best way of changing it.

Edit: Wow! Nice idea for keyboard shortcuts, and custom buttons up.

One more question: will "External Access" do something more than give access for buttons and shortcuts/gestures? I think that it will be more self-explanatory if I translate it like "Buttons and shortcuts".

Joel Spadinspadija Friday, April 15, 2011 2:49:32 PM

At the moment, external access doesn't do anything more, so "Buttons and shortcuts" would be a better title. I may open it up to allow more things, but they would probably still be controlled by buttons and/or shortcuts. smile

With the current plural implementation, it reads as many sections as it's given and maps them to numbers like this "0 | 1 | 2 | 3 | 4 | 5+" using the last one for all greater numbers. If I understand your explanation correctly, the forms loop every 10? Do 5, 15, 25, 35... all have the same form? How about 0 and 10?

Saskatchewan Friday, April 15, 2011 6:49:13 PM

Originally posted by spadija:

it reads as many sections as it's given and maps them to numbers like this "0 | 1 | 2 | 3 | 4 | 5+" using the last one for all greater numbers.

Oh, I get it. I think that in this case there is no need to bother. I was especially concerned about 2, 3 and 4.

Originally posted by spadija:

Do 5, 15, 25, 35... all have the same form? How about 0 and 10?

Yes they do. 0 and 10 have same form as 5 and more.

In Polish it looks like this:
- 0 - first form;
- 1 - second form;
- 2, 3, 4 - third form;
- 5 and more - first form (with an exception: if number is greater than 20 and ends in 2, 3, or 4, it takes the third form);

Joel Spadinspadija Friday, April 15, 2011 8:28:17 PM

I could also create a more flexible system with two lists. Each would map a certain number to a plural form, with the second list being modulo some number (i.e. modulo 10 would make the 5 entry apply to 5, 15, 25...). To find the correct form, the program would search the first list for an exact match, then the second list, then failing to find a match in either list, it would use a default form.

It wouldn't be too difficult to program, though it might be confusing to translators. Would that system work better, or is the current one good enough?

Ilidioilidiomartins Saturday, April 16, 2011 3:04:52 AM

Portuguese translation updated.
http://clientes.netvisao.pt/ijosemar/TabVault/TabVault-pt.zip
(pt - everything but the help file too)

Saskatchewan Saturday, April 16, 2011 8:49:15 AM

@Joel: Current implementation is quite fine. Although the form is wrong for numbers greater than 20 which end in 2, 3 or 4, it doesn't "sound" so bad. You may leave it as it is now.

P.S. I found a better way to explain it sherlock - I changed it in my previous answer. Now it looks quite simple smile.

I've found one typo in my previous version. I will keep updating files if I find more of them. You may always find the newest version here: http://files.myopera.com/Saskatchewan/widget/TabVault.zip .

drosah Saturday, April 16, 2011 9:18:03 PM

aqui ja ta em portugues valeu pela tradução

Ilidioilidiomartins Saturday, April 16, 2011 10:07:19 PM

@drosah: Na boa... Obrigada pelo comentário

Joel Spadinspadija Sunday, April 17, 2011 5:16:44 PM

One more string to translate for a new setting:

Language: 'Language (requires restart)'

Ilidioilidiomartins Sunday, April 17, 2011 5:25:41 PM

Portuguese:

Language: 'Tradução (precisa da reinicialização)'

Joel Spadinspadija Monday, April 18, 2011 2:43:38 PM

Just a heads up: Once I'm done with (preferably not failing) my midterm tonight, I'm uploading the new version, with or without updated locales. If you have any updates, get them in within 10 hours of now. Thanks!

Saskatchewan Monday, April 18, 2011 4:08:20 PM

Language: 'Language (requires restart)'

Polish:
Language: 'Język (wymaga ponownego uruchomienia)'

FreebirthOne Wednesday, April 20, 2011 10:17:07 PM

"language" ist translatet correctly, but I think for "Middle Click Action" "Aktion für mittlere Maustaste" would sound better.

Nevertheless, a very good extension is just getting better smile

Joel Spadinspadija Thursday, April 21, 2011 2:04:25 AM

Any semblance of productivity I might have had is currently being destroyed by Portal 2, but I'll reword that for the next version. Thanks!

FreebirthOne Friday, April 22, 2011 6:17:29 PM

O.o I didn't know that this one is released yet...

FreebirthOne Tuesday, April 26, 2011 8:56:38 PM

Ok, here is the upgraded German translation. This time only the localisation, because there was nothing mor to change (and joel is getting to know opera link, which will eventually change the whole source code).

C'Ya

FB1

--> http://files.myopera.com/FreebirthOne/files/locales_de_2.2.3.zip

FreebirthOne Tuesday, April 26, 2011 9:19:04 PM

Hm, one thing tipped my mind:
In "locales-misc" you can insert a new default width for your popup. Even so this is working as expected, the Options page is always showing the minimum value (250) at first. After channging this value it remains changed, even here.
So: the new default value is correctly set but not saved localy, so the minimum value is taken (or wherever it is taken from:)).

Any Idea where to fix?

Joel Spadinspadija Wednesday, April 27, 2011 12:59:43 AM

I'm actually not sure how to best handle that. How it works now is locales-misc defines the minimum width for the popup and the options page setting sets the exact width of the popup. Tab Vault just chooses whichever of the two numbers is bigger. The options page also doesn't do min/max value checking until you actually change the value.

I suppose I could reset the popup width option to the minimum value every time you change the language.

Joel Spadinspadija Friday, May 6, 2011 5:30:25 AM

To everyone who has sent me a translation, if your username and real name are different, I just picked one of them when I credited you in the options page. If you want to be credited with a different name, capitalization, whatever, just ask and I'll change it.

metude Friday, May 6, 2011 2:00:17 PM

Originally posted by spadija:

To everyone who has sent me a translation, if your username and real name are different, I just picked one of them when I credited you in the options page. If you want to be credited with a different name, capitalization, whatever, just ask and I'll change it.


up I want to use as metude.

kochev Thursday, May 12, 2011 5:26:01 PM

Russian translation (with help): http://files.myopera.com/kochev/tabvault/ru_2.2.zip .
Pictures (from help) in russian: http://files.myopera.com/kochev/tabvault/ru_pic_2.2.zip

(P.S. Name for credits - Dmitry Kochev).

kochev Friday, June 3, 2011 8:17:46 AM

Updated Russian Translation for 2.3: http://files.myopera.com/kochev/tabvault/ru_2.3.zip .
And it is a grammar mistake in options.html footer:
"Russion localization" -> "Russian localization" smile .

Joel Spadinspadija Friday, June 3, 2011 5:33:36 PM

That was fast! Thanks.

metude Friday, June 3, 2011 8:12:59 PM

Ilidioilidiomartins Monday, June 6, 2011 12:39:13 AM

I didn't do my homework yet! Sorry... I will translate it later.

FreebirthOne Monday, June 6, 2011 2:12:00 PM

Meh, now I now why I don't get messages about new posts: the mails are sent to an old, not-in-use address...
I have to look when I've got to translate. I'll announce it here smile

Joel Spadinspadija Thursday, June 9, 2011 10:50:53 PM

@Ilidio: Don't worry, I completely understand. smile

Ilidioilidiomartins Thursday, June 9, 2011 11:53:13 PM

Originally posted by spadija:

@Ilidio: Don't worry, I completely understand. smile


Here is part of my 2.3 portuguese translation:
// Context Menus
CxOpen: 'Abrir num novo separador',
CxOpenBackground: 'Abrir num novo separador num fundo',
CxOpenAndDelete: 'Abrir num novo separador, e remover',
CxOpenBkgAndDelete: 'Abrir num novo separador num fundo, e remover',
CxOpenAll: 'Abrir todos os separadores',
CxOpenAllBackground: 'Abrir todos os separadores no fundo',

CxCreateGroup: 'Criar grupo',
CxSaveToGroup: 'Adicionar o separador actual aqui',
CxUngroup: 'Desagroupar',
CxReloadIcon: 'Actualizar ícone',
CxRename: 'Renomear',
CxDelete: 'Remover',

CxSaveCurrent: 'Guardar separador currente',
CxSaveAsGroup: 'Guardar separador num novo grupo',
CxSaveAll: 'Guardar todos os separadores',
CxSaveWindow: 'Guardar separadores nesta janela',
CxSaveDomain: 'Guardar separadores neste domínio',

CxRestore: 'Recuperar',
CxDeletePerm: 'Remover permanentemente',


(locale-popup.js)

Write a comment

You must be logged in to write a comment. If you're not a registered member, please sign up.